From 3055c4b9cc33ed5dc1dbfac707ec4a933e81b0ac Mon Sep 17 00:00:00 2001 From: Lauren Hirata Singh Date: Fri, 9 May 2025 16:09:43 -0400 Subject: [PATCH] [docs] LangGraph / LangGraph Platform docs updates (#4479) Main changes made: - Add top level horizontal tabs - Reorganize the sidenav - Build out README/index page - Consolidate how-tos under each section - Remove duplicate content --------- Signed-off-by: William Fu-Hinthorn <13333726+hinthornw@users.noreply.github.com> Co-authored-by: Tat Dat Duong Co-authored-by: Sydney Runkle Co-authored-by: William Fu-Hinthorn <13333726+hinthornw@users.noreply.github.com> Co-authored-by: Vadym Barda Co-authored-by: Eugene Yurtsev Co-authored-by: ccurme Co-authored-by: Andrew Nguonly Co-authored-by: David Asamu Co-authored-by: infra Co-authored-by: Arjun Natarajan --- .github/workflows/deploy_docs.yml | 14 +- README.md | 69 +- docs/_scripts/generate_llms_text.py | 9 +- .../mdoutput/index.md.j2 | 8 +- docs/_scripts/notebook_hooks.py | 72 +- ...4-3d97-4e76-ac45-8d80d4364c46.msgpack.zlib | 1 - ...a-5309-45f0-9465-9f3dff604d74.msgpack.zlib | 1 - ...e-9db9-4ac7-9d76-a99fd4034bf3.msgpack.zlib | 1 - ...3-21be-43e5-ac48-d1d0a3aa0dca.msgpack.zlib | 1 - ...b-66f8-42ff-b1c3-90c8a9468e62.msgpack.zlib | 1 - ...3-e972-41e6-8392-cc970d4eea72.msgpack.zlib | 1 - ...c-e0d0-4c05-bb41-f007b4e17fb7.msgpack.zlib | 1 - ...2-a90d-4c94-906d-6d364c274192.msgpack.zlib | 1 - ...0-95c7-422f-96a6-e612fde186df.msgpack.zlib | 1 - ...3-a466-46ad-aafe-2b870831057e.msgpack.zlib | 1 - ...b-d730-48bd-9652-983812fd7811.msgpack.zlib | 1 - ...0-1f8a-4057-81c4-b7bf073dc4c1.msgpack.zlib | 1 - ...c-c243-40ea-b9d2-424d50a48dc9.msgpack.zlib | 1 - ...3-21be-43e5-ac48-d1d0a3aa0dca.msgpack.zlib | 1 - ...b-4b23-45ac-a98e-b4439f37740a.msgpack.zlib | 1 - ...3-21be-43e5-ac48-d1d0a3aa0dca.msgpack.zlib | 1 - ...7-86e3-440e-a7bf-f1e9b5ed9ff2.msgpack.zlib | 1 - ...1-d13a-4026-8f89-bdab67d1ad4d.msgpack.zlib | 1 - ...7-ad05-4f10-83bf-c3ff6ff8eb93.msgpack.zlib | 1 - ...f-ff99-40f0-92a8-0b3f2c591040.msgpack.zlib | 1 - ...7-ad05-4f10-83bf-c3ff6ff8eb93.msgpack.zlib | 1 - ...4-0a15-43bd-aeed-c9ba1dfe388f.msgpack.zlib | 1 - .../pass-config-to-tools_14.msgpack.zlib | 1 - .../pass-config-to-tools_15.msgpack.zlib | 1 - .../pass-config-to-tools_16.msgpack.zlib | 1 - ...2-cc19-4023-8ffa-b0fc13da9e09.msgpack.zlib | 1 - ...3-10f2-45c4-a922-b11321ac3fae.msgpack.zlib | 1 - ...f-faf4-4724-a13f-bac39ea9bafe.msgpack.zlib | 1 - ...6-11d5-40e1-8567-361e5bef8917.msgpack.zlib | 1 - ...8-f40f-4a51-a27f-7c6bb2bda0ba.msgpack.zlib | 1 - ...3-7101-43ab-a811-592e222b9580.msgpack.zlib | 1 - ...0-a5a6-4697-8115-322242f197b5.msgpack.zlib | 1 - ...2-8e3e-4d96-8db4-4846a3bc2eac.msgpack.zlib | 1 - ...a-9415-4c49-9ded-9c7830a3ef6b.msgpack.zlib | 1 - ...d-7a60-455f-96d6-95a8a2e7dbf6.msgpack.zlib | 1 - ...2-1755-4ae4-a40b-ade58491a5bb.msgpack.zlib | 1 - ...f-8fa7-4608-bd2e-bfbf44ed5836.msgpack.zlib | 1 - ...c-2f73-49ba-a2a4-47bce6fc49b7.msgpack.zlib | 1 - ...7-73cc-4957-9a4f-f3509a32a740.msgpack.zlib | 1 - ...9-9eaf-44e2-b2d9-1e0284b984d0.msgpack.zlib | 1 - ...f-ca37-4457-8b52-07d33b59c36e.msgpack.zlib | 1 - ...7-1e5c-4db6-a90b-ea75462ccf7d.msgpack.zlib | 1 - ...9-9eaf-44e2-b2d9-1e0284b984d0.msgpack.zlib | 1 - ...f-ca37-4457-8b52-07d33b59c36e.msgpack.zlib | 1 - .../subgraphs-manage-state_12.msgpack.zlib | 1 - .../subgraphs-manage-state_14.msgpack.zlib | 1 - .../subgraphs-manage-state_16.msgpack.zlib | 1 - .../subgraphs-manage-state_31.msgpack.zlib | 1 - .../subgraphs-manage-state_34.msgpack.zlib | 1 - .../subgraphs-manage-state_41.msgpack.zlib | 1 - .../subgraphs-manage-state_43.msgpack.zlib | 1 - .../subgraphs-manage-state_49.msgpack.zlib | 1 - .../tool-calling-errors_11.msgpack.zlib | 1 - .../tool-calling-errors_13.msgpack.zlib | 1 - .../tool-calling-errors_17.msgpack.zlib | 1 - .../tool-calling-errors_19.msgpack.zlib | 1 - .../tool-calling-errors_9.msgpack.zlib | 1 - docs/cassettes/tool-calling_17.msgpack.zlib | 1 - docs/cassettes/tool-calling_19.msgpack.zlib | 1 - docs/cassettes/tool-calling_23.msgpack.zlib | 1 - docs/cassettes/tool-calling_25.msgpack.zlib | 1 - docs/cassettes/tool-calling_26.msgpack.zlib | 1 - ...4-572a-4961-88a7-665e792cf96a.msgpack.zlib | 1 - ...b-1765-4b63-a232-d46790aff884.msgpack.zlib | 1 - docs/docs/adopters.md | 2 +- docs/docs/agents/agents.md | 154 +- docs/docs/agents/overview.md | 11 + docs/docs/agents/prebuilt.md | 50 +- docs/docs/agents/run_agents.md | 2 +- docs/docs/agents/tools.md | 2 +- docs/docs/cloud/concepts/cron_jobs.md | 15 + docs/docs/cloud/concepts/runs.md | 5 + docs/docs/cloud/concepts/streaming.md | 138 + docs/docs/cloud/concepts/threads.md | 11 + docs/docs/cloud/concepts/webhooks.md | 7 + docs/docs/cloud/deployment/cloud.md | 4 +- docs/docs/cloud/deployment/img/01_login.png | Bin 753662 -> 0 bytes .../deployment/img/02_langgraph_platform.png | Bin 73749 -> 0 bytes .../deployment/img/03_deployments_page.png | Bin 311731 -> 0 bytes .../img/04_create_new_deployment.png | Bin 271856 -> 0 bytes .../img/05_configure_deployment.png | Bin 385313 -> 0 bytes .../deployment/self_hosted_control_plane.md | 6 +- .../deployment/self_hosted_data_plane.md | 6 +- docs/docs/cloud/deployment/setup.md | 37 +- .../docs/cloud/deployment/setup_javascript.md | 16 +- docs/docs/cloud/deployment/setup_pyproject.md | 38 +- .../cloud/deployment/standalone_container.md | 4 +- docs/docs/cloud/deployment/test_locally.md | 196 - .../cloud/how-tos/assistant_versioning.md | 163 +- .../cloud/how-tos/configurable_headers.md | 4 +- .../docs/cloud/how-tos/configuration_cloud.md | 158 +- docs/docs/cloud/how-tos/copy_threads.md | 4 +- .../how-tos/human_in_the_loop_breakpoint.md | 4 +- .../how-tos/human_in_the_loop_edit_state.md | 2 +- docs/docs/cloud/how-tos/stream_debug.md | 235 -- docs/docs/cloud/how-tos/stream_events.md | 295 -- docs/docs/cloud/how-tos/stream_messages.md | 331 -- docs/docs/cloud/how-tos/stream_multiple.md | 485 --- docs/docs/cloud/how-tos/stream_updates.md | 217 -- docs/docs/cloud/how-tos/stream_values.md | 335 -- docs/docs/cloud/how-tos/streaming.md | 879 +++++ docs/docs/cloud/how-tos/studio/quick_start.md | 88 + docs/docs/cloud/how-tos/test_deployment.md | 16 - .../cloud/how-tos/test_local_deployment.md | 32 - docs/docs/cloud/how-tos/webhooks.md | 2 +- docs/docs/cloud/quick_start.md | 317 +- docs/docs/cloud/reference/env_var.md | 10 +- docs/docs/concepts/agentic_concepts.md | 37 +- docs/docs/concepts/application_structure.md | 36 +- docs/docs/concepts/assistants.md | 41 +- docs/docs/concepts/auth.md | 4 +- docs/docs/concepts/breakpoints.md | 133 +- docs/docs/concepts/bring_your_own_cloud.md | 60 - docs/docs/concepts/deployment_options.md | 39 +- docs/docs/concepts/faq.md | 13 +- docs/docs/concepts/functional_api.md | 288 +- docs/docs/concepts/high_level.md | 31 - docs/docs/concepts/human_in_the_loop.md | 710 +--- docs/docs/concepts/img/breakpoints.png | Bin 0 -> 10815 bytes docs/docs/concepts/img/lg_studio.png | Bin 541796 -> 107873 bytes docs/docs/concepts/img/subgraph.png | Bin 0 -> 99160 bytes docs/docs/concepts/index.md | 85 - docs/docs/concepts/langgraph_cli.md | 65 +- docs/docs/concepts/langgraph_cloud.md | 6 +- docs/docs/concepts/langgraph_components.md | 13 + docs/docs/concepts/langgraph_control_plane.md | 29 +- docs/docs/concepts/langgraph_data_plane.md | 51 +- docs/docs/concepts/langgraph_platform.md | 41 +- .../langgraph_self_hosted_control_plane.md | 29 +- .../langgraph_self_hosted_data_plane.md | 33 +- docs/docs/concepts/langgraph_server.md | 123 +- .../langgraph_standalone_container.md | 2 +- docs/docs/concepts/langgraph_studio.md | 71 +- docs/docs/concepts/low_level.md | 178 +- docs/docs/concepts/multi_agent.md | 93 +- docs/docs/concepts/persistence.md | 2 +- docs/docs/concepts/plans.md | 6 +- docs/docs/concepts/platform_architecture.md | 28 - docs/docs/concepts/pregel.md | 6 - .../concepts/scalability_and_resilience.md | 12 +- docs/docs/concepts/sdk.md | 43 +- docs/docs/concepts/self_hosted.md | 50 - docs/docs/concepts/streaming.md | 69 +- docs/docs/concepts/subgraphs.md | 81 + docs/docs/concepts/template_applications.md | 75 +- docs/docs/concepts/time-travel.md | 56 +- docs/docs/concepts/tools.md | 62 + docs/docs/concepts/v0-human-in-the-loop.md | 334 -- docs/docs/concepts/why-langgraph.md | 26 + docs/docs/how-tos/agent-handoffs.ipynb | 1033 ----- docs/docs/how-tos/auth/custom_auth.md | 4 +- docs/docs/how-tos/auth/openapi_security.md | 2 +- docs/docs/how-tos/branching.ipynb | 541 --- docs/docs/how-tos/command.ipynb | 397 -- docs/docs/how-tos/configuration.ipynb | 353 -- .../how-tos/cross-thread-persistence.ipynb | 357 -- docs/docs/how-tos/deploy-self-hosted.md | 154 - docs/docs/how-tos/graph-api.ipynb | 3385 +++++++++++++++++ docs/docs/how-tos/http/custom_lifespan.md | 10 +- docs/docs/how-tos/http/custom_middleware.md | 6 +- docs/docs/how-tos/http/custom_routes.md | 12 +- .../add-human-in-the-loop.md | 848 +++++ .../human_in_the_loop/breakpoints.ipynb | 740 ++-- .../dynamic_breakpoints.ipynb | 446 --- .../human_in_the_loop/edit-graph-state.ipynb | 568 --- .../human_in_the_loop/time-travel.ipynb | 539 +-- .../human_in_the_loop/wait-user-input.ipynb | 2 +- docs/docs/how-tos/index.md | 324 -- docs/docs/how-tos/input_output_schema.ipynb | 153 - docs/docs/how-tos/local-studio.md | 82 - docs/docs/how-tos/map-reduce.ipynb | 317 -- docs/docs/how-tos/memory.ipynb | 447 +++ .../add-summary-conversation-history.ipynb | 529 --- .../docs/how-tos/memory/delete-messages.ipynb | 479 --- .../memory/manage-conversation-history.ipynb | 380 -- .../multi-agent-multi-turn-convo.ipynb | 473 --- docs/docs/how-tos/multi-agent-network.ipynb | 751 ---- docs/docs/how-tos/multi_agent.ipynb | 657 ++++ docs/docs/how-tos/node-retries.ipynb | 206 - docs/docs/how-tos/pass-config-to-tools.ipynb | 407 -- .../pass-run-time-values-to-tools.ipynb | 658 ---- docs/docs/how-tos/pass_private_state.ipynb | 177 - docs/docs/how-tos/persistence.ipynb | 1728 +++++++-- docs/docs/how-tos/persistence_mongodb.ipynb | 454 --- docs/docs/how-tos/persistence_redis.ipynb | 1095 ------ docs/docs/how-tos/recursion-limit.ipynb | 459 --- .../return-when-recursion-limit-hits.ipynb | 279 -- docs/docs/how-tos/sequence.ipynb | 355 -- docs/docs/how-tos/state-model.ipynb | 521 --- docs/docs/how-tos/state-reducers.ipynb | 430 --- .../streaming-events-from-within-tools.ipynb | 505 --- .../how-tos/streaming-specific-nodes.ipynb | 211 - docs/docs/how-tos/streaming-subgraphs.ipynb | 206 - docs/docs/how-tos/streaming-tokens.ipynb | 523 --- docs/docs/how-tos/streaming.ipynb | 547 --- docs/docs/how-tos/streaming.md | 817 ++++ docs/docs/how-tos/subgraph-persistence.ipynb | 379 -- .../how-tos/subgraph-transform-state.ipynb | 297 -- docs/docs/how-tos/subgraph.ipynb | 652 +++- .../docs/how-tos/subgraphs-manage-state.ipynb | 1049 ----- docs/docs/how-tos/tool-calling-errors.ipynb | 591 --- docs/docs/how-tos/tool-calling.ipynb | 1426 ++++--- docs/docs/how-tos/ttl/configure_ttl.md | 2 +- .../how-tos/update-state-from-tools.ipynb | 381 -- docs/docs/how-tos/use-functional-api.md | 532 +++ docs/docs/how-tos/visualization.ipynb | 381 -- docs/docs/index.md | 2 +- docs/docs/llms.txt | 4 +- docs/docs/reference/index.md | 5 +- .../navigation_title_ovverides.css | 29 + docs/docs/stylesheets/sticky_navigation.css | 23 + .../troubleshooting/errors/INVALID_LICENSE.md | 9 +- docs/docs/tutorials/auth/add_auth_server.md | 6 +- docs/docs/tutorials/auth/getting_started.md | 2 +- docs/docs/tutorials/auth/resource_auth.md | 2 +- docs/docs/tutorials/deployment.md | 32 +- .../get-started/1-build-basic-chatbot.md | 204 + .../docs/tutorials/get-started/2-add-tools.md | 330 ++ .../tutorials/get-started/3-add-memory.md | 209 + .../get-started/4-human-in-the-loop.md | 277 ++ .../get-started/5-customize-state.md | 311 ++ .../tutorials/get-started/6-time-travel.md | 288 ++ .../tutorials/get-started/basic-chatbot.png | Bin 0 -> 6215 bytes .../get-started/chatbot-with-tools.png | Bin 0 -> 26706 bytes docs/docs/tutorials/index.md | 2 +- docs/docs/tutorials/introduction.ipynb | 2483 ------------ .../langgraph-platform/local-server.md | 296 +- .../{workflows/index.md => workflows.md} | 16 +- docs/mkdocs.yml | 486 +-- docs/overrides/main.html | 13 +- docs/snippets/chat_model_tabs.md | 79 + docs/stats.yml | 58 + examples/introduction.ipynb | 39 - libs/langgraph/README.md | 69 +- 239 files changed, 14663 insertions(+), 27446 deletions(-) delete mode 100644 docs/cassettes/add-summary-conversation-history_048805a4-3d97-4e76-ac45-8d80d4364c46.msgpack.zlib delete mode 100644 docs/cassettes/add-summary-conversation-history_0a1a0fda-5309-45f0-9465-9f3dff604d74.msgpack.zlib delete mode 100644 docs/cassettes/add-summary-conversation-history_40e5db8e-9db9-4ac7-9d76-a99fd4034bf3.msgpack.zlib delete mode 100644 docs/cassettes/add-summary-conversation-history_57b27553-21be-43e5-ac48-d1d0a3aa0dca.msgpack.zlib delete mode 100644 docs/cassettes/add-summary-conversation-history_7094c5ab-66f8-42ff-b1c3-90c8a9468e62.msgpack.zlib delete mode 100644 docs/cassettes/agent-handoffs_62ba5113-e972-41e6-8392-cc970d4eea72.msgpack.zlib delete mode 100644 docs/cassettes/agent-handoffs_637d188c-e0d0-4c05-bb41-f007b4e17fb7.msgpack.zlib delete mode 100644 docs/cassettes/agent-handoffs_c4ccd402-a90d-4c94-906d-6d364c274192.msgpack.zlib delete mode 100644 docs/cassettes/agent-handoffs_f39f99b0-95c7-422f-96a6-e612fde186df.msgpack.zlib delete mode 100644 docs/cassettes/cross-thread-persistence-functional_c871a073-a466-46ad-aafe-2b870831057e.msgpack.zlib delete mode 100644 docs/cassettes/cross-thread-persistence-functional_d362350b-d730-48bd-9652-983812fd7811.msgpack.zlib delete mode 100644 docs/cassettes/cross-thread-persistence-functional_d862be40-1f8a-4057-81c4-b7bf073dc4c1.msgpack.zlib delete mode 100644 docs/cassettes/delete-messages_3975f34c-c243-40ea-b9d2-424d50a48dc9.msgpack.zlib delete mode 100644 docs/cassettes/delete-messages_57b27553-21be-43e5-ac48-d1d0a3aa0dca.msgpack.zlib delete mode 100644 docs/cassettes/manage-conversation-history_52468ebb-4b23-45ac-a98e-b4439f37740a.msgpack.zlib delete mode 100644 docs/cassettes/manage-conversation-history_57b27553-21be-43e5-ac48-d1d0a3aa0dca.msgpack.zlib delete mode 100644 docs/cassettes/multi-agent-multi-turn-convo-functional_2b6fde57-86e3-440e-a7bf-f1e9b5ed9ff2.msgpack.zlib delete mode 100644 docs/cassettes/multi-agent-multi-turn-convo_161e0cf1-d13a-4026-8f89-bdab67d1ad4d.msgpack.zlib delete mode 100644 docs/cassettes/multi-agent-network-functional_29b47c57-ad05-4f10-83bf-c3ff6ff8eb93.msgpack.zlib delete mode 100644 docs/cassettes/multi-agent-network_26a0d4df-ff99-40f0-92a8-0b3f2c591040.msgpack.zlib delete mode 100644 docs/cassettes/multi-agent-network_29b47c57-ad05-4f10-83bf-c3ff6ff8eb93.msgpack.zlib delete mode 100644 docs/cassettes/multi-agent-network_68a547d4-0a15-43bd-aeed-c9ba1dfe388f.msgpack.zlib delete mode 100644 docs/cassettes/pass-config-to-tools_14.msgpack.zlib delete mode 100644 docs/cassettes/pass-config-to-tools_15.msgpack.zlib delete mode 100644 docs/cassettes/pass-config-to-tools_16.msgpack.zlib delete mode 100644 docs/cassettes/pass-run-time-values-to-tools_2e3fd1e2-cc19-4023-8ffa-b0fc13da9e09.msgpack.zlib delete mode 100644 docs/cassettes/pass-run-time-values-to-tools_c0858273-10f2-45c4-a922-b11321ac3fae.msgpack.zlib delete mode 100644 docs/cassettes/pass-run-time-values-to-tools_d683986f-faf4-4724-a13f-bac39ea9bafe.msgpack.zlib delete mode 100644 docs/cassettes/persistence_08ae8246-11d5-40e1-8567-361e5bef8917.msgpack.zlib delete mode 100644 docs/cassettes/persistence_273d56a8-f40f-4a51-a27f-7c6bb2bda0ba.msgpack.zlib delete mode 100644 docs/cassettes/persistence_6fa9a5e3-7101-43ab-a811-592e222b9580.msgpack.zlib delete mode 100644 docs/cassettes/persistence_cfd140f0-a5a6-4697-8115-322242f197b5.msgpack.zlib delete mode 100644 docs/cassettes/persistence_mongodb_2e65b3b2-8e3e-4d96-8db4-4846a3bc2eac.msgpack.zlib delete mode 100644 docs/cassettes/persistence_mongodb_623b81ea-9415-4c49-9ded-9c7830a3ef6b.msgpack.zlib delete mode 100644 docs/cassettes/persistence_mongodb_e3a9889d-7a60-455f-96d6-95a8a2e7dbf6.msgpack.zlib delete mode 100644 docs/cassettes/persistence_mongodb_f7aaec32-1755-4ae4-a40b-ade58491a5bb.msgpack.zlib delete mode 100644 docs/cassettes/persistence_postgres_180d6daf-8fa7-4608-bd2e-bfbf44ed5836.msgpack.zlib delete mode 100644 docs/cassettes/persistence_postgres_386b78bc-2f73-49ba-a2a4-47bce6fc49b7.msgpack.zlib delete mode 100644 docs/cassettes/persistence_postgres_4faf6087-73cc-4957-9a4f-f3509a32a740.msgpack.zlib delete mode 100644 docs/cassettes/persistence_postgres_5fe54e79-9eaf-44e2-b2d9-1e0284b984d0.msgpack.zlib delete mode 100644 docs/cassettes/persistence_postgres_6a39d1ff-ca37-4457-8b52-07d33b59c36e.msgpack.zlib delete mode 100644 docs/cassettes/persistence_postgres_bd235fc7-1e5c-4db6-a90b-ea75462ccf7d.msgpack.zlib delete mode 100644 docs/cassettes/persistence_redis_5fe54e79-9eaf-44e2-b2d9-1e0284b984d0.msgpack.zlib delete mode 100644 docs/cassettes/persistence_redis_6a39d1ff-ca37-4457-8b52-07d33b59c36e.msgpack.zlib delete mode 100644 docs/cassettes/subgraphs-manage-state_12.msgpack.zlib delete mode 100644 docs/cassettes/subgraphs-manage-state_14.msgpack.zlib delete mode 100644 docs/cassettes/subgraphs-manage-state_16.msgpack.zlib delete mode 100644 docs/cassettes/subgraphs-manage-state_31.msgpack.zlib delete mode 100644 docs/cassettes/subgraphs-manage-state_34.msgpack.zlib delete mode 100644 docs/cassettes/subgraphs-manage-state_41.msgpack.zlib delete mode 100644 docs/cassettes/subgraphs-manage-state_43.msgpack.zlib delete mode 100644 docs/cassettes/subgraphs-manage-state_49.msgpack.zlib delete mode 100644 docs/cassettes/tool-calling-errors_11.msgpack.zlib delete mode 100644 docs/cassettes/tool-calling-errors_13.msgpack.zlib delete mode 100644 docs/cassettes/tool-calling-errors_17.msgpack.zlib delete mode 100644 docs/cassettes/tool-calling-errors_19.msgpack.zlib delete mode 100644 docs/cassettes/tool-calling-errors_9.msgpack.zlib delete mode 100644 docs/cassettes/tool-calling_17.msgpack.zlib delete mode 100644 docs/cassettes/tool-calling_19.msgpack.zlib delete mode 100644 docs/cassettes/tool-calling_23.msgpack.zlib delete mode 100644 docs/cassettes/tool-calling_25.msgpack.zlib delete mode 100644 docs/cassettes/tool-calling_26.msgpack.zlib delete mode 100644 docs/cassettes/update-state-from-tools_9d71af94-572a-4961-88a7-665e792cf96a.msgpack.zlib delete mode 100644 docs/cassettes/update-state-from-tools_de34a58b-1765-4b63-a232-d46790aff884.msgpack.zlib create mode 100644 docs/docs/cloud/concepts/cron_jobs.md create mode 100644 docs/docs/cloud/concepts/runs.md create mode 100644 docs/docs/cloud/concepts/streaming.md create mode 100644 docs/docs/cloud/concepts/threads.md create mode 100644 docs/docs/cloud/concepts/webhooks.md delete mode 100644 docs/docs/cloud/deployment/img/01_login.png delete mode 100644 docs/docs/cloud/deployment/img/02_langgraph_platform.png delete mode 100644 docs/docs/cloud/deployment/img/03_deployments_page.png delete mode 100644 docs/docs/cloud/deployment/img/04_create_new_deployment.png delete mode 100644 docs/docs/cloud/deployment/img/05_configure_deployment.png delete mode 100644 docs/docs/cloud/deployment/test_locally.md delete mode 100644 docs/docs/cloud/how-tos/stream_debug.md delete mode 100644 docs/docs/cloud/how-tos/stream_events.md delete mode 100644 docs/docs/cloud/how-tos/stream_messages.md delete mode 100644 docs/docs/cloud/how-tos/stream_multiple.md delete mode 100644 docs/docs/cloud/how-tos/stream_updates.md delete mode 100644 docs/docs/cloud/how-tos/stream_values.md create mode 100644 docs/docs/cloud/how-tos/streaming.md create mode 100644 docs/docs/cloud/how-tos/studio/quick_start.md delete mode 100644 docs/docs/cloud/how-tos/test_deployment.md delete mode 100644 docs/docs/cloud/how-tos/test_local_deployment.md delete mode 100644 docs/docs/concepts/bring_your_own_cloud.md delete mode 100644 docs/docs/concepts/high_level.md create mode 100644 docs/docs/concepts/img/breakpoints.png create mode 100644 docs/docs/concepts/img/subgraph.png delete mode 100644 docs/docs/concepts/index.md create mode 100644 docs/docs/concepts/langgraph_components.md delete mode 100644 docs/docs/concepts/platform_architecture.md delete mode 100644 docs/docs/concepts/self_hosted.md create mode 100644 docs/docs/concepts/subgraphs.md create mode 100644 docs/docs/concepts/tools.md delete mode 100644 docs/docs/concepts/v0-human-in-the-loop.md create mode 100644 docs/docs/concepts/why-langgraph.md delete mode 100644 docs/docs/how-tos/agent-handoffs.ipynb delete mode 100644 docs/docs/how-tos/branching.ipynb delete mode 100644 docs/docs/how-tos/command.ipynb delete mode 100644 docs/docs/how-tos/configuration.ipynb delete mode 100644 docs/docs/how-tos/cross-thread-persistence.ipynb delete mode 100644 docs/docs/how-tos/deploy-self-hosted.md create mode 100644 docs/docs/how-tos/graph-api.ipynb create mode 100644 docs/docs/how-tos/human_in_the_loop/add-human-in-the-loop.md delete mode 100644 docs/docs/how-tos/human_in_the_loop/dynamic_breakpoints.ipynb delete mode 100644 docs/docs/how-tos/human_in_the_loop/edit-graph-state.ipynb delete mode 100644 docs/docs/how-tos/index.md delete mode 100644 docs/docs/how-tos/input_output_schema.ipynb delete mode 100644 docs/docs/how-tos/local-studio.md delete mode 100644 docs/docs/how-tos/map-reduce.ipynb create mode 100644 docs/docs/how-tos/memory.ipynb delete mode 100644 docs/docs/how-tos/memory/add-summary-conversation-history.ipynb delete mode 100644 docs/docs/how-tos/memory/delete-messages.ipynb delete mode 100644 docs/docs/how-tos/memory/manage-conversation-history.ipynb delete mode 100644 docs/docs/how-tos/multi-agent-multi-turn-convo.ipynb delete mode 100644 docs/docs/how-tos/multi-agent-network.ipynb create mode 100644 docs/docs/how-tos/multi_agent.ipynb delete mode 100644 docs/docs/how-tos/node-retries.ipynb delete mode 100644 docs/docs/how-tos/pass-config-to-tools.ipynb delete mode 100644 docs/docs/how-tos/pass-run-time-values-to-tools.ipynb delete mode 100644 docs/docs/how-tos/pass_private_state.ipynb delete mode 100644 docs/docs/how-tos/persistence_mongodb.ipynb delete mode 100644 docs/docs/how-tos/persistence_redis.ipynb delete mode 100644 docs/docs/how-tos/recursion-limit.ipynb delete mode 100644 docs/docs/how-tos/return-when-recursion-limit-hits.ipynb delete mode 100644 docs/docs/how-tos/sequence.ipynb delete mode 100644 docs/docs/how-tos/state-model.ipynb delete mode 100644 docs/docs/how-tos/state-reducers.ipynb delete mode 100644 docs/docs/how-tos/streaming-events-from-within-tools.ipynb delete mode 100644 docs/docs/how-tos/streaming-specific-nodes.ipynb delete mode 100644 docs/docs/how-tos/streaming-subgraphs.ipynb delete mode 100644 docs/docs/how-tos/streaming-tokens.ipynb delete mode 100644 docs/docs/how-tos/streaming.ipynb create mode 100644 docs/docs/how-tos/streaming.md delete mode 100644 docs/docs/how-tos/subgraph-persistence.ipynb delete mode 100644 docs/docs/how-tos/subgraph-transform-state.ipynb delete mode 100644 docs/docs/how-tos/subgraphs-manage-state.ipynb delete mode 100644 docs/docs/how-tos/tool-calling-errors.ipynb delete mode 100644 docs/docs/how-tos/update-state-from-tools.ipynb create mode 100644 docs/docs/how-tos/use-functional-api.md delete mode 100644 docs/docs/how-tos/visualization.ipynb create mode 100644 docs/docs/stylesheets/navigation_title_ovverides.css create mode 100644 docs/docs/stylesheets/sticky_navigation.css create mode 100644 docs/docs/tutorials/get-started/1-build-basic-chatbot.md create mode 100644 docs/docs/tutorials/get-started/2-add-tools.md create mode 100644 docs/docs/tutorials/get-started/3-add-memory.md create mode 100644 docs/docs/tutorials/get-started/4-human-in-the-loop.md create mode 100644 docs/docs/tutorials/get-started/5-customize-state.md create mode 100644 docs/docs/tutorials/get-started/6-time-travel.md create mode 100644 docs/docs/tutorials/get-started/basic-chatbot.png create mode 100644 docs/docs/tutorials/get-started/chatbot-with-tools.png delete mode 100644 docs/docs/tutorials/introduction.ipynb rename docs/docs/tutorials/{workflows/index.md => workflows.md} (98%) create mode 100644 docs/snippets/chat_model_tabs.md create mode 100644 docs/stats.yml delete mode 100644 examples/introduction.ipynb diff --git a/.github/workflows/deploy_docs.yml b/.github/workflows/deploy_docs.yml index ec17db77c..b86c38ec8 100644 --- a/.github/workflows/deploy_docs.yml +++ b/.github/workflows/deploy_docs.yml @@ -38,12 +38,13 @@ jobs: with: filter: "docs/docs/**" - run-changed-notebooks: - needs: get-changed-files - uses: ./.github/workflows/run_notebooks.yml - secrets: inherit - with: - changed-files: ${{ needs.get-changed-files.outputs.changed-files }} + # TODO: Uncomment this to run on PRs + # run-changed-notebooks: + # needs: get-changed-files + # uses: ./.github/workflows/run_notebooks.yml + # secrets: inherit + # with: + # changed-files: ${{ needs.get-changed-files.outputs.changed-files }} deploy: # needs: run-changed-notebooks @@ -98,6 +99,7 @@ jobs: - name: Check links in notebooks env: LANGCHAIN_API_KEY: test + if: github.event_name == 'schedule' run: | if [ "${{ github.event_name }}" == "schedule" ]; then echo "Running link check on all HTML files matching notebooks in docs directory..." diff --git a/README.md b/README.md index 799ab4b9a..ae8f0084f 100644 --- a/README.md +++ b/README.md @@ -16,48 +16,41 @@ > [!NOTE] > Looking for the JS version? See the [JS repo](https://github.com/langchain-ai/langgraphjs) and the [JS docs](https://langchain-ai.github.io/langgraphjs/). -LangGraph — used by Replit, Uber, LinkedIn, GitLab and more — is a low-level orchestration framework for building controllable agents. While langchain provides integrations and composable components to streamline LLM application development, the LangGraph library enables agent orchestration — offering customizable architectures, long-term memory, and human-in-the-loop to reliably handle complex tasks. +LangGraph is a low-level orchestration framework for building controllable agents. While [LangChain](https://python.langchain.com/docs/introduction/) provides integrations and composable components to streamline LLM application development, the LangGraph library enables agent orchestration — offering customizable architectures, long-term memory, and human-in-the-loop to reliably handle complex tasks. -```bash +## Get started + +First, install LangGraph: + +``` pip install -U langgraph ``` -To learn more about how to use LangGraph, check out [the docs](https://langchain-ai.github.io/langgraph/). We show a simple example below of how to create a ReAct agent. +There are two ways to get started with LangGraph: -```python -# This code depends on pip install langchain[anthropic] -from langgraph.prebuilt import create_react_agent +- [Use prebuilt components](https://langchain-ai.github.io/langgraph/agents/agents/): Construct agentic systems quickly and reliably without the need to implement orchestration, memory, or human feedback handling from scratch. +- [Use LangGraph](https://langchain-ai.github.io/langgraph/tutorials/introduction/): Customize your architectures, use long-term memory, and implement human-in-the-loop to reliably handle complex tasks. -def search(query: str): - """Call to surf the web.""" - if "sf" in query.lower() or "san francisco" in query.lower(): - return "It's 60 degrees and foggy." - return "It's 90 degrees and sunny." +Once you have a LangGraph application and are ready to move into production, use [LangGraph Platform](https://langchain-ai.github.io/langgraph/cloud/quick_start/) to test, debug, and deploy your application. -agent = create_react_agent("anthropic:claude-3-7-sonnet-latest", tools=[search]) -agent.invoke( - {"messages": [{"role": "user", "content": "what is the weather in sf"}]} -) -``` +## What LangGraph provides -> [!TIP] -> Check out [this guide](https://langchain-ai.github.io/langgraph/tutorials/workflows/) that walks through implementing common patterns (workflows and agents) in LangGraph. +LangGraph provides low-level supporting infrastructure that sits underneath *any* workflow or agent. It does not abstract prompts or architecture, and provides three central benefits: -## Why use LangGraph? +### Persistence -LangGraph is built for developers who want to build powerful, adaptable AI agents. Developers choose LangGraph for: +LangGraph has a [persistence layer](https://langchain-ai.github.io/langgraph/concepts/persistence/), which offers a number of benefits: -- **Reliability and controllability.** Steer agent actions with moderation checks and human-in-the-loop approvals. LangGraph persists context for long-running workflows, keeping your agents on course. -- **Low-level and extensible.** Build custom agents with fully descriptive, low-level primitives – free from rigid abstractions that limit customization. Design scalable multi-agent systems, with each agent serving a specific role tailored to your use case. -- **First-class streaming support.** With token-by-token streaming and streaming of intermediate steps, LangGraph gives users clear visibility into agent reasoning and actions as they unfold in real time. +- [Memory](https://langchain-ai.github.io/langgraph/concepts/memory/): LangGraph persists arbitrary aspects of your application's state, supporting memory of conversations and other updates within and across user interactions; +- [Human-in-the-loop](https://langchain-ai.github.io/langgraph/concepts/human_in_the_loop/): Because state is checkpointed, execution can be interrupted and resumed, allowing for decisions, validation, and corrections via human input. -LangGraph is trusted in production and powering agents for companies like: +### Streaming -- [Klarna](https://blog.langchain.dev/customers-klarna/): Customer support bot for 85 million active users -- [Elastic](https://www.elastic.co/blog/elastic-security-generative-ai-features): Security AI assistant for threat detection -- [Uber](https://dpe.org/sessions/ty-smith-adam-huda/this-year-in-ubers-ai-driven-developer-productivity-revolution/): Automated unit test generation -- [Replit](https://www.langchain.com/breakoutagents/replit): Code generation -- And many more ([see list here](https://www.langchain.com/built-with-langgraph)) +LangGraph provides support for [streaming](https://langchain-ai.github.io/langgraph/concepts/streaming/) workflow / agent state to the user (or developer) over the course of execution. LangGraph supports streaming of both events ([such as feedback from a tool call](https://langchain-ai.github.io/langgraph/how-tos/streaming.ipynb#updates)) and [tokens from LLM calls](https://langchain-ai.github.io/langgraph/how-tos/streaming-tokens.ipynb) embedded in an application. + +### Debugging and deployment + +LangGraph provides an easy onramp for testing, debugging, and deploying applications via [LangGraph Platform](https://langchain-ai.github.io/langgraph/concepts/langgraph_platform/). This includes [Studio](https://langchain-ai.github.io/langgraph/concepts/langgraph_studio/), an IDE that enables visualization, interaction, and debugging of workflows or agents. This also includes numerous [options](https://langchain-ai.github.io/langgraph/tutorials/deployment/) for deployment. ## LangGraph’s ecosystem @@ -66,24 +59,14 @@ While LangGraph can be used standalone, it also integrates seamlessly with any L - [LangSmith](http://www.langchain.com/langsmith) — Helpful for agent evals and observability. Debug poor-performing LLM app runs, evaluate agent trajectories, gain visibility in production, and improve performance over time. - [LangGraph Platform](https://langchain-ai.github.io/langgraph/concepts/#langgraph-platform) — Deploy and scale agents effortlessly with a purpose-built deployment platform for long running, stateful workflows. Discover, reuse, configure, and share agents across teams — and iterate quickly with visual prototyping in [LangGraph Studio](https://langchain-ai.github.io/langgraph/concepts/langgraph_studio/). -## Pairing with LangGraph Platform - -While LangGraph is our open-source agent orchestration framework, enterprises that need scalable agent deployment can benefit from [LangGraph Platform](https://langchain-ai.github.io/langgraph/concepts/langgraph_platform/). - -LangGraph Platform can help engineering teams: - -- **Accelerate agent development**: Quickly create agent UXs with configurable templates and [LangGraph Studio](https://langchain-ai.github.io/langgraph/concepts/langgraph_studio/) for visualizing and debugging agent interactions. -- **Deploy seamlessly**: We handle the complexity of deploying your agent. LangGraph Platform includes robust APIs for memory, threads, and cron jobs plus auto-scaling task queues & servers. -- **Centralize agent management & reusability**: Discover, reuse, and manage agents across the organization. Business users can also modify agents without coding. - ## Additional resources +- [Guides](https://langchain-ai.github.io/langgraph/how-tos/): Quick, actionable code snippets for topics such as streaming, adding memory & persistence, and design patterns (e.g. branching, subgraphs, etc.). +- [Reference](https://langchain-ai.github.io/langgraph/reference/graphs/): Detailed reference on core classes, methods, how to use the graph and checkpointing APIs, and higher-level prebuilt components. +- [Examples](https://langchain-ai.github.io/langgraph/tutorials/): Guided examples on getting started with LangGraph. - [LangChain Academy](https://academy.langchain.com/courses/intro-to-langgraph): Learn the basics of LangGraph in our free, structured course. -- [Tutorials](https://langchain-ai.github.io/langgraph/tutorials/): Simple walkthroughs with guided examples on getting started with LangGraph. - [Templates](https://langchain-ai.github.io/langgraph/concepts/template_applications/): Pre-built reference apps for common agentic workflows (e.g. ReAct agent, memory, retrieval etc.) that can be cloned and adapted. -- [How-to Guides](https://langchain-ai.github.io/langgraph/how-tos/): Quick, actionable code snippets for topics such as streaming, adding memory & persistence, and design patterns (e.g. branching, subgraphs, etc.). -- [API Reference](https://langchain-ai.github.io/langgraph/reference/graphs/): Detailed reference on core classes, methods, how to use the graph and checkpointing APIs, and higher-level prebuilt components. -- [Built with LangGraph](https://www.langchain.com/built-with-langgraph): Hear how industry leaders use LangGraph to ship powerful, production-ready AI applications. +- [Case studies](https://www.langchain.com/built-with-langgraph): Hear how industry leaders use LangGraph to ship powerful, production-ready AI applications. ## Acknowledgements diff --git a/docs/_scripts/generate_llms_text.py b/docs/_scripts/generate_llms_text.py index 65ef80355..a3c220641 100644 --- a/docs/_scripts/generate_llms_text.py +++ b/docs/_scripts/generate_llms_text.py @@ -20,15 +20,8 @@ def _make_llms_text(output_file: str) -> str: output_file: Path to output the consolidated text file """ # Collect all markdown and notebook files - relative_paths = [ - # Files relative to docs/docs/ - "tutorials/introduction.ipynb", - ] - all_files = [os.path.join(SOURCE_DIR, path) for path in relative_paths] + all_files = glob.glob(os.path.join(SOURCE_DIR, "how-tos/*.md"), recursive=True) - all_files.extend( - glob.glob(os.path.join(SOURCE_DIR, "how-tos/*.md"), recursive=True) - ) all_files.extend( glob.glob(os.path.join(SOURCE_DIR, "how-tos/*.ipynb"), recursive=True) ) diff --git a/docs/_scripts/notebook_convert_templates/mdoutput/index.md.j2 b/docs/_scripts/notebook_convert_templates/mdoutput/index.md.j2 index 05cbef99a..2e84ff7f6 100644 --- a/docs/_scripts/notebook_convert_templates/mdoutput/index.md.j2 +++ b/docs/_scripts/notebook_convert_templates/mdoutput/index.md.j2 @@ -38,9 +38,13 @@ {%- endblock data_html -%} {%- block data_jpg scoped -%} -![](data:image/jpg;base64,{{ output.data['image/jpeg'] }}) +

+ +

{%- endblock data_jpg -%} {%- block data_png scoped -%} -![](data:image/png;base64,{{ output.data['image/png'] }}) +

+ +

{%- endblock data_png -%} diff --git a/docs/_scripts/notebook_hooks.py b/docs/_scripts/notebook_hooks.py index 20955dbab..b106cc4a7 100644 --- a/docs/_scripts/notebook_hooks.py +++ b/docs/_scripts/notebook_hooks.py @@ -18,28 +18,84 @@ DISABLED = os.getenv("DISABLE_NOTEBOOK_CONVERT") in ("1", "true", "True") REDIRECT_MAP = { # lib redirects - "how-tos/stream-values.ipynb": "how-tos/streaming.ipynb#values", - "how-tos/stream-updates.ipynb": "how-tos/streaming.ipynb#updates", - "how-tos/streaming-content.ipynb": "how-tos/streaming.ipynb#custom", - "how-tos/stream-multiple.ipynb": "how-tos/streaming.ipynb#multiple", - "how-tos/streaming-tokens-without-langchain.ipynb": "how-tos/streaming-tokens.ipynb#example-without-langchain", + "how-tos/stream-values.ipynb": "how-tos/streaming.md#stream-graph-state", + "how-tos/stream-updates.ipynb": "how-tos/streaming.md#stream-graph-state", + "how-tos/streaming-content.ipynb": "how-tos/streaming.md", + "how-tos/stream-multiple.ipynb": "how-tos/streaming.md#stream-multiple-nodes", + "how-tos/streaming-tokens-without-langchain.ipynb": "how-tos/streaming.md#use-with-any-llm", "how-tos/streaming-from-final-node.ipynb": "how-tos/streaming-specific-nodes.ipynb", "how-tos/streaming-events-from-within-tools-without-langchain.ipynb": "how-tos/streaming-events-from-within-tools.ipynb#example-without-langchain", + # graph-api + "how-tos/state-reducers.ipynb": "how-tos/graph-api#define-and-update-state", + "how-tos/sequence.ipynb": "how-tos/graph-api#create-a-sequence-of-steps", + "how-tos/branching.ipynb": "how-tos/graph-api#create-branches", + "how-tos/recursion-limit.ipynb": "how-tos/graph-api#create-and-control-loops", + "how-tos/visualization.ipynb": "how-tos/graph-api#visualize-your-graph", + "how-tos/input_output_schema.ipynb": "how-tos/graph-api#define-input-and-output-schemas", + "how-tos/pass_private_state.ipynb": "how-tos/graph-api#pass-private-state-between-nodes", + "how-tos/state-model.ipynb": "how-tos/graph-api#use-pydantic-models-for-graph-state", + "how-tos/map-reduce.ipynb": "how-tos/graph-api/#map-reduce-and-the-send-api", + "how-tos/command.ipynb": "how-tos/graph-api/#combine-control-flow-and-state-updates-with-command", + "how-tos/configuration.ipynb": "how-tos/graph-api/#add-runtime-configuration", + "how-tos/node-retries.ipynb": "how-tos/graph-api/#add-retry-policies", + "how-tos/return-when-recursion-limit-hits.ipynb": "how-tos/graph-api/#impose-a-recursion-limit", + # memory how-tos + "how-tos/memory/manage-conversation-history.ipynb": "how-tos/memory.ipynb", + "how-tos/memory/delete-messages.ipynb": "how-tos/memory.ipynb#delete-messages", + "how-tos/memory/add-summary-conversation-history.ipynb": "how-tos/memory.ipynb#summarize-messages", + # subgraph how-tos + "how-tos/subgraph-transform-state.ipynb": "how-tos/subgraph.ipynb#different-state-schemas", + "how-tos/subgraphs-manage-state.ipynb": "how-tos/subgraph.ipynb#add-persistence", + # persistence how-tos + "how-tos/persistence_postgres.ipynb": "how-tos/persistence.ipynb#use-in-production", + "how-tos/persistence_mongodb.ipynb": "how-tos/persistence.ipynb#use-in-production", + "how-tos/persistence_redis.ipynb": "how-tos/persistence.ipynb#use-in-production", + "how-tos/subgraph-persistence.ipynb": "how-tos/persistence.ipynb#use-with-subgraphs", + "how-tos/cross-thread-persistence.ipynb": "how-tos/persistence.ipynb#add-long-term-memory", + # tool calling how-tos + "how-tos/tool-calling-errors.ipynb": "how-tos/tool-calling.ipynb#handle-errors", + "how-tos/pass-config-to-tools.ipynb": "how-tos/tool-calling.ipynb#access-config", + "how-tos/pass-run-time-values-to-tools.ipynb": "how-tos/tool-calling.ipynb#read-state", + "how-tos/update-state-from-tools.ipynb": "how-tos/tool-calling.ipynb#update-state", + # multi-agent how-tos + "how-tos/agent-handoffs.ipynb": "how-tos/multi_agent.ipynb#handoffs", + "how-tos/multi-agent-network.ipynb": "how-tos/multi_agent.ipynb#use-in-a-multi-agent-system", + "how-tos/multi-agent-multi-turn-convo.ipynb": "how-tos/multi_agent.ipynb#multi-turn-conversation", # cloud redirects - "cloud/index.md": "concepts/index.md#langgraph-platform", - "cloud/how-tos/index.md": "how-tos/index.md#langgraph-platform", + "cloud/index.md": "index.md", + "cloud/how-tos/index.md": "concepts/langgraph_platform", "cloud/concepts/api.md": "concepts/langgraph_server.md", "cloud/concepts/cloud.md": "concepts/langgraph_cloud.md", "cloud/faq/studio.md": "concepts/langgraph_studio.md#studio-faqs", + # cloud streaming redirects + "cloud/how-tos/stream_values.md": "cloud/how-tos/streaming.md#stream-graph-state", + "cloud/how-tos/stream_updates.md": "cloud/how-tos/streaming.md#stream-graph-state", + "cloud/how-tos/stream_messages.md": "cloud/how-tos/streaming.md#messages", + "cloud/how-tos/stream_events.md": "cloud/how-tos/streaming.md#stream-events", + "cloud/how-tos/stream_debug.md": "cloud/how-tos/streaming.md#debug", + "cloud/how-tos/stream_multiple.md": "cloud/how-tos/streaming.md#stream-multiple-modes", # prebuit redirects "how-tos/create-react-agent.ipynb": "agents/agents.md#basic-configuration", "how-tos/create-react-agent-memory.ipynb": "agents/memory.md", "how-tos/create-react-agent-system-prompt.ipynb": "agents/context.md#prompts", "how-tos/create-react-agent-hitl.ipynb": "agents/human-in-the-loop.md", "how-tos/create-react-agent-structured-output.ipynb": "agents/agents.md#structured-output", + # Time-travel + "how-tos/human_in_the_loop/edit-graph-state.ipynb": "how-tos/human_in_the_loop/time-travel.ipynb", + # breakpoints + "how-tos/human_in_the_loop/dynamic_breakpoints.ipynb": "how-tos/human_in_the_loop/breakpoints.ipynb", # misc "prebuilt.md": "agents/prebuilt.md", - "reference/prebuilt.md": "reference/agents.md" + "reference/prebuilt.md": "reference/agents.md", + "concepts/high_level.md": "index.md", + "concepts/index.md": "index.md", + "concepts/v0-human-in-the-loop.md": "concepts/human-in-the-loop.md", + "how-tos/index.md": "index.md", + "tutorials/introduction.ipynb": "concepts/why-langgraph.md", + # deployment redirects + "how-tos/deploy-self-hosted.md": "cloud/deployment/self_hosted_data_plane.md", + "concepts/self_hosted.md": "concepts/langgraph_self_hosted_data_plane.md" + } diff --git a/docs/cassettes/add-summary-conversation-history_048805a4-3d97-4e76-ac45-8d80d4364c46.msgpack.zlib b/docs/cassettes/add-summary-conversation-history_048805a4-3d97-4e76-ac45-8d80d4364c46.msgpack.zlib deleted file mode 100644 index c8992ccdd..000000000 --- a/docs/cassettes/add-summary-conversation-history_048805a4-3d97-4e76-ac45-8d80d4364c46.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/cassettes/add-summary-conversation-history_0a1a0fda-5309-45f0-9465-9f3dff604d74.msgpack.zlib b/docs/cassettes/add-summary-conversation-history_0a1a0fda-5309-45f0-9465-9f3dff604d74.msgpack.zlib deleted file mode 100644 index 105e33c74..000000000 --- a/docs/cassettes/add-summary-conversation-history_0a1a0fda-5309-45f0-9465-9f3dff604d74.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/cassettes/add-summary-conversation-history_40e5db8e-9db9-4ac7-9d76-a99fd4034bf3.msgpack.zlib b/docs/cassettes/add-summary-conversation-history_40e5db8e-9db9-4ac7-9d76-a99fd4034bf3.msgpack.zlib deleted file mode 100644 index e2ee9d9db..000000000 --- a/docs/cassettes/add-summary-conversation-history_40e5db8e-9db9-4ac7-9d76-a99fd4034bf3.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/cassettes/add-summary-conversation-history_57b27553-21be-43e5-ac48-d1d0a3aa0dca.msgpack.zlib b/docs/cassettes/add-summary-conversation-history_57b27553-21be-43e5-ac48-d1d0a3aa0dca.msgpack.zlib deleted file mode 100644 index 7a7d6b2b1..000000000 --- a/docs/cassettes/add-summary-conversation-history_57b27553-21be-43e5-ac48-d1d0a3aa0dca.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/cassettes/add-summary-conversation-history_7094c5ab-66f8-42ff-b1c3-90c8a9468e62.msgpack.zlib b/docs/cassettes/add-summary-conversation-history_7094c5ab-66f8-42ff-b1c3-90c8a9468e62.msgpack.zlib deleted file mode 100644 index de43698e6..000000000 --- a/docs/cassettes/add-summary-conversation-history_7094c5ab-66f8-42ff-b1c3-90c8a9468e62.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/cassettes/agent-handoffs_62ba5113-e972-41e6-8392-cc970d4eea72.msgpack.zlib b/docs/cassettes/agent-handoffs_62ba5113-e972-41e6-8392-cc970d4eea72.msgpack.zlib deleted file mode 100644 index 4bd93ef2e..000000000 --- a/docs/cassettes/agent-handoffs_62ba5113-e972-41e6-8392-cc970d4eea72.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/cassettes/agent-handoffs_637d188c-e0d0-4c05-bb41-f007b4e17fb7.msgpack.zlib b/docs/cassettes/agent-handoffs_637d188c-e0d0-4c05-bb41-f007b4e17fb7.msgpack.zlib deleted file mode 100644 index 220e60417..000000000 --- a/docs/cassettes/agent-handoffs_637d188c-e0d0-4c05-bb41-f007b4e17fb7.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/cassettes/agent-handoffs_c4ccd402-a90d-4c94-906d-6d364c274192.msgpack.zlib b/docs/cassettes/agent-handoffs_c4ccd402-a90d-4c94-906d-6d364c274192.msgpack.zlib deleted file mode 100644 index 4b0efc892..000000000 --- a/docs/cassettes/agent-handoffs_c4ccd402-a90d-4c94-906d-6d364c274192.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -eNrtXHtcTGkfT1qRpE0Ui86m1KapuVUzuXW/TaXLpMZSnWZOzamZOdOcM9UILTa5bBhlWXIpKVJJkl0kCaW11ku9UnItuYtlaSPvmalcY9e72Xfej+Pjj+k8t9/z+z6/5/l9v3OeWZAbB0lQGBH1y4dFGCQBuRj+B7p2Qa4EipVCKPZtjhDC+Agv229aIHuLVAKfM+VjmBi1t7YGxbAVKML4EkQMc624iNA6jmIthFAUjILQ7AiEJ2tQn5hoLAQTwjAkBhKhxvYAhUylWwLGPbXwJ18nGksQAYR/MpaikMQYL+UiuCkiTPEong9iZihgTgMmADZfARYAhWo8d5aiB4QHCRQ1uAJQyoNINJINCUVEIggjCUAMN1zRESpDMUioqMVBpAAogQBQBIA8HqyYJAAliCEJZgnI8DKuogCNATA+BAilAgwWC2Au+Eo1IBKRAHxIIAbiYYz/Rh0rxWAYggi6JyQChcoJ4UMpSngQypXAYkVNxVNHHg8FsHgEEEmFEbj3la1hkViKhaFcPiQE8UqJxmLcrfi4sNJJicZdDzGZWNmxAqso3Flz8ZYRvZcoihQYwhKIp7AK70FZWeG8nspIRDTExZR1XxqNSUARGglJcNDCXp9mWJcrepsS7jpQhODekwA4rqKX7vork5vbm0mz5ubyIZCH+2dFNh9BMfmut9bbTpDLhcQYCRJxER4sipIXRM2GxZYAD4pUrIE8rmI9KBe0PC8GgsQkUADHQTldreRFoPjFzKyj8bWT373uSApb3i7OUyxPknJ28r2OPXZY+8nw8BABZCsa3YpalEBCMRAWCfD1ja9D3KQcsbJ8/6sFYpAbg/dD6g49eU5X48JX6yCofKsPyJ0W+FqXoITLl28FJUJb+u5Xn0ukIgwWQvJcZ7+3h+sufDkczYpCsWLueq1jVCbiyrdGggIU2vXCyS+a5FHJVBqJbEsiUwp7vCSARFEYX77Fxo6yTQKhYnzbgBbm4F1iUnRBNo4IdKI6tzvQs6axetC8oGaQ7YKjIy9jSyFLgGIHuEBcAO+fDlBp9hQy/h9w92HnO3cPw+4VjF3s7lVKcu0BP5fLl4piIF6ec6+wnzN+OS0JPr4AFsIYqXuXw8FS/CnPppPJ5HPj31tTgi9iWKQYMZvGZDL/pF/cMxAmL1HMj0Shkih27K5Zku1m9D6OMlZIXRtmt1U5Cqtwuyz+tP5L23rajP8Lbd5toVlvrREp9paJWxnK0Sb8ef2XJna3MfsrbXo3kUKecQ7orfkb7usayOQ9NV91XFdt4L213+myvG7kSTBPfgD/HEamMMEQqTsHjXVEadxoKBLmB+GnEmVLHAzK8yhWFCAKQaIE0E5nN5IziG+RpEBlCMlzXTi+jj6ezvkhpAAkAsHXEhvE15wIEUE5gZAED015HleASHn4ZieBcvDmAY4ceQkjkgYybUBeBESN4EFMO5JrcEBRTzC9CJZsxU6pPKPn4yErwR8d7TffaNlANeW//jx/IXKGrNs5IbdDfaCBKbyQnuSiXzLEYp8nucKvuWHNsTxuypP8PXkPLvprD1v/BNuXGHr34fmRBY5L5p63c21vabyR11CyY8XZqi/K5l3n7y4UWWo1n3GgLYtgJzrN54p/czjKHzfhV/OioYtGe9X6mjova8kKPXJp8v0si7wgDnu4Vm0FTebWfvUpvwbLaPnJ44BGwSSseUBC0fl+8Ro1hj/bJhjWVrdJBu3MnGcavsbQKoyhubFaTdPv/sr2uRKBZtSeGgt7HTq1BJxzpWMNWjxvk824o82GcWbmO+wed15IMl60cfMeLu9UzY1m/WHNLXpm9+916s5Mu5LhtVxyNzAwfW/L7J8b7xndnRJWHmNdGizseFQkW6FedhONO3ZCb6qJm8wtWfKVOKV4Y84m9XEpmSM9j17adK/aITtsyYHx6VOYZuSWvdW/Ge1fVDl/jstPeRe1ar3ia6/LJaN+Qd3uL16RfeJ5iMdTLOD7R/RnA9TUnj/vr5Y6dOVGqrqaWh9lXRoGHyPrUuQIPW1AFIXxnV6Evd4Q7xWDEpRdeCpTqpcJkyKxepF5iUE8oeru3RKIkGKAp5lAAIggiAdgyH+TiMnwFaxsg4cm/gSIkOE2W80UzRR5QxgghIBIWIJiuE0CrlSRGwDKwe2NX8k8lJYrZ/niCZ7RheHuUdR6I6VT7qAvEjNadxpmo8hkYF5PWyke/IEUV3/Mf4ZbiA/LKZLp7xUZOT3G1wXPYV/z59sYfP2GGV3zegMnRk/eqbAy7C8NrDAQDYMkEkSC11ae97gtREZNZNRERq0iGXU2hUy369uUmvoppNSKbFC1U2oKVfVTaqpqpdS4Pb2k1HZMTjA3SApNd6YHRQcn+LtGesd6RX/clJpLByEG78NS6tBXUuqVIKvSQXvRc69qg+HIqTid1rnDNGIDHUf6fs4UzSqdjsTvOX7j2PWkNXHaY+bZW017MMXka8vWbbFHWWnZBp2XY6j79q9bvily7+5d5fOMon51ZpuvX9pgFVHKckqWioUV1DWW/x5sMTOZyaxdO/GL1tpbjwdM1rmQ9rDYZCIrzdI5WdbmFOpXLnqc6XQr7kAi/UIKsvKw1nkHsHzgovCR2cC2JVuGDRzMuFv5lbav/vnRTM3vp9ofXOpbU7P6p9XUhM1S1z3ffDu5/ht900pBfzhnl395p27GkvOiug1Zz9zTstNS4M4H89qpstIgyqjkK7FzWwPZ1+/krd9R0PpZndsCZvr6DQeGPAzSr23MkQVW61kEprVcGrpnTPgf3zWjTne2oFrceLisCTIcZNQ88lF4ffDaxgNA2tmSM2PiTBJD0zY8j/qy5mKNrByep9aVL68YH6Kl0Xf58mdtRL5M5Msfki9/GLa+SDzuaxBHDeCDcRDAwBF71flI5EtwlcC+H1Ac8R4U8Vow2gXef4HNX8pLXyD3NlZs/2AuJ9qRww4BxXwvL4QfkOAjovQRVoFSPKlE0UipQDHNbkslXQv+nca+A9t3GNr3XKh3xF4nRG8TpjdCtKf0XRyoB/xeWINP9/DQ/wsd6pkrQYQIItQLEbKhkvuWCNl8EkSIqvJEyEb1iZCNihEhm96IUJBtNMU3KAahxSJCdx7d2c+DR6VN/7hEiEelQlTuhxEh35dESJnD8/xwNkTWfTbh/pTcU3HrT84ZZmY/OmuxwDzg9MN66pnsGKviwoflrB3OKZuW7398tyzx7AIrB4cbZzkZ+WPvQhs7Wp9dLQ45zx9tVDi0UW30tu1FUZmPJamHMuNyjDzu7TGDBzHSCx36q6fLMw/x9X2M7+W7Lj3NGGMWu05ds8Uy01QXueOfLr64c6jrodVZQCrMWE/jUBuACQu/nDWywASOGnl3Qv6N7375YdX3w/e5ueYwi0fZQrLKVWyHqqTJGTRO27MW5/MHh3Iyztvsu2BZuv/XczxO2c0f5o1s2TvtUEWNZODTcQ33zlnoLh5hsvirlNEuq+KaJmpOK6yJTr9wLjC3X9uPg/nDFxRVGOqACZv55Y+oEiP+5MW/LaNomtYNoAVd1aVPhI64H3DjPK2aubk87QZ0dm6/LuIjAgbHNvbrM+KjGU8QH4L4EMSHID4fjq0jF5OCuIk4cgAofDdqXwJdEc7DeQIXw6f0AkLGf43fqwzo9QBjdAcYhfo2ah4yWML3jo6Nc7EJFs+AXeAgWoS7fx+hxrR9DwzvGJngnwT/JPinKvNPJqWP321jfBL800bl+SdD9fknQ8X4J6M3/knlsmioiIWGRDi706JiWRKuODhY8nH5J0SNZOIE4IP4Z8ar77Y1xTSSdZ8HL09sSJk02oyzBBz69d50p03/zi4qrBx4Q2//amkhliVd+PxxxJqi5MlLOuY2pejUh1juSu2w2FSQFHe5sb39j4Nl5U2FrctulcrSxw73uvivbVmGjzb6geF26vbHxi/9fYHW16XNRS5XseL0X3ZDI84lrsqvXnbU0lqLza8fLKt48PiyocXDSQ25uUd8fHTNx5sdmphgl7KiaM5Qo/DphwxC5h78Lb5TD6ta/viXwRXL+3v4hNffCxDU979xaZTWygpT/jjPiWcXmhXzHA2xOWu1Gxrcxj9D3R1zNq+bqTkttTZ3qa+m/yXO+LVbc9Sm7dMcw5B1DCr02GxapB1g97l2ioPbzLArmztFx2/n6Vc1+mga3WK37L61c32dTyy49yISajtVdOvozmURiclaZSKzsFNT7pqzD9fFZt0UXqPUxHsWTdKuNEr2/3GH+o3qzpLLLi6zvZuHgDfSUK0zD9NaLpO26M0DjHZNmvi1Bb2hlv2Dw+zo+LzqFXMA4fNWxvHy6mim9s7ur/GSp5eG8frua7xBRQSbJdgswWYJNkuwWZVhsx8GA7u3aFJuxMBkgGmr2NhwfMSIAImCZ0PKPVEBFd5XpBRVogRKcPYpAUgKHLsxVW6wr2+x7yfAb23algBOAJWPu3hgPCjD+TYiFfGsgO6Nlod0BTEXkXStjL8ZyL0Q0/eEcKAjmzmd6s4Lcpk+m+06g0/nuFODvP+BEO7FzHdtzL2bSLyPTLyPTMggqi2DUHHa2KcyCPWTuOKnYPCqLYNQySovg1BV7Iofbk8vMkiwHRpHc4qBmYwZ00FfDy+UBcVh8MeVQSJpdkwy4+9+Dd/oVemg+2y1NLTJa13otg5zi5JQB8sSc71jTZQlTbeP3bYUktrjPV1KntBPZHwRpeM3ys8veRJrUbzBipZr9pYXzv4YmlS4LmLXKOEmB/V7MTdD9NWvaeiNQvb3X+Q3wK0KyHywyNL81IgtmRV88kiNe6PvAz6n75M9A1duLuNKtG+2t3FrSm41P/MjG4QMsvLYTDFdc2FQQ11t25K1g1N99Xkxu0g/McbX1bf98KPpiOGDUqe7L/OOMPE96uI4IenMgb0c7VkpBxP2VlmOtKpqr6tsOdZ65mkq8vTBhdu3numZMPL/yDmG6QW7D5CqadisatOKPl1qrafeYR8zcGF81cjJutfHrTqjUeMaY3qkc8nNNuGaXRdXDt4cuXu7Ruq+zd52387aeXut/OmlIZntK9qrk6xbr5Y+U+8SLq7YDzW52Hdfww+2J4QLQrgghAtCuCCEC0K4IISL/2Ph4kMP3e6QfQPWnmB9D7Iv8Pvnj0g2PcrV3yUGibKNisRYCNuXJxPL2P/AEfmOgQkJiZCQCAlJxSUkhh29byWkT+JKO1Xlr7RTVf9KO1XFrrRTe73SzgqMECOINDhGEiOW2sU7+fMCZCD3o0pItmSqLcS0+TAJSfamhCR3RBrJ2snPtSp+tvUeKdj7mV5TsfP80vqiO7URhhpHIyOsi5uXsoeNa0syai6pX7BB4/7keXPSfetttu1q3fBVTVUu8uv+yrYfmU9LZ8k62p+UhJXn+2d+1x8yoDSOyTxsONMq5Nryo7Mdk+fyqzOPNZyrPXUlOnb3pUuTj2dZ5N0q3mbBDtG0bv7s0a9nvmBfX9vY6nz1rFgNLjg0puT35PBB3zvOWOCRkeFQf7hjwpOBdkb6331ZhupM8u+vd+jBvLjfj3va/VhYevqzodhocy/bA1rjPBopAjfzHdPEaz7XK2glHf3u29SCx6PMHtmBA0+anEz8dcXqe8f1W2bvmXlh6pwbf9Q5G95bEfvkYFlZ53ytsjutB4Pz5OFWzj+g27QfOuvV5sJ/bF1pqj1+Vcsl66qT6mdQ47Bh0ZsyAtdeKz+VS6v0qE+Lqt0RtLWoVMrKWY6Njb9hfuGhR2l72GDPzgLLn+E/+nepTf1S9zWP77vXZIbYEGoToTYRahOhNhFqE6E2EWoToTYRatPfVps+3hEpQ6R/Pfvp/bC06jpne9akUsuKALkx/4ND1JHJYHixfGAhk4XIvBIkYv9IN3qACh6i7zCUuLJHXNkjhEYVFhppNEbfXtnDP3wKQqPK/2QMla76QiNdxYRGem9CY4g73QmzjXP15sBejlSPeBdnMUyDPrLQyAMZZOaHCY3Or1zZ82NNqyRrd06oMLDaXjtirZdofX09y2P0yvCBQZxoaTL9K6mxbV5nfPphjWFmP3eO/b1VJ09do5Z9Lba4wdv26rnQpmnLYFplyp5zy8eyLl3SGTJghN5xvfnOMVJDj6ylGXQdRm2pwxD19O8PHrpuvG9p9aiFVl5XH1KXnNFnmMeMHqV55aeJ6+zPa7b7aViejLkWVx29c1bddS/PYE6l+GL4rbWWEHSyfsOz8ME52czTOpbcxv6sgH6Tn0tLp7duPFzmXH2qQ3dYq8s0DO34aebOyJ//JaEmjRkmJhePjehcO2ADfKD/v+ZryGPrF3icPph02eGkrWzZqnxmE13t23tjU510j8X8UjEUGda0N+zu7S9GqcuPnB2kaVqng9Zd0bWZuvWI+wFXztOq/PgkM86/H4d136yrbxsbe7rvXlDTKSYkQ0IyJCRDQjIkJENCMiQkQ0IyJCRDQjIkJMO/IRl+YByavefkBMAonCx+CSiWSFdY/s+OThbkgaIc1MV9tpc3y83L1svJI9oR/SeOzneMTOi1hF5L6LWqrNfa2VL7Vq/9JH7iWyE1qrheq/o/8U1VsZ/4pvb6E99+cbGBPnEzhBEekSDCYLjOELt7z6B9XL2WwgDBCNsP02s1XtFrlzd5HSHrfxtmemL11O0lTQUN3xhM+QawWmwc4JQY98WJjbXXNGpPx6+xsjIPHXLCjnZC42xFuFG8T+j5s4XfN64be7Cw5f7dm7KmqUsaHZynaM4I0N/S9Dn92CWDymPXs0JG8G87u48dULB3+xbB6iCO9gkTzg9rbhlbs/gl85NDwkNzrm47VRUwdXHFeL7p5O0F3Ft1HhSZP7jDd/rNmUG5N72Hb93n/6jls2vBqeYg362YQtZevN/tdPWTfvILw2JZ5IwDZz1SHkcuuPql57jLqYzD+q6z+CWld7bD7sVX1O2SxrXLV/D2P7c0ab+TXjcpqfsdzfQsg8ecfmpq/wGQGLad \ No newline at end of file diff --git a/docs/cassettes/agent-handoffs_f39f99b0-95c7-422f-96a6-e612fde186df.msgpack.zlib b/docs/cassettes/agent-handoffs_f39f99b0-95c7-422f-96a6-e612fde186df.msgpack.zlib deleted file mode 100644 index 7593980a3..000000000 --- a/docs/cassettes/agent-handoffs_f39f99b0-95c7-422f-96a6-e612fde186df.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/cassettes/cross-thread-persistence-functional_c871a073-a466-46ad-aafe-2b870831057e.msgpack.zlib b/docs/cassettes/cross-thread-persistence-functional_c871a073-a466-46ad-aafe-2b870831057e.msgpack.zlib deleted file mode 100644 index 6528a965f..000000000 --- a/docs/cassettes/cross-thread-persistence-functional_c871a073-a466-46ad-aafe-2b870831057e.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/cassettes/cross-thread-persistence-functional_d362350b-d730-48bd-9652-983812fd7811.msgpack.zlib b/docs/cassettes/cross-thread-persistence-functional_d362350b-d730-48bd-9652-983812fd7811.msgpack.zlib deleted file mode 100644 index 2e32efdaa..000000000 --- a/docs/cassettes/cross-thread-persistence-functional_d362350b-d730-48bd-9652-983812fd7811.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/cassettes/cross-thread-persistence-functional_d862be40-1f8a-4057-81c4-b7bf073dc4c1.msgpack.zlib b/docs/cassettes/cross-thread-persistence-functional_d862be40-1f8a-4057-81c4-b7bf073dc4c1.msgpack.zlib deleted file mode 100644 index 4772c550c..000000000 --- a/docs/cassettes/cross-thread-persistence-functional_d862be40-1f8a-4057-81c4-b7bf073dc4c1.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -eNrNenVYVO3XroEBKiUKIjGAgChTdAhIS4lKSojDzAADw8wwQYMIIikwiIiSkhJKSqfSKUpKSUh3p5xBfet731+c88939h/7Yva611r3s561ns113dszxR6JJ6CwmMMZKAwRiYfBiZQfhFDPFDzSjoQkEB8l2yKJVlhE4i1tHd0EEh7Ve8mKSMQRpMBgGA4FwuKQGBgKBMfagu2hYKStORKBQGEsCYnmWIRTr6ULNwqDIxG5pQDGxlAhCRGIIEBYXEQQICEqRrkJU27CEFNTQQC3LRaBRFNg3ESkIxH4exygMJBgC0OjuSkQJAaOPXhmZoHF28IOYnKbwwhIMRFutxQrJAxBWcfgIfpEKyyBSH77V26ZMDgciaPE/RWC/MbSGYUTBCCQFmgYEZkGx2IwyB8rJ6fZIJE4IAyNskcm//QiZ8FwODQKDjuwg60JWEwGBU9EYohAohMO+XdzGomAxANhlhQEOU+bQkJeDXzLiVJEDAAKEpUEiWc5AglEGAqDRhIIQDSMwicZ98Ne8mcDDga3oQQB/togcvJP57d/xmAJ5CQtGFxb5y8hYXi4FTkJhrcVE8n983M8CUNE2SLJKYq3/p7ul/GPdMIgKBQkmf2XwAQnDJycZAFDE5AFf3FGEvFOQDiWEoP8CpIMx2JtUEhy77KZGdzCzNxWRsRCS1cJAzeDC92SQOH0xe7qY0RgKlAoCiF/w4gkYqOpoaohBDO0FLZQA0LFhcVFJSBQUUkgFAQBQUFQIMneUh5np4pV0SIIm6sp3xKHWyprSYJUxQ0UrKAKhtqWEjDr21ARAuSWup64NRp2QwtjbYg3R6ra3FWR1yYKkVD2Qjh9eTWEsI6ysKETxE4PcvuOpTSAwo5kj0LIqAqrKkPMtJWQt9TF7A0ldfUtbFDiJBzIyFnBAqnuaK4mhFKBWNtakhCWf6InKiIOhPxiKAYRkYAcXG9/6w00EmNJtCInQCHCr/FIAo4yVUivZErJiCSCZyKlD5HN9Sm2lOJR9jheW+OPFmZNVKL0JLnMAIkQBAgJAdRhGIAQREgUIASVgkhKCUEBqlq6GYq/0uj+Ywtm6+JhGIIFpQ2Vf2v5FLgVCWODRKQp/mOzlxw0O2UnD+jjsWjKQzTWAYjFoyxRGPKrK2X/w4x0xGEJSOAv0uQMQ+Cdn+cFUE0p4+fgAX/MNDn/nyc69xcIi7eEYVDOP6iTUw+GAW5F6aq8X2YcHnuQ98DRlnBQTKG3vyy/9WkapTYQIBQChECLCEQ8Ck4Zy4PF47B4IpCAhFOOLKITuVfQFuZ4MJMywlBRYTHKRkkDUBg4moRA6pDMlbC2lJwEaQAOj0RjYYgEexSMXIbE2GOdgHgsiXIuAsUlJRAiYiIi4mJAG0txnHmZI/CnnYSjZEXCbCm58PYoOBL4Y8TiJaDFjkA8ZSPRKFsUpRt+3H+dqZShhR70SuHfEUSsDRJDIL/+Yadc5X+G4JEHNA9q8XugREnKVfrPoF+xUiR/XCLFf0URkH/ikyBmSyj8u/1XhHgIIcPxNzAQhSD3XqL8MJNAwoVEEUKSMCgEKS6BNEeKiFogJJEiEARMDCZkIZapqAJUhMGtkECdH11PTlG6e1NeS00x3xD45/YFauN+vHTIKRgsAYOysEjWoZQSiSenwdFYEoJyROORyZRYd+TvkvMkIWJCEmI/MllA4JJIoLLBnazfov3e7IkH53sKDE3pAHs4OddKWIZbSkREmFsaYAuTobhDID9eUA+TDzoGY1nDIssZcPLQj+uo7kstumL1gm8TbSkSkjo7KlSJYpa1kR4eTEeu2Euxyytdvz5I8zpyZ0B68wG+xGXk0NU4vY57Nnv2exMV37dnFvhAnxCbO7EV37+P7S1u7BtmynB+GF148H07dn97JpMCaRua2BcXejOyutU8Myu+u4G8J/d5iwIw/77TuM++2mb2oE0+fKQPz/TxTtk3E1dVXXzJBr9/7zFPk0SDBP71p9EBfiaiGrqRRoCcHBtPlbIwj0F3b9+8zm9BO3wPg/gSAu1wjTZ598cTKz0uKdEqpjCPubnwKpAykm+v7vKx5Jtg3kO7nGc/BykSKgSA7Q+66Bw+hJO6jyqdC5TMNN9zgZjrP83gCHyzRso1vGa/9WbvXlVRw1FysU67nW73nbjLV+qFi4YYmE86HBMskRtxycToSdnE0NZNzz/12rzZTlz3pFpfuFu5YdrxuSakQOpOjtKHTVu6K965on4t0kjVYkimoztdNPUSlMGutJXuyb1SL1zUYyV/iQ8WDimvfdJ7o/uN3mUEbbGeqbyGv5L99oZgvZb22cKdVu8IU0VPtdd0yYabT1Vpw2Y+cptYGIjMRXF9evc0ILX5m/Kjlsck+QZgI1uHhbx6uDVLXYxSRZHBuJUctrXHbXDIdGHWS72fWhzwpUy7M/X1NXaOCTqNeWXc6cfJhVfi0AlMZoeQNZe4GpQbB4vg+xCTgKTim0WXsRYvJNwze9gaZGVPj9TVgveyk3KzNowjanWU+wXueA5c4zMYO6OnEGTAdufmTKKrV5/vfXjky5rVAU6N1ahWgS6XWr27r1aFhs9p0Sxd7JpjYS0TN+9kN3ftC7OvxOzcPSK9jsA38UmOW72a9nWxWi+kNjcRfL/ZWhOZ9sCknLkwSPbuPYaNcDsiObljoFlJ9bwucIiRh54uLG3J/ktB4NmnTXZD9ooAn1AWRK7fAv/bd9Q7KKrCmNEjnBOZb4Pau8o9yyo9O13hPe9imEs/Jr/GbRR466UYZDvirrmcCup0YQgOkyuqNF4Qpu3A+/hWC/gbft4M4O1jHf2udzImZDbWt3Rb9tRLTxyQHvVltLLAVqoZfNvT7dNAw1J+1nppe7Dk10+oJacSQ+jomfLHj1NILFu71lQZadG8t9058kdp+zTEk57ovr/UIWwn1arrYLCP9j+9n1Xn6rhVE8rKDo5qJt9v7nK7Fh1KX50HlQN95kx8K3BM/qxNWeDiAAN7Na/oUnsmx+vMgWSWSODYIjnqjJrNUv+aUMkEWZ90vP3djpV2jb6/h+h13qkVkEOi2LrUx9FFPh/ePKlkJ4bjpTftFr3Tw4Pcw18pJdy6MztD8kiuL/E2xxdpbCY91o58STdb9ZwgIHbltX/VtS9c6LlZf3CGVN0YtPeaoSXHU4KxzWGHImlWhPk2i3cKMr43rZf+0bVyWGq+kpFsbDH1rA7Y97uQPVQgMusIOlY5Y/1JXCumGWIumzq01BegBqlYA5ywC9F1ZQ5Jv2l5QVO3dIeWM+dLgWTRac7FJyfCe96H1Zasu1ooHwOaxXc65EfmjsAe3v1KRzbt+cyh+pTPmo4zi3eO1+Wj/6DSac7eS2GD5LKzOWJM91oFeO6l1kBJASVeyQwGShyhD4O05goBrF6K7ivCll3PH8YVKlV3PDs592lAlEpbEjG26sxbhdZV9XDnObFp/fJ0vI86zmOg461xQ1LXkwXgkP9QbQBOUBNVKWpdcn0zSLZamvOReZhVpcJ7FI1T9O04sSY/xKTgSy5auVneQdv3gee8rF24WzfsZhulOZXpOSXO9rEnHA+4FC7Iciwd1tRzhd0yHeJ3024i2+HFu4h7FuOHVwQC6zXw3hhGpyav4I8mOLZ5pup8ZjWGANAO/f6s+9TY7Cgjm5G56zMjHkPGtua4+H7NS5vnxQbQoOJ64UVebdvB3rM7NxR7hBB2GyPVpM8OYINF2ZxYsvOTTujCZm8luzhrvv2SiWbK05642xVldbb2fFZqbYEeXdtPog3ekz6QhgQXNaOiDJmkxaI70pS77lYqqTldTk6RzvkYP3a99A2IuX+LcFk+9QtPF01vspeLs0UWeQ2YnSMz5TuAYtjutCyRmbhSAw7wwbO5Pb9q9qTYao1H6QvzUK2tgGnJ1HT+xcsJpwLWnttRn9/eO3l9l+BnZunkc77BzqRndYMxdjpX7cEay/LTEfja97I6QorghcVHotm0kYpZVOhW36eLL+pQnU1+4pzhjrrvL9r3YxmbO4VPKpdptfEYlGtGxsQTD2sG+9iZXX1aVs0oXmUU7OttfR5YseZ/f58oLnA5bIaU63nZXVApX/tho4oft18n0stXy78rRvQG41f74N6BnRc2Ons3rtqlb8mUX9jijQh1CD1kPgjGF4ItquwsZvxANnIDN8qFrRpBdPSRU+61d+Clc2Q7Xzr9RJ/NajqL0umFk7sFetnL0NNSiu5zh2NSnyx0oasDebVjNofXjtqVtdyNHgI/e6hh+61698vZly/J4GM2Be982dTgqrE5GX68b3PJzxCiMQs+7ecab7qYm8g4rIfiYo6ZJQvUS25t1+S0XFRDiCWpdoCji7fSK7gdZ1qViJ0ScTHy3nRtuA9wp35zkqVcM9XutNDw5YTiRl9mFE8Op4X2vVot+YzpFS6E+TJgsCbsSH4X071m7hJA7eZJvWndi+ymnz7Txi4a5F6Yc7V1XwuOmj+cIkaneuPR6lrl2HenorBztVjQIDjQG6sXwry6K6nLLUV9mJw0qdEgysQfIiJR/D5O34reVU8hxW3yaxN38bEEgb6r1qGLnjrGnZOb72jPXdphfq+aSVe8BZ9XzNOpe3HDxDG7ewdoteZSXcgxF2HMLX+iS1Qrat7oas9czfHqryHjPZqnTybXu3hPCqnQQh873ZmYS2ii34FtKPl1AAD94/MKXGmDvmJ5eQ3K/vyIUDq7rb3abD9WwilPTXWVtLgXrScGRV81PREOn9koiXRcjv7aGHHeybn8wun8midxTtre/eUWmfpNV4cfRgeDuaPz2UxD6yQVJ/I/+ZYGMheX2ONpNhqy/GLqT5l2DPRXBtV3kzFO6im3Qqiy0tP4jLgcXm9wIo8UrGJgdzNop4VeMpv2tMSyDg12G0ClGMFVaSckPp3jeJe/M+xd22YeX5pQoPX5k/9XsX7Z+fHpAb0rzc+CH6c4VTYKnapBAFSPdvW8Hjs5y/M1RiLgUKJbQGfAV+bZN25myvl+wfNdhQJE1m9dX2buuvAcvvAqLlMjhSvi1NF0f7bzgZvF2K94R4sx+0Jn+4rbI/SwDPYBsaVi89czsky73nFLOvyXY64NqA8DExtjJ4AuNsLUxpnDJvUErhh7kyMfReCPo6ef9q5kO7DmbfOPgFcSIu9tZJ7I7oGzpQqe2a5zyOQRWPFtKg/UKO3H5qm6behm19KoSm21NlDp3jidLXx/pGah7XRYfs+b7yHEN9JGXLNKdt8LYosJIC8mLZF6Hf3a+668J+RNHH1qUj7AM28qvtQyz4oSWJ9/YQuue4J9mC0IRkfSyUV8aFKRH4l7DQJrcbws1M7zwC0g8BnntJNkNuxrGlSFak+ozI8TYg6f5H5IRpK67uW/6ggA55tu7HTqO2h/JntUVDjjq4NBHJOWfTxfUy40BXqMJDFl8uy6B8sGml4razM6NWogPjDXwD/NzWHKufl5+MkAaR/ok8XmtHSxSGL8lu/rW5MXLz96rnQTdrFHox3CU6oky7/c61rTwchMLWO9uETZ4XV0U4yffazOCGhwwsO+QRVVPR6dNTbGhJfH9uv7wNNZlYZK081D6Sy1dUPBqkwOJVPhi/ekbsUaHmu6Q0zU7LSiRufFcKldnLaiXig7umOa+vR5yYrnBT59T8uR8dH+jzzsjytJr9aGHGZP1wlYHWWT4HZ2FKhadRMM3/XgcM0EHZY8djvgfEsLL4uswjV7YS72Pf2k42VSxyRoKnhM7ZcSK5GuEpsnM+i1g7BH2fIULvlIyVfhL5BOCOjSqBaWlmC+7ERvlcRKZ858sHib4tssU3i2RvzMM1OQWPB2cAWXfrNGTZREML1JTlnRZerS+2qsMd4qY5cc9q+sYN7UsfaUKFQ1lpkXP8ZM0Pgn5qjQNLGVvtnRULBxvzBxAx+gHBDiOTLJMZyQEuoZ7lN5tMz8KXRI40S19dqof9gcD3uN3tBEyr5uSJUKV22bUrDl9rDzyTs+H4b5Rkb8Klr9CldEKm9Lb6+vyrQBQMG33qvM8xJV1OIB2bjgHr8TwXjjudrZpuwNNc/TykgZ1UB3p8cm2S4BBnKZh58CuqOf5AVPuEmKXpaO0XRNukMfsiAWSI89Z4l+gOV9qSdgSdXZZwxHtyXI5MHD3jftEntQNeF3uq2pFnv7ATmS3gPx8+tnDN8p+DqRrrmoU9kyikqm+4UmXIuAK5f7R8Z9mF90lr82iCUy1W+yL5nK+dZ86njJw9r1PX+7IkAdOBIcT5aMKDWpoy4U0tPI1l06p4F1TTZhRjPmbds+15kybD6Xnl9pUs57c3WlyHAwvD9gnOvSmEXs2bXgWMNSzbouNZb2/nf+Am+/Dyk/Fa5dWb89dtlv5ig5r0l1boYhMmSQ/ZTxbiR1+LPY6xOVSllZ32aTtcKevJ5tDFXSzOztFypgCNQUGVldZGonSs2xSmB3QtmO84J90Rusj4JS9naxzfpYSa9i1yIMByc4zHjahWrAe7LH+kXhpGSjTZZhHbj21L4AH6KoKEv624ChbHlOWcl8JPU9HQW7UvYxR7cHF3qauLyefLv8EWnOc7yw/Ikfa6CXVG5quFdYrrGr4FemW026pJAjr6rtr06ud8T4H6/veVJNrCuNpG0+dd1U3UdChlZX/8oLNoY1e7ZYk6hUm7KNKiPMc/JQx1OpYmYzRgfOqMKRaQOLCDHGjtXv7BPbQOZRlddUjiSD2B5V6OVJk85DaSih/VbpgYZW+e00Vn3Hsqlk3RHxG3yayqCKPdo0I+673NKuRjNypnuH+xPqjnJmXgtOLjOLsMoVtXWFFChqeqrdqR5YExyFXNWGRl894tvHRtot5M6O1L6m/sDJsj/XPR0UVWuFy73wkK27tF6yIY7aprxqYyu9b6+7Xox7yYtxpnY1aa88QKeyQ/a+cYRYVc7yUaWrZryNlMm2ZjvOOeW1ytdaHma13zIfc/9iG7u92m5OuvEOrXKSpclsiusnIEmB3beVV9vEWBc9nqLtPNzRg1ji5+ir+uYdJN2yuXphBtMoLnDd8DnQPW5bPVUn+ypdgBted4Os3r1LN5VUXCjMk2S9V7Tgarh3UbY/2EjVVq7d3dnzXDh5xC5to2gx+pldM0uQ6VYcnGZmN8P9SwKhrprPJHblK82GYTaz16Bz5d2iD6228FRNzcnlUYZL7SrgGPsThTRX5bharxaRVhJSCSGcZUGcHH6eyNlPJ90iqj9kihP0J5JvnKPPm927aLbam95XKRVruG+S66liqU0/UJ+Zvb5Zrhf6jp/99DoDYzTNPej8mxbPZYMXT32nqVk3Fv1vsdUw3KY92vfEc0Airp75AZPuobztaCo3uTI/cJGy1yBo41mcY5XHXI7iNAsIdnzUzoX35Y7UJz9CDtNmi+5Xrw3XW9OzMQyJ/fLbS9Eeuo/bK6taTAO957SSnBA0CvORTKrGYJPuhPUaXoZrIyajj2mX4BilC1FOj8Q6pjoCdaj19tJU5L9YigkEDTGudxv40qH6mT+f4D8vWNoUerS4H67Cts6R4QxZXisX4BP2YAqLIWU31J1P+kzrYuVkwot+3TE3bhDNOzKdWe+nEnw/vFn3yF1We8SZomnfNnuwRDCI319tQ7799RzVVkTAKMb9dNXYeOZx+5QMgrGM04lcUoUA/Zl4BQ6eDdrJx75nr0nrVLcNTtwaSHkKoM38rhBUZZdtuaJ1sb3fYDmNWVNVv7x0/5t43Z7CRwyZ2V+n29QPtKwuX8Ff7Bt4M2j0eR+pKljOc/VjeU9v1pn4cNTM+zbtBcbygEjdl2KQZv4L+w25Z2egchWeSRLXmKKUdzkEllvq6sAFCxah6m8MCXh1/Yrzgp/WRnaHzdIi2dCN9RneiRMRjCVwf0fGfHOasyXHng+UrnlSu3l5j+Wv9c+zPpvGXzqyk54C4p/Nexs97fbYJFI7y9rsmYcWxwYbx1pt3XrLcy/T1od+FnY3/eA9oOhan1jfqavvN/PH15bClbk8o4+Nznc0L1XHvfeaepld3dcS9n3e5/3esEKeiBB9X8fLq2+3OpCv36SdFgjQnZzn4m59JXmuf8de46vpU8dv5/wpp1j24Q8KBZwP4psbxRkclJpP1l08qyNQtvG+wy2zZwqqF8m5b7SS3FRxU2B6VLvkuvtd1ngLbO79IoBvtWKPz9uI/g3iC5HBhzTa0lHTBT3fRYYtlHwae81Hu6QHmkeCvdLCHHuarZLWt+dZqsIrOpVMTe5+U3jTKX+PO6hQ+I508ullpoYvSbzjz2EfY5230je+jF5NR0vFn8ZHSzKko3si2KYMGPqC+YdVs011pyOlrrOIRpRi+BNvqk85hiSue0f1OAQlz5GY/WM3Ten7paC8+Y2ai7xFntFo11dTzeeKs57tPHp9h5WKKIjyY/u8WDfAaHRMA17g+ao799lG1oASGiG/Gmq9nMVSZ/FQgL29V/uV9MqI8V6Cdgq/jx9XfoJ6W3fj0YT7IlFind6MezeaYt3hZxqp3qnmZNWnmj6pJ9/nWXcWU5/kiTHve4MZWHxx6dDJl8Ltzy/SyvpgazwX8o0z8hw8kznBLs9VlEWmWtJte15fuDEfP6K44ZzOdK+ItlWLvRbo9iDAyeiL/iUwI72GXv4Ap2zuMjp0HiETM5+p6WVW9jwsafK8/uQlw62vsWvwV3iqyyq2G5Zu/NPOAAsY1Dy9MGjavOQo3dRwOZe6a3971/T26b3lhkbOUa7cwcDCcQG8olJyGMIL7IjiebryJTOe8o985d5i0oOumbb9nW+8qbGy68ELu73YVvtPcw3xHMHTZxMKLd6981K+rSYgAs5yd02J8NUCfmw/rsLAaE6Heqf3VdCBwT74hREEbHW1CtbSPc1flayRNxnyGUSSHzSwmoIjmaK/tC+u2NGMbr2QP2nzwMdQO/2VzWDUdR47odZs9/wTPffeZi0zOERxI6PbVFSP0/Hax385Y8FtTCPC+YYgMKi/dClXGDx90uNRQeDCDdk59rxxcQdqJuCg5DeZc3TDLKFH7c5IxaQ0M3IsTIlw00JXgcdNqJ7nLJtuTq3sZIhCYt+2x7pKEDSeJWwNMlNxRjhsjFLjGsS0DR5R9ZVFNSYZur69IOu7cMYWvNhQTZIrid0xtydoVni8vRlHP/FZgNhrO55eSH4HvLtjU0W8Mc+ac/pSUEf5lSWM2TLQ97idfsyWn0FMA43NgxCJBCminDsoGd4Tmkter4rdLl6+szxLdaLFFVUIYdx/tNStHSAgpqHRbxY7fONU+e5Uu2eX8yN4cn86MY6Ow5lHaGlblqt24J7M5uKXhxFrg7OFH/Jb7n8jGVaoXTHdigfTaEUXSuvLnPic5PIcF7AIG1uY9P/yLDa+HoEvXe/u+GaNoEmcKzTeOdGN+VJtf4qxwA1WB1qvWQ3DHfeLcV0Eg5vza9ZCZmapR99xQmzFaXe3kRJinBqQt+7MoB27CxUX+uL9MBvntpfWjI85i9M9nPd4PM7qM+POJ3CShxWXXbUsL/tKoN76rOads4KK2Ljo2w0XqwWDbmbIC3YmaakdU/3m/GH5OOcDV5Cqe6H0/YJUkFVR6gSHJ2/cqPtcCvDVI0cR33cy94jpcZ9FhKbcv5pHs7iYPeEf7eGFNBveGzKQsXC/ZtViKYES4jes4x+RNBY051Tsz5Zz21nT0Ru/TRrTHpRNOQ6d340PHSYbjEC7XJ7PyNqKnytAydcKlWUVLwxg0mCaw3UlGZ3736foqut02fqcx6YcJM2c27f1jT3bZQNP1TjejJP1wiW2lscNFXBYZk0flYzCkmVqxEWPCctYGaoHV3P4B0fKi8Jwd4s6/IfrZY0NxejGWvOoO/gceq4ypd9hcU1MR3/SzIi43PyoTFyWBxShSW346RN55xtUB4UPeWcsfdMazOW86+xvONTyOAqUxDw7Ulf+cJiGsf3xuFZqWIxqiLju97WCWfkqf2+WW5cyaPR8wtPbL39sZ/VdKuL0RLUETC4MpXrsb3ebPdjLHKL2SnNKjl27XxnS+uHB7sbth/tfvydkcsS2xcJPwvfrP1Xsb21QP6qoMNVx89mXEUEabTzYX+n+3nbbq8LHwtH1e2zTvhHnqtn+ttyhQ4f2948e2n7lXT4IOHTo38jlvH+Wy2EYohUei0PBf1PMfwmAv/TyTy7ctjBHs5+yC7cUAAoREjkQx3+BDmR0F248Fo08EL8PVOYDXfyX4HjwyMEKRgSgCABbJwAGZouU43b7i7YOR8NICCRQGCgKJByIgETggfpNIB5EITgRiEjbA9RdLAkAwyMBMIAVEo2zIKEBMAIBRSBSuAOIMLQNCmMJIGIBRCsk4IACCKBHuQNQGAus1M8/D1IfsFDAmv8hzQf/FOaz/1aF/z1tvkD+Nx6/yfMQkLAISOj/UZ7/6fz/izyf/XuR/6KUCgMhYkAI9G8qtRAU8n+nUjP/r6jUvdx/LOvPYuVPGfOnhkpOFIFAIL18/xb5u0pKThSWlJT8D3F/qKHkvIP1UYoHFBLS/W2VRv+c58dXL7/k01+skkV+CLq9V/4j/g9uv/nw/Rc+/5oh/z95Y0nEv1FM+vEJQ+/V/4z/g+IvH/7/xudfUwT8k/v/KN/PRJf+DfLPhfuJBvxb9L/kk/Ynrbv0QOqGQHWIQna2CCctBWWJuxYSeFVRCaubt35+KJAGBUEBllisJRr5LyXvgw8ksOZYSi/pwig9h8FikP+Fyi0BlRCFScCFEP9G5f6LkF29+oeO/eMVhQhqUa++Tv/IDJm6orSc8LW1vaXK68RaPLdQoFrJxdDV6ikOQ2onh4YRz5HUuPK0eAsiUFClt6S00C3NoY1zowa+nyWz6lCeVlcs9f56BZ+RzqWRDSovlsedi9zRry29q1iMWO+3n5Z9F6bXq8f38IXI1ZXlnPomxuNa93n1e7q3rqURTWb4sx2pBTA9wXlTCMLZQXBW6QXfxw3Ky4ws56vffGa6IHd9UphBnKoJxXL601RidPtSWAdq0u9Yfj+rSLlkiA2309yRkoqHu808W+typ9QeSHc3LZ/5+fZ9kHFhSubwoUP/B3KUO80= \ No newline at end of file diff --git a/docs/cassettes/delete-messages_3975f34c-c243-40ea-b9d2-424d50a48dc9.msgpack.zlib b/docs/cassettes/delete-messages_3975f34c-c243-40ea-b9d2-424d50a48dc9.msgpack.zlib deleted file mode 100644 index 3a03a970c..000000000 --- a/docs/cassettes/delete-messages_3975f34c-c243-40ea-b9d2-424d50a48dc9.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/cassettes/delete-messages_57b27553-21be-43e5-ac48-d1d0a3aa0dca.msgpack.zlib b/docs/cassettes/delete-messages_57b27553-21be-43e5-ac48-d1d0a3aa0dca.msgpack.zlib deleted file mode 100644 index 19a5b7835..000000000 --- a/docs/cassettes/delete-messages_57b27553-21be-43e5-ac48-d1d0a3aa0dca.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -eNrtVH1sE2UY35wgBkTQZQRh46xDCOzaXtu13SLMrWNStrqtnWgFxLd3b3u3tnfH3XWsQyCU8TGHzJsONyEat67VZsAWUIJjY3OQKUGMQY0DYtAwNChIwiYfAefbfcAW8A8T/UPj/fXe8/08v+f5BcIlUBAZjo1tYlgJCoCU0I9YHQgLcJUPilJ5yAslmqOCBfm2ogafwPTMpiWJF9NVKsAzSsBKtMDxDKkkOa+qhFB5oSgCFxSDDo7y9whrFF5QulLi3JAVFekYodboUjDFiBGSLFujEDgPRC+FT4SCAmlJDlXCSlERzTyOmed4MQfnUKxdEfXkKOiJakgP8FEQ1+I0YNw+XIMCq7Vqg2JtmIaAQj1VBWlOlOSWu6rcC0gS8hIOWZKjGNYl73aVMXwKRkGnB0gwgtKzcHAMcsQNIY8DD1MCQ0NecjPgeQ9DgqheVSxybNNwubjk5+Hd6ki0Kxw1y0rygcyROlQFfjRUFlMrtTqlprkUFyXAsB40FtwDUEkhflDfOlrBA9KN4uDDgMmhIec9o204UW60ADLfNiYkEEhabgSCV6/bN1ou+FiJ8UI5bCq4O92w8k46rZIglGktYwKLfpaUG53AI8KW20O+7RJBqGhxtR5XE3tGpuSBrEui5QaC0L0vQJFHywY3hlBIyScGgggRePzT8PB+1OfnjqC5LZiNsJHbimhfCqbRYzbIY1HMMUKbrjWkq3XYM5aiJtNwkqJ7QtFSJABWdCI4Fo1AHyZpH+uGVMR0T9Ajw0eAM5R8CL1Xqoms7FKryc35AWmhsrJ9VpeQWpZLfFiKkx7OR+ESuiCIDzZbKsk9mEanh4TekZZmBEadg9AYtUYCOgzQQekJvdqpayhhgBwhlATm4jiXB+415eAmQNIQtw2ORA5n25/NtJhNTS/gVs7BSSJeBFxykOVYGLJBAY1ajgymRssrwBByt2ba5f1GMk0LUg1OAwU0evTAFz1vbR4Zz+32g9HNH7zUDQgCAYmOXJ9VOSFm8IvLqyrM7Xp6SvnAsTRV+/LZlk0X2iYEvg3Ed04rTF4u5s4o69l9cIH7oeu/VkfOnuw4oN2XV/Vkx3uWnZHahbP6KtpfSjrdvOLzrv7uW103WN+4iQsuMVLhknWm5p+St3eEv0rub2qmZxeUmxLXTtbVWT5q7+k1299862hTbVd9wlLHpjUXBx6rWdj9i3lmQnxD7TL7u3WN78zpslhyju7PLt5erTqeNTn0m2fH+R/7F7+25HL3jElcghmu9J17Qz1zq6nxIHkz6ZE21w9vnzV203K+e3nV5qv2+TWJqwI7dyRU92fMqwTXxsfEDAzExXzWkv7N/NiYmL+H8k7Fjvs7OS8Fu2MLRJFBh4Ksxjoshh4Ph2VxDuQnzRExliEhJnGYF0IJ83M+JbaYW42RgMXM2FCMqBRZUMCfMTbFPcpZTYNoUK8fY4EXZvxPw/8pGtboiX8lDRN5Rrup0MHbeGgo03MOv4vKA0v/lIZ1iG6h1ml0Oim1AWgIrT5VnWZwUEa106iFqY5/loaNBGHUqP8SDfePpuHMKA1vGjimmaaaYT8ZaDactnXavty4tTx1emtudZ1Ou8ya9XtrcF5p2eXvriYdmm6NSypLe+4SyMi7mLu99VbfjV26I1d6r0mv3D+xLJFvLEjeNSVl25ndOVPM9RviU/rOvPxA0gXlufGVlqmmYrHwY+FnPbvig7p4c+fhL9ZXvnryVFvFFsOJnKzi4zVX6Ll9dHVt4voXn/Doxrc92jB1ff3Giu8D5yu7aw5v6e0KzH34662ZtR1xVhuT9OC6uE4xJzL1qd49+17nuJuTKjY31QiVyWcPnLjPdYurYe3tsUMU3Gf6ZFKUgv8AZIo4lA== \ No newline at end of file diff --git a/docs/cassettes/manage-conversation-history_52468ebb-4b23-45ac-a98e-b4439f37740a.msgpack.zlib b/docs/cassettes/manage-conversation-history_52468ebb-4b23-45ac-a98e-b4439f37740a.msgpack.zlib deleted file mode 100644 index 1827ef0c9..000000000 --- a/docs/cassettes/manage-conversation-history_52468ebb-4b23-45ac-a98e-b4439f37740a.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/cassettes/manage-conversation-history_57b27553-21be-43e5-ac48-d1d0a3aa0dca.msgpack.zlib b/docs/cassettes/manage-conversation-history_57b27553-21be-43e5-ac48-d1d0a3aa0dca.msgpack.zlib deleted file mode 100644 index 325f25c47..000000000 --- a/docs/cassettes/manage-conversation-history_57b27553-21be-43e5-ac48-d1d0a3aa0dca.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/cassettes/multi-agent-multi-turn-convo-functional_2b6fde57-86e3-440e-a7bf-f1e9b5ed9ff2.msgpack.zlib b/docs/cassettes/multi-agent-multi-turn-convo-functional_2b6fde57-86e3-440e-a7bf-f1e9b5ed9ff2.msgpack.zlib deleted file mode 100644 index 0c836d93e..000000000 --- a/docs/cassettes/multi-agent-multi-turn-convo-functional_2b6fde57-86e3-440e-a7bf-f1e9b5ed9ff2.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/cassettes/multi-agent-multi-turn-convo_161e0cf1-d13a-4026-8f89-bdab67d1ad4d.msgpack.zlib b/docs/cassettes/multi-agent-multi-turn-convo_161e0cf1-d13a-4026-8f89-bdab67d1ad4d.msgpack.zlib deleted file mode 100644 index 4e2e0614d..000000000 --- a/docs/cassettes/multi-agent-multi-turn-convo_161e0cf1-d13a-4026-8f89-bdab67d1ad4d.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/cassettes/multi-agent-network-functional_29b47c57-ad05-4f10-83bf-c3ff6ff8eb93.msgpack.zlib b/docs/cassettes/multi-agent-network-functional_29b47c57-ad05-4f10-83bf-c3ff6ff8eb93.msgpack.zlib deleted file mode 100644 index 0c8672f04..000000000 --- a/docs/cassettes/multi-agent-network-functional_29b47c57-ad05-4f10-83bf-c3ff6ff8eb93.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/cassettes/multi-agent-network_26a0d4df-ff99-40f0-92a8-0b3f2c591040.msgpack.zlib b/docs/cassettes/multi-agent-network_26a0d4df-ff99-40f0-92a8-0b3f2c591040.msgpack.zlib deleted file mode 100644 index e225c1250..000000000 --- a/docs/cassettes/multi-agent-network_26a0d4df-ff99-40f0-92a8-0b3f2c591040.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/cassettes/multi-agent-network_29b47c57-ad05-4f10-83bf-c3ff6ff8eb93.msgpack.zlib b/docs/cassettes/multi-agent-network_29b47c57-ad05-4f10-83bf-c3ff6ff8eb93.msgpack.zlib deleted file mode 100644 index b0d9e9264..000000000 --- a/docs/cassettes/multi-agent-network_29b47c57-ad05-4f10-83bf-c3ff6ff8eb93.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/cassettes/multi-agent-network_68a547d4-0a15-43bd-aeed-c9ba1dfe388f.msgpack.zlib b/docs/cassettes/multi-agent-network_68a547d4-0a15-43bd-aeed-c9ba1dfe388f.msgpack.zlib deleted file mode 100644 index a10bdaf46..000000000 --- a/docs/cassettes/multi-agent-network_68a547d4-0a15-43bd-aeed-c9ba1dfe388f.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/cassettes/pass-config-to-tools_14.msgpack.zlib b/docs/cassettes/pass-config-to-tools_14.msgpack.zlib deleted file mode 100644 index 3362c58b5..000000000 --- a/docs/cassettes/pass-config-to-tools_14.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/cassettes/pass-config-to-tools_15.msgpack.zlib b/docs/cassettes/pass-config-to-tools_15.msgpack.zlib deleted file mode 100644 index cc9ce3d38..000000000 --- a/docs/cassettes/pass-config-to-tools_15.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -eNrtVg1sE9cdD0sKhLU0asegK2g3dwRWcokdOzgOY8JxnIaPfDRxVZIA3svds33x+e64e05jg1UBabMsG+3BUEVBlILjtF5KElJgqGQhqrI2SVeh0qoLqIEw1qwr5aNfUjWx7N3ZzjeEdVSatFiy9O69/8fv/b/eb3tjFRQlhudmNDEcgiKgEP6Qdm1vFOFmL5RQTcgDkYung0WFJbbDXpHpW+xCSJCy0tKAwKQCDrlEXmCoVIr3pFXp0jxQkoATSsEKnvad+15wi8YDqu2Id0NO0mQROm26IYXQxKTwTvkWjcizEK80XgmKGnxK8RgKh5Stp1wAEUCEhMdHOEAVLzIIEgJEkiawUbHD05BV5CgWeGlI6skM0gUYt5dkAcLoFWuI59moIw54Io4EGh/bYwbtqkEsSkOJEhlBCYEiZqZpArkgwTISInjHWACpigLDCV5klygX9ACssUUj4GBAETHq1fCnYlhZjLO8bjKLBOIJCaKIYQQ9EU3kE1TMEhIZzqkJKDeKbgFRBD5NQNlSssWIkFbuGfG6cZQgX1EJKaRKjgQBRw7eQRByVLH/Lg6BqbAolqdEogZtbMQYBwEkN8Rp4r81jo2BRhcENG6D/rikoIuXkNw6obSbAUVBAZGQo3ga50F+zelnhBSChg6l0sK4ZDmo9o4cdkMokIBlqmAooiW3AEFgGQoo52mVEs81RUucVNBMPA4rnUDiBuGQfMIcw5FW5MOdyBHaVEN6qralmpQQYDgWtxKudgwpJKjnb4w+EADlxnbIaJfLoYjykdEyvCQ35AOqsGSMSSBSLrkBiJ7lhrbR+6KXQ4wHyo2Woonuoocj7vSpOl2qqXWMYcnHUXKDA7ASbB0O8rBKOF2brie1y0mt7sQY0xCJPpLisQf5Ze2RWABZyDmRSz683Lj8FRFKAh5ecEcIqyGvtD2IkwXfebsxOm4OFa4dSfX8YA5OnNyeKzIpeCwRawBHYNcZhC4jy2DI0pmIx/JtTZaoG9ukeWq1iYCTHDhX1lhdNFIuL4crMmyZtCL6NCM3FrF/lvEwiIzOWpxH5VMOGrRabV/ybSVFXOEMp3gM6k0m0xR2cWQgkl9X7ofjSuq0tugtjWWT+1EbiYyM7SiqkIIK43p0SvkRbDGd5DvQuQVCU1nfksm0eS+aALEhU/W2bGr5EYhRnSV3onNriMRk6uPCF3H009tIjg5cRJq4rfQt8YSjmScZWj6F13atzlLm8JvLypDf6qdAZZ6xWLQV+6sOVzFADutSdYST550sbLbkkhaA5ydZoraQ3JhTWmDOX21pWk8W8xU8riUbwDXH8RwMlUARd60cpljeS+M5KMIQVi82l8qvZzocNGUyUQbaAYzpRpq0PlncEmum4WYJKkNUZQrbQpH3rWtG7o/rZ8epv3j8Hxqin+8ueFOb9Ky968Xvz5/V8MkD3cZH/avyftXwt7hseXOobt6Hc28syMjxPXX54Jyiwrat+qGU+L8/kLBw6xPBthUXzlg6OvecW/nkN18fP9ccfmuRcPCPXeuf6e+ds80yuG5d3rVjS5jEzIUb6mYmLH3EUtf989LkY+/n5x01lL/zXkr83J7S7LXEptrdyQO6qsLc039+RteUe/Zo/z2hSlv+l1nHX3jpyNmaJuvnV9qdne5yXVh+6LNXM29UXPrnL+cxzjRwuWP3fr31+uabn3y8oLb6qz3vDnKLDrz/9ad/OdW059TVa8bTnT2WKys+fG7O8fsSKha8ZZx7YEM5WtreNjS47vRfH1v1+6Sa+/4kzD57f9f1w48/7z7jT6r3vWte/QT1ctbvNt+89LTVf2lRz+f7T656Wt+7dWHHDCVY8XFFbUd39eP1XSJwCYbvjsApBCCmCSQJv+4YzFh1bBvBatXQ6iUsS7ggKxA+3kvgCqXcykocxwgqfIRXwoU0TFjG0grC4eXUoazShRgXUH2oeIZ3MGm04+soUrcnKeoUi5ELho4pe3HLFZgZo57P9pZQNn+1uyybAjm+IitmrmOuPjFo5eNw4Eb3suMio8HPkIT5B++UYiRXwWu/IwQKUskORZEXsbT6EmNQ04R6mlBPE+ppQq0S6qBOe5cZdbr2/4JRm/7XGXW6dppR3xVGvcadA9xrrABw5kpYZE7PKcn2Zni+W0YNjBU0VfGfMerEEUZNP/f42njzvTVDPbsGV5488MPeX/Rss7b+wG7d2bLvuLO5+2T3rxu+7Oidd09XY+IX+TM/Tghsj5v1UdVXV2542k3vHQqUHetdfOT84AeBZfdf7Nz5SP7PirvIbbUpb9IHK5ufZS8OEHUzZyfNSqkLf1q56bOWCy+EX923r/Qjw8WfzHm41Vxtuol+FCi4MD9RqF3TnbjivNwbhNprO4uPnr9Ye7n/7d/S/9Durs9ctH/Drtc2dX7zwY4Xf7Mx2QZmr9qftWzvwMNL2+dfykv6w707asWHHiw488X6Jn3fg8tqfO3Xk3RXX6nfe8Y/cJU/9K+BvdqbzuIrJ/RvrHypIy5CihfXN+9xYlL8b/H+B4Y= \ No newline at end of file diff --git a/docs/cassettes/pass-config-to-tools_16.msgpack.zlib b/docs/cassettes/pass-config-to-tools_16.msgpack.zlib deleted file mode 100644 index a630974f8..000000000 --- a/docs/cassettes/pass-config-to-tools_16.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/cassettes/pass-run-time-values-to-tools_2e3fd1e2-cc19-4023-8ffa-b0fc13da9e09.msgpack.zlib b/docs/cassettes/pass-run-time-values-to-tools_2e3fd1e2-cc19-4023-8ffa-b0fc13da9e09.msgpack.zlib deleted file mode 100644 index 9f2ff8fbb..000000000 --- a/docs/cassettes/pass-run-time-values-to-tools_2e3fd1e2-cc19-4023-8ffa-b0fc13da9e09.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/cassettes/pass-run-time-values-to-tools_c0858273-10f2-45c4-a922-b11321ac3fae.msgpack.zlib b/docs/cassettes/pass-run-time-values-to-tools_c0858273-10f2-45c4-a922-b11321ac3fae.msgpack.zlib deleted file mode 100644 index 5cf7c3901..000000000 --- a/docs/cassettes/pass-run-time-values-to-tools_c0858273-10f2-45c4-a922-b11321ac3fae.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/cassettes/pass-run-time-values-to-tools_d683986f-faf4-4724-a13f-bac39ea9bafe.msgpack.zlib b/docs/cassettes/pass-run-time-values-to-tools_d683986f-faf4-4724-a13f-bac39ea9bafe.msgpack.zlib deleted file mode 100644 index 339d0b1ad..000000000 --- a/docs/cassettes/pass-run-time-values-to-tools_d683986f-faf4-4724-a13f-bac39ea9bafe.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/cassettes/persistence_08ae8246-11d5-40e1-8567-361e5bef8917.msgpack.zlib b/docs/cassettes/persistence_08ae8246-11d5-40e1-8567-361e5bef8917.msgpack.zlib deleted file mode 100644 index 615498036..000000000 --- a/docs/cassettes/persistence_08ae8246-11d5-40e1-8567-361e5bef8917.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -eNqFVF1sFFUUbukLiUSxYHzTy4ISsXd3Zn9adok2sFRoa3/srvIXbO7euduZ7sy9w8ydtluCxEWURE0zPhAh8YVud2Wt0KYoEktCtIk/ISH481Ax1mBC0Gqij5KYeme7S0EanKeZe75zzne+78zNFQeIZWuM1o5rlBMLYS4+bDdXtMgBh9j8tYJBuMqUfHdXIjnqWNrsEyrnph0LBJCp+RHlqsVMDfsxMwIDcsAgto36iJ1PMSX7Q+2ugz4DDfVyliHU9sWALAXDDcBXRYmTfQd9FtOJePM5NrF8IoqZoEK5d6Rq60DrRgOkWMp3qAEsYZFtazYX7f+TsJPoOgPbWErk8Y02oBomgDNgEMJBljl+sJMNAowoaAWLNbxTgVBQthm02oCrxCIA0SxXNdoHbJNgLa1hD7VRAbqWKZfDKuIApZjDAbM8NCir5WlXrqeiAdJ8N+NlphsUVQRHIwsoMjz8fk8bphDdi2IdOQqBIRiBNqOUcBgU6kmNQcl3qKgSpAjnRvIqs7k7eY8XZxHGxOSQUMwUMYj7Yd+wZjYAhaR1xEkJexXLZrulDCEmRLo2QAqLWe4EMk1dw8iLB/pF9/EKa8izJrk3XPKGg8JRyt3zW6s8At1CREaB5A+F/cGJISgM06guvIc6EpQKZjn+6Z0BE+GMqAMra+kWFpPP3IlhtjvWgXBX4q6SyMKqO4YsozE8dee55VCuGcQtxrvvbVcJLrUL+WXZH528q7CdpdgdSyPdJpO3Rb6dUhKuhKDUCCX5TFUlndA+rrqjoXDofYvYplgLcqQgSnLHzuWFI+Tyl8XKT3Cqq73q5k819fntwh33YlJ1GoAUAl2YA891IEdjITkmXnZ0JMfjlTbJZc2YTFqI2mlhSEvV/CJWHZohSim+rO2zvqWxLNFf1wyNw8oNIMzyPt18WJKk2Sfvi7SIIVTzOuZD0Wj0f+oKZQh3z3nzQVmCUii5OGUkvHcWLJe5eI1U+BQ8PoLRhvsgl/hU0eC+6OX5BMN7SxXSUFPcafHeK8md0eQLmWRkIMl3tynb2ox+pTPe0v/REMQ6cxTIxV1KYHkhhrg7C4JNJBVRpFRjWsLiSQUlWUqhSDooNwXDBKdHBzTklmS/DPoY69PJ2fhzMI6wSmCivDZucfuezq0drfHx3bCHpZjQL4mEzpRRUkgQS6yjWyq3Fj+4RQoivWfrHvfcZozTERRMESUSltLRKGzZ1TNRXaDbC5L3bofynf2qWFNLHM38+fibK2vKT93zI+3tM9Laowttm+eTMeexd97LTZnrph5e69Zfm1/dwWIXmn7uvjU3diT3Qd1c9tKJ1cObV1n6/Pd/fPvrhS2/06GmZ7+mhz956O255kvbrqyHT9X/tSPX0nmg9uUNx4Zf2r3qdHHlG/5b3ySc/cam1sv5FxNN88PXvpu4Wf/05GcXOw+Pts21/+N7MHBa+fwVsGbmx7HBzPS79qYbU8dOXjqZ6I399ujxo9e/eORG0wNXwx+fmN7wet2Buf6v3uqN30we25L7pX605cK0uWbFSMu+jt6ZFedn9+ZPLVztf+ZKsxhtYaGuJnz9+N/ra2tq/gUe9MBC \ No newline at end of file diff --git a/docs/cassettes/persistence_273d56a8-f40f-4a51-a27f-7c6bb2bda0ba.msgpack.zlib b/docs/cassettes/persistence_273d56a8-f40f-4a51-a27f-7c6bb2bda0ba.msgpack.zlib deleted file mode 100644 index 0d1358369..000000000 --- a/docs/cassettes/persistence_273d56a8-f40f-4a51-a27f-7c6bb2bda0ba.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -eNqFVH1sE2UcLrBMFCKCDqdGOI4pCLv2rtd1vRFdujIRWNnoytcQxrvr2/bY9e64u3bdGEw2iEQwcBEMLirOdS3UCvsA0eDix1SMkQASDGXLkCVgjDMBxUlExLddy0dY8P567/f5/J7n976NkQCUFU4URsU4QYUyYFX0o2iNERmu80NF3Rz2QdUrukJlpeXOVr/MxZ/xqqqkFBgMQOL0QFC9sihxrJ4VfYYAZfBBRQEeqISqRFdtvH497gPBSlWshoKCF2AUaTTlYng6CFlWrsdlkYfohPsVKOPIy4oIiaAmTDVeoM5QME7BfLWYAHywEN+wKlFAdEE+EcDywO+CBE3kEYooCFAljKgFaTaS+IaIFwIXmm5HyCsqqtZxD96DgGWhpBJQYEUXJ3i0Dz11nJSLuaCbByqMsomKSUK0aDWEEgF4LgDDw1laO5AknmNBwm9Yi7rHUsAJtVaC97qjifkINLagakesaRyGslpEr4CRetqkN7YHCUUFnMAjgggeIEhhKek/eqdDAmw1qkOkpNPCw8kH7owRFa3NDtjS8rtKApn1am1A9plNXXfaZb+gcj6oRWxl97ZLOW+3o/UUpWc67iqs1Aqs1uYGvAI7bpF8KyWKVKEJ0kyQ1IE0SzwUPKpXa6WMpn0yVCS0drApjEqqfqUxhBSB338bSW3K+6UL02r26yaF5iJ1tG6n15+LkTRWyqpYQnWMYgpoqsBoxubZnTFbqo1zRDE6nDIQFDcSpDgtfoT1+oVq6IraRpQ9jt8eS0b9ec7HqUTqliCxEr9ayESSZPzZ+0bK0IdYS3QM0QzD/E9dxAxUtUOJ+QiKJEjaOTxlnqkijo2UOXzXUnjCCTwIUc59Im/jSUdj940eGY/RXBFNgSY4l/YpOleSFEU7A3Vw4TpOXLTA5mAsRUyANZsPBwmWF/0uQkXvDSSSCxFUtThGUab8qiqKNrnNbqMpn2bcbjqftsAqi4lmjKyrNcABLUrpKcwjih4eHrS9SNgA64VEeXJttMjcFYus9vm22HLCIVaJiD8nQDwLogDD5VBG66hFk63RBZdhGKU7rCu0QxaWdecBI7RYXBTpZhiieJmjPb1AtxYklHgdku/aJrSmMjJ9Papz6raxuuQ3pt5hF3vJ8TdmZxi6Z1qbheILK8dd3dkr9BrHb8JPfVT2llo8a//jVz+bEChYc3Rw7ta6qfUZhj242eKtOdu38VREPBYZ+jXnutDQ37DjL1D3zskW+/TjMx1/Pt3Sg9cKwTOhS/GTFzDNaM7uPKgtrfngxOwsd+eZQNeNQ5+cF06CR8xVPZeOXdyx71RvSeWCpjmXW12//GCQpVjmnK1f5md2F0689shLWSWf/5ExPStr6IlJRxyZ4vzsfxZHv8g5Yx3YWV3Sd/zE6MEHKnpaGz3BPutQ35LzE3Objja8Hptx+diuN+xdK1/76s1zD4ZeaX7s7701A3sWPbd0b8usrFU9XROez7jwaFY3XrPsqbzKkhYi1N2kdG6cvKeL2FbXFZfes36X4dNGfVMUyVkyrWPxFTD5dN7gOWbAvvnt1WMzmz0HFvxknffQfjuYP+Hnd7Prt29xFg4NTHZPs5Q/LLc9eXH8uL7e3cElU8cddv547d/TLc3bXy1avaXDOhBsr8gufGHX6tnrMP7jS4Pt+prTL5NXlv+25vei2Nm+fmbX2oYjU6b0n28Yo9PdvDlGV00XXN89Wqf7D0/81FI= \ No newline at end of file diff --git a/docs/cassettes/persistence_6fa9a5e3-7101-43ab-a811-592e222b9580.msgpack.zlib b/docs/cassettes/persistence_6fa9a5e3-7101-43ab-a811-592e222b9580.msgpack.zlib deleted file mode 100644 index 678bb17e5..000000000 --- a/docs/cassettes/persistence_6fa9a5e3-7101-43ab-a811-592e222b9580.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/cassettes/persistence_cfd140f0-a5a6-4697-8115-322242f197b5.msgpack.zlib b/docs/cassettes/persistence_cfd140f0-a5a6-4697-8115-322242f197b5.msgpack.zlib deleted file mode 100644 index 18e97c77b..000000000 --- a/docs/cassettes/persistence_cfd140f0-a5a6-4697-8115-322242f197b5.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -eNqFVH9MG1UcL8Ml2xKTiWYxS8hujQymvPauV6AlGFcLG6QyKjSboBt7vXttT653591rBSZ/DIhmLnNelihm6nQt7WzKoNKxBUeGQaPRRROXLDYxaKbL/GPJVGZiWCK+lhZYIHh/vfv+/Hw/n+97/fEwUjVBloqSgoSRCjlMfjS9P66iV0JIw4OxIMIBmY+6W9o8kZAqZMoCGCtardkMFcEEJRxQZUXgTJwcNIcZcxBpGvQjLeqV+Z5M6KgxCLs7sdyFJM1YSzG0xVpJGQtBxPLiUaMqi4icjCENqUbi5WSCRMJZU0DYSTWVBymv7DX2HcpmyjwSsx5OhCEeARZUAU2WJISBhdSmqy20sS8eQJAnY52KBmQN66lVQEchxyEFAyRxMi9Ifn3E3ysolRSPfCLEKMFlK+aY0BNdCCkAikIYxRaz9DGoKKLAwazf/DLpnswjBrhHQavdiexggMwrYf2So4DD7O4hvEoUbWKtJstYN9AwFCSRMANESCDFlJz/s5UOBXJdpA7Ia6bHFpMvrIyRNX24GXItbQ+UhCoX0IehGqy2jq+0qyEJC0Gkx53u1e3yzuV2rIlhTPbUA4W1HonTh31Q1FBqieSllARRhQV0NaCZCwWWRCT5cUCPMEzNeRVpCtk3NBAjJXFI648SRdC1r+P5FTnX4iqoOWsoidYTdfQpTyBUSdEs1cJhKqs6xdhrWaaWHPY1e5LOfBvPmmKkPCqUNB8RpKEgfpwLhKQuxCeca8qeMS6PpZL+ohAUMMhfDyJW9lePWmmazuxaN1JFQcJatmOUtdvt/1OXMIOwns7OBxga0Kxnccoqa0eGWitz8ZLl8cSyeAiiJ9aJXMZTiKbWjV4bj8XakciDBgKvXyHnTprZC19t7e3oZS0+t2LrsDe7WVe4K3SxG3CiHOIBJg8NArmF6MZ6hvLyVi9kLTS0evkqK0LIx9RAZKuppq12xmKzRcIC1BOMiaH8suwX0ahzL3BCLoBAW25t9Hh9+35Hc5Mz+QJolb0y4c8DCc+SLKFYG1LJOuqJXGtywVUUI+mtjnY9beM4XxW02Bg7D2mf3Q4aDraOFRZoaUGi2dch96AdI2uqEtOXRU/uOLHJkPuKn3u72TWzZ+vrC9/Y3j1c0tT2jLa7orH39LNPV5RMnEm1T77XND5+wz3/c9nzn1+fZr+/Unx386GTGyfgQTR3cfbvW66ehXuXZ9O+uZ/udp66VLbrvHNfpGHnUCnsn/rnkaGtL7ln3tw80Xr6qw0jNakY1g/HHUNN1+u+Hf30TN3MQyNjJU9tk+NX3cOjf762feM7v01ND4jmI8PjhjuVx7ak67cMfOGquLXpBp385fb9Rsdw9UzJgaL0xx9O//HRyV9LB99K3lfCaV9V96WzN0XusWsHzvXfizz8RqPjA2Xor+1zTa66q+WPeyYT5Y8OpvbcnPzhR/Zf04ZSY6qs0tZ79sj787v3/375RMcnd44Xb5urcxyf3wGk727LhJSFhWJDJF5S2VdkMPwHIYKQ/g== \ No newline at end of file diff --git a/docs/cassettes/persistence_mongodb_2e65b3b2-8e3e-4d96-8db4-4846a3bc2eac.msgpack.zlib b/docs/cassettes/persistence_mongodb_2e65b3b2-8e3e-4d96-8db4-4846a3bc2eac.msgpack.zlib deleted file mode 100644 index d331f38dc..000000000 --- a/docs/cassettes/persistence_mongodb_2e65b3b2-8e3e-4d96-8db4-4846a3bc2eac.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/cassettes/persistence_mongodb_623b81ea-9415-4c49-9ded-9c7830a3ef6b.msgpack.zlib b/docs/cassettes/persistence_mongodb_623b81ea-9415-4c49-9ded-9c7830a3ef6b.msgpack.zlib deleted file mode 100644 index c1ea230c2..000000000 --- a/docs/cassettes/persistence_mongodb_623b81ea-9415-4c49-9ded-9c7830a3ef6b.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/cassettes/persistence_mongodb_e3a9889d-7a60-455f-96d6-95a8a2e7dbf6.msgpack.zlib b/docs/cassettes/persistence_mongodb_e3a9889d-7a60-455f-96d6-95a8a2e7dbf6.msgpack.zlib deleted file mode 100644 index f5647be04..000000000 --- a/docs/cassettes/persistence_mongodb_e3a9889d-7a60-455f-96d6-95a8a2e7dbf6.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/cassettes/persistence_mongodb_f7aaec32-1755-4ae4-a40b-ade58491a5bb.msgpack.zlib b/docs/cassettes/persistence_mongodb_f7aaec32-1755-4ae4-a40b-ade58491a5bb.msgpack.zlib deleted file mode 100644 index 0d507d7f2..000000000 --- a/docs/cassettes/persistence_mongodb_f7aaec32-1755-4ae4-a40b-ade58491a5bb.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/cassettes/persistence_postgres_180d6daf-8fa7-4608-bd2e-bfbf44ed5836.msgpack.zlib b/docs/cassettes/persistence_postgres_180d6daf-8fa7-4608-bd2e-bfbf44ed5836.msgpack.zlib deleted file mode 100644 index 2023370c6..000000000 --- a/docs/cassettes/persistence_postgres_180d6daf-8fa7-4608-bd2e-bfbf44ed5836.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/cassettes/persistence_postgres_386b78bc-2f73-49ba-a2a4-47bce6fc49b7.msgpack.zlib b/docs/cassettes/persistence_postgres_386b78bc-2f73-49ba-a2a4-47bce6fc49b7.msgpack.zlib deleted file mode 100644 index 45b9eded4..000000000 --- a/docs/cassettes/persistence_postgres_386b78bc-2f73-49ba-a2a4-47bce6fc49b7.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/cassettes/persistence_postgres_4faf6087-73cc-4957-9a4f-f3509a32a740.msgpack.zlib b/docs/cassettes/persistence_postgres_4faf6087-73cc-4957-9a4f-f3509a32a740.msgpack.zlib deleted file mode 100644 index f8e85ea6d..000000000 --- a/docs/cassettes/persistence_postgres_4faf6087-73cc-4957-9a4f-f3509a32a740.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/cassettes/persistence_postgres_5fe54e79-9eaf-44e2-b2d9-1e0284b984d0.msgpack.zlib b/docs/cassettes/persistence_postgres_5fe54e79-9eaf-44e2-b2d9-1e0284b984d0.msgpack.zlib deleted file mode 100644 index 23711ae2e..000000000 --- a/docs/cassettes/persistence_postgres_5fe54e79-9eaf-44e2-b2d9-1e0284b984d0.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/cassettes/persistence_postgres_6a39d1ff-ca37-4457-8b52-07d33b59c36e.msgpack.zlib b/docs/cassettes/persistence_postgres_6a39d1ff-ca37-4457-8b52-07d33b59c36e.msgpack.zlib deleted file mode 100644 index d257dd069..000000000 --- a/docs/cassettes/persistence_postgres_6a39d1ff-ca37-4457-8b52-07d33b59c36e.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/cassettes/persistence_postgres_bd235fc7-1e5c-4db6-a90b-ea75462ccf7d.msgpack.zlib b/docs/cassettes/persistence_postgres_bd235fc7-1e5c-4db6-a90b-ea75462ccf7d.msgpack.zlib deleted file mode 100644 index f3545a443..000000000 --- a/docs/cassettes/persistence_postgres_bd235fc7-1e5c-4db6-a90b-ea75462ccf7d.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/cassettes/persistence_redis_5fe54e79-9eaf-44e2-b2d9-1e0284b984d0.msgpack.zlib b/docs/cassettes/persistence_redis_5fe54e79-9eaf-44e2-b2d9-1e0284b984d0.msgpack.zlib deleted file mode 100644 index ac7e10fb3..000000000 --- a/docs/cassettes/persistence_redis_5fe54e79-9eaf-44e2-b2d9-1e0284b984d0.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -eNrtmgtwE2UewAuIiKKic1DgVGJG1NNuupt3Wnrapk0JJX2lz1DsbXa/JNtmH91Hk1AqQ4FRThyIwIF4R0FKW0NpeRQpFJ93Iodwc1XUacGqoOgo45sDPbjet2kqLYU79bi53riZaTe73//7v37/78vM/r+6pmrACxTLjGqhGBHwOCHCG+GJuiYeVElAEJc00kD0sWRDbo6zYLPEU933+USRE5ISE3GO0rAcYHBKQ7B0YjWWSPhwMRF+5/wgqqbBzZKhnsmTatQ0EATcCwR1kmpujZpgoS1GhDfqAJxyj6ASfUAVADi88CqKUQkedYJKzbN+IMtIAuDVtQmqwRMZye8fJIILAiWIOByCD0WW9ZcTuN8fMyeGuKiQR2Ki4ckyFCk/kYXKc0M64E1D8w3pQdRRneN2lTiIAM8Jstj3U5KgdQano3q8QCyPOSvL4LxXoqFXsjV1TZmaoMRQGfxephY8ZepadW3tvEucV9vlmHF/AA8JKkFimNDwoOUghgRT/kNcvtRQwdC8OnFGZeNxhqAEglVRQ324U33ZhF6q8qcSGxGog1mU3lYi5BqLyCDpTeMz5kgC7igdyaiv5PIIRq0QU4gpxBRiCjGFmEJMIaYQU4gpxBRiw4iZqozFki53ltc9u6Aa5+ZYAw5GMBdaRzCxK7r88yBmTi0yuEMeqTDg5g1Vxkq0KJRty+FcI5jYFV1WiCnE/gNi8+ATmiWBP5o0TkT0LEJTDCVLyhnF4FUQeYDT8MaD+wUgxwtoDvC4KPGyJlSDxnLwL1j+EEgkEAie4mJi6kIBwAhgAkRWBSUHReJheRqXxTTyNA7noT4R8EJUOcez0DmRAv23MunoF8BIcgxz1UyIkKfBbMjBDzgLg6QYLywEOUWgSqJ4QEbFowoGS7LuCkDAnMs10+QDOAktr2jwsYIYbh36OrkNJwgAcwoYgiWh9vA273yKS1CRwOPHRRCBxBgQTUs4UgkAh+B+qho09s8Kb8c5zk8R0UATKwSWaYkRRmRPhg9HZKII7oUS4fYc6ESqPTE3JPpYRoVp9GYNuj2IwHKhGD8QBMSPQ38aueh45+ABDicqoRIk9k493Ng/uXWwDCuEtzhwIsc5RCXOE77wFpynjfpdg5/zEiNSNAg3WXOHm4sNXjSn02CYxrJjiGIhxBDhLdHy2zNkMhD5EEKwUEd4E9o6kB8/YLyiL9xgMBp0zTwQOJYRwOJGOE+UhLoGCAMcPtgUe53/dE7WAMXeuMkN6RBM+LkCn5Sg0hpVTsCptKhWr8J0SXptEoaqMh0FLdaYnYLLcthRAFev4IEsMga4NxE+iakEZMR6WeLPycRhOLL/cHkiIMixAkBiXoVbSpD8/kYGYk/f1V9eCMt7cYaaHzUbfkamSfhgWtpjw3AVyCqhcYQWwptNFmNrbGQg0REYF4pgKIJie+XiJ2BdyY5zLC8iAiAkHhZ+uDuBxoNyUaXoMIPOiKJoMlyAhF8igVNyp7M0tCkkqzge+Fmc3BdE4LYA/BRNQQrR/7EWDCwYHZyMdgyXENlKwAjhZzAD2v95frAMD2QTchwXNWkt8LP/8lLfa9PLQka9Yd9QOQEM8mmzlhY6ho/HdDyNCi3BAWGEIsPdd8Gbco/WbDDoCDOuBWYzZtITOgMB9MCj15Ek4cFMbVYbYsUJH0Cc0YILN6WXZqc67NaIE+q2smwlBZ7oGTWmvJzwlLvplFJjTmBOnjmLsPIaW8CB5Zfac5x8YUGhC3gCIdbtBvbSzFl0UXp2HoKZtCadwYzpIDkNqsE0GGIoKrUGrbpMfI472zWr2hkEDlthqCBd77U7M1NNqZkuJminDYGS4hCWZzdKuV4DL3ksvlz97IpKiS+sFiu0juI8t5RhkWwElulMzSwsSIVI4W6bkpisgsUI90IhJbYkELgkEHlB6JOwgQWRrCKjhZCiGbr/JatmiSKXw/hDyXAlwYoC8Ar3aiclgpRslgHdq2EOpGqKTHHbaB9elcVlGYt9lLNUklx8xuzyUPrsgDXbL1bhpXaqutjOZrkD3kFJsBgwBI3lwYjqzdHyuej6T/Tq2RJk8ApHcqI/SZAjwwoM5fE0OgEPV1E4QvhZiYRbOQ8aIfP81NJwu5mw6HDCY8YIXG+CNYJkFOdvH9D2/X7QIP8ORBuLixr7f3heGfXi9Meui4t+xsC/vj4xfx77FPqL2o+KS87unfPgrpVfvRXZ2phRc0j/K9fdH7w49vh3i7vjt5Su7vs1nr+x65Nxr+179aPjJ0/WXD9lTF7agY0+86TImvcv/FHgmze/eubdB6Z83XzM+FTbscTqYwtq5iQc/2bCroUH6npL6q/f7Fp21/I73ntZfc/pwpN6O/tA24ljB8ccWn1vjeud/A50062uJfbVCS/fe+PJN5e+MyVv4+LlF66fQpz+4Gxvk+bLSdpTuxdkbBL22w4eyFq+yLCzLS6QbT6x/j3P6Bs2j5fYeYH8v8RpbafGruUrZra8cXrm0le2HDZ1rWj6/Mz8VefbD92+fcGWzkfO3LBw/ZlfNqzYZiqQ9k2xrn+fSOmsODDF1zpzj+3QzQefSa3J8E7o2Ja8dP38T7me1Ds/7ljsH9fa89LU3nkPjOtL7tswA9/xyW1r1z6qOfP1ur16qfJI77yM69b89WXD3ozPzjtPLbuWfWfB9I97a6e1v9X8O16b2FzT/aH29gJ8Wsv4x+PjV06oshDbTqwoCS3709K+7qp119anvb0qTd/zTdvYgLjkvrYlrV3PFp3bsShy5OSFh3csX0tJ416ynBsnYxoTp9lQ1JUOmV3NdnN8stJuVtrNygsp5YWUQkwhphBTiCnEFGIKMYWYQkwhphBT2s1Ku1lpXirtZoWYQiwavhMtsDm8WU5tEU8LAUAGRUtaViVuG8HEruiy0pS/Ok353riJSlv+f9+WbySiLc9w91cjvOP5X+hFDj+SYNGbftyRhEn/5kgC9n96JEFv0v88jyTozFf9SILJRJJmzKQzAsJsRi1uD2nWGjweo5nQ6ki9BbvikYSr0OoGgATaH9fq5i+2usXcTubYgxNPfzvp060Zixum5uV748evVK1Z3IBOOBF0PfHRbWdv2rO1pG7TwptnpfjimWfXdU89fHju6I2ni+gHn3zosal1WZ9Pf+i3F+pTRWfHuY5PDp14N1Dm/Tv7wsJ/lEReaf7iyA3T9jYzj0+vs+7YkN2+rHls5tv774t0Jm49r6l/9CW26/Gdmlmu78Tt5Bvq+w/pt76+QCo62zuN3L2o6Zq49+h9RHbPiYdo1dyylaOelB6pEGpH53Z13pK3vnun79bd6+wn7SsbP35h/pLio68T12R90Tz+eZvjwM4vfzO1vebNcdf23nI701uT7g+0vHpHu/DZ8ultm37/edo3N9Z/e3+va+fxt28x1Ewbs/3cxrv/ti5uZs6HgenfNU+8MLFhcl88pS9rfW1V/XpTfff5/ctvTew5ElxTG4nsubcn6WHTpqQZ7UeP3NRtOHXU+eWisY/s230Un9C1YTJt/YPJsffw2sLOoj9j397c35x+ccIMtnx0XNw/AQK3Uwk= \ No newline at end of file diff --git a/docs/cassettes/persistence_redis_6a39d1ff-ca37-4457-8b52-07d33b59c36e.msgpack.zlib b/docs/cassettes/persistence_redis_6a39d1ff-ca37-4457-8b52-07d33b59c36e.msgpack.zlib deleted file mode 100644 index f4504d61b..000000000 --- a/docs/cassettes/persistence_redis_6a39d1ff-ca37-4457-8b52-07d33b59c36e.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/cassettes/subgraphs-manage-state_12.msgpack.zlib b/docs/cassettes/subgraphs-manage-state_12.msgpack.zlib deleted file mode 100644 index 42a9a79a6..000000000 --- a/docs/cassettes/subgraphs-manage-state_12.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/cassettes/subgraphs-manage-state_14.msgpack.zlib b/docs/cassettes/subgraphs-manage-state_14.msgpack.zlib deleted file mode 100644 index 8150dcb53..000000000 --- a/docs/cassettes/subgraphs-manage-state_14.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/cassettes/subgraphs-manage-state_16.msgpack.zlib b/docs/cassettes/subgraphs-manage-state_16.msgpack.zlib deleted file mode 100644 index 9085b559e..000000000 --- a/docs/cassettes/subgraphs-manage-state_16.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/cassettes/subgraphs-manage-state_31.msgpack.zlib b/docs/cassettes/subgraphs-manage-state_31.msgpack.zlib deleted file mode 100644 index 9dc665f8d..000000000 --- a/docs/cassettes/subgraphs-manage-state_31.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/cassettes/subgraphs-manage-state_34.msgpack.zlib b/docs/cassettes/subgraphs-manage-state_34.msgpack.zlib deleted file mode 100644 index b3d6bfd82..000000000 --- a/docs/cassettes/subgraphs-manage-state_34.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -eNrtVnt0E1Uah7J6QFeovAVppxF5dtKZJM2jGCi0lFIoLX1Aa8HszeQmmWZenUfaNKerUFxQUZwq6wHsyqM0UMpLkAUR9Cg+u+z6hoICCyKLqCxyytGj1r0zSSAVXf/hj/Wsc05yZu733d/33e91f4sjQShKNM/1bqc5GYqAktGH1LQ4IsIaBUryklYWyn7e01JcVFq2QRHpzgl+WRakrIwMINBGXoAcoI0Uz2YEyQzKD+QM9C4wUIdpcfOe0LE+1rCBhZIEfFAyZGFVYQPFI1ucjD4MOQyQJNobwmQ/xGgObaY5H4ZMiyEMSBik0bqIATevyFgtBPoXL2IcLxsN6ZhB5BmowUghSYasoSEd64FeixwaK+nY8c00h0nexK2KBEVDw0K0wvIeyGhLPkHGLbyuBCUBHQS6vLzIAg0zbJBDgr6xWuI5l0T5IQs01cRPTY0DrK5WglxHFpCGB0qUSAtaaDSBh6bkceMxfDLGwVoMsoIcwrQ1JAZiaAGny1kgCCgiV9WuKaCT0DINGLoeejCvyLMYwGLaGO+uhhQ6+QIOQ8+4AAylY0HAKHA8JgBalGLgtJZxNwN/CR0lgvZiQRpkRQE9mBMLN0TfUWCwAELXAhvHi6npqlWBhUg7GLM4YUKgFog+6Zcs1qK862nToujUXY97rqEiW5oQnauWF5F/ok9hUcoxhpZkI4blIZ9gHdDqMAvTTYzjOegk0zG5lneaxmvJkGQRraM8eAEjQW3hWuriGY6GUdMWRFTpokzrFRxGtYNyqr9BTmG1ojbE6ktT5vUXraLiQJoxzmdoaNBLqkahRejRd0WBFjboEqQFARt3qSHih8CDuvNEr9tb/Lwkq9t6dtx2QFEQVSpEXeNB8OpWXz0tpGMe6GWADNtQH3BQj67aFoBQwFFsg7A1ukvdgUqFoSmgyTO02m2P9Q2uOX29uE3rExz1MCeru4uQE1NnZhSH0GjgMNKY6TDadtThkgxojkGtjjMA+dMq6PL9iQIBUAEEgsfGjtoa3bwtUYeX1I2FgCoq7QEJRMqvbgQia7XsSlwXFU6mWahGcoqvNxcTXjNnNpKk0bGzB7AU4ih1ox70fYkCP2RQ0vHoAFT3u6EMjNqIMyaMOKMARAn+tYdNKIshnOKRaXUd0UrxfICGaudXLhfldblZZ6mF4OvyhXmg3srPL3LzFTNCMwW3UMfbiVlTi5VixewqygvK+Up9JU7azFa7ncy0OXDSSBhJI4m7grb8Spu/hGU5say+XCTqq/0cO4ecV0TOkkuClf5783MhkCyZpa7KyvrKwkxrTW0pNXtaznzvvGqza95MaHcwcHaueK9cnju3NKeQU6zW2kkY8k4J0h4nWTzdJlWUz88lpGmemlJoLiCDcyUfGfTkG4PAXA58oUr0wShGe4J7RCaJEzEPrYTFTmjPtnhJMZDzyX51g91k2hQfqY2tKGSyIi1uQeUL//ZGJHZHrC+ada3yh7bkolJWD5QpqEVJC1YAOMxEmDIx0pFFWLNMFmxGYVl7TsxM2U9W7s4yEXCSF2VyerxTIpRf4QLQ05bzkz1yQOsRlEnNfXRN4LBO4CWIx7xS2yvwkujtiM/M3RVtSJwXfYCj63Wz6mat/lGp0NzumBgNEA0SGcdZSd1gshLbYpJ4abahcxE4SeAE+XwdLqJjMzRLo9jp/7HrGHUGqUV27/UaMh+AnKRuMhPR52CiiohGG5qvyPpVoBYHel74aaU4lknTcVh7OoQSCBMc2mBlpb3Xy2MQ6wmpvS6ujNMetXM0+nCZ3W6b3WJyEx4TZbcQHgKYPHbCZgYW0gGB1bsvOp5xWUudwIsyLkEKsQ85pHams6BOG0ROM5lptqKTTtKIA6N4YKnizuW1M0iTMEGEDA8823Py8ByARjteqlebGsmtnDO1cGbOngo8sWzwIv1eRnKOlzja620thSJKjdpGMbziQRNVhK0Iq2RqpbrbQZBeaDMBk93tILx2Ap8+v2RHHO1qkbVo4zgCGOR7kFJ3+c1OQ5bFYjZMQte00261EITOjxa1Rm+HV3s/k/pI31760wf9fvhheUkHd5xIfuHCxGXOqgcHT6m+8OcBfZvuTNq77NZFY+YPHPTw6DfKV7/07xeHPTl4Vl7J2mEpwaDXtzRcMLzP3ev+gI2Ys17JOqB0TX7xHyfv/2D/69WpwaLDgw6803Dfx1+c7ZNueCXFVfz22AtLd2x9L/+t1b2HpjhA2eH7jbbj7METxvDa5wYqLR889u7KQv7ZNeWr2fcY88CRW35387ij0svDqUj3o0MfPVQ7rmLP1+27hydtv/3hWYOoU1sfG3IqbVP2R8npY4orcvz1RyJ96o7fnrLW/lLqJ++vnfJS6MQXOz9LWuEtjHRVTHG9FqiaxK8AhzK6Cu4YsvrduwZ8eGjuovbGFOfY5d9/eeTzbU83Xt6jlDU1TB900+Wu6rcbxx/t9/Hy4ZWn6/OOLe9c0LFy4EMTR3kdi06tn+qYGykOjV3Z3PtN5vx278H3UobOb+1O/aZfctKodenNMzYf6nq5dM3rdcEfqvcv+Wjknx7oLuyXPnPditS0naebU4xJL8/AmI6CVSMOXK62P/LWyguzhX0LfHsXf/L0dzdpWejTK++5zOxUlJIbSYp7e/8LKf5foK0+KLsSOM2PuOsMKPdwT2OBAJMESNFemsIo1Ki/RLJ+RKn0LYl+/ixn0jUT2VWMpv1Gon4jUf8PJMqcab+xJMr+6yRRLRYiM/PXw6Js1hvOogizyW0lLW6zyWS3maHVbPfYKTcFACIodtJs+VWwKMrttlM3kEW1/JhFNRUFPiKSX73YPdj99wunmCsrzlTV9z0weFrS3burlptGhD94o+nx1+4GnRfv8/Af9i9MG5b6qe3iN4f9/Vclrx1SliRk3DGJ/2rkycnGF61rLjYfCoRrvz17/PtZ7zhPPnX83e4HppfsjZxc8l3r89lHQjntzaPIm5tmv9klhp8b39Gh7BuRfW7wqtEB57mJT2U8cnZCxlsvHH16STiiGspO+8YsSV76zzWGe6dnFD/kvjTv/Li8zoFl58akYfYnJmDU++pGWDE7uRk+m/PZK/2LL1/o3zbqnvyJXOPuTXc9P+rOc03ZhamwgAlTc7rOOBprtg74cvxfvt53wr/lzMH+ozfsOn+/2rx0UYo57Y+37bpy8XTjgG2XF+wKj1nz+yMd7/RvPTtHCLs/r1i96tP6S4sqty7baK3ZMyH7oXDJE+KxLZ+vDJofP5zXbeuYceLM0WN7ntn5TC9DaEz5t9kFZ74NRfZkn/+q+0jwvkvJww0PThmx2VuY5mxcn3fFe88ty7arm7eMZKtumfyvS6YRru23PvlZ9cK3b3mWujIsSqXSbuNqDCgv/wGgT+wJ \ No newline at end of file diff --git a/docs/cassettes/subgraphs-manage-state_41.msgpack.zlib b/docs/cassettes/subgraphs-manage-state_41.msgpack.zlib deleted file mode 100644 index 758b01e8c..000000000 --- a/docs/cassettes/subgraphs-manage-state_41.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/cassettes/subgraphs-manage-state_43.msgpack.zlib b/docs/cassettes/subgraphs-manage-state_43.msgpack.zlib deleted file mode 100644 index 3c9829c44..000000000 --- a/docs/cassettes/subgraphs-manage-state_43.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/cassettes/subgraphs-manage-state_49.msgpack.zlib b/docs/cassettes/subgraphs-manage-state_49.msgpack.zlib deleted file mode 100644 index 8062d3291..000000000 --- a/docs/cassettes/subgraphs-manage-state_49.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/cassettes/tool-calling-errors_11.msgpack.zlib b/docs/cassettes/tool-calling-errors_11.msgpack.zlib deleted file mode 100644 index c1951b14a..000000000 --- a/docs/cassettes/tool-calling-errors_11.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/cassettes/tool-calling-errors_13.msgpack.zlib b/docs/cassettes/tool-calling-errors_13.msgpack.zlib deleted file mode 100644 index 0713e07ef..000000000 --- a/docs/cassettes/tool-calling-errors_13.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/cassettes/tool-calling-errors_17.msgpack.zlib b/docs/cassettes/tool-calling-errors_17.msgpack.zlib deleted file mode 100644 index 1514190a1..000000000 --- a/docs/cassettes/tool-calling-errors_17.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/cassettes/tool-calling-errors_19.msgpack.zlib b/docs/cassettes/tool-calling-errors_19.msgpack.zlib deleted file mode 100644 index d7ba79229..000000000 --- a/docs/cassettes/tool-calling-errors_19.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/cassettes/tool-calling-errors_9.msgpack.zlib b/docs/cassettes/tool-calling-errors_9.msgpack.zlib deleted file mode 100644 index 475c1673c..000000000 --- a/docs/cassettes/tool-calling-errors_9.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -eNqVeAk8lN3b/42E7MlOCaXs+75km7HLzthijJnBLGYYO1Ghso0K2cpSWiwJISklIfuSdWRfsytLtneq53nq/1ve/+c9c9/nXPc51/I91/mec3xEFRBgODwSg6YoRKL9YDg3qB/5A0+MKsDBfP1heL+rD1EwPwTGIw+sb53nj0MOUWwg/PyweFUpKRQMh3JDekgi0d5SSBRcysjKVsnNTgHroYeBw4I8UO5gFTkHWQQCirZAmyN1lIxkzWSgaIiPUTAGbiQbiHVH2SKgSA8VT3tpHyMLLBqKAgW46erYWOrhjXVtVTyhcpZkW0tP+yCE+0UDbTF7GZVgDzAoyAOk4nlRVyXgoo801twLowhB+QRB5SyMde1AaIidgrQx+K/WAmPkAVYhuBuYYv5qsbpwH097WVt/CNmHMQivDNVT+Of7T5/uYFCwhzbG6M+YhrrSfheROggIWd/jB0Z7S4K7bGDwv/X/hYPc729iLQ//K7YSOfYvHV1tPxOktJgh2SdZz9teRvnHmNePmFBpSx8IUscbYgdBeNgFShuCIVh3cICioaxDEMRLBwVBBuLJOfYxsUP4uNl5YMi5DjTxMiTHNMM72JsFW4JtUT9soGizv2393OV0EA6yPtIwa0zAv8T5YfNHDCOUgxcE5RCA0dByh+tifDA4jdMBCKQfLN8d4xFUV4CAuXmQ6XL1iQ0ehpPQhsPQfsQX2CAyP9ASf/EFLyUrKUd+SrShUBjWT0IfDcV4INFwYhE8GIkVF/CAefq4+cEe/hom5olKiT7RxaDRsJ/EIz7xhsGwEm4+SALsEQ6Gx5K5CLvyEO/n5uePj8onu4K1NhWgYHi8GxyWa278N6LEIhM3vJ8EeZ2RnkiYB7EWhEOKC8hKC1jBsORGVl5ARlFVWkZVXloAbGr9UBckYantQCxXhqrIuUFlFBQ85dyUoW5KEvp2lvm2brggYqU5DglHosUF/mUaRbpuUARMgozYD4fxIZag3AIlyFA0ZBWVlOWlpR9bwrAYnJ+ENYY4uBYiCEN7YDHkfYUXVHUMEfTH+QiqCv7aPU5STlJukmiYjyTUB+PvQc4JDiYJxaCcpHA/PThJEeS18BoBnsHy2iZWelAHlK6OpSUKr29o7mvgFeir4y+vh/AEydkhEe42Jr44A30zY21bBYySrp2HrJcBXifYBgpRtjSWCfKzUDZQMpQJwASY+xrLoU2UCZbeKvoo3Ys6JigM3DYYYmrkpS1n4Bdoh7NXxpyR1XHHyMkRyC3CyAuhDz8jp0d+BMOcxQXhOIw/ljwDqKcEGbiguCB58q7kyQuqKkrLK0tLhz20guHIxwnxye85Ff7IFJkmEtZBWBjxCRJF1pfywsLgxX8PmMDQcD8EMV9JUUmh6K9sW7qh4TA88YF7kB8MX0JerV9Zt/pJA2KegaF1npm+CXFQPUQQ7082weNdPf86ugRVpcUFf+XQ1Q/zv6HN1yPzkFhrjfAnM0XxD6bIqcrLqMrJ/WDKf6FmHpn6xIcK0ioqKnI12j8B/E0JCW0fH0yAxC/6EHNEf+6cSDKDcWT2NPDvHg4cjgEsRiBDEEBBAQAU5B9wOEExYKir63rR0hxkaKL/a6AJIJcj0gCAIvu1BOsI2DtABGjGfln8KG5QPBb474Wstdn3S7dHAvi/FzoPGB5KblfJrzCOHJzs8gRZPgH/JZ/7Ibv/ktV/yAF+WD+yfPGHjLO21CXLHmT5HPwP2f0PGYrF/dCPI8vqKB9/6G/cAAMMbWNFbmnJLx+ABywBMKDzY/6/VDC5AKD8DQCokn73ud8FgMprAMA19LtP+D4AMF8FgBcdv/t+5wTrhnP72XWE/FJ6egLAegEAMDoAAFsnABxz/DsR/wWbwE9sYABD/sEBHwBG7jEE0AAUkCRLsoA0IAMoHg4DugAVJeWPh1yOkB9qWmrqI0eoj9HQHKVlOMbAQH+Mnp6R6TgLIxMrEz09CwcLK9sJdnZ2BmZOLo4TXMdPsJ/44YSCimxzhJqOmpruBCM944n/czmsA1hpgR2gj4pCEKBkpaBipTh8D/CTp0SGRkHxe92P0lBRUx6hpaAjD1uyABRHKMjoqZno6I7S/MwAJXkKR1lpjp9mk+HgFNS+TXuCXdbCxtbN1+95V3ePkKKSjnUk8dYdLgVdS/+o5LJy4TMiuJQcOXkrj9K3q2SfvBTkaFQUf4YkR6A+cpSGPCjHSqY3JQUdNS0l1T+DrFRHjp+W0bawJHadkHPzzaFmYxdyL307HpksuLp2OAQwUJFRsVKxAlrAvpWe3hG9C3p61NGfPn7Nmy1V9x/cR7rwaCEhapXLsyUdCQ0mSJviIImpoc5ZhUPg+8UYyu7xz7NVHJXYTr6JZfOKqoiC8aAUJyfOxazqIldMsafvSdzWcgRc//W5h9nrEbGOmIBQ0Xe7K7rdDt8Krtm7hp8LNtYsX7WjX9FgBsF7s4+Nh83mzLV+v7OjqXnz/upT+pUGZkN4Xza7W9h2zrz49563TlKvvmpw37MMFLu2lR2TJ7dgfmtyDqFOdrr2/3N6a2r7Ow/zsWev9y5+TQnzrrY6bbtr/GQwugUcFH1hTMt9fvtvn87GEBozxySjRQVlOHLkhZje6bsFE8QM5fDce2cJHQXz8kpzeayD1fnwaN7Nh81u09j41ILpJa+qrPRBA0Al5j7zMJYwM4obF4F8yVP6QBfJylHOykrByvK74siz8zxV8PW1nRALU3oFvJnNmeRamcz8ZRDVGxJrPV2bi5d51yPcVjxv/yG+JbNDHNDodnw+fIVV+XYDpISeZ5hRKyaRIvqxjlzbQFnLrQ7hq8tb9+LbJX0158Xcn/VUsC8kOUSSVls/NDWGFAlhI9wcUthN2qwUvLX1qiIbUBLv5kpXeu/KGe7Q8bMbnC5SuFuAd2w9MMiBftYFWxIG0EqnjW3OL9zJsVhFkjID9y+NGCaE3ZXhbuNPUPLMEctD4M/G0tCApS5AZlKyXR7UHntPwGU/jteKnyjO6EYVBX/i+8w5GIjz9+2bpck2cKTXhV77bJwhlDlPR5Ehr3a76jx1sRZCVHX6pU57SN9O/xCKo0FCZZju2XiNG1varmTnsiJGcxaraGMSFAYv8B+lr9gs7Q7yfrGI5FXOfK8afGVZM2v+TJH07A2NFshy86RvFXLOPOuCcmViX3A2ykSOCxWR0su1b0f9KszEh41BXDlNUl8YBxpoSngffTYZ1JGa+RVBdT/YfZS/3FQDGmLE9+AmT3RcV3+FTrbip5i6eSGfOCmZ92N9HLWvHdRrkpVILAqh1JOflRICxZREu2oSql0a0qZKNMTE40Atx/V5M+SJMon49LpZmfyU45AxWmf08fndqnYZ34Iz3rzu+dziLzQ+odqo0oYtyvipDKGxg0veO8M9WGbplRGvfROCLI8r8+3Ou/Ea6R+mSoNMHpS42ududpYxVOanKOlC0eBURc/siwF8xSTGJBfa2CslSTmuYjptYr6KwS+gfrLvD2ZL6+FU61G2ebqu2QcZVyGplZWWDo/azo8GnWIojn21so82w/RVLsjVf9hMDze+Em68hXJKTEO9wpltgQjbgx8jIF+tSJ/C1nacr8sKSqnSxl6Ojf2zijpvRkAopStu3gRmU60q+5MfzuIZCqrjSdngr+hh6UXdEJPgkqsQXtcpaLOXxpmrHZ99dDggTRY3go5cSubhGzOXXPYdnhSFbCqCVBIRIXyKElgS6zI7TwRzaWey7wsc18WI3EbHUF9mPCJhrfKbfMSAlN4n0Nn0mZ72Q2BlvUUvr7F3+F1U5yjHd8fbxy9snmWM3DjAvD+RAV5dMcZu8sog4zXietYc8M5qMhXcwO34OklGqrBKjYOF+jHTxGsOK6O6W4a/peXV7f0zErzdVy0iKH1CRTvCv596aaE2sFgRLjr2dUPBDDrwJc1xa/qsfYhZH/d8aUY489D6wK3wrL1acNYPW+FyDOSm8VN5FyrnSd6E3kAINynEg02xGFQDj1OnpKp2oiXRsL75YAeuyzh1rGz0dczyrd/SyPjad0PE506l3pF3KTRHVyeNy9V9xmSk/XmvlK6HdWq5D85nH5tj5E69KXa5K5BP0UxgphGXoHkOhsAO1qkUHUHTUQeo05WuPtXYnQufD1ulzIqJeCXL7fRUabS0wn9CaL00swi7nUlr0qrc73ruELiW0yiWtFpTWe/+YPbRAQLHzeU8pdOe0wUaHz2/PL90dFn4pO1L4yOsfVHKblD3G4rRMnG8R8sZL1O1cn6scHvgovptPOEVa7kCUa+zr5xpDJij/PisuCqtrcD6uKBgb5SggKAg5b9VorvijpO7xpTmSle4w2IyMM7QgI29bEyf+uaxkvWa7YPuEcfKK9zhVxkPgQ37zyuaoyJmS3tN4j9vnv+tslm2Z56memAup73qKjO11HsIVEyqrlQGfNlI/OQmuiVRuR7VXWuuFLUTHyN1sMI9ewhs7SfZG/wrn/+scgO+eYI+tbBcmusrYw9ikB2uUct1S0Lz9R0tbSDl+5hfYBpDaw+jT/Lb3/Ky7Tdm1dHI6jt1/9K+JKbGHO4fM8elZZyx3HfQ4rI9S33Lf0wDurD5cX7FWj/UtJi9fUn3esJMFtd2GcXIq7KBwpnahG+v9wr6JlExt08yp0m576oVal14+91plPCEYevxAUp34Ur9mtcHLQY55YXa64/EDdyzPRPsC3wXt2ahZvUHthF2T5/3v1Z5C39A/I84en6OeoycEBoccft+lLl7ZrciRcI1paE6GY6wuhGJ9V6yeLajRmn2tgOaph6/OVKXVUmKj8TeSp7wKT8EpB1k9fSntP+8pf6u7NK5ViKDNGb2J8Llvjy2iX7aRr9Xdwjccz4EbES3pvZHXHzJpweloETsDwLMDbRDF6YX3GdqjgSJ+TZLBCck0cGgKkGkvq2kz57LoaT6Ee3PFp+FsqpCnjCbfpDs4o0/BHJxxHOzx7VEggt2Rft3JB2fqQ2pTy5/zMKWci+Bm6olxTfjdzjPfHD/j4Tb0CHD15rtj/hkVKjggnCdodn7vvL9sd0bkeWFjcSPiwacSdsxhRUMqg8PKrtTFYSkB4oc7Bi9QhPuC95u/0byL9RmUgZB5rbwGUMqbYFYSd7LtYFPnWYf18dAEoWSa5N6ooLW5XhteYZTuLkzl14txj8/ClYy37M9+ubNxwWbJ2f9Ba9MFHtfnPU3Z5GhsvB6GbzO12D0EmPuLm4ffXu7PzaCdpyj7XTdoNSddurMLHoCsISTmnDlVGhkTTg2fQNsPu0a2yjLaCcpcXvndHxrulHhUzEfmurp3aYJ2vULGMkZ7feHgFV70afgSbVbPd3jq1Qi4rjGrKKMFtsah6X4ONn0UgOxNgEGXraPtIxMNKi2rMfbFDn+xYgZuTTtAAlh8ahPjwrbXPvjLw3mEvQ2X1zUaIzxUQ0Ql/NEi6ZMKGiW96fvcj5SQGO4A+gfrHGEMGrdSqlArDQzZvfZ4haNgybmesqcNMoMqVAnj92sKnovSQnfCDJ5pSJefKPMqzVtMf9r/cylRxMXri9RpTVNjKkqH71S5U34+l71FN1RvFJaQqokWAHCEzCz5LqNyGVmrUzN8Fw8E2F72VzJksALfk6i6RysVSnAElavTn796pxwThf33somMUm6okxW+zT1fUr6RMX6sE0Hz6Z7f1LEUloR+PPbpZBpM1F593mBkzgoBLR3M3miAzFKxDl5Cv6nY6pEXmqD6iAsYN/6Sb0NqbUJGdc6sEiQDF0SO96Bis4b6u/FZwonn2e4Vsj78pK9ypWbThfQXamnCOYyGTac5W0FZvF2C6VPmo9JiDwfXIm862r0YGt+8UXImKdd9+Ow719nwiz2854M1ujnbzpqrMqJzVu/3tdfXkt4oRVrv88MpQmXsEl6tFtR+iH4VbdO205W2zAuYZb/Oik6+WjdQ/inU0OqKfaI8uwW+OujsDDR1NGC31HufgNvJjzIqOCbAE+tWB8CMMghcKal9HfwhqTG2QozzeDjbmcabNJlh5kqPIWE4wZWeNWUlGnUhjaOU+leHyCWdjAN+Df423Bcf121oAdBP3NY4l2XNHaI7uhvqSByvEwxsLvREOecWtav4CiidI5YiL+80FiZdrzbftmOP6XN1z72347Tm5OZXN2zLH2R1SJVEgyY0seLigZT6SmCdB0VrNXVBq3OtISpF5Lw7GU7lS5KZs8IWj54k0NvrtfAXViBSSNDYbv+oOGJ+83TjbSk5GVQ1mfHj2ogjo2ksZEXSuzmzAxJXU/ZDfLTjZl9TBiZksGpTRuVIZmzx80zk8tsixhFu+xK2ASiztJO3jgbXRFPdamT5gIw//wjGRr9RmOs5kMXJXitnY3CHZT+A6/ZWTlPX9+XS3kn2EWNj+jQEF3bxUG0wJWaLc2VOVzJOl+Z7wbFRx5nV5OpoPbZu7nG1kHBAT4hIhEx09qXflKobwZ70fM0dsnzgbdntMvDseZJxhAXgNDYLAkNQFIX8/PRCktmqrSkfcl9geZy5yhuZqQ/cTUZtH1FZXB4R03nIBFjx1H1jGVs/gg09LVKzpIElgnJyxJyg/lRHmXhEE9GGPTIi/Jp0fjraUOlqt4XiSJ20qnoTVpSxFEKLCtQN6FrnaziIGactll7P2W5p4rEH7uvx/o9Cf//3Jn6N3oPKorkSYmpZW4RwtAANbfXdUEfGamJTM9r8SeXDVfv8J9RvyOWdhC4XNtV+jY+ZC8V1LnR9rGfcj+jlQEn3cwRo93YnLuasIS7xS0Klgn3OQReLG/GsErzUzUqNuTdF3LrpH791+28xUT3KTjmonf8zqMpPftF3UqSZhz1lJnqUvnzFrnIk0OK78LaqhccLdfoxaBG0LN+gTdWGDqmTuPTl52v1MLYYvwSjxASaAigpegOYrHHQm3gE20+FlCT2/WcuATFnysK8NcxyzL8zbu8/oVASRTsnB633mvHah7/Bc2gQrUkpsArZnsHF87kFEt9eTajdveYQKPLe8KXBnWp4/piugNrpBlilZhg59ilDM67LdAa+pV8p+HOkcpLprxZclNLAon41s53dctWnXQQHgJf0ejvQ6N7RuFFds/mNZ9sPH/ic7AS1LOHa7/2s2XAINyU3U7xoZSYd6VB7mf58oB3meCHjd8edRxfWR2+8Z1NLr/seyK7oth5Gug52PbQZpJu2mbWfplLXxWmhxD/lp/jc0f8W/UHeDgemhMY+WA85WGc6q0wU8Pubq7CZR0RTxGWVKbBtQ38K01FOsj+q0ek/uz1gpaNm71Wb4PV2b/pLex+T1S6eetUzENvd1x29aUb43frV4lZmyRQPw3TZupiuFZwYHfX6DHfkxmn+rLu8UYFGWaoJd+2wPBA1MbNhHqg33s+pCRsW8V+HTgoX9wmsX00GSTdfoQOUUvq5Q6Sn8lIfZYs2HWndX1D6eQ7pcVcEu51Swapp+p68XF1/skEFMg49pN/tn+6qzFc9MIOdLYy9UYgac4eXF7Yjz6TtlvDAVKtwX9sNHsWqMqD4WRS43WoQNa3OvIaCle3S4aQJqvxmbMq7fjr+MwJQ+HkCht9a9OnN88U7kTWdfZw3RhohflC7mB1uVudfhjgM42zt5RTVZbPkC2Ek40GBMVZ/qG89skK8IHAJFqJW/3eco2FlvAwrz7zuHfKu7k3Kh3rmfw7uSLM7ZbsJjCNi3yiMderAlpK/BrVuV5dlaoZl7Ctd/7gFVIvHFbgcOqjsVNwua7A3jT+/l/rz5TiNVm6HdKXRhHKYiimvQXpBh8Cx4Tyn4AdKYwuqBSUsYlkw/1Du1XuVy+LPBa+92mEdOKeTbi4pyZcqVNU4+EbThlX+Ztz1J11Xdc0vUuf6+mn/zw1VavFUT4VKmKQOEO2A42bBgt83aoVdYu6MRcvCD1ZmVPP3ynivFKL3C+6O/9+x2MYHYCLH6nMwPdj4t3tAx12VHruydycK/T1G+u42jgULPn+ASunyo9sWNT6F4512Ue6dd1UEomA2ZYoSXkdrBtuKOThzKsUeZMpBmNibCV89VmDiNXN04/GRVU/g6aD2R2XCirEoJd2nCYo44w/8PPTt5jhOFl7AieJk5vRSY/2sp46kBKfczsyvQkpEU9mPnv6TUV8bStGu9NfjdJQw1bhW5VLff2NcBQ+gnmk5d3aWlte2HdMXssmW6Ni/Nb860SpAWucxChVc9WTWX76d1ET4Mc9hgv3bBXVLO2quceXjcw9ZYtZDXj5o/lHaSRJo9cizs8pUixvcda8wiNGwzPm1vevgQVDmc9OPM30k6Jv/Merq8MHU54t1CIJtT3KEH+qvMLi0b2/otR3D4Rpx/UqjGhKnbY7zWYulgWxbeIJqy+dCxd8Qd/Cwn3eJeHb+am8cC2kVzVjSLhQZwzTlWaswFIve/DqqCsj1Mhrc6hJ9mu93lrZ0MeeETGau/lRtCvII/68bA0ttam2xuavcjHmhZK1hsmCkscVgp+uQWU2VF5HWiwpbFff2Ml3vXCe6cmefWtoO+a+dYhpuKT7ayRnJ33eFVLHvXGCWh+/kACxs/R5K48x1ywuRg19OSthJHSXfRbNsfbFGqosltYXvMHOfuOblGNU4cBurrcSfFPHaK2PZVOmgryPFWvSNihadYNLQCUa9XUSzpKRvS+PhSZwiFOVtKXWTefIvpxSNB3Hne1gRcDFXJy6IesGw/ctMaXHj37PEenuK1NQjnnIlFShSy8ZLgWZ4k1KaENk8opBVj+gxJxmmExfqE/CWZ7ZTYYTQth9ee6BTfMe9nLVEJ6lQJtf9GRv5yw5n8gpREZfrG8HJE8avyp61zcTyPpEuTqp7fOERKsCp3mBD/I7u/zGg3TlkACFboeQaW86wlpjGTAABIjUBviSzvVD3tggCxPevImCmSqY9SpwR8ppbImbUxTPTy/xdHGxpi5+2PAPWn9JrdWE+JrKh+fxjubj+KB/k/D0E08JbXOGpp24qCy44YjZrfSAiun1V02K6Pc18OOgls60nYIynfI+bx6Cx/WSlOrACI91CvEZfqZG36o5gkt46VtU6DLtpcAQ94RrvTZr34QbDc/a9UvwZ/D02ZSeEuNzkLvgiz0ZVu3CPnj/637t+Vwsl+POeTnO0l6Bx5o6qJ3FWmL0S91qkQAWc0tzl/ynppvxC/XvOprbM3fiXPU9f2/PpzdJHZlhDwhnzsVWN5HPk/tVZckE49gUAfz1m7y2ykLIZe/8PaGmHbAH816k65OoiXaFgfbTHWrpeg6qpR28Hfh7p8Y+0zSpCe2v1nxuaFuC+A+h5rdfLt524HQVChd35l5qPyP97t1WrFtoyUBI3CVJ3+3LZ/TBHF93Dm6qHAJmU5rjYbX2ty1yH8d6m2SO9SUbAP7CO3dEjD9px9QkPdrUTlQ2Jgxanh9Mj+x/VbCuCLY6ae/mSzPMeTSrRSer7IZq+O6wXWnbSdJmiJb5KNRsX7WqDuAPaR4EV4XlKBCu3DxVMLSvFWLSSWy78bXttqt/WLM3PTA1wxvZ0UbSKP7SfN3Z/5N59VPQMCTAcb3Qau3lfiDu7nn5UnR2w4xHPenN4pUQUMoAy3UHTpHbI6RubbwBKbL16GzJ+/Zznmfrv6SrutIpNEmXw28sIysboLZ4ivDO+Oshk97pk6XoxvtqhTsn2WBLq1/sL3F7JlWntbfdKt7S2M9wD3thQtVxdpxUJHSJdrRj1l6BmVHhWgST73dcO4fJ2SdspgLNLz1Nbd8/o82XmEIye1dDgpdKt0K/i2bmKfaEyYyHvcmBzlVPV+Q9szIVmkk3YtFYN5iYVfmgmGyoMXVPlXROUstxohwtG820i0t2buyLLm8vuFarrt8Wfz+lqcnYSVPaNoL3ZeAhoJ91CBTgTmFryyfG3+uZWkTIm/QN63tkxfRX0Yv7ItLxRhe1NJLLL2t9EArYssbQpxfdawQT7j8bOGlA+Qnp3dy5GOAR7x0TkOlvacoWT4C7jInJvGqLwhMstWSI5UkRH6CnPludSxehrH5qU7D4MQtjICi49xZSa7NdmraTOXrh0Wb6nlNDaLfU/RMFcqaDfPoLcQKagcKxbDOSyFP7j6KTq/njGJW1p8ogHNruNH6hsgr3VRJoHgkcdJXy0zozMCpbnRQrrfr7yqJnptcSUcXPyISxJ4rcLop9tKv4gPXD58sB1csaVJCuT+3Cl3mUhJNoLF/wsHFqsoHczg3B4Z7HfGXtt0aJe3mEldmBr6MT9hNzb+9xJ5Z/c45fEJTE/fh7Ln0WpF2EnSibYi96d9BXVOwCZdt9mZBRHv+Wd+vkVRZaYu5gzHVbdl9nNmTkNKnIGBJx+gtDBT6xuv9Oidpzi33EKGltZKQXrcSowaEw35oimeKZtzD6mHqhY7Nz8Ppz6b0igWtcqVd5VO04+RgJt/oRpE3mAVr6L9ja6hj5vaGzB6eed+YSXVzOfsW88g3fNC/P/keqDMWfHX9621/imAL79AQGtNvIueKxa/hbWmvNiC626C0/12uXer2Wd4XPtfbWklTh2HI8tHLzGE2oeQhJy43Q/LcaxsL/ajV9ax6ITmo0ouKpE436Hry4jR98ewIYfWxXySTP0lXumd0zqOkyej4bFGIwpFFoojF9PzlAw8lQjaLMUfD9pdKqYzMMsGMD24ak5+Wmccq7BW69e7CAfjbJzQcOzprLsRWaz19W0MZWISQkofrIfd1L9h8vrVVz100fH3rMl0hFGqnLSpnnsO63YQv27PbSf2Uz1xEVaD6+FnZ7zS5Pk25cK6Zh0/oBx3JXfKP6NEatC8MeLDeWzbYd6gpT/0f3znm9JS4Svt24/atjg0vctsjVg1Ocg+a/VY0s1EBKfBvJG7V5DQiUStTzYeXFo7LXoldaFLyIHzZXRkupfF9+FpSwsbPBBz+cL9TTv/yf/sVzOPg/mKjW9w== \ No newline at end of file diff --git a/docs/cassettes/tool-calling_17.msgpack.zlib b/docs/cassettes/tool-calling_17.msgpack.zlib deleted file mode 100644 index 6afa8c456..000000000 --- a/docs/cassettes/tool-calling_17.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -eNqFVFtsFFUY3solNTGmKYkaH2QyAeuF2e6teykPsi7LJU2hdlewStOcPXN2Z+jsnOmcM+2WpqVWDAo0ZtCgiZqQdrsLa4U21SIqxtRIsPqmptIY9AFDClUqNYLBgGemu1xSEudlZs5/+b7//7//9OXbkU5krJYNyypFOoCU/RCzL6+jNgMRuieXRlTCYrZhayw+aOjy2dUSpRqpra4GmuwEKpV0rMnQCXG6ut1dnUaEgBQi2QQWO6fLznXxaZBpobgVqYSv5dwuj28Nx5e82MlLXbyOFcS+eIMgnWdWiBkVlVpHHRKgVYSjEuI6EGAvnZNVjiSf4bubrTxYRIrlBxVgiEjwChKQWw3Bw2BcXlfAykZRWmOFUUO3QFxOl3WGsVIEV0HaBk8h2lKEsKJERKAua1Y3LGsEKApHMce8bDLQ0HVGsUTKaYXIqmbQFgIllAYspovXWGeQTmW7zi5ewRAU83XxtFOzYQnVZTXFd3ezBFbLZR2JFrHb3ladJW+c2Ikgtb3vZg5ZQWxaLVC24RYXsJERB5wiE8rhJFd05267/w/57nuRaO7OSwiITEBvZCVMqDm6SBLHAYRIowJSIRZZoeaHqV2ytoYTUVIBFBXYqFVka84stCKkCUCR21FuIcocAZqmyAt9qN5JsDpclIZgcVlsLlgKEpiwVGqeCJd4VDd0MgWrbPRen9MzkhEIBbLK6ieCAhilnGbbP7vToAHYyvIIxe0wcwvBx+70wcQcqgdwa+yulECHkjkE9LTfN3bnuW6oVE4jMx9pWAxXNN6G8zrdbmdo9K7EpFOF5lASKASN3mryrZAC07xXcPkFl/tYqUsKUlNUMgd9geARHRGNbTZ6JcdSUoP0ZdlE0Hdn8sVdHNhaV5rmgex6NhvzVFwy1nAePxdDGmdtFOf21vrctTUhbmN9fDhSBInfcxSjcR2oJMnGES2NPg8lQ21FYiFyz6EXijeOIIvm5+y7xeX2+eo764Lk+WAdxBKsb+jYuK0tuv7jjAAVbIgCZdcVEuxiM9Q8y8GE3ycm/MgfCIQ8oAagZDCYrEkkUAi6azwB32C7DMyC2+nmUhinFHQ8skGIACZ5IWa3xMyvb9oSrt8cGX5BaMQJTIkQBykzq2IV5WJIZ602CzY0E6+Ociy8MdxkfhSEIS+ACW8C1dT4PAlRiG5vHCm151b5WUv59rX4cm5h678ue2rl/nKH/SyJN/xS95Wr4sb2yVPXDoanNgeu+CuWgeBzgWh2z6wU+b5uasfFDTM3nUf3zc98cvmLlR2B3lDvntNvR2t3z2y/TlZIJy+OTc7+8djlC5emhPJfyX7z1XMfVIbXXVCWvnX19Bi/vKx/7eFl908XtC/PJrY9GdvbdCg5NcM39zl+f8185Pz1uUtnMvumj27KHPmxadVD/0xWffpsc9UOcOX1fU/PVka+eXPg/Hgs2z+1ZeKJGwfeG4vOtZ2YOfzTXv59PN+ze378wfz47Lv90+mf5//exPXGVxir9T9XVAz9sHx5qNd4cbRtaeUNNBHsKZ+bnR6I/FY1Ef3LN5d5YNOj4caRbeve6Xl8L77a19x/Puw8dNLx8LXKb+fb/r3P4bh5c4lj19rZVQfLHI7/ANrmpzc= \ No newline at end of file diff --git a/docs/cassettes/tool-calling_19.msgpack.zlib b/docs/cassettes/tool-calling_19.msgpack.zlib deleted file mode 100644 index d74c6182d..000000000 --- a/docs/cassettes/tool-calling_19.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -eNqFVGtsFFUUbkOMjxCakJjor46jWJTO7s7utt1tjFiXtiDWLt2NpUrT3r1zd2e6s3OHuXf6oGywpT8K1MgQEqOxibHbXV0LtBEsUSQBYlMTMT4atZjU1y9N0KRiooSCd6a7LaQk7p+9c8/j+84537mDuW5kEAVrpROKRpEBIGUfxBrMGWiviQgdyqYQlbGUCTdHomOmocxvkinVSa3bDXTFBTQqG1hXoAvilLtbdKcQISCBSCaGpb4rpQv9fAr0dlCcRBrhaznR4/VXcnzRi9283M8bWEXsxJsEGTyzQsyoaNS+6pEBrSAclRHXgwD7MzhF40h8K59ut/NgCam2H1SBKSHBJ8hASZqCl8F4fJ4aOxtFKZ0VRk3DBvG4PPYdxmoBXAMpBzyBaEcBwo6SEIGGotvdsK0hoKocxRzzcshA0zAYxSIplx2iaLpJOwiUUQqwmH5eZ51BBlWcOvt5FUNQyNfP0z7dgSXUULQEn06zBHbLFQNJNrFVb7vOojeOdSFIHe87mUNWEJtWB1QcuLUFNDLigFMVQjkc5wru3Kr7/5BP341EezonIyAxAb2WkTGh1tQaSZwCECKdCkiDWGKFWicS+xS9kpNQXAUU5dmoNeRozsonEdIFoCrdKLscZU0CXVeV5T64uwjWJgrSEGwua815W0ECE5ZGrem6Ig93uI8pWGOj9/ld3slegVCgaKx+IqiAUcrqjv3j2w06gEmWRyhsh5VdDj55uw8m1ngTgM2RO1ICA8rWODBS1f4Pbr83TI0qKWTlQuG1cAXjKpzPJYqu4NQdiUmfBq3xOFAJmlpp8kpInmneJ3iqBY94stglFWkJKltj/prAuwYiOttsdDDLUlKTDGbYRNDns7nCLr7TvLM4zZHMNjYb65OobFZy3mougnTO3ihO9NX6vbUeD9fYFJ0IFUCidx3FVNQAGomzcdQXR5+DsqklkZQP3XXo+cKLIyiSdY6dOzyiHzY8v7NqV0BPRPyN++rrYCxKe1480ytAFZuSQNlzhQSn2F5qzXNxXyAYF8UqwHY/UFWNPEiKVyPRz07QVxOIj3UrwMqLLpFLYJxQ0alQgxACTPJCxGmJldvW9kJd047QxG6hBccwJUIUJKyMhjWUjSCDtdrKO9BMvAbKsvCWujbrdAAGfQDGAgCJyO+NSUJ9a8tksT0r5Wds5TvP4kB2ees/La0sP3JfifNbFw3vTF7yrL+5peH19j3byzMnsHD62mTjtEbpyE9B/v69V13H5p+bPVD+RfW3o0NPp8t2CNHg5kCLtenS5ZvxXU+5Fn8+/PXiv5O/Lv2wBDZs/Gf/xdln+XZuu3zu1Vcezw+fgUf1a8GXwp0TG4IbZg62tJoPjRz76rGHKyJHO89Buv738SVTujFy5fzms+//3fbAkf31F4/LXRc2HS6b2xN79MmK7iuHzLHR92Z77xm94VtciA/8oi3VTZW1eff8eLLL+Kup7/vrny1eBx+m33QnuAu/wbkHZ+ebnzn+UaQzLOzG/taFgcEDb3xpnto4vPREMhxpPjv8x71Df5aO1oVdu7c8cm1r5Op0/8z5hsa3Z76JDpbtPzSufJcuLSm5dWtdyeW39s4dY+f/AMGeoWY= \ No newline at end of file diff --git a/docs/cassettes/tool-calling_23.msgpack.zlib b/docs/cassettes/tool-calling_23.msgpack.zlib deleted file mode 100644 index 146c6a43d..000000000 --- a/docs/cassettes/tool-calling_23.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/cassettes/tool-calling_25.msgpack.zlib b/docs/cassettes/tool-calling_25.msgpack.zlib deleted file mode 100644 index 773d10656..000000000 --- a/docs/cassettes/tool-calling_25.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/cassettes/tool-calling_26.msgpack.zlib b/docs/cassettes/tool-calling_26.msgpack.zlib deleted file mode 100644 index 7bb8a34b7..000000000 --- a/docs/cassettes/tool-calling_26.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/cassettes/update-state-from-tools_9d71af94-572a-4961-88a7-665e792cf96a.msgpack.zlib b/docs/cassettes/update-state-from-tools_9d71af94-572a-4961-88a7-665e792cf96a.msgpack.zlib deleted file mode 100644 index b4e5cd250..000000000 --- a/docs/cassettes/update-state-from-tools_9d71af94-572a-4961-88a7-665e792cf96a.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/cassettes/update-state-from-tools_de34a58b-1765-4b63-a232-d46790aff884.msgpack.zlib b/docs/cassettes/update-state-from-tools_de34a58b-1765-4b63-a232-d46790aff884.msgpack.zlib deleted file mode 100644 index 0b5e7422f..000000000 --- a/docs/cassettes/update-state-from-tools_de34a58b-1765-4b63-a232-d46790aff884.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/docs/adopters.md b/docs/docs/adopters.md index c8dd97286..91142d44f 100644 --- a/docs/docs/adopters.md +++ b/docs/docs/adopters.md @@ -1,4 +1,4 @@ -# 🦜🕸️ Companies using LangGraph +# 🦜🕸️ Case studies This list of companies using LangGraph and their success stories is compiled from public sources. If your company uses LangGraph, we'd love for you to share your story and add it to the list. You’re also welcome to contribute updates based on publicly available information from other companies, such as blog posts or press releases. diff --git a/docs/docs/agents/agents.md b/docs/docs/agents/agents.md index 2cbd089f8..03ba00dde 100644 --- a/docs/docs/agents/agents.md +++ b/docs/docs/agents/agents.md @@ -7,22 +7,31 @@ hide: - tags --- -# Agents +# LangGraph quickstart -## What is an agent? +This guide shows you how to set up and use LangGraph's **prebuilt**, **reusable** components, which are designed to help you construct agentic systems quickly and reliably. -An *agent* consists of three components: a **large language model (LLM)**, a set of **tools** it can use, and a **prompt** that provides instructions. +## Prerequisites -The LLM operates in a loop. In each iteration, it selects a tool to invoke, provides input, receives the result (an observation), and uses that observation to inform the next action. The loop continues until a stopping condition is met — typically when the agent has gathered enough information to respond to the user. +Before you start this tutorial, ensure you have the following: -
-![image](./assets/agent.png){: style="max-height:400px"} -
Agent loop: the LLM selects tools and uses their outputs to fulfill a user request.
-
+- An [Anthropic](https://console.anthropic.com/settings/admin-keys) API key -## Basic configuration +## 1. Install dependencies -Use [`create_react_agent`][langgraph.prebuilt.chat_agent_executor.create_react_agent] to instantiate an agent: +If you haven't already, install LangGraph and LangChain: + +``` +pip install -U langgraph "langchain[anthropic]" +``` + +!!! info + + LangChain is installed so the agent can call the [model](https://python.langchain.com/docs/integrations/chat/). + +## 2. Create an agent + +To create an agent, use [`create_react_agent`](langgraph.prebuilt.chat_agent_executor.create_react_agent): ```python from langgraph.prebuilt import create_react_agent @@ -48,10 +57,9 @@ agent.invoke( 3. Provide a list of tools for the model to use. 4. Provide a system prompt (instructions) to the language model used by the agent. -## LLM configuration +## 3. Configure an LLM -Use [init_chat_model](https://python.langchain.com/api_reference/langchain/chat_models/langchain.chat_models.base.init_chat_model.html) to configure an LLM with specific parameters, -such as temperature: +To configure an LLM with specific parameters, such as temperature, use [init_chat_model](https://python.langchain.com/api_reference/langchain/chat_models/langchain.chat_models.base.init_chat_model.html): ```python from langchain.chat_models import init_chat_model @@ -71,77 +79,77 @@ agent = create_react_agent( ) ``` -See the [models](./models.md) page for more information on how to configure LLMs. +For more information on how to configure LLMs, see [Models](./models.md). -## Custom Prompts +## 4. Add a custom prompt -Prompts instruct the LLM how to behave. They can be: +Prompts instruct the LLM how to behave. Add one of the following types of prompts: -* **Static**: A string is interpreted as a **system message** -* **Dynamic**: a list of messages generated at **runtime** based on input or configuration +* **Static**: A string is interpreted as a **system message**. +* **Dynamic**: A list of messages generated at **runtime**, based on input or configuration. -### Static prompts +=== "Static prompt" -Define a fixed prompt string or list of messages. + Define a fixed prompt string or list of messages: -```python -from langgraph.prebuilt import create_react_agent + ```python + from langgraph.prebuilt import create_react_agent + + agent = create_react_agent( + model="anthropic:claude-3-7-sonnet-latest", + tools=[get_weather], + # A static prompt that never changes + # highlight-next-line + prompt="Never answer questions about the weather." + ) + + agent.invoke( + {"messages": [{"role": "user", "content": "what is the weather in sf"}]} + ) + ``` + +=== "Dynamic prompt" + + Define a function that returns a message list based on the agent's state and configuration: + + ```python + from langchain_core.messages import AnyMessage + from langchain_core.runnables import RunnableConfig + from langgraph.prebuilt.chat_agent_executor import AgentState + from langgraph.prebuilt import create_react_agent -agent = create_react_agent( - model="anthropic:claude-3-7-sonnet-latest", - tools=[get_weather], - # A static prompt that never changes # highlight-next-line - prompt="Never answer questions about the weather." -) + def prompt(state: AgentState, config: RunnableConfig) -> list[AnyMessage]: # (1)! + user_name = config["configurable"].get("user_name") + system_msg = f"You are a helpful assistant. Address the user as {user_name}." + return [{"role": "system", "content": system_msg}] + state["messages"] -agent.invoke( - {"messages": [{"role": "user", "content": "what is the weather in sf"}]} -) -``` + agent = create_react_agent( + model="anthropic:claude-3-7-sonnet-latest", + tools=[get_weather], + # highlight-next-line + prompt=prompt + ) -### Dynamic prompts + agent.invoke( + {"messages": [{"role": "user", "content": "what is the weather in sf"}]}, + # highlight-next-line + config={"configurable": {"user_name": "John Smith"}} + ) + ``` -Define a function that returns a message list based on the agent's state and configuration: + 1. Dynamic prompts allow including non-message [context](./context.md) when constructing an input to the LLM, such as: -```python -from langchain_core.messages import AnyMessage -from langchain_core.runnables import RunnableConfig -from langgraph.prebuilt.chat_agent_executor import AgentState -from langgraph.prebuilt import create_react_agent + - Information passed at runtime, like a `user_id` or API credentials (using `config`). + - Internal agent state updated during a multi-step reasoning process (using `state`). -# highlight-next-line -def prompt(state: AgentState, config: RunnableConfig) -> list[AnyMessage]: # (1)! - user_name = config["configurable"].get("user_name") - system_msg = f"You are a helpful assistant. Address the user as {user_name}." - return [{"role": "system", "content": system_msg}] + state["messages"] + Dynamic prompts can be defined as functions that take `state` and `config` and return a list of messages to send to the LLM. -agent = create_react_agent( - model="anthropic:claude-3-7-sonnet-latest", - tools=[get_weather], - # highlight-next-line - prompt=prompt -) +For more information, see [Context](./context.md). -agent.invoke( - {"messages": [{"role": "user", "content": "what is the weather in sf"}]}, - # highlight-next-line - config={"configurable": {"user_name": "John Smith"}} -) -``` +## 5. Add memory -1. Dynamic prompts allow including non-message [context](./context.md) when constructing an input to the LLM, such as: - - - Information passed at runtime, like a `user_id` or API credentials (using `config`). - - Internal agent state updated during a multi-step reasoning process (using `state`). - - Dynamic prompts can be defined as functions that take `state` and `config` and return a list of messages to send to the LLM. - -See the [context](./context.md) page for more information. - -## Memory - -To allow multi-turn conversations with an agent, you need to enable [persistence](../concepts/persistence.md) by providing a `checkpointer` when creating an agent. At runtime you need to provide a config containing `thread_id` — a unique identifier for the conversation (session): +To allow multi-turn conversations with an agent, you need to enable [persistence](../concepts/persistence.md) by providing a `checkpointer` when creating an agent. At runtime, you need to provide a config containing `thread_id` — a unique identifier for the conversation (session): ```python from langgraph.prebuilt import create_react_agent @@ -179,10 +187,9 @@ When you enable the checkpointer, it stores agent state at every step in the pro Note that in the above example, when the agent is invoked the second time with the same `thread_id`, the original message history from the first conversation is automatically included, together with the new user input. -Please see the [memory guide](./memory.md) for more details on how to work with memory. +For more information, see [Memory](./memory.md). - -## Structured output +## 6. Configure structured output To produce structured responses conforming to a schema, use the `response_format` parameter. The schema can be defined with a `Pydantic` model or `TypedDict`. The result will be accessible via the `structured_response` field. @@ -216,3 +223,8 @@ response["structured_response"] Structured output requires an additional call to the LLM to format the response according to the schema. +## Next steps + +- [Deploy your agent locally](../tutorials/langgraph-platform/local-server.md) +- [Learn more about prebuilt agents](../agents/overview.md) +- [LangGraph Platform quickstart](../cloud/quick_start.md) diff --git a/docs/docs/agents/overview.md b/docs/docs/agents/overview.md index 5f85bcd55..22f39ccb9 100644 --- a/docs/docs/agents/overview.md +++ b/docs/docs/agents/overview.md @@ -12,6 +12,17 @@ hide: **LangGraph** provides both low-level primitives and high-level prebuilt components for building agent-based applications. This section focuses on the **prebuilt**, **reusable** components designed to help you construct agentic systems quickly and reliably—without the need to implement orchestration, memory, or human feedback handling from scratch. +## What is an agent? + +An *agent* consists of three components: a **large language model (LLM)**, a set of **tools** it can use, and a **prompt** that provides instructions. + +The LLM operates in a loop. In each iteration, it selects a tool to invoke, provides input, receives the result (an observation), and uses that observation to inform the next action. The loop continues until a stopping condition is met — typically when the agent has gathered enough information to respond to the user. + +
+![image](./assets/agent.png){: style="max-height:400px"} +
Agent loop: the LLM selects tools and uses their outputs to fulfill a user request.
+
+ ## Key features LangGraph includes several capabilities essential for building robust, production-ready agentic systems: diff --git a/docs/docs/agents/prebuilt.md b/docs/docs/agents/prebuilt.md index be05edd04..8ebd5c17b 100644 --- a/docs/docs/agents/prebuilt.md +++ b/docs/docs/agents/prebuilt.md @@ -1,14 +1,44 @@ ---- -tags: - - agent -hide: - - tags ---- - +[//]: # (This file is automatically generated using a script in docs/_scripts. Do not edit this file directly!) # Community Agents +If you’re looking for other prebuilt libraries, explore the community-built options +below. These libraries can extend LangGraph's functionality in various ways. + +## 📚 Available Libraries + +[//]: # (This file is automatically generated using a script in docs/_scripts. Do not edit this file directly!) +| Name | GitHub URL | Description | Weekly Downloads | Stars | +| --- | --- | --- | --- | --- | +| **trustcall** | [hinthornw/trustcall](https://github.com/hinthornw/trustcall) | Tenacious tool calling built on LangGraph. | -12345 | ![GitHub stars](https://img.shields.io/github/stars/hinthornw/trustcall?style=social) +| **breeze-agent** | [andrestorres123/breeze-agent](https://github.com/andrestorres123/breeze-agent) | A streamlined research system built inspired on STORM and built on LangGraph. | -12345 | ![GitHub stars](https://img.shields.io/github/stars/andrestorres123/breeze-agent?style=social) +| **langgraph-supervisor** | [langchain-ai/langgraph-supervisor-py](https://github.com/langchain-ai/langgraph-supervisor-py) | Build supervisor multi-agent systems with LangGraph. | -12345 | ![GitHub stars](https://img.shields.io/github/stars/langchain-ai/langgraph-supervisor-py?style=social) +| **langmem** | [langchain-ai/langmem](https://github.com/langchain-ai/langmem) | Build agents that learn and adapt from interactions over time. | -12345 | ![GitHub stars](https://img.shields.io/github/stars/langchain-ai/langmem?style=social) +| **langchain-mcp-adapters** | [langchain-ai/langchain-mcp-adapters](https://github.com/langchain-ai/langchain-mcp-adapters) | Make Anthropic Model Context Protocol (MCP) tools compatible with LangGraph agents. | -12345 | ![GitHub stars](https://img.shields.io/github/stars/langchain-ai/langchain-mcp-adapters?style=social) +| **open-deep-research** | [langchain-ai/open_deep_research](https://github.com/langchain-ai/open_deep_research) | Open source assistant for iterative web research and report writing. | -12345 | ![GitHub stars](https://img.shields.io/github/stars/langchain-ai/open_deep_research?style=social) +| **langgraph-swarm** | [langchain-ai/langgraph-swarm-py](https://github.com/langchain-ai/langgraph-swarm-py) | Build swarm-style multi-agent systems using LangGraph. | -12345 | ![GitHub stars](https://img.shields.io/github/stars/langchain-ai/langgraph-swarm-py?style=social) +| **delve-taxonomy-generator** | [andrestorres123/delve](https://github.com/andrestorres123/delve) | A taxonomy generator for unstructured data | -12345 | ![GitHub stars](https://img.shields.io/github/stars/andrestorres123/delve?style=social) +| **nodeology** | [xyin-anl/Nodeology](https://github.com/xyin-anl/Nodeology) | Enable researcher to build scientific workflows easily with simplified interface. | -12345 | ![GitHub stars](https://img.shields.io/github/stars/xyin-anl/Nodeology?style=social) +| **langgraph-bigtool** | [langchain-ai/langgraph-bigtool](https://github.com/langchain-ai/langgraph-bigtool) | Build LangGraph agents with large numbers of tools. | -12345 | ![GitHub stars](https://img.shields.io/github/stars/langchain-ai/langgraph-bigtool?style=social) +| **ai-data-science-team** | [business-science/ai-data-science-team](https://github.com/business-science/ai-data-science-team) | An AI-powered data science team of agents to help you perform common data science tasks 10X faster. | -12345 | ![GitHub stars](https://img.shields.io/github/stars/business-science/ai-data-science-team?style=social) +| **langgraph-reflection** | [langchain-ai/langgraph-reflection](https://github.com/langchain-ai/langgraph-reflection) | LangGraph agent that runs a reflection step. | -12345 | ![GitHub stars](https://img.shields.io/github/stars/langchain-ai/langgraph-reflection?style=social) +| **langgraph-codeact** | [langchain-ai/langgraph-codeact](https://github.com/langchain-ai/langgraph-codeact) | LangGraph implementation of CodeAct agent that generates and executes code instead of tool calling. | -12345 | ![GitHub stars](https://img.shields.io/github/stars/langchain-ai/langgraph-codeact?style=social) + +## ✨ Contributing Your Library + +Have you built an awesome open-source library using LangGraph? We'd love to feature +your project on the official LangGraph documentation pages! 🏆 + To share your project, simply open a Pull Request adding an entry for your package in our [packages.yml](https://github.com/langchain-ai/langgraph/blob/main/docs/_scripts/third_party_page/packages.yml) file. -[//]: # (This file is stub. Do not edit this file directly!) -[//]: # (1. Update the `packages.yml` file in the `docs/_scripts/third_party_page` directory.) -[//]: # (2. From the /docs directory, run `make build-prebuilt` to generate an updated version of this file for testing locally.) +**Guidelines** + +- Your repo must be distributed as an installable package (e.g., PyPI for Python, npm + for JavaScript/TypeScript, etc.) 📦 +- The repo should either use the Graph API (exposing a `StateGraph` instance) or + the Functional API (exposing an `entrypoint`). +- The package must include documentation (e.g., a `README.md` or docs site) + explaining how to use it. + +We'll review your contribution and merge it in! + +Thanks for contributing! 🚀 diff --git a/docs/docs/agents/run_agents.md b/docs/docs/agents/run_agents.md index 874be6249..0d32708de 100644 --- a/docs/docs/agents/run_agents.md +++ b/docs/docs/agents/run_agents.md @@ -72,7 +72,7 @@ more about [LangChain messages](https://python.langchain.com/docs/concepts/messa Agent output is a dictionary containing: - `messages`: A list of all messages exchanged during execution (user input, assistant replies, tool invocations). -- Optionally, `structured_response` if [structured output](./agents.md#structured-output) is configured. +- Optionally, `structured_response` if [structured output](./agents.md#6-configure-structured-output) is configured. - If using a custom `state_schema`, additional keys corresponding to your defined fields may also be present in the output. These can hold updated state values from tool execution or prompt logic. See the [context guide](./context.md) for more details on working with custom state schemas and accessing context. diff --git a/docs/docs/agents/tools.md b/docs/docs/agents/tools.md index 71279f5cb..8ca986e05 100644 --- a/docs/docs/agents/tools.md +++ b/docs/docs/agents/tools.md @@ -65,7 +65,7 @@ class MultiplyInputSchema(BaseModel): # highlight-next-line @tool("multiply_tool", args_schema=MultiplyInputSchema) def multiply(a: int, b: int) -> int: - return a * b + return a * b ``` For additional customization, refer to the [custom tools guide](https://python.langchain.com/docs/how_to/custom_tools/). diff --git a/docs/docs/cloud/concepts/cron_jobs.md b/docs/docs/cloud/concepts/cron_jobs.md new file mode 100644 index 000000000..9431ed8b2 --- /dev/null +++ b/docs/docs/cloud/concepts/cron_jobs.md @@ -0,0 +1,15 @@ +## Cron jobs + +There are many situations in which it is useful to run an assistant on a schedule. + +For example, say that you're building an assistant that runs daily and sends an email summary +of the day's news. You could use a cron job to run the assistant every day at 8:00 PM. + +LangGraph Cloud supports cron jobs, which run on a user-defined schedule. The user specifies a schedule, an assistant, and some input. After that, on the specified schedule, the server will: + +- Create a new thread with the specified assistant +- Send the specified input to that thread + +Note that this sends the same input to the thread every time. See the [how-to guide](../../cloud/how-tos/cron_jobs.md) for creating cron jobs. + +The LangGraph Cloud API provides several endpoints for creating and managing cron jobs. See the [API reference](../../cloud/reference/api/api_ref.html#tag/runscreate/POST/threads/{thread_id}/runs/crons) for more details. \ No newline at end of file diff --git a/docs/docs/cloud/concepts/runs.md b/docs/docs/cloud/concepts/runs.md new file mode 100644 index 000000000..b1764f7f4 --- /dev/null +++ b/docs/docs/cloud/concepts/runs.md @@ -0,0 +1,5 @@ +# Runs + +A run is an invocation of an [assistant](../../concepts/assistants.md). Each run may have its own input, configuration, and metadata, which may affect execution and output of the underlying graph. A run can optionally be executed on a [thread](./threads.md). + +The LangGraph Cloud API provides several endpoints for creating and managing runs. See the [API reference](../../cloud/reference/api/api_ref.html#tag/thread-runs/) for more details. \ No newline at end of file diff --git a/docs/docs/cloud/concepts/streaming.md b/docs/docs/cloud/concepts/streaming.md new file mode 100644 index 000000000..8654bda58 --- /dev/null +++ b/docs/docs/cloud/concepts/streaming.md @@ -0,0 +1,138 @@ +# Streaming + +Streaming is critical for making LLM applications feel responsive to end users. +When creating a streaming run, the **streaming mode** determines what kinds of data are streamed back to the API client. + +## Supported streaming modes + +LangGraph Platform supports the following streaming modes: + +| Mode | Description | LangGraph Library Method | +|----------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------| +| **`values`** | Stream the full graph state after each [super-step](https://langchain-ai.github.io/langgraph/concepts/low_level/#graphs). [Guide](../how-tos/streaming.md#stream-graph-state) | `.stream()` / `.astream()` with `stream_mode="values"` | +| **`updates`** | Stream only the updates to the graph state after each node. [Guide](../how-tos/streaming.md#stream-graph-state) | `.stream()` / `.astream()` with `stream_mode="updates"` | +| **`messages-tuple`** | Stream LLM tokens for any messages generated inside the graph (useful for chat apps). [Guide](../how-tos/streaming.md#messages) | `.stream()` / `.astream()` with `stream_mode="messages"` | +| **`debug`** | Stream debug information throughout graph execution. [Guide](../how-tos/streaming.md#debug) | `.stream()` / `.astream()` with `stream_mode="debug"` | +| **`custom`** | Stream custom data. [Guide](../../how-tos/streaming.md#stream-custom-data) | `.stream()` / `.astream()` with `stream_mode="custom"` | +| **`events`** | Stream all events (including the state of the graph); mainly useful when migrating large LCEL apps. [Guide](../how-tos/streaming.md#stream-events) | `.astream_events()` | + +✅ You can also **combine multiple modes** at the same time. See the [how-to guide](../how-tos/streaming.md#stream-multiple-modes) for configuration details. + +## Stateless runs + +If you don't want to **persist the outputs** of a streaming run in the [checkpointer](../../concepts/persistence.md) DB, you can create a stateless run without creating a thread: + +=== "Python" + + ```python + from langgraph_sdk import get_client + client = get_client(url=, api_key=) + + async for chunk in client.runs.stream( + # highlight-next-line + None, # (1)! + assistant_id, + input=inputs, + stream_mode="updates" + ): + print(chunk.data) + ``` + + 1. We are passing `None` instead of a `thread_id` UUID. + +=== "JavaScript" + + ```js + import { Client } from "@langchain/langgraph-sdk"; + const client = new Client({ apiUrl: , apiKey: }); + + // create a streaming run + // highlight-next-line + const streamResponse = client.runs.stream( + // highlight-next-line + null, // (1)! + assistantID, + { + input, + streamMode: "updates" + } + ); + for await (const chunk of streamResponse) { + console.log(chunk.data); + } + ``` + + 1. We are passing `None` instead of a `thread_id` UUID. + +=== "cURL" + + ```bash + curl --request POST \ + --url /runs/stream \ + --header 'Content-Type: application/json' \ + --header 'x-api-key: ' + --data "{ + \"assistant_id\": \"agent\", + \"input\": , + \"stream_mode\": \"updates\" + }" + ``` + +## Join and stream + +LangGraph Platform allows you to join an active [background run](../how-tos/background_run.md) and stream outputs from it. To do so, you can use [LangGraph SDK's](https://langchain-ai.github.io/langgraph/cloud/reference/sdk/python_sdk_ref/) `client.runs.join_stream` method: + +=== "Python" + + ```python + from langgraph_sdk import get_client + client = get_client(url=, api_key=) + + # highlight-next-line + async for chunk in client.runs.join_stream( + thread_id, + # highlight-next-line + run_id, # (1)! + ): + print(chunk) + ``` + + 1. This is the `run_id` of an existing run you want to join. + + +=== "JavaScript" + + ```js + import { Client } from "@langchain/langgraph-sdk"; + const client = new Client({ apiUrl: , apiKey: }); + + // highlight-next-line + const streamResponse = client.runs.joinStream( + threadID, + // highlight-next-line + runId // (1)! + ); + for await (const chunk of streamResponse) { + console.log(chunk); + } + ``` + + 1. This is the `run_id` of an existing run you want to join. + +=== "cURL" + + ```bash + curl --request GET \ + --url /threads//runs//stream \ + --header 'Content-Type: application/json' \ + --header 'x-api-key: ' + ``` + +!!! warning "Outputs not buffered" + + When you use `.join_stream`, output is not buffered, so any output produced before joining will not be received. + +## API Reference + +For API usage and implementation, refer to the [API reference](../reference/api/api_ref.html#tag/thread-runs/POST/threads/{thread_id}/runs/stream). + diff --git a/docs/docs/cloud/concepts/threads.md b/docs/docs/cloud/concepts/threads.md new file mode 100644 index 000000000..0d4fc5965 --- /dev/null +++ b/docs/docs/cloud/concepts/threads.md @@ -0,0 +1,11 @@ +# Threads + +A thread contains the accumulated state of a sequence of [runs](./runs.md). If a run is executed on a thread, then the [state](../../concepts/low_level.md#state) of the underlying graph of the assistant will be persisted to the thread. + +A thread's current and historical state can be retrieved. To persist state, a thread must be created prior to executing a run. + +The state of a thread at a particular point in time is called a [checkpoint](../../concepts/persistence.md#checkpoints). Checkpoints can be used to restore the state of a thread at a later time. + +For more on threads and checkpoints, see this section of the [LangGraph conceptual guide](../../concepts/persistence.md). + +The LangGraph Cloud API provides several endpoints for creating and managing threads and thread state. See the [API reference](../../cloud/reference/api/api_ref.html#tag/threads) for more details. \ No newline at end of file diff --git a/docs/docs/cloud/concepts/webhooks.md b/docs/docs/cloud/concepts/webhooks.md new file mode 100644 index 000000000..206b97006 --- /dev/null +++ b/docs/docs/cloud/concepts/webhooks.md @@ -0,0 +1,7 @@ +# Webhooks + +Webhooks enable event-driven communication from your LangGraph Cloud application to external services. For example, you may want to issue an update to a separate service once an API call to LangGraph Cloud has finished running. + +Many LangGraph Cloud endpoints accept a `webhook` parameter. If this parameter is specified by a an endpoint that can accept POST requests, LangGraph Cloud will send a request at the completion of a run. + +See the corresponding [how-to guide](../../cloud/how-tos/webhooks.md) for more detail. \ No newline at end of file diff --git a/docs/docs/cloud/deployment/cloud.md b/docs/docs/cloud/deployment/cloud.md index e5cd9ce0b..aba1122d8 100644 --- a/docs/docs/cloud/deployment/cloud.md +++ b/docs/docs/cloud/deployment/cloud.md @@ -1,11 +1,11 @@ -# How to Deploy to Cloud SaaS (Beta) +# How to Deploy to Cloud SaaS Before deploying, review the [conceptual guide for the Cloud SaaS](../../concepts/langgraph_cloud.md) deployment option. ## Prerequisites 1. LangGraph Cloud applications are deployed from GitHub repositories. Configure and upload a LangGraph Cloud application to a GitHub repository in order to deploy it to LangGraph Cloud. -1. [Verify that the LangGraph API runs locally](test_locally.md). If the API does not run successfully (i.e. `langgraph dev`), deploying to LangGraph Cloud will fail as well. +1. [Verify that the LangGraph API runs locally](../../tutorials/langgraph-platform/local-server.md). If the API does not run successfully (i.e. `langgraph dev`), deploying to LangGraph Cloud will fail as well. ## Create New Deployment diff --git a/docs/docs/cloud/deployment/img/01_login.png b/docs/docs/cloud/deployment/img/01_login.png deleted file mode 100644 index e0487b9357e4dc851923c168bd8ebc8f926bef7e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 753662 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 z zH-$Q_CWB6f{Xtc676P;CMQS=?f`G(`GZV283D6|&Hkw7O&a0|aOJEi57bn>VNOY*-FX2ffHll(?}=3z;Xn zjS=)}hHSRg3c_c@!Rer1F-Z`&nz0&v-kppRsxc>W3GA*Jd~s$bF!hVUX}>pcb*bqz zo>(;(8M%9%xR?dUY_m1noGPmFpm#omnXqY1?)pTfZq&#{2ok4uo_E_*M6`Q&IE;}( z=85TJVJ7k#4cWxZrVhASlfziOm~}E z^JH-T?(|^52I0|UT%tL~Em+zt2m#d18w)eD4GBl*r-#E{36yCqOeA4GB6sYb!B<3-R%{_ zt&_u3D?Lb2lnIE24?K1R#_IUYj!xECn_HZlo;f@{d9}M!lDSY-mO!d&c^p+6#yJgp zDtlV0@C5Z6%U4(C7JBEsorC?ea?mr?(U@tJV;Q-V8~Ma6fDcr6#`_zRRv(-a>8SOcvKD{?zE<_EiB)< zx}G_`+1h-)w{xPyC~yKCGOB(jEHR$m?uib3rjm>xO zp1z`U9K-g7-d2oBF2qZeW z{a=1kfQpP1cE~}|+X#17);_&`f4b3n`TdLUUOqqQpD9zN8rh|pQ7)Bh86yBOuYX2t zNOH)u1CCV#x%0}*{Lk-wbbsyU$-&_tzWC$wt+$1^GWu2J!r4@dGbuDyRS6(CWk$)8 zMkCH;A`&GFG&s!UQ}@zu? zu5o?X-8~vb?}Wy^^_xHcLa%SVTYzkBla)4jJnij;?{EX!WMNg@sYX+4FEH9wO};U?moDA@3VU!b@S%iw{L&*?U&!}Z^lk8t*n23ni=Izfms4mo;guj z{h6R~;eJLf=hfMTpFR5c(cOndRsQL_Z~plGL`Y=3a6Qby>YGmr{6~n;pT*qYRI!82@RHCLRF=osL zD$PBqG6e>MnK&_6{8Do0uV)$qF%9A400joBryTth{S49nFEBI%q?&f zI=0Hp8(>)JL@;q@B{C%Gi&aV8kwQYHQ!F8qfyN>lQK)k!=W&Tr$<>XB;o{D47PBeB zln}d}Rn>qf5)qLQ+*RxLJ(wj0vVja_Fs3+7G)>ZDKZA-v+z3&j28Y8O1_n7(1jVFJ z&J9iIwD6R3QRxw^6lO{oiQ*_?GGJs%Fm^B*le!9Fnm8lrx%7?PAVwj^hKOr5_EEkl zuCkH{VOn)2&kEO`YN^+8>gxvGDaXGus7H{Sx~a0svMM_d#*7`pp;j! zQ@t~~F;v}MSe&HNnUJ@$288zq{eqYzs7G>Tm^eJKE*O_R4OAzi(=6RA@5N%Lf3AkW z0jbcKYWdCpl1QEbb0s%%2zWYc&1MaD+bzy|FT^mS~`#zeU~vVg@Fw^8<>+k>H2+(N^n2{Fi% zg?+@tkLXEekZBdf7iT*S;=}W^lcK6voLC(0YA^=G9nMaaq^Inuc4xsb<-E}DkjUQf zydNu8Cuf5wQB3(X8Q@S8N9Giqg#rMF&t&=4c1PK_%F|;joyemz5Q&Uf!Io;@32m5b zsVRtvS|`YCyFr28^-lMTQYi~20lgWO$5I|93>vLrykNSu-e zE;FB(#!6?_vuvw(b}%d|VM|+yyTg@DS)G*JGlCGYlcjSA(M4^!HFb5mV-~jtCwn^V zlPQS2CbK0u1&F~y0z)*AWXzIP-ip4`Y%k4p&&uA$$=J0L0GmA5g_QCo2=J`oq5QSmJFu;{9)+$*N z41%)N4TAuuFrm%@YP^mF%lqvD5?-gvY}VR5cB11>ek#+Xy&hucVC_#4hW*m z268miGowUgM1~PaIO$&ikhvJO3ZJ)db75t6X7=#>?B(vx@v!g^q9YQKWC}!ACxSUg zWiua*C`rC^VHD+ZK6P*5>U5TGp6q{j^6reI0WfDk-Rlf;WELk>oQ@!Y908mgP{g@> z>ekiunNH`hclL63>r{sx#GTwdVaZX(k8+eQixGojj2>7rp~@D}yg$1<)17&9e)#z9 z%hN$G%QA9!RE)A@BaTvYYHZGGEzZP9$*Vx>##OvKv-EIrJ!5&XyZ!3?U?4u!7~PWU zUW}lC!3oT4Oc555^gL{EVPf+}TN+@0C+J=VVSEae)n#P|*eD zB*anG)W|U9VXe`5boIvcY)t>0|6nlJXY9`C(9p_t^pUQ>-pDU+DuTAR%yE(S!-l!f4KnbFnR`D@Epr}F0J z&i0G9uX|9<#N8WUu1uViJf@$KP?J({Vj|&+pzaKkesx8rZZEH`ty~=x#nU&hHc$5Z ztfgEcEfX7VBaEFI6eCGdON~PiVlT=$H0~|0-@SR;nKrh!UcK8o*V6N>QXLU|{$7Iy zRw80{VrMpHCkh-WDtgt@)a=LWw^zGYcJ}tZc>Qd5aH@d=vzkVWJ}N4vERej$pdn-$ zofR1efKuubDCC8$wPrtAy}d9yzkPo4r=5+h^P>vN8M~Wnr`X-A3f6FTek4^VPnWQHWfVV+LkpFSLxLku7q)8Kol$DfT8f ztwiF~j5LqNy`}X}ZrRr=t{tA7{`;4I+<3RuuZEN{lUEwutp-n&2-!L}_H-`I;ly>;%>=lq z!kk&iXj)pIUcK|nwMR2~`|-Pt-@g9l`Tpwy6*5-0N+TG=AR;h1nL*uMMzLK927$wtjwL^flP9hYcmT!yZzw7&0B?+U%Yty<(ucb#YvT^v6HKtF}Z}`fr_+F*#Kj= z;AUi;mWmP?@u;ro1Q!Q03sEyVn^!<&!X;GyA3WAb>N97nAOGXg^7M9OFoO#$Yyrz#YJnzC0UDL5GF*PSAfQgkAQ zP$N*2C=wmV7@cw_m@;50ZmDrk;Lwu<+=a|J>Xe9NGPEkH3uVa%lf;Yas)EB@NB}Y? z27>#PaFdB#&#G7mr{h?Ry5bE$48a`mj|xoY001BWNkl(LtPPK@kEzQ6u4nT zKAmNqEIX@)d&N+d1LR^}DB znlI`$Y(VCmLjWQuLpxcR361lrI*Mi_Y-DCE^&nA8bn5-XYb66m(~x1I9j2%{i*aXA zLb-tk6hvt+vbu&(qZ$+pfH!EzD%ig=V|dYP;(7*qp#og-8jJ$%#`F zscc9FkH$_MH8Y!O=F^R=ptwCaJ63gR<|^W@A>ks3tGEgjP_F4hVj`%`a(1mV>!t_i zXD4OlE@I>?B~;lBHDcG10xH%TKP9s+WMQh)4Eb@tcdTUvMAUK+b@LH=XSWpk(k7J3 zGEL)!M(4^@x9`5yKR>V3I8!2nJIvq?S5k*&)>#2*e{!zGLdRlXApIXpeBKx0ttvJ zb`y}>6y)mk?DE{)a5&gH+&zs2LPo?HN%H5k&81QU;B|EZ#;G~CDGBSdiwo`9qhbH$ z+0lWO1-TnCXL9zDLNd2nNq0y*;ydrO`eshcC_!wyIvm(n40B9Cpe^ zg4nv;L6i<5Gcyx1^|tX!K7DO**@QRtcX!XvoZ0FC$SPd98JwA|iorYplupRh91WN# zRB^pCfAh*x(I31#*xuz~83<}QI3qDLXGEl$&j>7$kLK6eJa?XUS)E(Bwz68eJ$t*c zcYYF?C=XtPAaXUC5I>Krb_7;;5{7xp=tg_~R%f9yeSW&Pd3vDmoCB+y*|=zLl-TMd z&a3eZJ5od;N1L*rtle5}bx+REULNl3>Y&Pn)I`TJiBtk|9?8Cp5DCiUOkg&LM4t<- z`^)QV3(I>)htGCi?+?%Gx|uqWfVgrax!^A*8Ae|ZumE-fXr(3Vz4o z%BhjUw$4H;H#HNrP}!Ac`_8qSOA8A}y|bsUU+$h9Nh7#>FmFl5iga=)G73qn0Gy6- zjc8C#dbFs`f!>*4xw*Pd%&+#gpYFarwlW5eFoOq{0CG)Oh2Aq11CkCkrJ{ATW~7_5 z3m@OQ7xHX#@7?#?Zw`mODzGxZRG$bNiQt?NVOEznQk161h)e*Hdc(ri?)*pBZeL$m zDbIS(-oAQy@@^m+G8Xp`6>w!Ya*&C8Fc%*|GJ_B^3qb0m1R~a9xzOx0kiiv&-0M+G0PgoH^Hag8dnqW4tF}nx=SIv!XU%C3p+MO#|d;87icduS< z4$sb-1Ts-0RW?ifk?}?SGlj~ut8$unkw%^iF;~`(d~1IBr*|GL%`NQg?|0wS=Ix)X-?_7T-4xF^HlA<4J=Ss< zFtjM{L5S31Rlrn)S=j4x=tYN>U|=E&k_8S>M`d}$dUxToTMuqtSvfm6di?$K=Lhe4 zO)i7Gs##<>v8OE{rRZ{*ZGqQk`JA9`>h4Ao(Nw;*aP_l04_6nio}Kl+-gxoV%jW|v zAuj9&l|YnBg{YjepcH3FnIe-h5yYL$(v>tdnQfI(pNR`|ryr(Ryt8^NTL5-|IB&fWBY_+@a)7ua4tzR#y z;>)Ms{^7;roxyPx%mbK|knV;+gqJ`>Dufur#y-pwUvp`WIav(M1a>$QL-!XxP6Tp~ z=`fRxwL?GfP$~@81@`)QqmQwFS`cFr8aychO8+Y6LIk+NC*HdF!1xcIP^CNIOptV< z%soyF&C-F%AH&`5!o+ZOkHF|KW{qTcGI$ZWyE7TwU_z<(1@&6&&KL=Ckm?LR(bc*Y zVakXdrs*s#3F=be`!*aIipar+AVG+uqf%98PG=E)tfqTU&5~Tf1l|w<(@?EULc<9c z`9Z6uY$7AhMclp6sH5p0je;h`dlULyM@HP>5SYzuV9_RopgzXUBO%UVE`FOBAX|BWP(|Gl{Jc3oL0j^^&&;OtR9h3Qj$hWYAtZ5 zIhAEuuNa;WhY=2Dsn>Gd$4Sv6F>y)+Rdb?lqt$LSPy4;|swiPKyFJPbkT?t?z$Iza znE`l=x%riLr`w+H7sG>-<8=6leq@18=8NR+Rn^U!3*8wrKR7?_Tct8_%5n60Cj#;4 z^0txeQ!NKwneH_6#@VpH-|wkANoErv%aA0y&P>rXsyZOdnMgxIljQ2$m3F&**gM%j zJE`1A(h2HOI{V&1FJ>Y#m_^IgyZO|@%xu(n-0$^cS&=8)_~EF@DVniRr3yHiOVlgV z-TB$M%KYH;sj( za2Aw_nb^Uq?T}xcxiZyg9rw<6j}Onw!eHtbHzU|(SW8Y$B*G$sN>RkQsrHT4b!R^6 zogMdku`Vq+CZ})02#q{*xRYmDmIPyq-MOoaOXmLWVE=g7L&i?zsy@0_pmw~P*@CM} zmPJ!1G(s+hX$rTm-yq?=!nPaadO(9jTpC5rCqzLWpt+X{YTrTGtm>W~aNy zz4KQGJ14O~Bl9{+yuT#{W+CQLugDRcxQGkw?%K-LW~;S(e6V$}Tfvz*Skg>h_(RJ4 zE(Z-5U~0Kyr89SHWvx5a-aguY^7=&-j~}cdyWG^s$ku2y7!(KPOsjokb$zxqy|=%= zwZGe|N~5|A%ght8+ADuCKPNWM2L%e;~2 zB4V^OJ9qQy>QtlodV6#0V7Ffun)W+}h>UM~n_MzNoJnw^pf*_quVR%>nm%8 zR?pvVY#r@KLAoprmsi|{&1+3c`T>{_)%rz8!`)oBlZ(kk^dQoVsI+n{r;|W_O?Rw=- zj6Bc1tf-8ua|;iz-@dxEymNf;_|41BqkRoju?=H6c^lT)y=CGQlDeClI?OD9P{t|9 zM>p<#a{qy3;qmKN8}GK_L=hVo(dmb*S5+Yk#x&4KL>XmVXruB6H*P<8_@H8XzV&+J z-S)|_SHi{z>_0qWFg}54sX*c`%vqL+Lx)A9qUGt?&mVr=?RIt!cAvd@wSRtE394E* zelbj$uqTf!nZ8aLktkznOV)^Jl)l)Ry?5)*(#rDQ+3`0op1$1K>{+x-A`rvOG2Ot55%GWodc$?D&t*pFDp1>a-kIJnog#<=`{wd<#6XMgza@#D7}hjCE-@DBg}|C5c7)@jF_RloTqo73ay$eoiyBKL)OPNnF&nMlUBBV-aDQGq=!E^@f^ z5L;reodOH9fLYztZG4pfKR7T@yD2jfshPPOF>3ImBZz!P6uV!>`!xV-kmOmWuwhxL*9kI>^gMNHJBk`kWDar<9HttLOhQ!c7lkHU ziW_<5KQ@i(u58|Jv_LeBv50Zfol=w;f4{oBC)FiLV<4VtG@W@+mX$`9kW#x^R5p>` zU5wDd@JzVbXn^@_IIth>+xrihH<+iIO%R4v8BL9Uc+HD@x?PZknP6@i@oaMnpk7f7 zs;EQ}ZZ?ja^!~a?N+c$Rx0{V-v)PZaHyHedU1flV<#emn?o3D1^WmVV^v9M01H>?R zBu}A#ibA(FB_f02uwM+5pd+Hzfdk3^oSa7|J)9YAD&|vJ-pQx3EI&Fu9adF+&8e`C zLeLLC?kx(lQ|)G>*)NLYvOhGFk=Qa7ozhdEud0g`=41?&Sk1LN%|`2dSe_31MU5`F zE@O;Np0I<#&QKtdMT=r+XU&;*n?pG1_0IY|_ZqTForBtVhpXLy$e5fBrd`giw7ZQ) z^Wfz4bT}wrmK?S|QD47rmtSWFSK1<3oSkb=O&tu*-<=)XU#3+NcX7+2FLb&Kow=ea z_fC%cS{V_@MyG;(jED??*MePxiz73e&hmx1xsb`h*~vlgqymDle2~YalCYUoZuO;f zW~l5+b9#Ahu?oC>ba2}16LAI^XZb%cw?rgNYN%q9!hEMYH#gfWhKJ`Tg;w>Q!{dy9 z6sE|*?$IKGlokPqdfRwyc7Aqt_N*FiAMTwEhe%i7ec)Y55T2NhNN^^O+K9f??yf8@ z78Z9-4i5)sb*;?C;*`->kBneK3R5`DS$#I2TDh{2W!e7e$?nlXsgY7nPsEf;i_PAB z#pavi-Z^DKvLF(|2lvMsxsoY41yVSJxYB0n*A`c?8&CZYgtI<0l*ug)*@i{ZxZ_HOUAVwybFS=Y?j zjq2-R(wVxnD+v*mnnhb%Sh{}gTE%$%ZhPfC9v7oksJ{`i<4q)qXMDc>8AW@UV0xA!j#& z(+}s1L?mE^#SD=VhvihHwduKgw{Ev*I@^Z_&);sG_Inbftg83c`+ESxFG^AfEL2*f zup6@r_g1bovi#+{&Bt4>_N%_;;_ecS)nkl>R_Rh`nSc`jz@(~)jHa^66jz$q)g@b{`>{r@ZU%QXE8fz1XH`dk-{_M@GS9{xs zgI>W7=E-Z2$Jc7ri4fPsWfGp%sc&U%mm61>@2%emdH!l=>)Y*(-QHQmr5ioz66tx# zjLj@Fv%XbEMnbtGFZ7cecOTuo-{?%g*na!fi>JFs2h1Y;<7xkh4oF>2LLnk@bsLm< z<=1BxKEM0$*825cF?{^y)rvKR*&{4EzQVAE(3bL5I8%%<7UeXuyNjzozxUC{4<4Qj`oDYr?U!#~ z?8UwYDyx`odHArM+8M_d1_(szF-BuTBa+00}PY=?RmSQ7R@9vAg>@emo$tWRx-rNfVKmdDHxE=c|AI z`n%2Lwd1SPe|_`APy4^8&MK|rI4;=2%-;J4ADb1jy%4n17=n)xIRHDJn#}Jkto*~1 zm)|^oW}W+G@7<3d-h95fatc5_95n_2C1?V>4>41aDFFC_J6eAL5rq_*FB+#0HKGEZ z67eXrEmY5XubNb@FA*XAZJ!WoLB4`M0id*okgZ#4@S;4_w}OLJFnKAtInb8rJnmQ&>sm(KIxd7fmM%l~}4fPm8 zsw4`4NTOB4#7<=D@;lxd!QBlBg@gknKn)#hqciWu*~AktVYo*F*7xAmr5P1Vr_n^9 zsk51L0W=O>sqWq2ivom!VMPF55~fy^0N~VSsdK25FP-_?sxMKCl5(b4BBhhK0gC$5 zvHknvGAKZv6QWilW~4!yrYwl+OL|nQ1X}`0C?Q%%nus`@W)qt+fd^(0bNAC#e}w?a zvl47KnsFRWY(7q>4~Z;2__mDB%{7}zqcOE^IGsB0sU~4nYm6cU#0ZWV5ES#AiM!1X z2#(TpVx1>qLJ?t^AxQO=01))ee9Sl(CCw;t&JV`J96S&@3_1ByFkbJzsxWv2Zs};T zIj41WJ(*mmQ%?{$GL>atd=VBvG?y!%1m-AOZqF0Z&1l%qvs?vO>VdGmpfHG4o(V)m z2`|O*e5+$cu7{&>nv)_x3};B0&QU%`Q~^99Aff^4#?4-Po;+R*Zu)s%@(2K+kP4~l z5&;xO3==Sj7U{*U)y@K-Ivou!rXxpE#;_lp(CRfLVrc1Txz$agMt?lHoD3((^_Xkj zbq^0Dk-`=cXoy;B%q_G!mfdOpYM4*IAR<5jMRYItIw0QVxn%iPZ)rYhT@8lEgR309 zHkup*&q4-Okefk7Bplx&VwmTW#_~eX#EqNL=z2KHm<6fQsH`Un7VJt8r_iGSkr7-p z&F#*THu`kjKj~kkY@sIpQ8$vpICx+S-iHhk>$@1OcDi%T_SJNFGP=3(8LMDf7R&4o zx*O)s3bP1#X@g#F&Mh`Osk3Lp>#OP5D*-}HN|U08Hm4v2;S*qqoh;~NwX@J^wND4v z$D`|k%|ryf002SZuGGm#g~2E6g{9QK+UWFRtxt#7N7v^Qmt)XKz+1LsZRw!W$_jgh zN{}YmJjUPde3i6XSCir4_4zQHh7fZFst0Ev{Hz2Ff)Y}KN<e0{Wca&yIzMy1o~6kuk&)s1y2MQAE*UKG&QuQ%rYwEKK_admKY^V`Swhr{bM zp-f5c90jIs2vJu7sS1Zd$h^;8PDBl*F?B7WXB*q!K6_z|-a9&Y`}y!%a&ANxA>{g2 zYi9O(wWSp>qT*i5@(${+*0)~nK8;X)*xP%3us7h`#gvh-Ar+aNXU6@Eg;*RoWg|h9 z2oQ6>KEL>nFTUMb-uV3a^MAhm<Q^DHH|#R(cc+&27r+AS+Fy__|#&~ zu~&~5*Z=(Lk2@|yAVdNx1k^*CV!8ORRz(1A`>_N70*GixF*7q4 zxZHzPVFFAMyfzj>QVNmKv#)D#SD5faZ|b#3Oo|X$yf5-zi|&Qw&vFE)!Yu(HHaK}q8no+zKPLu|sj3sl-!9|t3!*WYJ z69fUYU>rq6lscQTFGllL9Er=G&Z2#aAts$fItQ3o8xCO#!Mxi<1qd6axWgny)ru3+ z+Ilz1(vW5YSR}JmvsP~?K;Sh(J8A%8>iv{`&=tgjyf!mXL;432A_AgB>=UAP(qK(v zo8`_crG>e4NAFLA0stkfMG{4EY=EdgN!{P+j)G{AmR8LqaV�&Abz;hl`3a4CaDT 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

RGN}*RL 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

-wcZP3 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�Ai}U12B50 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 L*2Bornxi7_F% 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≀DYMcMG^lUfnL_y6kkB`m?knJ`e^Ox% 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 diff --git a/docs/docs/cloud/deployment/img/02_langgraph_platform.png b/docs/docs/cloud/deployment/img/02_langgraph_platform.png deleted file mode 100644 index 6b7a6d1f682706e9eac3c4aa9e1b41da93282c13..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 73749 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�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 diff --git a/docs/docs/cloud/deployment/img/03_deployments_page.png b/docs/docs/cloud/deployment/img/03_deployments_page.png deleted file mode 100644 index cbb1b23f4da1f10cbce9e1dc8fe4fc0edfd795b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 311731 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�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 NqNd*YJoVdu{|B%f{!0J= diff --git a/docs/docs/cloud/deployment/img/04_create_new_deployment.png b/docs/docs/cloud/deployment/img/04_create_new_deployment.png deleted file mode 100644 index 369d54c7ce9beeb8538cea3eb688bdac00d41e51..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 271856 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�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�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 >YWU520)de_pDrmwr6_3 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 B!~FmN diff --git a/docs/docs/cloud/deployment/self_hosted_control_plane.md b/docs/docs/cloud/deployment/self_hosted_control_plane.md index 737ce31c0..23a3530fa 100644 --- a/docs/docs/cloud/deployment/self_hosted_control_plane.md +++ b/docs/docs/cloud/deployment/self_hosted_control_plane.md @@ -1,4 +1,4 @@ -# How to Deploy Self-Hosted Control Plane (Beta) +# How to Deploy Self-Hosted Control Plane Before deploying, review the [conceptual guide for the Self-Hosted Control Plane](../../concepts/langgraph_self_hosted_control_plane.md) deployment option. @@ -6,7 +6,7 @@ Before deploying, review the [conceptual guide for the Self-Hosted Control Plane 1. You are using Kubernetes. 1. You have self-hosted LangSmith deployed. -1. Use the [LangGraph CLI](../../concepts/langgraph_cli.md) to [test your application locally](./test_locally.md). +1. Use the [LangGraph CLI](../../concepts/langgraph_cli.md) to [test your application locally](../../tutorials/langgraph-platform/local-server.md). 1. Use the [LangGraph CLI](../../concepts/langgraph_cli.md) to build a Docker image (i.e. `langgraph build`) and push it to a registry your Kubernetes cluster has access to. 1. `KEDA` is installed on your cluster. @@ -46,4 +46,4 @@ Before deploying, review the [conceptual guide for the Self-Hosted Control Plane 1. In your `values.yaml` file, configure the `hostBackendImage` and `operatorImage` options (if you need to mirror images) 1. You can also configure base templates for your agents by overriding the base templates [here](https://github.com/langchain-ai/helm/blob/main/charts/langsmith/values.yaml#L898). -1. You create a deployment from the [Control Plane UI](../../concepts/langgraph_control_plane.md#control-plane-ui). +1. You create a deployment from the [control plane UI](../../concepts/langgraph_control_plane.md#control-plane-ui). diff --git a/docs/docs/cloud/deployment/self_hosted_data_plane.md b/docs/docs/cloud/deployment/self_hosted_data_plane.md index c9512eb10..ed75266fb 100644 --- a/docs/docs/cloud/deployment/self_hosted_data_plane.md +++ b/docs/docs/cloud/deployment/self_hosted_data_plane.md @@ -1,10 +1,10 @@ -# How to Deploy Self-Hosted Data Plane (Beta) +# How to Deploy Self-Hosted Data Plane Before deploying, review the [conceptual guide for the Self-Hosted Data Plane](../../concepts/langgraph_self_hosted_data_plane.md) deployment option. ## Prerequisites -1. Use the [LangGraph CLI](../../concepts/langgraph_cli.md) to [test your application locally](./test_locally.md). +1. Use the [LangGraph CLI](../../concepts/langgraph_cli.md) to [test your application locally](../../tutorials/langgraph-platform/local-server.md). 1. Use the [LangGraph CLI](../../concepts/langgraph_cli.md) to build a Docker image (i.e. `langgraph build`) and push it to a registry your Kubernetes cluster or Amazon ECS cluster has access to. ## Kubernetes @@ -46,7 +46,7 @@ Before deploying, review the [conceptual guide for the Self-Hosted Data Plane](. langgraph-dataplane-listener-7fccd788-wn2dx 0/1 Running 0 9s langgraph-dataplane-redis-0 0/1 ContainerCreating 0 9s -1. You create a deployment from the [Control Plane UI](../../concepts/langgraph_control_plane.md#control-plane-ui). +1. You create a deployment from the [control plane UI](../../concepts/langgraph_control_plane.md#control-plane-ui). ## Amazon ECS diff --git a/docs/docs/cloud/deployment/setup.md b/docs/docs/cloud/deployment/setup.md index ceb7834b0..766e6bfab 100644 --- a/docs/docs/cloud/deployment/setup.md +++ b/docs/docs/cloud/deployment/setup.md @@ -1,6 +1,6 @@ -# How to Set Up a LangGraph Application for Deployment +# How to Set Up a LangGraph Application with requirements.txt -A LangGraph application must be configured with a [LangGraph API configuration file](../reference/cli.md#configuration-file) in order to be deployed to LangGraph Cloud (or to be self-hosted). This how-to guide discusses the basic steps to setup a LangGraph application for deployment using `requirements.txt` to specify project dependencies. +A LangGraph application must be configured with a [LangGraph configuration file](../reference/cli.md#configuration-file) in order to be deployed to LangGraph Cloud (or to be self-hosted). This how-to guide discusses the basic steps to setup a LangGraph application for deployment using `requirements.txt` to specify project dependencies. This walkthrough is based on [this repository](https://github.com/langchain-ai/langgraph-example), which you can play around with to learn more about how to setup your LangGraph application for deployment. @@ -8,9 +8,9 @@ This walkthrough is based on [this repository](https://github.com/langchain-ai/l If you prefer using poetry for dependency management, check out [this how-to guide](./setup_pyproject.md) on using `pyproject.toml` for LangGraph Cloud. !!! tip "Setup with a Monorepo" - If you are interested in deploying a graph located inside a monorepo, take a look at [this](https://github.com/langchain-ai/langgraph-example-monorepo) repository for an example of how to do so. + If you are interested in deploying a graph located inside a monorepo, take a look at [this repository](https://github.com/langchain-ai/langgraph-example-monorepo) for an example of how to do so. -The final repo structure will look something like this: +The final repository structure will look something like this: ```bash my-app/ @@ -31,17 +31,17 @@ After each step, an example file directory is provided to demonstrate how code c ## Specify Dependencies -Dependencies can optionally be specified in one of the following files: `pyproject.toml`, `setup.py`, or `requirements.txt`. If none of these files is created, then dependencies can be specified later in the [LangGraph API configuration file](#create-langgraph-api-config). +Dependencies can optionally be specified in one of the following files: `pyproject.toml`, `setup.py`, or `requirements.txt`. If none of these files is created, then dependencies can be specified later in the [LangGraph configuration file](#create-langgraph-api-config). The dependencies below will be included in the image, you can also use them in your code, as long as with a compatible version range: ``` -langgraph>=0.2.56,<0.4.0 -langgraph-sdk>=0.1.53 -langgraph-checkpoint>=2.0.15,<3.0 -langchain-core>=0.2.38,<0.4.0 +langgraph>=0.3.27 +langgraph-sdk>=0.1.66 +langgraph-checkpoint>=2.0.23 +langchain-core>=0.2.38 langsmith>=0.1.63 -orjson>=3.9.7 +orjson>=3.9.7,<3.10.17 httpx>=0.25.0 tenacity>=8.0.0 uvicorn>=0.26.0 @@ -49,7 +49,8 @@ sse-starlette>=2.1.0,<2.2.0 uvloop>=0.18.0 httptools>=0.5.0 jsonschema-rs>=0.20.0 -structlog>=23.1.0 +structlog>=24.1.0 +cloudpickle>=3.0.0 ``` Example `requirements.txt` file: @@ -94,9 +95,9 @@ my-app/ ## Define Graphs -Implement your graphs! Graphs can be defined in a single file or multiple files. Make note of the variable names of each [CompiledGraph][langgraph.graph.graph.CompiledGraph] to be included in the LangGraph application. The variable names will be used later when creating the [LangGraph API configuration file](../reference/cli.md#configuration-file). +Implement your graphs! Graphs can be defined in a single file or multiple files. Make note of the variable names of each [CompiledGraph][langgraph.graph.graph.CompiledGraph] to be included in the LangGraph application. The variable names will be used later when creating the [LangGraph configuration file](../reference/cli.md#configuration-file). -Example `agent.py` file, which shows how to import from other modules you define (code for the modules is not shown here, please see [this repo](https://github.com/langchain-ai/langgraph-example) to see their implementation): +Example `agent.py` file, which shows how to import from other modules you define (code for the modules is not shown here, please see [this repository](https://github.com/langchain-ai/langgraph-example) to see their implementation): ```python # my_agent/agent.py @@ -147,9 +148,9 @@ my-app/ └── .env # environment variables ``` -## Create LangGraph API Config +## Create LangGraph Configuration File -Create a [LangGraph API configuration file](../reference/cli.md#configuration-file) called `langgraph.json`. See the [LangGraph CLI reference](../reference/cli.md#configuration-file) for detailed explanations of each key in the JSON object of the configuration file. +Create a [LangGraph configuration file](../reference/cli.md#configuration-file) called `langgraph.json`. See the [LangGraph configuration file reference](../reference/cli.md#configuration-file) for detailed explanations of each key in the JSON object of the configuration file. Example `langgraph.json` file: @@ -165,8 +166,8 @@ Example `langgraph.json` file: Note that the variable name of the `CompiledGraph` appears at the end of the value of each subkey in the top-level `graphs` key (i.e. `:`). -!!! warning "Configuration Location" - The LangGraph API configuration file must be placed in a directory that is at the same level or higher than the Python files that contain compiled graphs and associated dependencies. +!!! warning "Configuration File Location" + The LangGraph configuration file must be placed in a directory that is at the same level or higher than the Python files that contain compiled graphs and associated dependencies. Example file directory: @@ -187,4 +188,4 @@ my-app/ ## Next -After you setup your project and place it in a github repo, it's time to [deploy your app](./cloud.md). +After you setup your project and place it in a GitHub repository, it's time to [deploy your app](./cloud.md). diff --git a/docs/docs/cloud/deployment/setup_javascript.md b/docs/docs/cloud/deployment/setup_javascript.md index b3de67bea..aefc7bdb5 100644 --- a/docs/docs/cloud/deployment/setup_javascript.md +++ b/docs/docs/cloud/deployment/setup_javascript.md @@ -1,10 +1,10 @@ -# How to Set Up a LangGraph.js Application for Deployment +# How to Set Up a LangGraph.js Application -A [LangGraph.js](https://langchain-ai.github.io/langgraphjs/) application must be configured with a [LangGraph API configuration file](../reference/cli.md#configuration-file) in order to be deployed to LangGraph Cloud (or to be self-hosted). This how-to guide discusses the basic steps to setup a LangGraph.js application for deployment using `package.json` to specify project dependencies. +A [LangGraph.js](https://langchain-ai.github.io/langgraphjs/) application must be configured with a [LangGraph configuration file](../reference/cli.md#configuration-file) in order to be deployed to LangGraph Cloud (or to be self-hosted). This how-to guide discusses the basic steps to setup a LangGraph.js application for deployment using `package.json` to specify project dependencies. This walkthrough is based on [this repository](https://github.com/langchain-ai/langgraphjs-studio-starter), which you can play around with to learn more about how to setup your LangGraph application for deployment. -The final repo structure will look something like this: +The final repository structure will look something like this: ```bash my-app/ @@ -23,7 +23,7 @@ After each step, an example file directory is provided to demonstrate how code c ## Specify Dependencies -Dependencies can be specified in a `package.json`. If none of these files is created, then dependencies can be specified later in the [LangGraph API configuration file](#create-langgraph-api-config). +Dependencies can be specified in a `package.json`. If none of these files is created, then dependencies can be specified later in the [LangGraph configuration file](#create-langgraph-api-config). Example `package.json` file: @@ -78,7 +78,7 @@ my-app/ ## Define Graphs -Implement your graphs! Graphs can be defined in a single file or multiple files. Make note of the variable names of each compiled graph to be included in the LangGraph application. The variable names will be used later when creating the [LangGraph API configuration file](../reference/cli.md#configuration-file). +Implement your graphs! Graphs can be defined in a single file or multiple files. Make note of the variable names of each compiled graph to be included in the LangGraph application. The variable names will be used later when creating the [LangGraph configuration file](../reference/cli.md#configuration-file). Here is an example `agent.ts`: @@ -176,7 +176,7 @@ my-app/ ## Create LangGraph API Config -Create a [LangGraph API configuration file](../reference/cli.md#configuration-file) called `langgraph.json`. See the [LangGraph CLI reference](../reference/cli.md#configuration-file) for detailed explanations of each key in the JSON object of the configuration file. +Create a [LangGraph configuration file](../reference/cli.md#configuration-file) called `langgraph.json`. See the [LangGraph configuration file reference](../reference/cli.md#configuration-file) for detailed explanations of each key in the JSON object of the configuration file. Example `langgraph.json` file: @@ -196,8 +196,8 @@ Note that the variable name of the `CompiledGraph` appears at the end of the val !!! info "Configuration Location" - The LangGraph API configuration file must be placed in a directory that is at the same level or higher than the TypeScript files that contain compiled graphs and associated dependencies. + The LangGraph configuration file must be placed in a directory that is at the same level or higher than the TypeScript files that contain compiled graphs and associated dependencies. ## Next -After you setup your project and place it in a github repo, it's time to [deploy your app](./cloud.md). +After you setup your project and place it in a GitHub repository, it's time to [deploy your app](./cloud.md). diff --git a/docs/docs/cloud/deployment/setup_pyproject.md b/docs/docs/cloud/deployment/setup_pyproject.md index 9af697611..28dda13bf 100644 --- a/docs/docs/cloud/deployment/setup_pyproject.md +++ b/docs/docs/cloud/deployment/setup_pyproject.md @@ -1,6 +1,6 @@ -# How to Set Up a LangGraph Application for Deployment +# How to Set Up a LangGraph Application with pyproject.toml -A LangGraph application must be configured with a [LangGraph API configuration file](../reference/cli.md#configuration-file) in order to be deployed to LangGraph Cloud (or to be self-hosted). This how-to guide discusses the basic steps to setup a LangGraph application for deployment using `pyproject.toml` to define your package's dependencies. +A LangGraph application must be configured with a [LangGraph configuration file](../reference/cli.md#configuration-file) in order to be deployed to LangGraph Cloud (or to be self-hosted). This how-to guide discusses the basic steps to setup a LangGraph application for deployment using `pyproject.toml` to define your package's dependencies. This walkthrough is based on [this repository](https://github.com/langchain-ai/langgraph-example-pyproject), which you can play around with to learn more about how to setup your LangGraph application for deployment. @@ -10,7 +10,7 @@ This walkthrough is based on [this repository](https://github.com/langchain-ai/l !!! tip "Setup with a Monorepo" If you are interested in deploying a graph located inside a monorepo, take a look at [this](https://github.com/langchain-ai/langgraph-example-monorepo) repository for an example of how to do so. -The final repo structure will look something like this: +The final repository structure will look something like this: ```bash my-app/ @@ -31,17 +31,17 @@ After each step, an example file directory is provided to demonstrate how code c ## Specify Dependencies -Dependencies can optionally be specified in one of the following files: `pyproject.toml`, `setup.py`, or `requirements.txt`. If none of these files is created, then dependencies can be specified later in the [LangGraph API configuration file](#create-langgraph-api-config). +Dependencies can optionally be specified in one of the following files: `pyproject.toml`, `setup.py`, or `requirements.txt`. If none of these files is created, then dependencies can be specified later in the [LangGraph configuration file](#create-langgraph-api-config). The dependencies below will be included in the image, you can also use them in your code, as long as with a compatible version range: ``` -langgraph>=0.2.56,<0.4.0 -langgraph-sdk>=0.1.53 -langgraph-checkpoint>=2.0.15,<3.0 -langchain-core>=0.2.38,<0.4.0 +langgraph>=0.3.27 +langgraph-sdk>=0.1.66 +langgraph-checkpoint>=2.0.23 +langchain-core>=0.2.38 langsmith>=0.1.63 -orjson>=3.9.7 +orjson>=3.9.7,<3.10.17 httpx>=0.25.0 tenacity>=8.0.0 uvicorn>=0.26.0 @@ -49,7 +49,8 @@ sse-starlette>=2.1.0,<2.2.0 uvloop>=0.18.0 httptools>=0.5.0 jsonschema-rs>=0.20.0 -structlog>=23.1.0 +structlog>=24.1.0 +cloudpickle>=3.0.0 ``` Example `pyproject.toml` file: @@ -68,7 +69,6 @@ python = ">=3.9" langgraph = "^0.2.0" langchain-fireworks = "^0.1.3" - [build-system] requires = ["poetry-core"] build-backend = "poetry.core.masonry.api" @@ -97,15 +97,15 @@ Example file directory: ```bash my-app/ -├── .env # file with environment variables +├── .env # file with environment variables └── pyproject.toml ``` ## Define Graphs -Implement your graphs! Graphs can be defined in a single file or multiple files. Make note of the variable names of each [CompiledGraph][langgraph.graph.graph.CompiledGraph] to be included in the LangGraph application. The variable names will be used later when creating the [LangGraph API configuration file](../reference/cli.md#configuration-file). +Implement your graphs! Graphs can be defined in a single file or multiple files. Make note of the variable names of each [CompiledGraph][langgraph.graph.graph.CompiledGraph] to be included in the LangGraph application. The variable names will be used later when creating the [LangGraph configuration file](../reference/cli.md#configuration-file). -Example `agent.py` file, which shows how to import from other modules you define (code for the modules is not shown here, please see [this repo](https://github.com/langchain-ai/langgraph-example-pyproject) to see their implementation): +Example `agent.py` file, which shows how to import from other modules you define (code for the modules is not shown here, please see [this repository](https://github.com/langchain-ai/langgraph-example-pyproject) to see their implementation): ```python # my_agent/agent.py @@ -156,9 +156,9 @@ my-app/ └── pyproject.toml ``` -## Create LangGraph API Config +## Create LangGraph Configuration File -Create a [LangGraph API configuration file](../reference/cli.md#configuration-file) called `langgraph.json`. See the [LangGraph CLI reference](../reference/cli.md#configuration-file) for detailed explanations of each key in the JSON object of the configuration file. +Create a [LangGraph configuration file](../reference/cli.md#configuration-file) called `langgraph.json`. See the [LangGraph configuration file reference](../reference/cli.md#configuration-file) for detailed explanations of each key in the JSON object of the configuration file. Example `langgraph.json` file: @@ -174,8 +174,8 @@ Example `langgraph.json` file: Note that the variable name of the `CompiledGraph` appears at the end of the value of each subkey in the top-level `graphs` key (i.e. `:`). -!!! warning "Configuration Location" - The LangGraph API configuration file must be placed in a directory that is at the same level or higher than the Python files that contain compiled graphs and associated dependencies. +!!! warning "Configuration File Location" + The LangGraph configuration file must be placed in a directory that is at the same level or higher than the Python files that contain compiled graphs and associated dependencies. Example file directory: @@ -196,4 +196,4 @@ my-app/ ## Next -After you setup your project and place it in a github repo, it's time to [deploy your app](./cloud.md). +After you setup your project and place it in a GitHub repository, it's time to [deploy your app](./cloud.md). diff --git a/docs/docs/cloud/deployment/standalone_container.md b/docs/docs/cloud/deployment/standalone_container.md index de1315522..57ab6c706 100644 --- a/docs/docs/cloud/deployment/standalone_container.md +++ b/docs/docs/cloud/deployment/standalone_container.md @@ -4,7 +4,7 @@ Before deploying, review the [conceptual guide for the Standalone Container](../ ## Prerequisites -1. Use the [LangGraph CLI](../../concepts/langgraph_cli.md) to [test your application locally](./test_locally.md). +1. Use the [LangGraph CLI](../../concepts/langgraph_cli.md) to [test your application locally](../../tutorials/langgraph-platform/local-server.md). 1. Use the [LangGraph CLI](../../concepts/langgraph_cli.md) to build a Docker image (i.e. `langgraph build`). 1. The following environment variables are needed for a standalone container deployment. 1. `REDIS_URI`: Connection details to a Redis instance. Redis will be used as a pub-sub broker to enable streaming real time output from background runs. The value of `REDIS_URI` must be a valid [Redis connection URI](https://redis-py.readthedocs.io/en/stable/connections.html#redis.Redis.from_url). @@ -21,7 +21,7 @@ Before deploying, review the [conceptual guide for the Standalone Container](../ `` and `database_name_2` are different databases within the same instance, but `` is shared. **The same database cannot be used for separate deployments**. - 1. `LANGSMITH_API_KEY`: (if using [Lite](../../concepts/langgraph_data_plane.md#lite-vs-enterprise)) LangSmith API key. This will be used to authenticate ONCE at server start up. + 1. `LANGSMITH_API_KEY`: (if using [Lite](../../concepts/langgraph_server.md#server-versions)) LangSmith API key. This will be used to authenticate ONCE at server start up. 1. `LANGGRAPH_CLOUD_LICENSE_KEY`: (if using [Enterprise](../../concepts/langgraph_data_plane.md#lite-vs-enterprise)) LangGraph Platform license key. This will be used to authenticate ONCE at server start up. 1. `LANGSMITH_ENDPOINT`: To send traces to a [self-hosted LangSmith](https://docs.smith.langchain.com/self_hosting) instance, set `LANGSMITH_ENDPOINT` to the hostname of the self-hosted LangSmith instance. diff --git a/docs/docs/cloud/deployment/test_locally.md b/docs/docs/cloud/deployment/test_locally.md deleted file mode 100644 index fb037e47b..000000000 --- a/docs/docs/cloud/deployment/test_locally.md +++ /dev/null @@ -1,196 +0,0 @@ -# How to test a LangGraph app locally - -This guide assumes you have a LangGraph app correctly set up with a proper configuration file and a corresponding compiled graph, and that you have a proper LangChain API key. - -Testing locally ensures that there are no errors or conflicts with Python dependencies and confirms that the configuration file is specified correctly. - -## Setup - -Install the LangGraph CLI package: - -```bash -pip install -U "langgraph-cli[inmem]" -``` - -Ensure you have an API key, which you can create from the [LangSmith UI](https://smith.langchain.com) (Settings > API Keys). This is required to authenticate that you have LangGraph Cloud access. After you have saved the key to a safe place, place the following line in your `.env` file: - -```python -LANGSMITH_API_KEY = ********* -``` - -## Start the API server - -Once you have installed the CLI, you can run the following command to start the API server for local testing: - -```shell -langgraph dev -``` - -This will start up the LangGraph API server locally. If this runs successfully, you should see something like: - -> Ready! -> -> - API: [http://localhost:2024](http://localhost:2024/) -> -> - Docs: http://localhost:2024/docs -> -> - LangGraph Studio Web UI: https://smith.langchain.com/studio/?baseUrl=http://127.0.0.1:2024 - -!!! note "In-Memory Mode" - - The `langgraph dev` command starts LangGraph Server in an in-memory mode. This mode is suitable for development and testing purposes. For production use, you should deploy LangGraph Server with access to a persistent storage backend. - - If you want to test your application with a persistent storage backend, you can use the `langgraph up` command instead of `langgraph dev`. You will - need to have `docker` installed on your machine to use this command. - - -### Interact with the server - -We can now interact with the API server using the LangGraph SDK. First, we need to start our client, select our assistant (in this case a graph we called "agent", make sure to select the proper assistant you wish to test). - -You can either initialize by passing authentication or by setting an environment variable. - -#### Initialize with authentication - -=== "Python" - - ```python - from langgraph_sdk import get_client - - # only pass the url argument to get_client() if you changed the default port when calling langgraph dev - client = get_client(url=,api_key=) - # Using the graph deployed with the name "agent" - assistant_id = "agent" - thread = await client.threads.create() - ``` - -=== "Javascript" - - ```js - import { Client } from "@langchain/langgraph-sdk"; - - // only set the apiUrl if you changed the default port when calling langgraph dev - const client = new Client({ apiUrl: , apiKey: }); - // Using the graph deployed with the name "agent" - const assistantId = "agent"; - const thread = await client.threads.create(); - ``` - -=== "CURL" - - ```bash - curl --request POST \ - --url /threads \ - --header 'Content-Type: application/json' - --header 'x-api-key: ' - ``` - - -#### Initialize with environment variables - -If you have a `LANGSMITH_API_KEY` set in your environment, you do not need to explicitly pass authentication to the client - -=== "Python" - - ```python - from langgraph_sdk import get_client - - # only pass the url argument to get_client() if you changed the default port when calling langgraph dev - client = get_client() - # Using the graph deployed with the name "agent" - assistant_id = "agent" - thread = await client.threads.create() - ``` - -=== "Javascript" - - ```js - import { Client } from "@langchain/langgraph-sdk"; - - // only set the apiUrl if you changed the default port when calling langgraph dev - const client = new Client(); - // Using the graph deployed with the name "agent" - const assistantId = "agent"; - const thread = await client.threads.create(); - ``` - -=== "CURL" - - ```bash - curl --request POST \ - --url /threads \ - --header 'Content-Type: application/json' - ``` - -Now we can invoke our graph to ensure it is working. Make sure to change the input to match the proper schema for your graph. - -=== "Python" - - ```python - input = {"messages": [{"role": "user", "content": "what's the weather in sf"}]} - async for chunk in client.runs.stream( - thread["thread_id"], - assistant_id, - input=input, - stream_mode="updates", - ): - print(f"Receiving new event of type: {chunk.event}...") - print(chunk.data) - print("\n\n") - ``` -=== "Javascript" - - ```js - const input = { "messages": [{ "role": "user", "content": "what's the weather in sf"}] } - - const streamResponse = client.runs.stream( - thread["thread_id"], - assistantId, - { - input: input, - streamMode: "updates", - } - ); - for await (const chunk of streamResponse) { - console.log(`Receiving new event of type: ${chunk.event}...`); - console.log(chunk.data); - console.log("\n\n"); - } - ``` - -=== "CURL" - - ```bash - curl --request POST \ - --url /threads//runs/stream \ - --header 'Content-Type: application/json' \ - --data "{ - \"assistant_id\": \"agent\", - \"input\": {\"messages\": [{\"role\": \"human\", \"content\": \"what's the weather in sf\"}]}, - \"stream_mode\": [ - \"events\" - ] - }" | \ - sed 's/\r$//' | \ - awk ' - /^event:/ { - if (data_content != "") { - print data_content "\n" - } - sub(/^event: /, "Receiving event of type: ", $0) - printf "%s...\n", $0 - data_content = "" - } - /^data:/ { - sub(/^data: /, "", $0) - data_content = $0 - } - END { - if (data_content != "") { - print data_content "\n" - } - } - ' - ``` - -If your graph works correctly, you should see your graph output displayed in the console. Of course, there are many more ways you might need to test your graph, for a full list of commands you can send with the SDK, see the [Python](https://langchain-ai.github.io/langgraph/cloud/reference/sdk/python_sdk_ref/) and [JS/TS](https://langchain-ai.github.io/langgraph/cloud/reference/sdk/js_ts_sdk_ref/) references. diff --git a/docs/docs/cloud/how-tos/assistant_versioning.md b/docs/docs/cloud/how-tos/assistant_versioning.md index 9b1fccc37..085371daa 100644 --- a/docs/docs/cloud/how-tos/assistant_versioning.md +++ b/docs/docs/cloud/how-tos/assistant_versioning.md @@ -1,6 +1,11 @@ -# How to version assistants +# How to version Assistants -In this how-to guide we will walk through how you can create and manage different assistant versions. If you haven't already, you can read [this](../../concepts/assistants.md#versioning-assistants) conceptual guide to gain a better understanding of what assistant versioning is. This how-to assumes you have a graph that is configurable, which means you have defined a config schema and passed it to your graph as follows: +!!! info "Prerequisites" + + - [Assistants Overview](../../concepts/assistants.md) + - [How to create an Assistant](./configuration_cloud.md) + +In this guide we will show you how to create, manage and use multiple versions of an assistant. If you have not already, please first see [this](./configuration_cloud.md) guide on creating an assistant. For this example, assume you have a graph with the following configuration schema: === "Python" @@ -9,7 +14,7 @@ In this how-to guide we will walk through how you can create and manage differen model_name: Literal["anthropic", "openai"] = "anthropic" system_prompt: str - agent = StateGraph(State, config_schema=Config) + builder = StateGraph(State, config_schema=Config) ``` === "Javascript" @@ -24,96 +29,63 @@ In this how-to guide we will walk through how you can create and manage differen // the rest of your code - const agent = new StateGraph(StateAnnotation, ConfigAnnotation); + const builder = new StateGraph(StateAnnotation, ConfigAnnotation); ``` -## Setup +And that you have the following assistant already created: -First let's set up our client and thread. If you are using the Studio, just open the application to the graph called "agent". If using cURL, you don't need to do anything except copy down your deployment URL and the name of the graph you want to use. - -=== "Python" - - ```python - from langgraph_sdk import get_client - - client = get_client(url=) - # Using the graph deployed with the name "agent" - graph_name = "agent" - ``` - -=== "Javascript" - - ```js - import { Client } from "@langchain/langgraph-sdk"; - - const client = new Client({ apiUrl: }); - // Using the graph deployed with the name "agent" - const graphName = "agent"; - ``` - -## Create an assistant - -For this example, we will create an assistant by modifying the model name that is used in our graph. We can create a new assistant called "openai_assistant" for this: - -=== "Python" - - ```python - openai_assistant = await client.assistants.create(graph_name, config={"configurable": {"model_name": "openai"}}, name="openai_assistant") - ``` - -=== "Javascript" - - ```js - const openaiAssistant = await client.assistants.create({graphId: graphName, config: { configurable: {"modelName": "openai"}}, name: "openaiAssistant"}); - ``` - -=== "CURL" - - ```bash - curl --request POST \ - --url /assistants \ - --header 'Content-Type: application/json' \ - --data '{ - "graph_id": "agent", - "config": {"model_name": "openai"}, - "name": "openai_assistant" - }' - ``` - -### Using the studio - -To create an assistant using the studio do the following steps: - -1. Click on the "Create New Assistant" button: - - ![click create](./img/click_create_assistant.png) - -1. Use the create assistant pane to enter info for the assistant you wish to create, and then click create: - - ![create](./img/create_assistant.png) - -1. See that your assistant was created and is displayed in the Studio - - ![view create](./img/create_assistant_view.png) - -1. Click on the edit button next to the selected assistant to manage your created assistant: - - ![create edit](./img/edit_created_assistant.png) + { + "assistant_id": "62e209ca-9154-432a-b9e9-2d75c7a9219b", + "graph_id": "agent", + "name": "Open AI Assistant" + "config": { + "configurable": { + "model_name": "openai", + "system_prompt": "You are a helpful assistant." + } + }, + "metadata": {} + "created_at": "2024-08-31T03:09:10.230718+00:00", + "updated_at": "2024-08-31T03:09:10.230718+00:00", + } ## Create a new version for your assistant -Let's now say we wanted to add a system prompt to our assistant. We can do this by using the `update` endpoint as follows. Please note that you must pass in the ENTIRE config (and metadata if you are using it). The update endpoint creates new versions completely from scratch and does not rely on previously entered config. In this case, we need to continue telling the assistant to use "openai" as the model. +### LangGraph SDK +To edit the assistant, use the `update` method. This will create a new version of the assistant with the provided edits. See the [Python](../reference/sdk/python_sdk_ref.md#langgraph_sdk.client.AssistantsClient.update) and [JS](../reference/sdk/js_ts_sdk_ref.md#update) SDK reference docs for more information. + +!!! note "Note" + You must pass in the ENTIRE config (and metadata if you are using it). The update endpoint creates new versions completely from scratch and does not rely on previously versions. + +For example, to update your assistant's system prompt: === "Python" ```python - openai_assistant_v2 = await client.assistants.update(openai_assistant['assistant_id'], config={"configurable": {"model_name": "openai", "system_prompt": "You are a helpful assistant!"}}) + openai_assistant_v2 = await client.assistants.update( + openai_assistant["assistant_id"], + config={ + "configurable": { + "model_name": "openai", + "system_prompt": "You are an unhelpful assistant!", + } + }, + ) ``` === "Javascript" ```js - const openaiAssistantV2 = await client.assistants.update(openaiAssistant['assistant_id'], {config: { configurable: {"modelName": "openai", "systemPrompt": "You are a helpful assistant!"}}}); + const openaiAssistantV2 = await client.assistants.update( + openai_assistant["assistant_id"], + { + config: { + configurable: { + model_name: 'openai', + system_prompt: 'You are an unhelpful assistant!', + }, + }, + }); ``` === "CURL" @@ -123,27 +95,29 @@ Let's now say we wanted to add a system prompt to our assistant. We can do this --url /assistants/ \ --header 'Content-Type: application/json' \ --data '{ - "config": {"model_name": "openai", "system_prompt": "You are a helpful assistant!"} + "config": {"model_name": "openai", "system_prompt": "You are an unhelpful assistant!"} }' ``` -### Using the studio +This will create a new version of the assistant with the updated parameters and set this as the active version of your assistant. If you now run your graph and pass in this assistant id, it will use this latest version. -1. First, click on the edit button next to the `openai_assistant`. Then, add a system prompt and click "Save New Version": +### LangGraph Platform UI - ![create new version](./img/create_new_version.png) +You can also edit assistants from the LangGraph Platform UI. -1. Then you can see it is selected in the assistant dropdown: +Inside your deployment, select the "Assistants" tab. This will load a table of all of the assistants in your deployment, across all graphs. - ![see version dropdown](./img/see_new_version.png) +To edit an existing assistant, select the "Edit" button for the specified assistant. This will open a form where you can edit the assistant's name, description, and configuration. -1. And you can see all the version history in the edit pane for the assistant: +Additionally, if using LangGraph Studio, you can edit the assistants and create new versions via the "Manage Assistants" button. - ![see versions](./img/see_version_history.png) +## Use a previous assistant version -## Point your assistant to a different version +### LangGraph SDK -After having created multiple versions, we can change the version our assistant points to both by using the SDK and also the Studio. In this case we will be resetting the `openai_assistant` we just created two versions for to point back to the first version. When you create a new version (by using the `update` endpoint) the assistant automatically points to the newly created version, so following the code above our `openai_assistant` is pointing to the second version. Here we will change it to point to the first version: +You can also change the active version of your assistant. To do so, use the `setLatest` method. + +In the example above, to rollback to the first version of the assistant: === "Python" @@ -168,16 +142,11 @@ After having created multiple versions, we can change the version our assistant }' ``` +If you now run your graph and pass in this assistant id, it will use the first version of the assistant. -### Using the studio +### LangGraph Platform UI -To change the version, all you have to do is click into the edit pane for an assistant, select the version you want to change to, and then click the "Set As Current Version" button - -![set version](./img/select_different_version.png) - -## Using your assistant versions - -Whether you are a business user iterating without writing code, or a developer using the SDK - assistant versioning allows you to quickly test different agents in a controlled environment, making it easy to iterate fast. You can use any of the assistant versions just how you would a normal assistant, and can read more about how to stream output from these assistants by reading [these guides](https://langchain-ai.github.io/langgraph/cloud/how-tos/#streaming) or [this one](https://langchain-ai.github.io/langgraph/cloud/how-tos/invoke_studio/) if you are using the Studio. +If using LangGraph Studio, to set the active version of your asssistant, click the "Manage Assistants" button and locate the assistant you would like to use. Select the assistant and the version, and then click the "Active" toggle. This will update the assistant to make the selected version active. !!! warning "Deleting Assistants" - Deleting as assistant will delete ALL of it's versions, since they all point to the same assistant ID. There is currently no way to just delete a single version, but by pointing your assistant to the correct version you can skip any versions that you don't wish to use. \ No newline at end of file + Deleting as assistant will delete ALL of it's versions. There is currently no way to delete a single version, but by pointing your assistant to the correct version you can skip any versions that you don't wish to use. diff --git a/docs/docs/cloud/how-tos/configurable_headers.md b/docs/docs/cloud/how-tos/configurable_headers.md index 7a61dff0e..1a65f34e8 100644 --- a/docs/docs/cloud/how-tos/configurable_headers.md +++ b/docs/docs/cloud/how-tos/configurable_headers.md @@ -1,6 +1,6 @@ # Configurable Headers -LangGraph allows runtime configuration to modify agent behavior and permissions dynamically. When using the [LangGraph Platform](../quick_start.md), you can pass this configuration in the request body (`config`) or specific request headers. This enables adjustments based on user identity or other request data (see the [configuration how-to](../../how-tos/configuration.ipynb) for more details on how to access within your graph). +LangGraph allows runtime configuration to modify agent behavior and permissions dynamically. When using the [LangGraph Platform](../quick_start.md), you can pass this configuration in the request body (`config`) or specific request headers. This enables adjustments based on user identity or other request data. For privacy, control which headers are passed to the runtime configuration via the `http.configurable_headers` section in your `langgraph.json` file. @@ -65,8 +65,6 @@ async def generate_agent(config): } ``` -For more examples on how to use runtime configuration, check out the [configuration how-to](../../how-tos/configuration.ipynb). - ### Opt-out of configurable headers If you'd like to opt-out of configurable headers, you can simply set a wildcard pattern in the `exclude` list: diff --git a/docs/docs/cloud/how-tos/configuration_cloud.md b/docs/docs/cloud/how-tos/configuration_cloud.md index 8954d966f..dd38ece29 100644 --- a/docs/docs/cloud/how-tos/configuration_cloud.md +++ b/docs/docs/cloud/how-tos/configuration_cloud.md @@ -1,19 +1,23 @@ -# How to create agents with configuration +# How to create Assistants -One of the benefits of LangGraph API is that it lets you create agents with different configurations. -This is useful when you want to: +!!! info "Prerequisites" -- Define a cognitive architecture once as a LangGraph -- Let that LangGraph be configurable across some attributes (for example, system message or LLM to use) -- Let users create agents with arbitrary configurations, save them, and then use them in the future + - [Assistants Overview](../../concepts/assistants.md) + - [Configuration](../../concepts/low_level.md#configuration) -In this guide we will show how to do that for the default agent we have built in. +In this guide we will show how to create and configure an assistant. -If you look at the agent we defined, you can see that inside the `call_model` node we have created the model based on some configuration. That node looks like: +First, as a brief refresher on the concept of configurations, consider the following simple `call_model` node and configuration schema. Observe that this node tries to read and use the `model_name` as defined by the `config` object's `configurable`. === "Python" ```python + + class ConfigSchema(TypedDict): + model_name: str + + builder = StateGraph(AgentState, config_schema=ConfigSchema) + def call_model(state, config): messages = state["messages"] model_name = config.get('configurable', {}).get("model_name", "anthropic") @@ -26,6 +30,15 @@ If you look at the agent we defined, you can see that inside the `call_model` no === "Javascript" ```js + import { Annotation } from "@langchain/langgraph"; + + const ConfigSchema = Annotation.Root({ + model_name: Annotation, + system_prompt: + }); + + const builder = new StateGraph(AgentState, ConfigSchema) + function callModel(state: State, config: RunnableConfig) { const messages = state.messages; const modelName = config.configurable?.model_name ?? "anthropic"; @@ -36,9 +49,15 @@ If you look at the agent we defined, you can see that inside the `call_model` no } ``` -We are looking inside the config for a `model_name` parameter (which defaults to `anthropic` if none is found). That means that by default we are using Anthropic as our model provider. In this example we will see an example of how to create an example agent that is configured to use OpenAI. +For more information on configurations, [see here](../../concepts/low_level.md#configuration). -First let's set up our client and thread: +## Creating an Assistant + +### LangGraph SDK + +To create an assistant, use the [LangGraph SDK](../../concepts/sdk.md) `create` method. See the [Python](../reference/sdk/python_sdk_ref.md#langgraph_sdk.client.AssistantsClient.create) and [JS](../reference/sdk/js_ts_sdk_ref.md#create) SDK reference docs for more information. + +This example uses the same configuration schema as above, and creates an assistant with `model_name` set to `openai`. === "Python" @@ -46,84 +65,9 @@ First let's set up our client and thread: from langgraph_sdk import get_client client = get_client(url=) - # Select an assistant that is not configured - assistants = await client.assistants.search() - assistant = [a for a in assistants if not a["config"]][0] - ``` - -=== "Javascript" - - ```js - import { Client } from "@langchain/langgraph-sdk"; - - const client = new Client({ apiUrl: }); - // Select an assistant that is not configured - const assistants = await client.assistants.search(); - const assistant = assistants.find(a => !a.config); - ``` - -=== "CURL" - - ```bash - curl --request POST \ - --url /assistants/search \ - --header 'Content-Type: application/json' \ - --data '{ - "limit": 10, - "offset": 0 - }' | jq -c 'map(select(.config == null or .config == {})) | .[0]' - ``` - -We can now call `.get_schemas` to get schemas associated with this graph: - -=== "Python" - - ```python - schemas = await client.assistants.get_schemas( - assistant_id=assistant["assistant_id"] - ) - # There are multiple types of schemas - # We can get the `config_schema` to look at the configurable parameters - print(schemas["config_schema"]) - ``` - -=== "Javascript" - - ```js - const schemas = await client.assistants.getSchemas( - assistant["assistant_id"] - ); - // There are multiple types of schemas - // We can get the `config_schema` to look at the configurable parameters - console.log(schemas.config_schema); - ``` - -=== "CURL" - - ```bash - curl --request GET \ - --url /assistants//schemas | jq -r '.config_schema' - ``` - -Output: - - { - 'model_name': - { - 'title': 'Model Name', - 'enum': ['anthropic', 'openai'], - 'type': 'string' - } - } - -Now we can initialize an assistant with config: - -=== "Python" - - ```python openai_assistant = await client.assistants.create( # "agent" is the name of a graph we deployed - "agent", config={"configurable": {"model_name": "openai"}} + "agent", config={"configurable": {"model_name": "openai"}}, name="Open AI Assistant" ) print(openai_assistant) @@ -132,10 +76,14 @@ Now we can initialize an assistant with config: === "Javascript" ```js - let openAIAssistant = await client.assistants.create( - // "agent" is the name of a graph we deployed - "agent", { "configurable": { "model_name": "openai" } } - ); + import { Client } from "@langchain/langgraph-sdk"; + + const client = new Client({ apiUrl: }); + let openAIAssistant = await client.assistants.create({ + graphId: 'agent', + name: "Open AI Assistant", + config: { "configurable": { "model_name": "openai" } }, + }); console.log(openAIAssistant); ``` @@ -146,7 +94,7 @@ Now we can initialize an assistant with config: curl --request POST \ --url /assistants \ --header 'Content-Type: application/json' \ - --data '{"graph_id":"agent","config":{"configurable":{"model_name":"open_ai"}}}' + --data '{"graph_id":"agent", "config":{"configurable":{"model_name":"openai"}}, "name": "Open AI Assistant"}' ``` Output: @@ -154,17 +102,32 @@ Output: { "assistant_id": "62e209ca-9154-432a-b9e9-2d75c7a9219b", "graph_id": "agent", - "created_at": "2024-08-31T03:09:10.230718+00:00", - "updated_at": "2024-08-31T03:09:10.230718+00:00", + "name": "Open AI Assistant" "config": { "configurable": { - "model_name": "open_ai" + "model_name": "openai" } }, "metadata": {} + "created_at": "2024-08-31T03:09:10.230718+00:00", + "updated_at": "2024-08-31T03:09:10.230718+00:00", } -We can verify the config is indeed taking effect: +### LangGraph Platform UI + +You can also create assistants from the LangGraph Platform UI. + +Inside your deployment, select the "Assistants" tab. This will load a table of all of the assistants in your deployment, across all graphs. + +To create a new assistant, select the "+ New assistant" button. This will open a form where you can specify the graph this assistant is for, as well as provide a name, description, and the desired configuration for the assistant based on the configuration schema for that graph. + +To confirm, click "Create assistant". This will take you to [LangGraph Studio](../../concepts/langgraph_studio.md) where you can test the assistant. If you go back to the "Assistants" tab in the deployment, you will see the newly created assistant in the table. + +## Using an Assistant + +### LangGraph SDK + +We have now created an assistant called "Open AI Assistant" that has `model_name` defined as `openai`. We can now use this assistant with this configuration: === "Python" @@ -173,6 +136,7 @@ We can verify the config is indeed taking effect: input = {"messages": [{"role": "user", "content": "who made you?"}]} async for event in client.runs.stream( thread["thread_id"], + # this is where we specify the assistant id to use openai_assistant["assistant_id"], input=input, stream_mode="updates", @@ -190,6 +154,7 @@ We can verify the config is indeed taking effect: const streamResponse = client.runs.stream( thread["thread_id"], + // this is where we specify the assistant id to use openAIAssistant["assistant_id"], { input, @@ -260,5 +225,6 @@ Output: Receiving event of type: updates {'agent': {'messages': [{'content': 'I was created by OpenAI, a research organization focused on developing and advancing artificial intelligence technology.', 'additional_kwargs': {}, 'response_metadata': {'finish_reason': 'stop', 'model_name': 'gpt-4o-2024-05-13', 'system_fingerprint': 'fp_157b3831f5'}, 'type': 'ai', 'name': None, 'id': 'run-e1a6b25c-8416-41f2-9981-f9cfe043f414', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}]}} +### LangGraph Platform UI - +Inside your deployment, select the "Assistants" tab. For the assistant you would like to use, click the "Studio" button. This will open LangGraph Studio with the selected assistant. When you submit an input (either in Graph or Chat mode), the selected assistant and its configuration will be used. diff --git a/docs/docs/cloud/how-tos/copy_threads.md b/docs/docs/cloud/how-tos/copy_threads.md index 2e83ae0e4..e26cdfe52 100644 --- a/docs/docs/cloud/how-tos/copy_threads.md +++ b/docs/docs/cloud/how-tos/copy_threads.md @@ -4,7 +4,9 @@ You may wish to copy (i.e. "fork") an existing thread in order to keep the exist ## Setup -This code assumes you already have a thread to copy. You can read about what a thread is [here](../../concepts/langgraph_server.md#threads) and learn how to stream a run on a thread in [these how-to guides](../../how-tos/index.md#streaming_1). +This code assumes you already have a thread to copy. + +For more information, see these guides on [Threads](../../cloud/concepts/threads.md) and [Streaming](../../concepts/streaming.md). ### SDK initialization diff --git a/docs/docs/cloud/how-tos/human_in_the_loop_breakpoint.md b/docs/docs/cloud/how-tos/human_in_the_loop_breakpoint.md index 0e684e59b..996347597 100644 --- a/docs/docs/cloud/how-tos/human_in_the_loop_breakpoint.md +++ b/docs/docs/cloud/how-tos/human_in_the_loop_breakpoint.md @@ -8,9 +8,9 @@ * [LangGraph Glossary](../../concepts/low_level.md) -Human-in-the-loop (HIL) interactions are crucial for [agentic systems](../../concepts/agentic_concepts.md#human-in-the-loop). [Breakpoints](../../concepts/low_level.md#breakpoints) are a common HIL interaction pattern, allowing the graph to stop at specific steps and seek human approval before proceeding (e.g., for sensitive actions). +Human-in-the-loop (HIL) interactions are crucial for [agentic systems](../../concepts/agentic_concepts.md#human-in-the-loop). [Breakpoints](../../concepts/breakpoints.md) are a common HIL interaction pattern, allowing the graph to stop at specific steps and seek human approval before proceeding (e.g., for sensitive actions). -Breakpoints are built on top of LangGraph [checkpoints](../../concepts/low_level.md#persistence), which save the graph's state after each node execution. Checkpoints are saved in [threads](../../concepts/low_level.md#threads) that preserve graph state and can be accessed after a graph has finished execution. This allows for graph execution to pause at specific points, await human approval, and then resume execution from the last checkpoint. +Breakpoints are built on top of LangGraph [checkpoints](../../concepts/persistence.md#checkpoints), which save the graph's state after each node execution. Checkpoints are saved in [threads](../../concepts/persistence.md#threads) that preserve graph state and can be accessed after a graph has finished execution. This allows for graph execution to pause at specific points, await human approval, and then resume execution from the last checkpoint. ## Setup diff --git a/docs/docs/cloud/how-tos/human_in_the_loop_edit_state.md b/docs/docs/cloud/how-tos/human_in_the_loop_edit_state.md index 983d27d09..d1a2d8bb4 100644 --- a/docs/docs/cloud/how-tos/human_in_the_loop_edit_state.md +++ b/docs/docs/cloud/how-tos/human_in_the_loop_edit_state.md @@ -6,7 +6,7 @@ This can be in several ways, but the primary supported way is to add an "interru ## Setup -We are not going to show the full code for the graph we are hosting, but you can see it [here](../../how-tos/human_in_the_loop/edit-graph-state.ipynb#agent) if you want to. Once this graph is hosted, we are ready to invoke it and wait for user input. +We are not going to show the full code for the graph we are hosting, but you can see it [here](../../how-tos/human_in_the_loop/time-travel.ipynb) if you want to. Once this graph is hosted, we are ready to invoke it and wait for user input. ### SDK initialization diff --git a/docs/docs/cloud/how-tos/stream_debug.md b/docs/docs/cloud/how-tos/stream_debug.md deleted file mode 100644 index 0dee6a7cd..000000000 --- a/docs/docs/cloud/how-tos/stream_debug.md +++ /dev/null @@ -1,235 +0,0 @@ -# How to stream debug events - -!!! info "Prerequisites" - * [Streaming](../../concepts/streaming.md) - -This guide covers how to stream debug events from your graph (`stream_mode="debug"`). Streaming debug events produces responses containing `type` and `timestamp` keys. Debug events correspond to different steps in the graph's execution, and there are three different types of steps that will get streamed back to you: - -- `checkpoint`: These events will get streamed anytime the graph saves its state, which occurs after every super-step. Read more about checkpoints [here](https://langchain-ai.github.io/langgraph/concepts/low_level/#checkpointer) -- `task`: These events will get streamed before each super-step, and will contain information about a single task. Each super-step works by executing a list of tasks, where each task is scoped to a specific node and input. Below we will discuss the format of these tasks in more detail. -- `task_result`: After each `task` event, you will see a corresponding `task_result` event which as the name suggests contains information on the results of the task executed in the super-step. Scroll more to learn about the exact structure of these events. - -## Setup - -First let's set up our client and thread: - -=== "Python" - - ```python - from langgraph_sdk import get_client - - client = get_client(url=) - # Using the graph deployed with the name "agent" - assistant_id = "agent" - # create thread - thread = await client.threads.create() - print(thread) - ``` - -=== "Javascript" - - ```js - import { Client } from "@langchain/langgraph-sdk"; - - const client = new Client({ apiUrl: }); - // Using the graph deployed with the name "agent" - const assistantID = "agent"; - // create thread - const thread = await client.threads.create(); - console.log(thread); - ``` - -=== "CURL" - - ```bash - curl --request POST \ - --url /threads \ - --header 'Content-Type: application/json' \ - --data '{}' - ``` - - -Output: - - { - 'thread_id': 'd0cbe9ad-f11c-443a-9f6f-dca0ae5a0dd3', - 'created_at': '2024-06-21T22:10:27.696862+00:00', - 'updated_at': '2024-06-21T22:10:27.696862+00:00', - 'metadata': {}, - 'status': 'idle', - 'config': {}, - 'values': None - } - -## Stream graph in debug mode - -=== "Python" - - ```python - # create input - input = { - "messages": [ - { - "role": "user", - "content": "What's the weather in SF?", - } - ] - } - - # stream debug - async for chunk in client.runs.stream( - thread_id=thread["thread_id"], - assistant_id=assistant_id, - input=input, - stream_mode="debug", - ): - print(f"Receiving new event of type: {chunk.event}...") - print(chunk.data) - print("\n\n") - ``` - -=== "Javascript" - - ```js - // create input - const input = { - messages: [ - { - role: "human", - content: "What's the weather in SF?", - } - ] - }; - - // stream debug - const streamResponse = client.runs.stream( - thread["thread_id"], - assistantID, - { - input, - streamMode: "debug" - } - ); - - for await (const chunk of streamResponse) { - console.log(`Receiving new event of type: ${chunk.event}...`); - console.log(chunk.data); - console.log("\n\n"); - } - ``` - -=== "CURL" - - ```bash - curl --request POST \ - --url /threads//runs/stream \ - --header 'Content-Type: application/json' \ - --data "{ - \"assistant_id\": \"agent\", - \"input\": {\"messages\": [{\"role\": \"human\", \"content\": \"What's the weather in SF?\"}]}, - \"stream_mode\": [ - \"debug\" - ] - }" | \ - sed 's/\r$//' | \ - awk ' - /^event:/ { - if (data_content != "") { - print data_content "\n" - } - sub(/^event: /, "Receiving event of type: ", $0) - printf "%s...\n", $0 - data_content = "" - } - /^data:/ { - sub(/^data: /, "", $0) - data_content = $0 - } - END { - if (data_content != "") { - print data_content "\n" - } - } - ' - ``` - - -Output: - - Receiving new event of type: metadata... - {'run_id': '1ef65938-d7c7-68db-b786-011aa1cb3cd2'} - - - - Receiving new event of type: debug... - {'type': 'checkpoint', 'timestamp': '2024-08-28T23:16:28.134680+00:00', 'step': -1, 'payload': {'config': {'tags': [], 'metadata': {'created_by': 'system', 'run_id': '1ef65938-d7c7-68db-b786-011aa1cb3cd2', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'be4fd54d-ff22-4e9e-8876-d5cccc0e8048', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca'}, 'callbacks': [None], 'recursion_limit': 25, 'configurable': {'run_id': '1ef65938-d7c7-68db-b786-011aa1cb3cd2', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'be4fd54d-ff22-4e9e-8876-d5cccc0e8048', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca', 'checkpoint_id': '1ef65938-d8f3-6b25-bfff-30a8ed6460bd', 'checkpoint_ns': ''}, 'run_id': '1ef65938-d7c7-68db-b786-011aa1cb3cd2'}, 'values': {'messages': [], 'search_results': []}, 'metadata': {'source': 'input', 'writes': {'messages': [{'role': 'human', 'content': "What's the weather in SF?"}]}, 'step': -1}, 'next': ['__start__'], 'tasks': [{'id': 'b40d2c90-dc1e-52db-82d6-08751b769c55', 'name': '__start__', 'interrupts': []}]}} - - - - Receiving new event of type: debug... - {'type': 'checkpoint', 'timestamp': '2024-08-28T23:16:28.139821+00:00', 'step': 0, 'payload': {'config': {'tags': [], 'metadata': {'created_by': 'system', 'run_id': '1ef65938-d7c7-68db-b786-011aa1cb3cd2', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'be4fd54d-ff22-4e9e-8876-d5cccc0e8048', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca'}, 'callbacks': [None], 'recursion_limit': 25, 'configurable': {'run_id': '1ef65938-d7c7-68db-b786-011aa1cb3cd2', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'be4fd54d-ff22-4e9e-8876-d5cccc0e8048', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca', 'checkpoint_id': '1ef65938-d900-63f1-8000-70fe53e0da5c', 'checkpoint_ns': ''}, 'run_id': '1ef65938-d7c7-68db-b786-011aa1cb3cd2'}, 'values': {'messages': [{'content': "What's the weather in SF?", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': '4123a12c-46cb-4815-bdcc-32537af0cb5b', 'example': False}], 'search_results': []}, 'metadata': {'source': 'loop', 'writes': None, 'step': 0}, 'next': ['call_model'], 'tasks': [{'id': '685d89f6-542b-5e11-8cff-2963e7f4ea63', 'name': 'call_model', 'interrupts': []}]}} - - - - Receiving new event of type: debug... - {'type': 'task', 'timestamp': '2024-08-28T23:16:28.139928+00:00', 'step': 1, 'payload': {'id': '600a6ff3-7ff1-570a-b626-f887e9a70f1c', 'name': 'call_model', 'input': {'messages': [{'content': "What's the weather in SF?", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': '4123a12c-46cb-4815-bdcc-32537af0cb5b', 'example': False}], 'search_results': [], 'final_answer': None}, 'triggers': ['start:call_model']}} - - - - Receiving new event of type: debug... - {'type': 'task_result', 'timestamp': '2024-08-28T23:16:28.584833+00:00', 'step': 1, 'payload': {'id': '600a6ff3-7ff1-570a-b626-f887e9a70f1c', 'name': 'call_model', 'error': None, 'result': [['messages', {'content': 'Current weather in San Francisco', 'additional_kwargs': {}, 'response_metadata': {'finish_reason': 'stop', 'model_name': 'gpt-4o-2024-05-13', 'system_fingerprint': 'fp_a2ff031fb5'}, 'type': 'ai', 'name': None, 'id': 'run-0407bff9-3692-4ab5-9e57-2e9f396a3ee4', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}]], 'interrupts': []}} - - - - Receiving new event of type: debug... - {'type': 'checkpoint', 'timestamp': '2024-08-28T23:16:28.584991+00:00', 'step': 1, 'payload': {'config': {'tags': [], 'metadata': {'created_by': 'system', 'run_id': '1ef65938-d7c7-68db-b786-011aa1cb3cd2', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'be4fd54d-ff22-4e9e-8876-d5cccc0e8048', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca'}, 'callbacks': [None], 'recursion_limit': 25, 'configurable': {'run_id': '1ef65938-d7c7-68db-b786-011aa1cb3cd2', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'be4fd54d-ff22-4e9e-8876-d5cccc0e8048', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca', 'checkpoint_id': '1ef65938-dd3f-616f-8001-ce1c6f31e130', 'checkpoint_ns': ''}, 'run_id': '1ef65938-d7c7-68db-b786-011aa1cb3cd2'}, 'values': {'messages': [{'content': "What's the weather in SF?", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': '4123a12c-46cb-4815-bdcc-32537af0cb5b', 'example': False}, {'content': 'Current weather in San Francisco', 'additional_kwargs': {}, 'response_metadata': {'finish_reason': 'stop', 'model_name': 'gpt-4o-2024-05-13', 'system_fingerprint': 'fp_a2ff031fb5'}, 'type': 'ai', 'name': None, 'id': 'run-0407bff9-3692-4ab5-9e57-2e9f396a3ee4', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}], 'search_results': []}, 'metadata': {'source': 'loop', 'writes': {'call_model': {'messages': {'content': 'Current weather in San Francisco', 'additional_kwargs': {}, 'response_metadata': {'finish_reason': 'stop', 'model_name': 'gpt-4o-2024-05-13', 'system_fingerprint': 'fp_a2ff031fb5'}, 'type': 'ai', 'name': None, 'id': 'run-0407bff9-3692-4ab5-9e57-2e9f396a3ee4', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}}}, 'step': 1}, 'next': ['exa_search', 'tavily_search'], 'tasks': [{'id': '43865935-be38-5f6e-8d38-d44ef369c278', 'name': 'exa_search', 'interrupts': []}, {'id': 'dc220677-2720-56c7-a524-caaff60fce2c', 'name': 'tavily_search', 'interrupts': []}]}} - - - - Receiving new event of type: debug... - {'type': 'task', 'timestamp': '2024-08-28T23:16:28.585219+00:00', 'step': 2, 'payload': {'id': '870b5854-2f84-533d-8e7d-87158ee948fc', 'name': 'exa_search', 'input': {'messages': [{'content': "What's the weather in SF?", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': '4123a12c-46cb-4815-bdcc-32537af0cb5b', 'example': False}, {'content': 'Current weather in San Francisco', 'additional_kwargs': {}, 'response_metadata': {'finish_reason': 'stop', 'model_name': 'gpt-4o-2024-05-13', 'system_fingerprint': 'fp_a2ff031fb5'}, 'type': 'ai', 'name': None, 'id': 'run-0407bff9-3692-4ab5-9e57-2e9f396a3ee4', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}], 'search_results': [], 'final_answer': None}, 'triggers': ['call_model']}} - - - - Receiving new event of type: debug... - {'type': 'task', 'timestamp': '2024-08-28T23:16:28.585219+00:00', 'step': 2, 'payload': {'id': '7589abfc-04df-58c6-8835-be172f84a7ff', 'name': 'tavily_search', 'input': {'messages': [{'content': "What's the weather in SF?", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': '4123a12c-46cb-4815-bdcc-32537af0cb5b', 'example': False}, {'content': 'Current weather in San Francisco', 'additional_kwargs': {}, 'response_metadata': {'finish_reason': 'stop', 'model_name': 'gpt-4o-2024-05-13', 'system_fingerprint': 'fp_a2ff031fb5'}, 'type': 'ai', 'name': None, 'id': 'run-0407bff9-3692-4ab5-9e57-2e9f396a3ee4', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}], 'search_results': [], 'final_answer': None}, 'triggers': ['call_model']}} - - - - Receiving new event of type: debug... - {'type': 'task_result', 'timestamp': '2024-08-28T23:16:32.422243+00:00', 'step': 2, 'payload': {'id': '7589abfc-04df-58c6-8835-be172f84a7ff', 'name': 'tavily_search', 'error': None, 'result': [['search_results', ["{'location': {'name': 'San Francisco', 'region': 'California', 'country': 'United States of America', 'lat': 37.78, 'lon': -122.42, 'tz_id': 'America/Los_Angeles', 'localtime_epoch': 1724886988, 'localtime': '2024-08-28 16:16'}, 'current': {'last_updated_epoch': 1724886900, 'last_updated': '2024-08-28 16:15', 'temp_c': 22.2, 'temp_f': 72.0, 'is_day': 1, 'condition': {'text': 'Partly cloudy', 'icon': '//cdn.weatherapi.com/weather/64x64/day/116.png', 'code': 1003}, 'wind_mph': 16.1, 'wind_kph': 25.9, 'wind_degree': 300, 'wind_dir': 'WNW', 'pressure_mb': 1013.0, 'pressure_in': 29.91, 'precip_mm': 0.0, 'precip_in': 0.0, 'humidity': 61, 'cloud': 25, 'feelslike_c': 24.6, 'feelslike_f': 76.4, 'windchill_c': 19.6, 'windchill_f': 67.2, 'heatindex_c': 19.7, 'heatindex_f': 67.4, 'dewpoint_c': 13.0, 'dewpoint_f': 55.5, 'vis_km': 16.0, 'vis_miles': 9.0, 'uv': 5.0, 'gust_mph': 18.7, 'gust_kph': 30.0}}"]]], 'interrupts': []}} - - - - Receiving new event of type: debug... - {'type': 'task_result', 'timestamp': '2024-08-28T23:16:34.750124+00:00', 'step': 2, 'payload': {'id': '870b5854-2f84-533d-8e7d-87158ee948fc', 'name': 'exa_search', 'error': None, 'result': [['search_results', ['The time period when the sun is no more than 6 degrees below the horizon at either sunrise or sunset. The horizon should be clearly defined and the brightest stars should be visible under good atmospheric conditions (i.e. no moonlight, or other lights). One still should be able to carry on ordinary outdoor activities. The time period when the sun is between 6 and 12 degrees below the horizon at either sunrise or sunset. The horizon is well defined and the outline of objects might be visible without artificial light. Ordinary outdoor activities are not possible at this time without extra illumination. The time period when the sun is between 12 and 18 degrees below the horizon at either sunrise or sunset. The sun does not contribute to the illumination of the sky before this time in the morning, or after this time in the evening. In the beginning of morning astronomical twilight and at the end of astronomical twilight in the evening, sky illumination is very faint, and might be undetectable. The time of Civil Sunset minus the time of Civil Sunrise. The time of Actual Sunset minus the time of Actual Sunrise. The change in length of daylight between today and tomorrow is also listed when available.']]], 'interrupts': []}} - - - - Receiving new event of type: debug... - {'type': 'checkpoint', 'timestamp': '2024-08-28T23:16:34.750266+00:00', 'step': 2, 'payload': {'config': {'tags': [], 'metadata': {'created_by': 'system', 'run_id': '1ef65938-d7c7-68db-b786-011aa1cb3cd2', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'be4fd54d-ff22-4e9e-8876-d5cccc0e8048', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca'}, 'callbacks': [None], 'recursion_limit': 25, 'configurable': {'run_id': '1ef65938-d7c7-68db-b786-011aa1cb3cd2', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'be4fd54d-ff22-4e9e-8876-d5cccc0e8048', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca', 'checkpoint_id': '1ef65939-180b-6087-8002-f969296f8e3d', 'checkpoint_ns': ''}, 'run_id': '1ef65938-d7c7-68db-b786-011aa1cb3cd2'}, 'values': {'messages': [{'content': "What's the weather in SF?", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': '4123a12c-46cb-4815-bdcc-32537af0cb5b', 'example': False}, {'content': 'Current weather in San Francisco', 'additional_kwargs': {}, 'response_metadata': {'finish_reason': 'stop', 'model_name': 'gpt-4o-2024-05-13', 'system_fingerprint': 'fp_a2ff031fb5'}, 'type': 'ai', 'name': None, 'id': 'run-0407bff9-3692-4ab5-9e57-2e9f396a3ee4', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}], 'search_results': ['The time period when the sun is no more than 6 degrees below the horizon at either sunrise or sunset. The horizon should be clearly defined and the brightest stars should be visible under good atmospheric conditions (i.e. no moonlight, or other lights). One still should be able to carry on ordinary outdoor activities. The time period when the sun is between 6 and 12 degrees below the horizon at either sunrise or sunset. The horizon is well defined and the outline of objects might be visible without artificial light. Ordinary outdoor activities are not possible at this time without extra illumination. The time period when the sun is between 12 and 18 degrees below the horizon at either sunrise or sunset. The sun does not contribute to the illumination of the sky before this time in the morning, or after this time in the evening. In the beginning of morning astronomical twilight and at the end of astronomical twilight in the evening, sky illumination is very faint, and might be undetectable. The time of Civil Sunset minus the time of Civil Sunrise. The time of Actual Sunset minus the time of Actual Sunrise. The change in length of daylight between today and tomorrow is also listed when available.', "{'location': {'name': 'San Francisco', 'region': 'California', 'country': 'United States of America', 'lat': 37.78, 'lon': -122.42, 'tz_id': 'America/Los_Angeles', 'localtime_epoch': 1724886988, 'localtime': '2024-08-28 16:16'}, 'current': {'last_updated_epoch': 1724886900, 'last_updated': '2024-08-28 16:15', 'temp_c': 22.2, 'temp_f': 72.0, 'is_day': 1, 'condition': {'text': 'Partly cloudy', 'icon': '//cdn.weatherapi.com/weather/64x64/day/116.png', 'code': 1003}, 'wind_mph': 16.1, 'wind_kph': 25.9, 'wind_degree': 300, 'wind_dir': 'WNW', 'pressure_mb': 1013.0, 'pressure_in': 29.91, 'precip_mm': 0.0, 'precip_in': 0.0, 'humidity': 61, 'cloud': 25, 'feelslike_c': 24.6, 'feelslike_f': 76.4, 'windchill_c': 19.6, 'windchill_f': 67.2, 'heatindex_c': 19.7, 'heatindex_f': 67.4, 'dewpoint_c': 13.0, 'dewpoint_f': 55.5, 'vis_km': 16.0, 'vis_miles': 9.0, 'uv': 5.0, 'gust_mph': 18.7, 'gust_kph': 30.0}}"]}, 'metadata': {'source': 'loop', 'writes': {'exa_search': {'search_results': ['The time period when the sun is no more than 6 degrees below the horizon at either sunrise or sunset. The horizon should be clearly defined and the brightest stars should be visible under good atmospheric conditions (i.e. no moonlight, or other lights). One still should be able to carry on ordinary outdoor activities. The time period when the sun is between 6 and 12 degrees below the horizon at either sunrise or sunset. The horizon is well defined and the outline of objects might be visible without artificial light. Ordinary outdoor activities are not possible at this time without extra illumination. The time period when the sun is between 12 and 18 degrees below the horizon at either sunrise or sunset. The sun does not contribute to the illumination of the sky before this time in the morning, or after this time in the evening. In the beginning of morning astronomical twilight and at the end of astronomical twilight in the evening, sky illumination is very faint, and might be undetectable. The time of Civil Sunset minus the time of Civil Sunrise. The time of Actual Sunset minus the time of Actual Sunrise. The change in length of daylight between today and tomorrow is also listed when available.']}, 'tavily_search': {'search_results': ["{'location': {'name': 'San Francisco', 'region': 'California', 'country': 'United States of America', 'lat': 37.78, 'lon': -122.42, 'tz_id': 'America/Los_Angeles', 'localtime_epoch': 1724886988, 'localtime': '2024-08-28 16:16'}, 'current': {'last_updated_epoch': 1724886900, 'last_updated': '2024-08-28 16:15', 'temp_c': 22.2, 'temp_f': 72.0, 'is_day': 1, 'condition': {'text': 'Partly cloudy', 'icon': '//cdn.weatherapi.com/weather/64x64/day/116.png', 'code': 1003}, 'wind_mph': 16.1, 'wind_kph': 25.9, 'wind_degree': 300, 'wind_dir': 'WNW', 'pressure_mb': 1013.0, 'pressure_in': 29.91, 'precip_mm': 0.0, 'precip_in': 0.0, 'humidity': 61, 'cloud': 25, 'feelslike_c': 24.6, 'feelslike_f': 76.4, 'windchill_c': 19.6, 'windchill_f': 67.2, 'heatindex_c': 19.7, 'heatindex_f': 67.4, 'dewpoint_c': 13.0, 'dewpoint_f': 55.5, 'vis_km': 16.0, 'vis_miles': 9.0, 'uv': 5.0, 'gust_mph': 18.7, 'gust_kph': 30.0}}"]}}, 'step': 2}, 'next': ['summarize_search_results'], 'tasks': [{'id': '7263c738-516d-5708-b318-2c8ef54d4a33', 'name': 'summarize_search_results', 'interrupts': []}]}} - - - - Receiving new event of type: debug... - {'type': 'task', 'timestamp': '2024-08-28T23:16:34.750394+00:00', 'step': 3, 'payload': {'id': '5beaa05d-57d4-5acd-95c1-c7093990910f', 'name': 'summarize_search_results', 'input': {'messages': [{'content': "What's the weather in SF?", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': '4123a12c-46cb-4815-bdcc-32537af0cb5b', 'example': False}, {'content': 'Current weather in San Francisco', 'additional_kwargs': {}, 'response_metadata': {'finish_reason': 'stop', 'model_name': 'gpt-4o-2024-05-13', 'system_fingerprint': 'fp_a2ff031fb5'}, 'type': 'ai', 'name': None, 'id': 'run-0407bff9-3692-4ab5-9e57-2e9f396a3ee4', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}], 'search_results': ['The time period when the sun is no more than 6 degrees below the horizon at either sunrise or sunset. The horizon should be clearly defined and the brightest stars should be visible under good atmospheric conditions (i.e. no moonlight, or other lights). One still should be able to carry on ordinary outdoor activities. The time period when the sun is between 6 and 12 degrees below the horizon at either sunrise or sunset. The horizon is well defined and the outline of objects might be visible without artificial light. Ordinary outdoor activities are not possible at this time without extra illumination. The time period when the sun is between 12 and 18 degrees below the horizon at either sunrise or sunset. The sun does not contribute to the illumination of the sky before this time in the morning, or after this time in the evening. In the beginning of morning astronomical twilight and at the end of astronomical twilight in the evening, sky illumination is very faint, and might be undetectable. The time of Civil Sunset minus the time of Civil Sunrise. The time of Actual Sunset minus the time of Actual Sunrise. The change in length of daylight between today and tomorrow is also listed when available.', "{'location': {'name': 'San Francisco', 'region': 'California', 'country': 'United States of America', 'lat': 37.78, 'lon': -122.42, 'tz_id': 'America/Los_Angeles', 'localtime_epoch': 1724886988, 'localtime': '2024-08-28 16:16'}, 'current': {'last_updated_epoch': 1724886900, 'last_updated': '2024-08-28 16:15', 'temp_c': 22.2, 'temp_f': 72.0, 'is_day': 1, 'condition': {'text': 'Partly cloudy', 'icon': '//cdn.weatherapi.com/weather/64x64/day/116.png', 'code': 1003}, 'wind_mph': 16.1, 'wind_kph': 25.9, 'wind_degree': 300, 'wind_dir': 'WNW', 'pressure_mb': 1013.0, 'pressure_in': 29.91, 'precip_mm': 0.0, 'precip_in': 0.0, 'humidity': 61, 'cloud': 25, 'feelslike_c': 24.6, 'feelslike_f': 76.4, 'windchill_c': 19.6, 'windchill_f': 67.2, 'heatindex_c': 19.7, 'heatindex_f': 67.4, 'dewpoint_c': 13.0, 'dewpoint_f': 55.5, 'vis_km': 16.0, 'vis_miles': 9.0, 'uv': 5.0, 'gust_mph': 18.7, 'gust_kph': 30.0}}"], 'final_answer': None}, 'triggers': ['exa_search', 'tavily_search']}} - - - - Receiving new event of type: debug... - {'type': 'task_result', 'timestamp': '2024-08-28T23:16:35.851058+00:00', 'step': 3, 'payload': {'id': '5beaa05d-57d4-5acd-95c1-c7093990910f', 'name': 'summarize_search_results', 'error': None, 'result': [['final_answer', {'content': "The provided data details various twilight periods based on the sun's position relative to the horizon, alongside current weather information for San Francisco, California, as of August 28, 2024. The weather is partly cloudy with a temperature of 22.2°C (72.0°F), moderate wind from the WNW at 16.1 mph, and the UV index is 5.", 'additional_kwargs': {}, 'response_metadata': {'finish_reason': 'stop', 'model_name': 'gpt-4o-2024-05-13', 'system_fingerprint': 'fp_157b3831f5'}, 'type': 'ai', 'name': None, 'id': 'run-928c997b-9d85-4664-bd20-97ade4cc655e', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}]], 'interrupts': []}} - - - - Receiving new event of type: debug... - {'type': 'checkpoint', 'timestamp': '2024-08-28T23:16:35.851194+00:00', 'step': 3, 'payload': {'config': {'tags': [], 'metadata': {'created_by': 'system', 'run_id': '1ef65938-d7c7-68db-b786-011aa1cb3cd2', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'be4fd54d-ff22-4e9e-8876-d5cccc0e8048', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca'}, 'callbacks': [None], 'recursion_limit': 25, 'configurable': {'run_id': '1ef65938-d7c7-68db-b786-011aa1cb3cd2', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'be4fd54d-ff22-4e9e-8876-d5cccc0e8048', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca', 'checkpoint_id': '1ef65939-228a-6d93-8003-8b06d7483024', 'checkpoint_ns': ''}, 'run_id': '1ef65938-d7c7-68db-b786-011aa1cb3cd2'}, 'values': {'messages': [{'content': "What's the weather in SF?", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': '4123a12c-46cb-4815-bdcc-32537af0cb5b', 'example': False}, {'content': 'Current weather in San Francisco', 'additional_kwargs': {}, 'response_metadata': {'finish_reason': 'stop', 'model_name': 'gpt-4o-2024-05-13', 'system_fingerprint': 'fp_a2ff031fb5'}, 'type': 'ai', 'name': None, 'id': 'run-0407bff9-3692-4ab5-9e57-2e9f396a3ee4', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}], 'search_results': ['The time period when the sun is no more than 6 degrees below the horizon at either sunrise or sunset. The horizon should be clearly defined and the brightest stars should be visible under good atmospheric conditions (i.e. no moonlight, or other lights). One still should be able to carry on ordinary outdoor activities. The time period when the sun is between 6 and 12 degrees below the horizon at either sunrise or sunset. The horizon is well defined and the outline of objects might be visible without artificial light. Ordinary outdoor activities are not possible at this time without extra illumination. The time period when the sun is between 12 and 18 degrees below the horizon at either sunrise or sunset. The sun does not contribute to the illumination of the sky before this time in the morning, or after this time in the evening. In the beginning of morning astronomical twilight and at the end of astronomical twilight in the evening, sky illumination is very faint, and might be undetectable. The time of Civil Sunset minus the time of Civil Sunrise. The time of Actual Sunset minus the time of Actual Sunrise. The change in length of daylight between today and tomorrow is also listed when available.', "{'location': {'name': 'San Francisco', 'region': 'California', 'country': 'United States of America', 'lat': 37.78, 'lon': -122.42, 'tz_id': 'America/Los_Angeles', 'localtime_epoch': 1724886988, 'localtime': '2024-08-28 16:16'}, 'current': {'last_updated_epoch': 1724886900, 'last_updated': '2024-08-28 16:15', 'temp_c': 22.2, 'temp_f': 72.0, 'is_day': 1, 'condition': {'text': 'Partly cloudy', 'icon': '//cdn.weatherapi.com/weather/64x64/day/116.png', 'code': 1003}, 'wind_mph': 16.1, 'wind_kph': 25.9, 'wind_degree': 300, 'wind_dir': 'WNW', 'pressure_mb': 1013.0, 'pressure_in': 29.91, 'precip_mm': 0.0, 'precip_in': 0.0, 'humidity': 61, 'cloud': 25, 'feelslike_c': 24.6, 'feelslike_f': 76.4, 'windchill_c': 19.6, 'windchill_f': 67.2, 'heatindex_c': 19.7, 'heatindex_f': 67.4, 'dewpoint_c': 13.0, 'dewpoint_f': 55.5, 'vis_km': 16.0, 'vis_miles': 9.0, 'uv': 5.0, 'gust_mph': 18.7, 'gust_kph': 30.0}}"], 'final_answer': {'content': "The provided data details various twilight periods based on the sun's position relative to the horizon, alongside current weather information for San Francisco, California, as of August 28, 2024. The weather is partly cloudy with a temperature of 22.2°C (72.0°F), moderate wind from the WNW at 16.1 mph, and the UV index is 5.", 'additional_kwargs': {}, 'response_metadata': {'finish_reason': 'stop', 'model_name': 'gpt-4o-2024-05-13', 'system_fingerprint': 'fp_157b3831f5'}, 'type': 'ai', 'name': None, 'id': 'run-928c997b-9d85-4664-bd20-97ade4cc655e', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}}, 'metadata': {'source': 'loop', 'writes': {'summarize_search_results': {'final_answer': {'content': "The provided data details various twilight periods based on the sun's position relative to the horizon, alongside current weather information for San Francisco, California, as of August 28, 2024. The weather is partly cloudy with a temperature of 22.2°C (72.0°F), moderate wind from the WNW at 16.1 mph, and the UV index is 5.", 'additional_kwargs': {}, 'response_metadata': {'finish_reason': 'stop', 'model_name': 'gpt-4o-2024-05-13', 'system_fingerprint': 'fp_157b3831f5'}, 'type': 'ai', 'name': None, 'id': 'run-928c997b-9d85-4664-bd20-97ade4cc655e', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}}}, 'step': 3}, 'next': [], 'tasks': []}} - - - -We see that our debug events start with two `checkpoint` events at step 0 and 1, which represent checkpointing before the graph is created and after it has been created. We then see a single `task` and corresponding `task_result` which corresponds to our first node, `call_model`, being triggered. After it has finished, the entire super-step is over so the graph saves another checkpoint and we see the corresponding `checkpoint` event. - -The next super-step executed two search nodes [in parallel](https://langchain-ai.github.io/langgraph/how-tos/branching/) - specifically one node will execute an Exa search, while the other will use Tavily. Executing these nodes in parallel in the same super-step creates 2 `task` events and two corresponding `task_result` events. After we receive both of those `task_result` events, we see another `checkpoint` event as we would expect. - -Lastly, we see a final `task` and `task_result` pair corresponding to the `summarize_search_results` node, which is the last node in our graph. As soon as this super-step is done we see one final `checkpoint` event corresponding to the final checkpoint of this run. - - diff --git a/docs/docs/cloud/how-tos/stream_events.md b/docs/docs/cloud/how-tos/stream_events.md deleted file mode 100644 index 83898a049..000000000 --- a/docs/docs/cloud/how-tos/stream_events.md +++ /dev/null @@ -1,295 +0,0 @@ -# How to stream events - -!!! info "Prerequisites" - * [Streaming](../../concepts/streaming.md#streaming-graph-outputs-stream-and-astream) - -This guide covers how to stream events from your graph (`stream_mode="events"`). Depending on the use case and user experience of your LangGraph application, your application may process event types differently. - -## Setup - -=== "Python" - - ```python - from langgraph_sdk import get_client - - client = get_client(url=) - # Using the graph deployed with the name "agent" - assistant_id = "agent" - # create thread - thread = await client.threads.create() - print(thread) - ``` - -=== "Javascript" - - ```js - import { Client } from "@langchain/langgraph-sdk"; - - const client = new Client({ apiUrl: }); - // Using the graph deployed with the name "agent" - const assistantID = "agent"; - // create thread - const thread = await client.threads.create(); - console.log(thread); - ``` - -=== "CURL" - - ```bash - curl --request POST \ - --url /threads \ - --header 'Content-Type: application/json' \ - --data '{}' - ``` - -Output: - - - { - 'thread_id': '3f4c64e0-f792-4a5e-aa07-a4404e06e0bd', - 'created_at': '2024-06-24T22:16:29.301522+00:00', - 'updated_at': '2024-06-24T22:16:29.301522+00:00', - 'metadata': {}, - 'status': 'idle', - 'config': {}, - 'values': None - } - -## Stream graph in events mode - -Streaming events produces responses containing an `event` key (in addition to other keys such as `data`). See the LangChain [`Runnable.astream_events()` reference](https://api.python.langchain.com/en/latest/runnables/langchain_core.runnables.base.Runnable.html#langchain_core.runnables.base.Runnable.astream_events) for all event types. - - -=== "Python" - - ```python - # create input - input = { - "messages": [ - { - "role": "user", - "content": "What's the weather in SF?", - } - ] - } - - # stream events - async for chunk in client.runs.stream( - thread_id=thread["thread_id"], - assistant_id=assistant_id, - input=input, - stream_mode="events", - ): - print(f"Receiving new event of type: {chunk.event}...") - print(chunk.data) - print("\n\n") - ``` - -=== "Javascript" - - ```js - // create input - const input = { - "messages": [ - { - "role": "user", - "content": "What's the weather in SF?", - } - ] - } - - // stream events - const streamResponse = client.runs.stream( - thread["thread_id"], - assistantID, - { - input, - streamMode: "events" - } - ); - for await (const chunk of streamResponse) { - console.log(`Receiving new event of type: ${chunk.event}...`); - console.log(chunk.data); - console.log("\n\n"); - } - ``` - -=== "CURL" - - ```bash - curl --request POST \ - --url /threads//runs/stream \ - --header 'Content-Type: application/json' \ - --data "{ - \"assistant_id\": \"agent\", - \"input\": {\"messages\": [{\"role\": \"human\", \"content\": \"What's the weather in sf\"}]}, - \"stream_mode\": [ - \"events\" - ] - }" | \ - sed 's/\r$//' | \ - awk ' - /^event:/ { - if (data_content != "") { - print data_content "\n" - } - sub(/^event: /, "Receiving event of type: ", $0) - printf "%s...\n", $0 - data_content = "" - } - /^data:/ { - sub(/^data: /, "", $0) - data_content = $0 - } - END { - if (data_content != "") { - print data_content "\n" - } - } - ' - ``` - -Output: - - Receiving new event of type: metadata... - {'run_id': '1ef301a5-b867-67de-9e9e-a32e53c5b1f8'} - - - - Receiving new event of type: events... - {'event': 'on_chain_start', 'data': {'input': {'messages': [{'role': 'human', 'content': "What's the weather in SF?"}]}}, 'name': 'LangGraph', 'tags': [], 'run_id': '1ef301a5-b867-67de-9e9e-a32e53c5b1f8', 'metadata': {'graph_id': 'agent', 'created_by': 'system', 'run_id': '1ef301a5-b867-67de-9e9e-a32e53c5b1f8', 'user_id': '', 'thread_id': '7196a3aa-763c-4a8d-bfda-12fbfe1cd727', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca'}, 'parent_ids': []} - - - - Receiving new event of type: events... - {'event': 'on_chain_start', 'data': {}, 'name': 'agent', 'tags': ['graph:step:6'], 'run_id': '7bb08493-d507-4e28-b9e6-4a5eda9d04f0', 'metadata': {'graph_id': 'agent', 'created_by': 'system', 'run_id': '1ef301a5-b867-67de-9e9e-a32e53c5b1f8', 'user_id': '', 'thread_id': '7196a3aa-763c-4a8d-bfda-12fbfe1cd727', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca', 'langgraph_step': 6, 'langgraph_node': 'agent', 'langgraph_triggers': ['start:agent'], 'langgraph_task_idx': 0}, 'parent_ids': ['1ef301a5-b867-67de-9e9e-a32e53c5b1f8']} - - - - Receiving new event of type: events... - {'event': 'on_chat_model_start', 'data': {'input': {'messages': [[{'content': "What's the weather in SF?", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': '51f2874d-f8c7-4040-8b3b-8f15429a56ae', 'example': False}, {'content': 'begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-5f556aa0-26ea-42e2-b9e4-7ece3a00974e', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}, {'content': 'tool_call__begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'tool', 'name': None, 'id': '1faf5dd0-ae97-4235-963f-5075083a027a', 'tool_call_id': 'tool_call_id'}, {'content': 'end', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-ae383611-6a42-475a-912a-09d5972e9e94', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}, {'content': "What's the weather in SF?", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': 'c67e08e6-e7af-4c4a-aa5e-50c8340ae341', 'example': False}]]}}, 'name': 'FakeListChatModel', 'tags': ['seq:step:1'], 'run_id': 'cb1b98c1-c9e2-4a30-9d7a-38fa1f6224bd', 'metadata': {'graph_id': 'agent', 'created_by': 'system', 'run_id': '1ef301a5-b867-67de-9e9e-a32e53c5b1f8', 'user_id': '', 'thread_id': '7196a3aa-763c-4a8d-bfda-12fbfe1cd727', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca', 'langgraph_step': 6, 'langgraph_node': 'agent', 'langgraph_triggers': ['start:agent'], 'langgraph_task_idx': 0, 'ls_model_type': 'chat'}, 'parent_ids': ['1ef301a5-b867-67de-9e9e-a32e53c5b1f8', '7bb08493-d507-4e28-b9e6-4a5eda9d04f0']} - - - - Receiving new event of type: events... - {'event': 'on_chat_model_stream', 'data': {'chunk': {'content': 'b', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'AIMessageChunk', 'name': None, 'id': 'run-cb1b98c1-c9e2-4a30-9d7a-38fa1f6224bd', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None, 'tool_call_chunks': []}}, 'run_id': 'cb1b98c1-c9e2-4a30-9d7a-38fa1f6224bd', 'name': 'FakeListChatModel', 'tags': ['seq:step:1'], 'metadata': {'graph_id': 'agent', 'created_by': 'system', 'run_id': '1ef301a5-b867-67de-9e9e-a32e53c5b1f8', 'user_id': '', 'thread_id': '7196a3aa-763c-4a8d-bfda-12fbfe1cd727', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca', 'langgraph_step': 6, 'langgraph_node': 'agent', 'langgraph_triggers': ['start:agent'], 'langgraph_task_idx': 0, 'ls_model_type': 'chat'}, 'parent_ids': ['1ef301a5-b867-67de-9e9e-a32e53c5b1f8', '7bb08493-d507-4e28-b9e6-4a5eda9d04f0']} - - - - Receiving new event of type: events... - {'event': 'on_chat_model_stream', 'data': {'chunk': {'content': 'e', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'AIMessageChunk', 'name': None, 'id': 'run-cb1b98c1-c9e2-4a30-9d7a-38fa1f6224bd', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None, 'tool_call_chunks': []}}, 'run_id': 'cb1b98c1-c9e2-4a30-9d7a-38fa1f6224bd', 'name': 'FakeListChatModel', 'tags': ['seq:step:1'], 'metadata': {'graph_id': 'agent', 'created_by': 'system', 'run_id': '1ef301a5-b867-67de-9e9e-a32e53c5b1f8', 'user_id': '', 'thread_id': '7196a3aa-763c-4a8d-bfda-12fbfe1cd727', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca', 'langgraph_step': 6, 'langgraph_node': 'agent', 'langgraph_triggers': ['start:agent'], 'langgraph_task_idx': 0, 'ls_model_type': 'chat'}, 'parent_ids': ['1ef301a5-b867-67de-9e9e-a32e53c5b1f8', '7bb08493-d507-4e28-b9e6-4a5eda9d04f0']} - - - - Receiving new event of type: events... - {'event': 'on_chat_model_stream', 'data': {'chunk': {'content': 'g', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'AIMessageChunk', 'name': None, 'id': 'run-cb1b98c1-c9e2-4a30-9d7a-38fa1f6224bd', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None, 'tool_call_chunks': []}}, 'run_id': 'cb1b98c1-c9e2-4a30-9d7a-38fa1f6224bd', 'name': 'FakeListChatModel', 'tags': ['seq:step:1'], 'metadata': {'graph_id': 'agent', 'created_by': 'system', 'run_id': '1ef301a5-b867-67de-9e9e-a32e53c5b1f8', 'user_id': '', 'thread_id': '7196a3aa-763c-4a8d-bfda-12fbfe1cd727', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca', 'langgraph_step': 6, 'langgraph_node': 'agent', 'langgraph_triggers': ['start:agent'], 'langgraph_task_idx': 0, 'ls_model_type': 'chat'}, 'parent_ids': ['1ef301a5-b867-67de-9e9e-a32e53c5b1f8', '7bb08493-d507-4e28-b9e6-4a5eda9d04f0']} - - - - Receiving new event of type: events... - {'event': 'on_chat_model_stream', 'data': {'chunk': {'content': 'i', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'AIMessageChunk', 'name': None, 'id': 'run-cb1b98c1-c9e2-4a30-9d7a-38fa1f6224bd', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None, 'tool_call_chunks': []}}, 'run_id': 'cb1b98c1-c9e2-4a30-9d7a-38fa1f6224bd', 'name': 'FakeListChatModel', 'tags': ['seq:step:1'], 'metadata': {'graph_id': 'agent', 'created_by': 'system', 'run_id': '1ef301a5-b867-67de-9e9e-a32e53c5b1f8', 'user_id': '', 'thread_id': '7196a3aa-763c-4a8d-bfda-12fbfe1cd727', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca', 'langgraph_step': 6, 'langgraph_node': 'agent', 'langgraph_triggers': ['start:agent'], 'langgraph_task_idx': 0, 'ls_model_type': 'chat'}, 'parent_ids': ['1ef301a5-b867-67de-9e9e-a32e53c5b1f8', '7bb08493-d507-4e28-b9e6-4a5eda9d04f0']} - - - - Receiving new event of type: events... - {'event': 'on_chat_model_stream', 'data': {'chunk': {'content': 'n', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'AIMessageChunk', 'name': None, 'id': 'run-cb1b98c1-c9e2-4a30-9d7a-38fa1f6224bd', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None, 'tool_call_chunks': []}}, 'run_id': 'cb1b98c1-c9e2-4a30-9d7a-38fa1f6224bd', 'name': 'FakeListChatModel', 'tags': ['seq:step:1'], 'metadata': {'graph_id': 'agent', 'created_by': 'system', 'run_id': '1ef301a5-b867-67de-9e9e-a32e53c5b1f8', 'user_id': '', 'thread_id': '7196a3aa-763c-4a8d-bfda-12fbfe1cd727', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca', 'langgraph_step': 6, 'langgraph_node': 'agent', 'langgraph_triggers': ['start:agent'], 'langgraph_task_idx': 0, 'ls_model_type': 'chat'}, 'parent_ids': ['1ef301a5-b867-67de-9e9e-a32e53c5b1f8', '7bb08493-d507-4e28-b9e6-4a5eda9d04f0']} - - - - Receiving new event of type: events... - {'event': 'on_chat_model_end', 'data': {'output': {'content': 'begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-cb1b98c1-c9e2-4a30-9d7a-38fa1f6224bd', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}, 'input': {'messages': [[{'content': "What's the weather in SF?", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': '51f2874d-f8c7-4040-8b3b-8f15429a56ae', 'example': False}, {'content': 'begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-5f556aa0-26ea-42e2-b9e4-7ece3a00974e', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}, {'content': 'tool_call__begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'tool', 'name': None, 'id': '1faf5dd0-ae97-4235-963f-5075083a027a', 'tool_call_id': 'tool_call_id'}, {'content': 'end', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-ae383611-6a42-475a-912a-09d5972e9e94', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}, {'content': "What's the weather in SF?", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': 'c67e08e6-e7af-4c4a-aa5e-50c8340ae341', 'example': False}]]}}, 'run_id': 'cb1b98c1-c9e2-4a30-9d7a-38fa1f6224bd', 'name': 'FakeListChatModel', 'tags': ['seq:step:1'], 'metadata': {'graph_id': 'agent', 'created_by': 'system', 'run_id': '1ef301a5-b867-67de-9e9e-a32e53c5b1f8', 'user_id': '', 'thread_id': '7196a3aa-763c-4a8d-bfda-12fbfe1cd727', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca', 'langgraph_step': 6, 'langgraph_node': 'agent', 'langgraph_triggers': ['start:agent'], 'langgraph_task_idx': 0, 'ls_model_type': 'chat'}, 'parent_ids': ['1ef301a5-b867-67de-9e9e-a32e53c5b1f8', '7bb08493-d507-4e28-b9e6-4a5eda9d04f0']} - - - - Receiving new event of type: events... - {'event': 'on_chain_start', 'data': {'input': {'messages': [{'content': "What's the weather in SF?", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': '51f2874d-f8c7-4040-8b3b-8f15429a56ae', 'example': False}, {'content': 'begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-5f556aa0-26ea-42e2-b9e4-7ece3a00974e', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}, {'content': 'tool_call__begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'tool', 'name': None, 'id': '1faf5dd0-ae97-4235-963f-5075083a027a', 'tool_call_id': 'tool_call_id'}, {'content': 'end', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-ae383611-6a42-475a-912a-09d5972e9e94', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}, {'content': "What's the weather in SF?", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': 'c67e08e6-e7af-4c4a-aa5e-50c8340ae341', 'example': False}, {'content': 'begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-cb1b98c1-c9e2-4a30-9d7a-38fa1f6224bd', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}], 'some_bytes': 'c29tZV9ieXRlcw==', 'some_byte_array': 'c29tZV9ieXRlX2FycmF5', 'dict_with_bytes': {'more_bytes': 'bW9yZV9ieXRlcw=='}}}, 'name': 'should_continue', 'tags': ['seq:step:3'], 'run_id': 'c7fe4d2d-3fb8-4e53-946d-03de13527853', 'metadata': {'graph_id': 'agent', 'created_by': 'system', 'run_id': '1ef301a5-b867-67de-9e9e-a32e53c5b1f8', 'user_id': '', 'thread_id': '7196a3aa-763c-4a8d-bfda-12fbfe1cd727', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca', 'langgraph_step': 6, 'langgraph_node': 'agent', 'langgraph_triggers': ['start:agent'], 'langgraph_task_idx': 0}, 'parent_ids': ['1ef301a5-b867-67de-9e9e-a32e53c5b1f8', '7bb08493-d507-4e28-b9e6-4a5eda9d04f0']} - - - - Receiving new event of type: events... - {'event': 'on_chain_end', 'data': {'output': 'tool', 'input': {'messages': [{'content': "What's the weather in SF?", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': '51f2874d-f8c7-4040-8b3b-8f15429a56ae', 'example': False}, {'content': 'begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-5f556aa0-26ea-42e2-b9e4-7ece3a00974e', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}, {'content': 'tool_call__begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'tool', 'name': None, 'id': '1faf5dd0-ae97-4235-963f-5075083a027a', 'tool_call_id': 'tool_call_id'}, {'content': 'end', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-ae383611-6a42-475a-912a-09d5972e9e94', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}, {'content': "What's the weather in SF?", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': 'c67e08e6-e7af-4c4a-aa5e-50c8340ae341', 'example': False}, {'content': 'begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-cb1b98c1-c9e2-4a30-9d7a-38fa1f6224bd', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}], 'some_bytes': 'c29tZV9ieXRlcw==', 'some_byte_array': 'c29tZV9ieXRlX2FycmF5', 'dict_with_bytes': {'more_bytes': 'bW9yZV9ieXRlcw=='}}}, 'run_id': 'c7fe4d2d-3fb8-4e53-946d-03de13527853', 'name': 'should_continue', 'tags': ['seq:step:3'], 'metadata': {'graph_id': 'agent', 'created_by': 'system', 'run_id': '1ef301a5-b867-67de-9e9e-a32e53c5b1f8', 'user_id': '', 'thread_id': '7196a3aa-763c-4a8d-bfda-12fbfe1cd727', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca', 'langgraph_step': 6, 'langgraph_node': 'agent', 'langgraph_triggers': ['start:agent'], 'langgraph_task_idx': 0}, 'parent_ids': ['1ef301a5-b867-67de-9e9e-a32e53c5b1f8', '7bb08493-d507-4e28-b9e6-4a5eda9d04f0']} - - - - Receiving new event of type: events... - {'event': 'on_chain_stream', 'run_id': '7bb08493-d507-4e28-b9e6-4a5eda9d04f0', 'name': 'agent', 'tags': ['graph:step:6'], 'metadata': {'graph_id': 'agent', 'created_by': 'system', 'run_id': '1ef301a5-b867-67de-9e9e-a32e53c5b1f8', 'user_id': '', 'thread_id': '7196a3aa-763c-4a8d-bfda-12fbfe1cd727', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca', 'langgraph_step': 6, 'langgraph_node': 'agent', 'langgraph_triggers': ['start:agent'], 'langgraph_task_idx': 0}, 'data': {'chunk': {'messages': [{'content': 'begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-cb1b98c1-c9e2-4a30-9d7a-38fa1f6224bd', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}], 'some_bytes': 'c29tZV9ieXRlcw==', 'some_byte_array': 'c29tZV9ieXRlX2FycmF5', 'dict_with_bytes': {'more_bytes': 'bW9yZV9ieXRlcw=='}}}, 'parent_ids': ['1ef301a5-b867-67de-9e9e-a32e53c5b1f8']} - - - - Receiving new event of type: events... - {'event': 'on_chain_end', 'data': {'output': {'messages': [{'content': 'begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-cb1b98c1-c9e2-4a30-9d7a-38fa1f6224bd', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}], 'some_bytes': 'c29tZV9ieXRlcw==', 'some_byte_array': 'c29tZV9ieXRlX2FycmF5', 'dict_with_bytes': {'more_bytes': 'bW9yZV9ieXRlcw=='}}, 'input': {'some_bytes': 'c29tZV9ieXRlcw==', 'some_byte_array': 'c29tZV9ieXRlX2FycmF5', 'dict_with_bytes': {'more_bytes': 'bW9yZV9ieXRlcw=='}, 'messages': [{'content': "What's the weather in SF?", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': '51f2874d-f8c7-4040-8b3b-8f15429a56ae', 'example': False}, {'content': 'begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-5f556aa0-26ea-42e2-b9e4-7ece3a00974e', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}, {'content': 'tool_call__begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'tool', 'name': None, 'id': '1faf5dd0-ae97-4235-963f-5075083a027a', 'tool_call_id': 'tool_call_id'}, {'content': 'end', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-ae383611-6a42-475a-912a-09d5972e9e94', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}, {'content': "What's the weather in SF?", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': 'c67e08e6-e7af-4c4a-aa5e-50c8340ae341', 'example': False}], 'sleep': None}}, 'run_id': '7bb08493-d507-4e28-b9e6-4a5eda9d04f0', 'name': 'agent', 'tags': ['graph:step:6'], 'metadata': {'graph_id': 'agent', 'created_by': 'system', 'run_id': '1ef301a5-b867-67de-9e9e-a32e53c5b1f8', 'user_id': '', 'thread_id': '7196a3aa-763c-4a8d-bfda-12fbfe1cd727', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca', 'langgraph_step': 6, 'langgraph_node': 'agent', 'langgraph_triggers': ['start:agent'], 'langgraph_task_idx': 0}, 'parent_ids': ['1ef301a5-b867-67de-9e9e-a32e53c5b1f8']} - - - - Receiving new event of type: events... - {'event': 'on_chain_start', 'data': {}, 'name': 'tool', 'tags': ['graph:step:7'], 'run_id': 'f044fd3d-7271-488f-b8aa-e01572ff9112', 'metadata': {'graph_id': 'agent', 'created_by': 'system', 'run_id': '1ef301a5-b867-67de-9e9e-a32e53c5b1f8', 'user_id': '', 'thread_id': '7196a3aa-763c-4a8d-bfda-12fbfe1cd727', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca', 'langgraph_step': 7, 'langgraph_node': 'tool', 'langgraph_triggers': ['branch:agent:should_continue:tool'], 'langgraph_task_idx': 0}, 'parent_ids': ['1ef301a5-b867-67de-9e9e-a32e53c5b1f8']} - - - - Receiving new event of type: events... - {'event': 'on_chain_stream', 'run_id': 'f044fd3d-7271-488f-b8aa-e01572ff9112', 'name': 'tool', 'tags': ['graph:step:7'], 'metadata': {'graph_id': 'agent', 'created_by': 'system', 'run_id': '1ef301a5-b867-67de-9e9e-a32e53c5b1f8', 'user_id': '', 'thread_id': '7196a3aa-763c-4a8d-bfda-12fbfe1cd727', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca', 'langgraph_step': 7, 'langgraph_node': 'tool', 'langgraph_triggers': ['branch:agent:should_continue:tool'], 'langgraph_task_idx': 0}, 'data': {'chunk': {'messages': [{'content': 'tool_call__begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'tool', 'name': None, 'id': None, 'tool_call_id': 'tool_call_id'}]}}, 'parent_ids': ['1ef301a5-b867-67de-9e9e-a32e53c5b1f8']} - - - - Receiving new event of type: events... - {'event': 'on_chain_end', 'data': {'output': {'messages': [{'content': 'tool_call__begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'tool', 'name': None, 'id': '1c9a16d2-5f0a-4eba-a0d2-240484a4ce7e', 'tool_call_id': 'tool_call_id'}]}, 'input': {'some_bytes': 'c29tZV9ieXRlcw==', 'some_byte_array': 'c29tZV9ieXRlX2FycmF5', 'dict_with_bytes': {'more_bytes': 'bW9yZV9ieXRlcw=='}, 'messages': [{'content': "What's the weather in SF?", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': '51f2874d-f8c7-4040-8b3b-8f15429a56ae', 'example': False}, {'content': 'begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-5f556aa0-26ea-42e2-b9e4-7ece3a00974e', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}, {'content': 'tool_call__begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'tool', 'name': None, 'id': '1faf5dd0-ae97-4235-963f-5075083a027a', 'tool_call_id': 'tool_call_id'}, {'content': 'end', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-ae383611-6a42-475a-912a-09d5972e9e94', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}, {'content': "What's the weather in SF?", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': 'c67e08e6-e7af-4c4a-aa5e-50c8340ae341', 'example': False}, {'content': 'begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-cb1b98c1-c9e2-4a30-9d7a-38fa1f6224bd', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}], 'sleep': None}}, 'run_id': 'f044fd3d-7271-488f-b8aa-e01572ff9112', 'name': 'tool', 'tags': ['graph:step:7'], 'metadata': {'graph_id': 'agent', 'created_by': 'system', 'run_id': '1ef301a5-b867-67de-9e9e-a32e53c5b1f8', 'user_id': '', 'thread_id': '7196a3aa-763c-4a8d-bfda-12fbfe1cd727', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca', 'langgraph_step': 7, 'langgraph_node': 'tool', 'langgraph_triggers': ['branch:agent:should_continue:tool'], 'langgraph_task_idx': 0}, 'parent_ids': ['1ef301a5-b867-67de-9e9e-a32e53c5b1f8']} - - - - Receiving new event of type: events... - {'event': 'on_chain_start', 'data': {}, 'name': 'agent', 'tags': ['graph:step:8'], 'run_id': '1f4f95d0-0ce1-4061-85d4-946446bbd3e5', 'metadata': {'graph_id': 'agent', 'created_by': 'system', 'run_id': '1ef301a5-b867-67de-9e9e-a32e53c5b1f8', 'user_id': '', 'thread_id': '7196a3aa-763c-4a8d-bfda-12fbfe1cd727', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca', 'langgraph_step': 8, 'langgraph_node': 'agent', 'langgraph_triggers': ['tool'], 'langgraph_task_idx': 0}, 'parent_ids': ['1ef301a5-b867-67de-9e9e-a32e53c5b1f8']} - - - - Receiving new event of type: events... - {'event': 'on_chat_model_start', 'data': {'input': {'messages': [[{'content': "What's the weather in SF?", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': '51f2874d-f8c7-4040-8b3b-8f15429a56ae', 'example': False}, {'content': 'begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-5f556aa0-26ea-42e2-b9e4-7ece3a00974e', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}, {'content': 'tool_call__begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'tool', 'name': None, 'id': '1faf5dd0-ae97-4235-963f-5075083a027a', 'tool_call_id': 'tool_call_id'}, {'content': 'end', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-ae383611-6a42-475a-912a-09d5972e9e94', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}, {'content': "What's the weather in SF?", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': 'c67e08e6-e7af-4c4a-aa5e-50c8340ae341', 'example': False}, {'content': 'begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-cb1b98c1-c9e2-4a30-9d7a-38fa1f6224bd', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}, {'content': 'tool_call__begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'tool', 'name': None, 'id': '1c9a16d2-5f0a-4eba-a0d2-240484a4ce7e', 'tool_call_id': 'tool_call_id'}]]}}, 'name': 'FakeListChatModel', 'tags': ['seq:step:1'], 'run_id': '028a68fb-6435-4b46-a156-c3326f73985c', 'metadata': {'graph_id': 'agent', 'created_by': 'system', 'run_id': '1ef301a5-b867-67de-9e9e-a32e53c5b1f8', 'user_id': '', 'thread_id': '7196a3aa-763c-4a8d-bfda-12fbfe1cd727', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca', 'langgraph_step': 8, 'langgraph_node': 'agent', 'langgraph_triggers': ['tool'], 'langgraph_task_idx': 0, 'ls_model_type': 'chat'}, 'parent_ids': ['1ef301a5-b867-67de-9e9e-a32e53c5b1f8', '1f4f95d0-0ce1-4061-85d4-946446bbd3e5']} - - - - Receiving new event of type: events... - {'event': 'on_chat_model_stream', 'data': {'chunk': {'content': 'e', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'AIMessageChunk', 'name': None, 'id': 'run-028a68fb-6435-4b46-a156-c3326f73985c', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None, 'tool_call_chunks': []}}, 'run_id': '028a68fb-6435-4b46-a156-c3326f73985c', 'name': 'FakeListChatModel', 'tags': ['seq:step:1'], 'metadata': {'graph_id': 'agent', 'created_by': 'system', 'run_id': '1ef301a5-b867-67de-9e9e-a32e53c5b1f8', 'user_id': '', 'thread_id': '7196a3aa-763c-4a8d-bfda-12fbfe1cd727', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca', 'langgraph_step': 8, 'langgraph_node': 'agent', 'langgraph_triggers': ['tool'], 'langgraph_task_idx': 0, 'ls_model_type': 'chat'}, 'parent_ids': ['1ef301a5-b867-67de-9e9e-a32e53c5b1f8', '1f4f95d0-0ce1-4061-85d4-946446bbd3e5']} - - - - Receiving new event of type: events... - {'event': 'on_chat_model_stream', 'data': {'chunk': {'content': 'n', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'AIMessageChunk', 'name': None, 'id': 'run-028a68fb-6435-4b46-a156-c3326f73985c', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None, 'tool_call_chunks': []}}, 'run_id': '028a68fb-6435-4b46-a156-c3326f73985c', 'name': 'FakeListChatModel', 'tags': ['seq:step:1'], 'metadata': {'graph_id': 'agent', 'created_by': 'system', 'run_id': '1ef301a5-b867-67de-9e9e-a32e53c5b1f8', 'user_id': '', 'thread_id': '7196a3aa-763c-4a8d-bfda-12fbfe1cd727', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca', 'langgraph_step': 8, 'langgraph_node': 'agent', 'langgraph_triggers': ['tool'], 'langgraph_task_idx': 0, 'ls_model_type': 'chat'}, 'parent_ids': ['1ef301a5-b867-67de-9e9e-a32e53c5b1f8', '1f4f95d0-0ce1-4061-85d4-946446bbd3e5']} - - - - Receiving new event of type: events... - {'event': 'on_chat_model_stream', 'data': {'chunk': {'content': 'd', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'AIMessageChunk', 'name': None, 'id': 'run-028a68fb-6435-4b46-a156-c3326f73985c', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None, 'tool_call_chunks': []}}, 'run_id': '028a68fb-6435-4b46-a156-c3326f73985c', 'name': 'FakeListChatModel', 'tags': ['seq:step:1'], 'metadata': {'graph_id': 'agent', 'created_by': 'system', 'run_id': '1ef301a5-b867-67de-9e9e-a32e53c5b1f8', 'user_id': '', 'thread_id': '7196a3aa-763c-4a8d-bfda-12fbfe1cd727', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca', 'langgraph_step': 8, 'langgraph_node': 'agent', 'langgraph_triggers': ['tool'], 'langgraph_task_idx': 0, 'ls_model_type': 'chat'}, 'parent_ids': ['1ef301a5-b867-67de-9e9e-a32e53c5b1f8', '1f4f95d0-0ce1-4061-85d4-946446bbd3e5']} - - - - Receiving new event of type: events... - {'event': 'on_chat_model_end', 'data': {'output': {'content': 'end', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-028a68fb-6435-4b46-a156-c3326f73985c', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}, 'input': {'messages': [[{'content': "What's the weather in SF?", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': '51f2874d-f8c7-4040-8b3b-8f15429a56ae', 'example': False}, {'content': 'begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-5f556aa0-26ea-42e2-b9e4-7ece3a00974e', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}, {'content': 'tool_call__begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'tool', 'name': None, 'id': '1faf5dd0-ae97-4235-963f-5075083a027a', 'tool_call_id': 'tool_call_id'}, {'content': 'end', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-ae383611-6a42-475a-912a-09d5972e9e94', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}, {'content': "What's the weather in SF?", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': 'c67e08e6-e7af-4c4a-aa5e-50c8340ae341', 'example': False}, {'content': 'begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-cb1b98c1-c9e2-4a30-9d7a-38fa1f6224bd', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}, {'content': 'tool_call__begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'tool', 'name': None, 'id': '1c9a16d2-5f0a-4eba-a0d2-240484a4ce7e', 'tool_call_id': 'tool_call_id'}]]}}, 'run_id': '028a68fb-6435-4b46-a156-c3326f73985c', 'name': 'FakeListChatModel', 'tags': ['seq:step:1'], 'metadata': {'graph_id': 'agent', 'created_by': 'system', 'run_id': '1ef301a5-b867-67de-9e9e-a32e53c5b1f8', 'user_id': '', 'thread_id': '7196a3aa-763c-4a8d-bfda-12fbfe1cd727', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca', 'langgraph_step': 8, 'langgraph_node': 'agent', 'langgraph_triggers': ['tool'], 'langgraph_task_idx': 0, 'ls_model_type': 'chat'}, 'parent_ids': ['1ef301a5-b867-67de-9e9e-a32e53c5b1f8', '1f4f95d0-0ce1-4061-85d4-946446bbd3e5']} - - - - Receiving new event of type: events... - {'event': 'on_chain_start', 'data': {'input': {'messages': [{'content': "What's the weather in SF?", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': '51f2874d-f8c7-4040-8b3b-8f15429a56ae', 'example': False}, {'content': 'begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-5f556aa0-26ea-42e2-b9e4-7ece3a00974e', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}, {'content': 'tool_call__begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'tool', 'name': None, 'id': '1faf5dd0-ae97-4235-963f-5075083a027a', 'tool_call_id': 'tool_call_id'}, {'content': 'end', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-ae383611-6a42-475a-912a-09d5972e9e94', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}, {'content': "What's the weather in SF?", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': 'c67e08e6-e7af-4c4a-aa5e-50c8340ae341', 'example': False}, {'content': 'begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-cb1b98c1-c9e2-4a30-9d7a-38fa1f6224bd', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}, {'content': 'tool_call__begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'tool', 'name': None, 'id': '1c9a16d2-5f0a-4eba-a0d2-240484a4ce7e', 'tool_call_id': 'tool_call_id'}, {'content': 'end', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-028a68fb-6435-4b46-a156-c3326f73985c', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}], 'some_bytes': 'c29tZV9ieXRlcw==', 'some_byte_array': 'c29tZV9ieXRlX2FycmF5', 'dict_with_bytes': {'more_bytes': 'bW9yZV9ieXRlcw=='}}}, 'name': 'should_continue', 'tags': ['seq:step:3'], 'run_id': 'f2b2dfaf-475d-422b-8bf5-02a31bcc7d1a', 'metadata': {'graph_id': 'agent', 'created_by': 'system', 'run_id': '1ef301a5-b867-67de-9e9e-a32e53c5b1f8', 'user_id': '', 'thread_id': '7196a3aa-763c-4a8d-bfda-12fbfe1cd727', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca', 'langgraph_step': 8, 'langgraph_node': 'agent', 'langgraph_triggers': ['tool'], 'langgraph_task_idx': 0}, 'parent_ids': ['1ef301a5-b867-67de-9e9e-a32e53c5b1f8', '1f4f95d0-0ce1-4061-85d4-946446bbd3e5']} - - - - Receiving new event of type: events... - {'event': 'on_chain_end', 'data': {'output': '__end__', 'input': {'messages': [{'content': "What's the weather in SF?", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': '51f2874d-f8c7-4040-8b3b-8f15429a56ae', 'example': False}, {'content': 'begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-5f556aa0-26ea-42e2-b9e4-7ece3a00974e', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}, {'content': 'tool_call__begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'tool', 'name': None, 'id': '1faf5dd0-ae97-4235-963f-5075083a027a', 'tool_call_id': 'tool_call_id'}, {'content': 'end', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-ae383611-6a42-475a-912a-09d5972e9e94', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}, {'content': "What's the weather in SF?", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': 'c67e08e6-e7af-4c4a-aa5e-50c8340ae341', 'example': False}, {'content': 'begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-cb1b98c1-c9e2-4a30-9d7a-38fa1f6224bd', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}, {'content': 'tool_call__begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'tool', 'name': None, 'id': '1c9a16d2-5f0a-4eba-a0d2-240484a4ce7e', 'tool_call_id': 'tool_call_id'}, {'content': 'end', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-028a68fb-6435-4b46-a156-c3326f73985c', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}], 'some_bytes': 'c29tZV9ieXRlcw==', 'some_byte_array': 'c29tZV9ieXRlX2FycmF5', 'dict_with_bytes': {'more_bytes': 'bW9yZV9ieXRlcw=='}}}, 'run_id': 'f2b2dfaf-475d-422b-8bf5-02a31bcc7d1a', 'name': 'should_continue', 'tags': ['seq:step:3'], 'metadata': {'graph_id': 'agent', 'created_by': 'system', 'run_id': '1ef301a5-b867-67de-9e9e-a32e53c5b1f8', 'user_id': '', 'thread_id': '7196a3aa-763c-4a8d-bfda-12fbfe1cd727', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca', 'langgraph_step': 8, 'langgraph_node': 'agent', 'langgraph_triggers': ['tool'], 'langgraph_task_idx': 0}, 'parent_ids': ['1ef301a5-b867-67de-9e9e-a32e53c5b1f8', '1f4f95d0-0ce1-4061-85d4-946446bbd3e5']} - - - - Receiving new event of type: events... - {'event': 'on_chain_stream', 'run_id': '1f4f95d0-0ce1-4061-85d4-946446bbd3e5', 'name': 'agent', 'tags': ['graph:step:8'], 'metadata': {'graph_id': 'agent', 'created_by': 'system', 'run_id': '1ef301a5-b867-67de-9e9e-a32e53c5b1f8', 'user_id': '', 'thread_id': '7196a3aa-763c-4a8d-bfda-12fbfe1cd727', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca', 'langgraph_step': 8, 'langgraph_node': 'agent', 'langgraph_triggers': ['tool'], 'langgraph_task_idx': 0}, 'data': {'chunk': {'messages': [{'content': 'end', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-028a68fb-6435-4b46-a156-c3326f73985c', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}], 'some_bytes': 'c29tZV9ieXRlcw==', 'some_byte_array': 'c29tZV9ieXRlX2FycmF5', 'dict_with_bytes': {'more_bytes': 'bW9yZV9ieXRlcw=='}}}, 'parent_ids': ['1ef301a5-b867-67de-9e9e-a32e53c5b1f8']} - - - - Receiving new event of type: events... - {'event': 'on_chain_end', 'data': {'output': {'messages': [{'content': 'end', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-028a68fb-6435-4b46-a156-c3326f73985c', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}], 'some_bytes': 'c29tZV9ieXRlcw==', 'some_byte_array': 'c29tZV9ieXRlX2FycmF5', 'dict_with_bytes': {'more_bytes': 'bW9yZV9ieXRlcw=='}}, 'input': {'some_bytes': 'c29tZV9ieXRlcw==', 'some_byte_array': 'c29tZV9ieXRlX2FycmF5', 'dict_with_bytes': {'more_bytes': 'bW9yZV9ieXRlcw=='}, 'messages': [{'content': "What's the weather in SF?", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': '51f2874d-f8c7-4040-8b3b-8f15429a56ae', 'example': False}, {'content': 'begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-5f556aa0-26ea-42e2-b9e4-7ece3a00974e', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}, {'content': 'tool_call__begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'tool', 'name': None, 'id': '1faf5dd0-ae97-4235-963f-5075083a027a', 'tool_call_id': 'tool_call_id'}, {'content': 'end', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-ae383611-6a42-475a-912a-09d5972e9e94', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}, {'content': "What's the weather in SF?", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': 'c67e08e6-e7af-4c4a-aa5e-50c8340ae341', 'example': False}, {'content': 'begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-cb1b98c1-c9e2-4a30-9d7a-38fa1f6224bd', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}, {'content': 'tool_call__begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'tool', 'name': None, 'id': '1c9a16d2-5f0a-4eba-a0d2-240484a4ce7e', 'tool_call_id': 'tool_call_id'}], 'sleep': None}}, 'run_id': '1f4f95d0-0ce1-4061-85d4-946446bbd3e5', 'name': 'agent', 'tags': ['graph:step:8'], 'metadata': {'graph_id': 'agent', 'created_by': 'system', 'run_id': '1ef301a5-b867-67de-9e9e-a32e53c5b1f8', 'user_id': '', 'thread_id': '7196a3aa-763c-4a8d-bfda-12fbfe1cd727', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca', 'langgraph_step': 8, 'langgraph_node': 'agent', 'langgraph_triggers': ['tool'], 'langgraph_task_idx': 0}, 'parent_ids': ['1ef301a5-b867-67de-9e9e-a32e53c5b1f8']} - - - - Receiving new event of type: events... - {'event': 'on_chain_end', 'data': {'output': {'some_bytes': 'c29tZV9ieXRlcw==', 'some_byte_array': 'c29tZV9ieXRlX2FycmF5', 'dict_with_bytes': {'more_bytes': 'bW9yZV9ieXRlcw=='}, 'messages': [{'content': "What's the weather in SF?", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': '51f2874d-f8c7-4040-8b3b-8f15429a56ae', 'example': False}, {'content': 'begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-5f556aa0-26ea-42e2-b9e4-7ece3a00974e', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}, {'content': 'tool_call__begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'tool', 'name': None, 'id': '1faf5dd0-ae97-4235-963f-5075083a027a', 'tool_call_id': 'tool_call_id'}, {'content': 'end', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-ae383611-6a42-475a-912a-09d5972e9e94', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}, {'content': "What's the weather in SF?", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': 'c67e08e6-e7af-4c4a-aa5e-50c8340ae341', 'example': False}, {'content': 'begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-cb1b98c1-c9e2-4a30-9d7a-38fa1f6224bd', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}, {'content': 'tool_call__begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'tool', 'name': None, 'id': '1c9a16d2-5f0a-4eba-a0d2-240484a4ce7e', 'tool_call_id': 'tool_call_id'}, {'content': 'end', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-028a68fb-6435-4b46-a156-c3326f73985c', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}]}}, 'run_id': '1ef301a5-b867-67de-9e9e-a32e53c5b1f8', 'name': 'LangGraph', 'tags': [], 'metadata': {'graph_id': 'agent', 'created_by': 'system', 'run_id': '1ef301a5-b867-67de-9e9e-a32e53c5b1f8', 'user_id': '', 'thread_id': '7196a3aa-763c-4a8d-bfda-12fbfe1cd727', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca'}, 'parent_ids': []} - - - - Receiving new event of type: end... - None \ No newline at end of file diff --git a/docs/docs/cloud/how-tos/stream_messages.md b/docs/docs/cloud/how-tos/stream_messages.md deleted file mode 100644 index a359956a3..000000000 --- a/docs/docs/cloud/how-tos/stream_messages.md +++ /dev/null @@ -1,331 +0,0 @@ -# How to stream messages from your graph - -!!! info "Prerequisites" - * [Streaming](../../concepts/streaming.md) - -This guide covers how to stream messages from your graph. With `stream_mode="messages-tuple"`, messages (i.e. individual LLM tokens) from any chat model invocations inside your graph nodes will be streamed back. - -## Setup - -First let's set up our client and thread: - -=== "Python" - - ```python - from langgraph_sdk import get_client - - client = get_client(url=) - # Using the graph deployed with the name "agent" - assistant_id = "agent" - # create thread - thread = await client.threads.create() - print(thread) - ``` - -=== "Javascript" - - ```js - import { Client } from "@langchain/langgraph-sdk"; - - const client = new Client({ apiUrl: }); - // Using the graph deployed with the name "agent" - const assistantID = "agent"; - // create thread - const thread = await client.threads.create(); - console.log(thread); - ``` - -=== "CURL" - - ```bash - curl --request POST \ - --url /threads \ - --header 'Content-Type: application/json' \ - --data '{}' - ``` - -Output: - - { - 'thread_id': 'e1431c95-e241-4d1d-a252-27eceb1e5c86', - 'created_at': '2024-06-21T15:48:59.808924+00:00', - 'updated_at': '2024-06-21T15:48:59.808924+00:00', - 'metadata': {}, - 'status': 'idle', - 'config': {}, - 'values': None - } - -## Stream graph in messages mode - -Now we can stream LLM tokens for any messages generated inside a node in the form of tuples `(message, metadata)`. Metadata contains additional information that can be useful for filtering the streamed outputs to a specific node or LLM. - -=== "Python" - - ```python - input = {"messages": [{"role": "user", "content": "what's the weather in sf"}]} - config = {"configurable": {"model_name": "openai"}} - - async for chunk in client.runs.stream( - thread["thread_id"], - assistant_id=assistant_id, - input=input, - config=config, - stream_mode="messages-tuple", - ): - print(f"Receiving new event of type: {chunk.event}...") - print(chunk.data) - print("\n\n") - ``` - -=== "Javascript" - - ```js - const input = { - messages: [ - { - role: "human", - content: "What's the weather in sf", - } - ] - }; - const config = { configurable: { model_name: "openai" } }; - - const streamResponse = client.runs.stream( - thread["thread_id"], - assistantID, - { - input, - config, - streamMode: "messages-tuple" - } - ); - for await (const chunk of streamResponse) { - console.log(`Receiving new event of type: ${chunk.event}...`); - console.log(chunk.data); - console.log("\n\n"); - } - ``` - -=== "CURL" - - ```bash - curl --request POST \ - --url /threads//runs/stream \ - --header 'Content-Type: application/json' \ - --data "{ - \"assistant_id\": \"agent\", - \"input\": {\"messages\": [{\"role\": \"human\", \"content\": \"what's the weather in la\"}]}, - \"stream_mode\": [ - \"messages-tuple\" - ] - }" | \ - sed 's/\r$//' | \ - awk ' - /^event:/ { - if (data_content != "") { - print data_content "\n" - } - sub(/^event: /, "Receiving event of type: ", $0) - printf "%s...\n", $0 - data_content = "" - } - /^data:/ { - sub(/^data: /, "", $0) - data_content = $0 - } - END { - if (data_content != "") { - print data_content "\n" - } - } - ' - ``` - - -Output: - - Receiving new event of type: metadata... - {"run_id": "1ef971e0-9a84-6154-9047-247b4ce89c4d", "attempt": 1} - - ... - - Receiving new event of type: messages... - [ - { - "type": "AIMessageChunk", - "tool_calls": [ - { - "name": "tavily_search_results_json", - "args": { - "query": "weat" - }, - "id": "toolu_0114XKXdNtHQEa3ozmY1uDdM", - "type": "tool_call" - } - ], - ... - }, - { - "graph_id": "agent", - "langgraph_node": "agent", - ... - } - ] - - - - Receiving new event of type: messages... - [ - { - "type": "AIMessageChunk", - "tool_calls": [ - { - "name": "tavily_search_results_json", - "args": { - "query": "her in san " - }, - "id": "toolu_0114XKXdNtHQEa3ozmY1uDdM", - "type": "tool_call" - } - ], - ... - }, - { - "graph_id": "agent", - "langgraph_node": "agent", - ... - } - ] - - ... - - Receiving new event of type: messages... - [ - { - "type": "AIMessageChunk", - "tool_calls": [ - { - "name": "tavily_search_results_json", - "args": { - "query": "francisco" - }, - "id": "toolu_0114XKXdNtHQEa3ozmY1uDdM", - "type": "tool_call" - } - ], - ... - }, - { - "graph_id": "agent", - "langgraph_node": "agent", - ... - } - ] - - ... - - Receiving new event of type: messages... - [ - { - "content": "[{\"url\": \"https://www.weatherapi.com/\", \"content\": \"{'location': {'name': 'San Francisco', 'region': 'California', 'country': 'United States of America', 'lat': 37.775, 'lon': -122.4183, 'tz_id': 'America/Los_Angeles', 'localtime_epoch': 1730475777, 'localtime': '2024-11-01 08:42'}, 'current': {'last_updated_epoch': 1730475000, 'last_updated': '2024-11-01 08:30', 'temp_c': 11.1, 'temp_f': 52.0, 'is_day': 1, 'condition': {'text': 'Partly cloudy', 'icon': '//cdn.weatherapi.com/weather/64x64/day/116.png', 'code': 1003}, 'wind_mph': 2.2, 'wind_kph': 3.6, 'wind_degree': 192, 'wind_dir': 'SSW', 'pressure_mb': 1018.0, 'pressure_in': 30.07, 'precip_mm': 0.0, 'precip_in': 0.0, 'humidity': 89, 'cloud': 75, 'feelslike_c': 11.5, 'feelslike_f': 52.6, 'windchill_c': 10.0, 'windchill_f': 50.1, 'heatindex_c': 10.4, 'heatindex_f': 50.7, 'dewpoint_c': 9.1, 'dewpoint_f': 48.5, 'vis_km': 16.0, 'vis_miles': 9.0, 'uv': 3.0, 'gust_mph': 6.7, 'gust_kph': 10.8}}\"}]", - "type": "tool", - "tool_call_id": "toolu_0114XKXdNtHQEa3ozmY1uDdM", - ... - }, - { - "graph_id": "agent", - "langgraph_node": "action", - ... - } - ] - - ... - - Receiving new event of type: messages... - [ - { - "content": [ - { - "text": "\n\nThe search", - "type": "text", - "index": 0 - } - ], - "type": "AIMessageChunk", - ... - }, - { - "graph_id": "agent", - "langgraph_node": "agent", - ... - } - ] - - - - Receiving new event of type: messages... - [ - { - "content": [ - { - "text": " results provide", - "type": "text", - "index": 0 - } - ], - "type": "AIMessageChunk", - ... - }, - { - "graph_id": "agent", - "langgraph_node": "agent", - ... - } - ] - - - - Receiving new event of type: messages... - [ - { - "content": [ - { - "text": " the current weather conditions", - "type": "text", - "index": 0 - } - ], - "type": "AIMessageChunk", - ... - }, - { - "graph_id": "agent", - "langgraph_node": "agent", - ... - } - ] - - - - Receiving new event of type: messages... - [ - { - "content": [ - { - "text": " in San Francisco.", - "type": "text", - "index": 0 - } - ], - "type": "AIMessageChunk", - ... - }, - { - "graph_id": "agent", - "langgraph_node": "agent", - ... - } - ] - - ... \ No newline at end of file diff --git a/docs/docs/cloud/how-tos/stream_multiple.md b/docs/docs/cloud/how-tos/stream_multiple.md deleted file mode 100644 index 20a05468c..000000000 --- a/docs/docs/cloud/how-tos/stream_multiple.md +++ /dev/null @@ -1,485 +0,0 @@ -# How to configure multiple streaming modes at the same time - -!!! info "Prerequisites" - * [Streaming](../../concepts/streaming.md) - -This guide covers how to configure multiple streaming modes at the same time. - -## Setup - -First let's set up our client and thread: - -=== "Python" - - ```python - from langgraph_sdk import get_client - - client = get_client(url=) - # Using the graph deployed with the name "agent" - assistant_id = "agent" - # create thread - thread = await client.threads.create() - print(thread) - ``` - -=== "Javascript" - - ```js - import { Client } from "@langchain/langgraph-sdk"; - - const client = new Client({ apiUrl: }); - // Using the graph deployed with the name "agent" - const assistantID = "agent"; - // create thread - const thread = await client.threads.create(); - console.log(thread); - ``` - -=== "CURL" - - ```bash - curl --request POST \ - --url /threads \ - --header 'Content-Type: application/json' \ - --data '{}' - ``` - -Output: - - { - 'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', - 'created_at': '2024-06-24T21:30:07.980789+00:00', - 'updated_at': '2024-06-24T21:30:07.980789+00:00', - 'metadata': {}, - 'status': 'idle', - 'config': {}, - 'values': None - } - -## Stream graph with multiple modes - -When configuring multiple streaming modes for a run, responses for each respective mode will be produced. In the following example, note that a `list` of modes (`messages`, `events`, `debug`) is passed to the `stream_mode` parameter and the response contains `events`, `debug`, `messages/complete`, `messages/metadata`, and `messages/partial` event types. - -=== "Python" - - ```python - # create input - input = { - "messages": [ - { - "role": "user", - "content": "What's the weather in SF?", - } - ] - } - - # stream events with multiple streaming modes - async for chunk in client.runs.stream( - thread_id=thread["thread_id"], - assistant_id=assistant_id, - input=input, - stream_mode=["messages", "events", "debug"], - ): - print(f"Receiving new event of type: {chunk.event}...") - print(chunk.data) - print("\n\n") - ``` - -=== "Javascript" - - ```js - // create input - const input = { - messages: [ - { - role: "human", - content: "What's the weather in SF?", - } - ] - }; - - // stream events with multiple streaming modes - const streamResponse = client.runs.stream( - thread["thread_id"], - assistantID, - { - input, - streamMode: ["messages", "events", "debug"] - } - ); - for await (const chunk of streamResponse) { - console.log(`Receiving new event of type: ${chunk.event}...`); - console.log(chunk.data); - console.log("\n\n"); - } - ``` - -=== "CURL" - - ```bash - curl --request POST \ - --url /threads//runs/stream \ - --header 'Content-Type: application/json' \ - --data "{ - \"assistant_id\": \"agent\", - \"input\": {\"messages\": [{\"role\": \"human\", \"content\": \"What's the weather in SF?\"}]}, - \"stream_mode\": [ - \"messages\", - \"events\", - \"debug\" - ] - }" | \ - sed 's/\r$//' | \ - awk ' - /^event:/ { - if (data_content != "") { - print data_content "\n" - } - sub(/^event: /, "Receiving event of type: ", $0) - printf "%s...\n", $0 - data_content = "" - } - /^data:/ { - sub(/^data: /, "", $0) - data_content = $0 - } - END { - if (data_content != "") { - print data_content "\n" - } - } - ' - ``` - -Output: - - Receiving new event of type: metadata... - {'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25'} - - - - Receiving new event of type: events... - {'event': 'on_chain_start', 'data': {'input': {'messages': [{'role': 'human', 'content': "What's the weather in SF?"}]}}, 'name': 'LangGraph', 'tags': [], 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'metadata': {'created_by': 'system', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca'}, 'parent_ids': []} - - - - Receiving new event of type: debug... - {'type': 'checkpoint', 'timestamp': '2024-06-24T21:34:06.116009+00:00', 'step': -1, 'payload': {'config': {'tags': [], 'metadata': {'created_by': 'system', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca'}, 'callbacks': [None], 'recursion_limit': 25, 'configurable': {'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', 'thread_ts': '1ef32717-bc7c-6daa-bfff-6b9027c1a50e', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca'}, 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25'}, 'values': {'messages': []}, 'metadata': {'source': 'input', 'step': -1, 'writes': {'messages': [{'role': 'human', 'content': "What's the weather in SF?"}]}}}} - - - - Receiving new event of type: events... - {'event': 'on_chain_stream', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'name': 'LangGraph', 'tags': [], 'metadata': {'created_by': 'system', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca'}, 'data': {'chunk': ['debug', {'type': 'checkpoint', 'timestamp': '2024-06-24T21:34:06.116009+00:00', 'step': -1, 'payload': {'config': {'tags': [], 'metadata': {'created_by': 'system', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca'}, 'callbacks': [None], 'recursion_limit': 25, 'configurable': {'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', 'thread_ts': '1ef32717-bc7c-6daa-bfff-6b9027c1a50e', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca'}, 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25'}, 'values': {'messages': []}, 'metadata': {'source': 'input', 'step': -1, 'writes': {'messages': [{'role': 'human', 'content': "What's the weather in SF?"}]}}}}]}, 'parent_ids': []} - - - - Receiving new event of type: events... - {'event': 'on_chain_stream', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'name': 'LangGraph', 'tags': [], 'metadata': {'created_by': 'system', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca'}, 'data': {'chunk': ['values', {'messages': [{'content': "What's the weather in SF?", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': '7da1bafa-f53c-4df8-ba63-8dd517140b9f', 'example': False}]}]}, 'parent_ids': []} - - - - Receiving new event of type: debug... - {'type': 'checkpoint', 'timestamp': '2024-06-24T21:34:06.117924+00:00', 'step': 0, 'payload': {'config': {'tags': [], 'metadata': {'created_by': 'system', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca'}, 'callbacks': [None], 'recursion_limit': 25, 'configurable': {'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', 'thread_ts': '1ef32717-bc81-68c8-8000-4e18ae7d67a5', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca'}, 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25'}, 'values': {'messages': [{'content': "What's the weather in SF?", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': '7da1bafa-f53c-4df8-ba63-8dd517140b9f', 'example': False}]}, 'metadata': {'source': 'loop', 'step': 0, 'writes': None}}} - - - - Receiving new event of type: events... - {'event': 'on_chain_stream', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'name': 'LangGraph', 'tags': [], 'metadata': {'created_by': 'system', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca'}, 'data': {'chunk': ['debug', {'type': 'checkpoint', 'timestamp': '2024-06-24T21:34:06.117924+00:00', 'step': 0, 'payload': {'config': {'tags': [], 'metadata': {'created_by': 'system', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca'}, 'callbacks': [None], 'recursion_limit': 25, 'configurable': {'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', 'thread_ts': '1ef32717-bc81-68c8-8000-4e18ae7d67a5', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca'}, 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25'}, 'values': {'messages': [{'content': "What's the weather in SF?", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': '7da1bafa-f53c-4df8-ba63-8dd517140b9f', 'example': False}]}, 'metadata': {'source': 'loop', 'step': 0, 'writes': None}}}]}, 'parent_ids': []} - - - - Receiving new event of type: debug... - {'type': 'task', 'timestamp': '2024-06-24T21:34:06.118042+00:00', 'step': 1, 'payload': {'id': '212ed9c2-a454-50c5-a202-12066bbbe7b8', 'name': 'agent', 'input': {'some_bytes': None, 'some_byte_array': None, 'dict_with_bytes': None, 'messages': [{'content': "What's the weather in SF?", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': '7da1bafa-f53c-4df8-ba63-8dd517140b9f', 'example': False}], 'sleep': None}, 'triggers': ['start:agent']}} - - - - Receiving new event of type: events... - {'event': 'on_chain_stream', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'name': 'LangGraph', 'tags': [], 'metadata': {'created_by': 'system', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca'}, 'data': {'chunk': ['debug', {'type': 'task', 'timestamp': '2024-06-24T21:34:06.118042+00:00', 'step': 1, 'payload': {'id': '212ed9c2-a454-50c5-a202-12066bbbe7b8', 'name': 'agent', 'input': {'some_bytes': None, 'some_byte_array': None, 'dict_with_bytes': None, 'messages': [{'content': "What's the weather in SF?", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': '7da1bafa-f53c-4df8-ba63-8dd517140b9f', 'example': False}], 'sleep': None}, 'triggers': ['start:agent']}}]}, 'parent_ids': []} - - - - Receiving new event of type: events... - {'event': 'on_chain_start', 'data': {}, 'name': 'agent', 'tags': ['graph:step:1'], 'run_id': '72b74d24-5792-48da-a887-102100d6e2c0', 'metadata': {'created_by': 'system', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca', 'langgraph_step': 1, 'langgraph_node': 'agent', 'langgraph_triggers': ['start:agent'], 'langgraph_task_idx': 0}, 'parent_ids': ['1ef32717-bc30-6cf2-8a26-33f63567bc25']} - - - - Receiving new event of type: events... - {'event': 'on_chat_model_start', 'data': {'input': {'messages': [[{'content': "What's the weather in SF?", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': '7da1bafa-f53c-4df8-ba63-8dd517140b9f', 'example': False}]]}}, 'name': 'FakeListChatModel', 'tags': ['seq:step:1'], 'run_id': '2424dd6d-5cf5-4244-8d98-357640ce6e12', 'metadata': {'created_by': 'system', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca', 'langgraph_step': 1, 'langgraph_node': 'agent', 'langgraph_triggers': ['start:agent'], 'langgraph_task_idx': 0, 'ls_model_type': 'chat'}, 'parent_ids': ['1ef32717-bc30-6cf2-8a26-33f63567bc25', '72b74d24-5792-48da-a887-102100d6e2c0']} - - - - Receiving new event of type: events... - {'event': 'on_chat_model_stream', 'data': {'chunk': {'content': 'b', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'AIMessageChunk', 'name': None, 'id': 'run-2424dd6d-5cf5-4244-8d98-357640ce6e12', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None, 'tool_call_chunks': []}}, 'run_id': '2424dd6d-5cf5-4244-8d98-357640ce6e12', 'name': 'FakeListChatModel', 'tags': ['seq:step:1'], 'metadata': {'created_by': 'system', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca', 'langgraph_step': 1, 'langgraph_node': 'agent', 'langgraph_triggers': ['start:agent'], 'langgraph_task_idx': 0, 'ls_model_type': 'chat'}, 'parent_ids': ['1ef32717-bc30-6cf2-8a26-33f63567bc25', '72b74d24-5792-48da-a887-102100d6e2c0']} - - - - Receiving new event of type: messages/metadata... - {'run-2424dd6d-5cf5-4244-8d98-357640ce6e12': {'metadata': {'created_by': 'system', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca', 'langgraph_step': 1, 'langgraph_node': 'agent', 'langgraph_triggers': ['start:agent'], 'langgraph_task_idx': 0, 'ls_model_type': 'chat'}}} - - - - Receiving new event of type: messages/partial... - [{'content': 'b', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-2424dd6d-5cf5-4244-8d98-357640ce6e12', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}] - - - - Receiving new event of type: events... - {'event': 'on_chat_model_stream', 'data': {'chunk': {'content': 'e', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'AIMessageChunk', 'name': None, 'id': 'run-2424dd6d-5cf5-4244-8d98-357640ce6e12', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None, 'tool_call_chunks': []}}, 'run_id': '2424dd6d-5cf5-4244-8d98-357640ce6e12', 'name': 'FakeListChatModel', 'tags': ['seq:step:1'], 'metadata': {'created_by': 'system', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca', 'langgraph_step': 1, 'langgraph_node': 'agent', 'langgraph_triggers': ['start:agent'], 'langgraph_task_idx': 0, 'ls_model_type': 'chat'}, 'parent_ids': ['1ef32717-bc30-6cf2-8a26-33f63567bc25', '72b74d24-5792-48da-a887-102100d6e2c0']} - - - - Receiving new event of type: messages/partial... - [{'content': 'be', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-2424dd6d-5cf5-4244-8d98-357640ce6e12', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}] - - - - Receiving new event of type: events... - {'event': 'on_chat_model_stream', 'data': {'chunk': {'content': 'g', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'AIMessageChunk', 'name': None, 'id': 'run-2424dd6d-5cf5-4244-8d98-357640ce6e12', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None, 'tool_call_chunks': []}}, 'run_id': '2424dd6d-5cf5-4244-8d98-357640ce6e12', 'name': 'FakeListChatModel', 'tags': ['seq:step:1'], 'metadata': {'created_by': 'system', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca', 'langgraph_step': 1, 'langgraph_node': 'agent', 'langgraph_triggers': ['start:agent'], 'langgraph_task_idx': 0, 'ls_model_type': 'chat'}, 'parent_ids': ['1ef32717-bc30-6cf2-8a26-33f63567bc25', '72b74d24-5792-48da-a887-102100d6e2c0']} - - - - Receiving new event of type: messages/partial... - [{'content': 'beg', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-2424dd6d-5cf5-4244-8d98-357640ce6e12', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}] - - - - Receiving new event of type: events... - {'event': 'on_chat_model_stream', 'data': {'chunk': {'content': 'i', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'AIMessageChunk', 'name': None, 'id': 'run-2424dd6d-5cf5-4244-8d98-357640ce6e12', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None, 'tool_call_chunks': []}}, 'run_id': '2424dd6d-5cf5-4244-8d98-357640ce6e12', 'name': 'FakeListChatModel', 'tags': ['seq:step:1'], 'metadata': {'created_by': 'system', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca', 'langgraph_step': 1, 'langgraph_node': 'agent', 'langgraph_triggers': ['start:agent'], 'langgraph_task_idx': 0, 'ls_model_type': 'chat'}, 'parent_ids': ['1ef32717-bc30-6cf2-8a26-33f63567bc25', '72b74d24-5792-48da-a887-102100d6e2c0']} - - - - Receiving new event of type: messages/partial... - [{'content': 'begi', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-2424dd6d-5cf5-4244-8d98-357640ce6e12', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}] - - - - Receiving new event of type: events... - {'event': 'on_chat_model_stream', 'data': {'chunk': {'content': 'n', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'AIMessageChunk', 'name': None, 'id': 'run-2424dd6d-5cf5-4244-8d98-357640ce6e12', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None, 'tool_call_chunks': []}}, 'run_id': '2424dd6d-5cf5-4244-8d98-357640ce6e12', 'name': 'FakeListChatModel', 'tags': ['seq:step:1'], 'metadata': {'created_by': 'system', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca', 'langgraph_step': 1, 'langgraph_node': 'agent', 'langgraph_triggers': ['start:agent'], 'langgraph_task_idx': 0, 'ls_model_type': 'chat'}, 'parent_ids': ['1ef32717-bc30-6cf2-8a26-33f63567bc25', '72b74d24-5792-48da-a887-102100d6e2c0']} - - - - Receiving new event of type: messages/partial... - [{'content': 'begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-2424dd6d-5cf5-4244-8d98-357640ce6e12', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}] - - - - Receiving new event of type: events... - {'event': 'on_chat_model_end', 'data': {'output': {'content': 'begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-2424dd6d-5cf5-4244-8d98-357640ce6e12', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}, 'input': {'messages': [[{'content': "What's the weather in SF?", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': '7da1bafa-f53c-4df8-ba63-8dd517140b9f', 'example': False}]]}}, 'run_id': '2424dd6d-5cf5-4244-8d98-357640ce6e12', 'name': 'FakeListChatModel', 'tags': ['seq:step:1'], 'metadata': {'created_by': 'system', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca', 'langgraph_step': 1, 'langgraph_node': 'agent', 'langgraph_triggers': ['start:agent'], 'langgraph_task_idx': 0, 'ls_model_type': 'chat'}, 'parent_ids': ['1ef32717-bc30-6cf2-8a26-33f63567bc25', '72b74d24-5792-48da-a887-102100d6e2c0']} - - - - Receiving new event of type: events... - {'event': 'on_chain_start', 'data': {'input': {'messages': [{'content': "What's the weather in SF?", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': '7da1bafa-f53c-4df8-ba63-8dd517140b9f', 'example': False}, {'content': 'begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-2424dd6d-5cf5-4244-8d98-357640ce6e12', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}], 'some_bytes': 'c29tZV9ieXRlcw==', 'some_byte_array': 'c29tZV9ieXRlX2FycmF5', 'dict_with_bytes': {'more_bytes': 'bW9yZV9ieXRlcw=='}}}, 'name': 'should_continue', 'tags': ['seq:step:3'], 'run_id': '227afb0f-f909-4d54-a042-556ca6d98a69', 'metadata': {'created_by': 'system', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca', 'langgraph_step': 1, 'langgraph_node': 'agent', 'langgraph_triggers': ['start:agent'], 'langgraph_task_idx': 0}, 'parent_ids': ['1ef32717-bc30-6cf2-8a26-33f63567bc25', '72b74d24-5792-48da-a887-102100d6e2c0']} - - - - Receiving new event of type: events... - {'event': 'on_chain_end', 'data': {'output': 'tool', 'input': {'messages': [{'content': "What's the weather in SF?", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': '7da1bafa-f53c-4df8-ba63-8dd517140b9f', 'example': False}, {'content': 'begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-2424dd6d-5cf5-4244-8d98-357640ce6e12', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}], 'some_bytes': 'c29tZV9ieXRlcw==', 'some_byte_array': 'c29tZV9ieXRlX2FycmF5', 'dict_with_bytes': {'more_bytes': 'bW9yZV9ieXRlcw=='}}}, 'run_id': '227afb0f-f909-4d54-a042-556ca6d98a69', 'name': 'should_continue', 'tags': ['seq:step:3'], 'metadata': {'created_by': 'system', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca', 'langgraph_step': 1, 'langgraph_node': 'agent', 'langgraph_triggers': ['start:agent'], 'langgraph_task_idx': 0}, 'parent_ids': ['1ef32717-bc30-6cf2-8a26-33f63567bc25', '72b74d24-5792-48da-a887-102100d6e2c0']} - - - - Receiving new event of type: events... - {'event': 'on_chain_stream', 'run_id': '72b74d24-5792-48da-a887-102100d6e2c0', 'name': 'agent', 'tags': ['graph:step:1'], 'metadata': {'created_by': 'system', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca', 'langgraph_step': 1, 'langgraph_node': 'agent', 'langgraph_triggers': ['start:agent'], 'langgraph_task_idx': 0}, 'data': {'chunk': {'messages': [{'content': 'begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-2424dd6d-5cf5-4244-8d98-357640ce6e12', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}], 'some_bytes': 'c29tZV9ieXRlcw==', 'some_byte_array': 'c29tZV9ieXRlX2FycmF5', 'dict_with_bytes': {'more_bytes': 'bW9yZV9ieXRlcw=='}}}, 'parent_ids': ['1ef32717-bc30-6cf2-8a26-33f63567bc25']} - - - - Receiving new event of type: events... - {'event': 'on_chain_end', 'data': {'output': {'messages': [{'content': 'begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-2424dd6d-5cf5-4244-8d98-357640ce6e12', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}], 'some_bytes': 'c29tZV9ieXRlcw==', 'some_byte_array': 'c29tZV9ieXRlX2FycmF5', 'dict_with_bytes': {'more_bytes': 'bW9yZV9ieXRlcw=='}}, 'input': {'some_bytes': None, 'some_byte_array': None, 'dict_with_bytes': None, 'messages': [{'content': "What's the weather in SF?", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': '7da1bafa-f53c-4df8-ba63-8dd517140b9f', 'example': False}], 'sleep': None}}, 'run_id': '72b74d24-5792-48da-a887-102100d6e2c0', 'name': 'agent', 'tags': ['graph:step:1'], 'metadata': {'created_by': 'system', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca', 'langgraph_step': 1, 'langgraph_node': 'agent', 'langgraph_triggers': ['start:agent'], 'langgraph_task_idx': 0}, 'parent_ids': ['1ef32717-bc30-6cf2-8a26-33f63567bc25']} - - - - Receiving new event of type: debug... - {'type': 'task_result', 'timestamp': '2024-06-24T21:34:06.124350+00:00', 'step': 1, 'payload': {'id': '212ed9c2-a454-50c5-a202-12066bbbe7b8', 'name': 'agent', 'result': [['some_bytes', 'c29tZV9ieXRlcw=='], ['some_byte_array', 'c29tZV9ieXRlX2FycmF5'], ['dict_with_bytes', {'more_bytes': 'bW9yZV9ieXRlcw=='}], ['messages', [{'content': 'begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-2424dd6d-5cf5-4244-8d98-357640ce6e12', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}]]]}} - - - - Receiving new event of type: events... - {'event': 'on_chain_stream', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'name': 'LangGraph', 'tags': [], 'metadata': {'created_by': 'system', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca'}, 'data': {'chunk': ['debug', {'type': 'task_result', 'timestamp': '2024-06-24T21:34:06.124350+00:00', 'step': 1, 'payload': {'id': '212ed9c2-a454-50c5-a202-12066bbbe7b8', 'name': 'agent', 'result': [['some_bytes', 'c29tZV9ieXRlcw=='], ['some_byte_array', 'c29tZV9ieXRlX2FycmF5'], ['dict_with_bytes', {'more_bytes': 'bW9yZV9ieXRlcw=='}], ['messages', [{'content': 'begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-2424dd6d-5cf5-4244-8d98-357640ce6e12', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}]]]}}]}, 'parent_ids': []} - - - - Receiving new event of type: events... - {'event': 'on_chain_stream', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'name': 'LangGraph', 'tags': [], 'metadata': {'created_by': 'system', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca'}, 'data': {'chunk': ['values', {'some_bytes': 'c29tZV9ieXRlcw==', 'some_byte_array': 'c29tZV9ieXRlX2FycmF5', 'dict_with_bytes': {'more_bytes': 'bW9yZV9ieXRlcw=='}, 'messages': [{'content': "What's the weather in SF?", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': '7da1bafa-f53c-4df8-ba63-8dd517140b9f', 'example': False}, {'content': 'begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-2424dd6d-5cf5-4244-8d98-357640ce6e12', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}]}]}, 'parent_ids': []} - - - - Receiving new event of type: debug... - {'type': 'checkpoint', 'timestamp': '2024-06-24T21:34:06.124510+00:00', 'step': 1, 'payload': {'config': {'tags': [], 'metadata': {'created_by': 'system', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca'}, 'callbacks': [None], 'recursion_limit': 25, 'configurable': {'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', 'thread_ts': '1ef32717-bc91-6a34-8001-26353c117c25', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca'}, 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25'}, 'values': {'some_bytes': 'c29tZV9ieXRlcw==', 'some_byte_array': 'c29tZV9ieXRlX2FycmF5', 'dict_with_bytes': {'more_bytes': 'bW9yZV9ieXRlcw=='}, 'messages': [{'content': "What's the weather in SF?", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': '7da1bafa-f53c-4df8-ba63-8dd517140b9f', 'example': False}, {'content': 'begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-2424dd6d-5cf5-4244-8d98-357640ce6e12', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}]}, 'metadata': {'source': 'loop', 'step': 1, 'writes': {'agent': {'some_bytes': 'c29tZV9ieXRlcw==', 'some_byte_array': 'c29tZV9ieXRlX2FycmF5', 'dict_with_bytes': {'more_bytes': 'bW9yZV9ieXRlcw=='}, 'messages': [{'content': 'begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-2424dd6d-5cf5-4244-8d98-357640ce6e12', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}]}}}}} - - - - Receiving new event of type: events... - {'event': 'on_chain_stream', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'name': 'LangGraph', 'tags': [], 'metadata': {'created_by': 'system', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca'}, 'data': {'chunk': ['debug', {'type': 'checkpoint', 'timestamp': '2024-06-24T21:34:06.124510+00:00', 'step': 1, 'payload': {'config': {'tags': [], 'metadata': {'created_by': 'system', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca'}, 'callbacks': [None], 'recursion_limit': 25, 'configurable': {'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', 'thread_ts': '1ef32717-bc91-6a34-8001-26353c117c25', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca'}, 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25'}, 'values': {'some_bytes': 'c29tZV9ieXRlcw==', 'some_byte_array': 'c29tZV9ieXRlX2FycmF5', 'dict_with_bytes': {'more_bytes': 'bW9yZV9ieXRlcw=='}, 'messages': [{'content': "What's the weather in SF?", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': '7da1bafa-f53c-4df8-ba63-8dd517140b9f', 'example': False}, {'content': 'begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-2424dd6d-5cf5-4244-8d98-357640ce6e12', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}]}, 'metadata': {'source': 'loop', 'step': 1, 'writes': {'agent': {'some_bytes': 'c29tZV9ieXRlcw==', 'some_byte_array': 'c29tZV9ieXRlX2FycmF5', 'dict_with_bytes': {'more_bytes': 'bW9yZV9ieXRlcw=='}, 'messages': [{'content': 'begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-2424dd6d-5cf5-4244-8d98-357640ce6e12', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}]}}}}}]}, 'parent_ids': []} - - - - Receiving new event of type: debug... - {'type': 'task', 'timestamp': '2024-06-24T21:34:06.124572+00:00', 'step': 2, 'payload': {'id': '44139125-a1be-57c2-9cb2-19eb62bbaf2f', 'name': 'tool', 'input': {'some_bytes': 'c29tZV9ieXRlcw==', 'some_byte_array': 'c29tZV9ieXRlX2FycmF5', 'dict_with_bytes': {'more_bytes': 'bW9yZV9ieXRlcw=='}, 'messages': [{'content': "What's the weather in SF?", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': '7da1bafa-f53c-4df8-ba63-8dd517140b9f', 'example': False}, {'content': 'begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-2424dd6d-5cf5-4244-8d98-357640ce6e12', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}], 'sleep': None}, 'triggers': ['branch:agent:should_continue:tool']}} - - - - Receiving new event of type: events... - {'event': 'on_chain_stream', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'name': 'LangGraph', 'tags': [], 'metadata': {'created_by': 'system', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca'}, 'data': {'chunk': ['debug', {'type': 'task', 'timestamp': '2024-06-24T21:34:06.124572+00:00', 'step': 2, 'payload': {'id': '44139125-a1be-57c2-9cb2-19eb62bbaf2f', 'name': 'tool', 'input': {'some_bytes': 'c29tZV9ieXRlcw==', 'some_byte_array': 'c29tZV9ieXRlX2FycmF5', 'dict_with_bytes': {'more_bytes': 'bW9yZV9ieXRlcw=='}, 'messages': [{'content': "What's the weather in SF?", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': '7da1bafa-f53c-4df8-ba63-8dd517140b9f', 'example': False}, {'content': 'begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-2424dd6d-5cf5-4244-8d98-357640ce6e12', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}], 'sleep': None}, 'triggers': ['branch:agent:should_continue:tool']}}]}, 'parent_ids': []} - - - - Receiving new event of type: events... - {'event': 'on_chain_start', 'data': {}, 'name': 'tool', 'tags': ['graph:step:2'], 'run_id': '91575720-886e-485e-ae2d-d6817e5346bf', 'metadata': {'created_by': 'system', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca', 'langgraph_step': 2, 'langgraph_node': 'tool', 'langgraph_triggers': ['branch:agent:should_continue:tool'], 'langgraph_task_idx': 0}, 'parent_ids': ['1ef32717-bc30-6cf2-8a26-33f63567bc25']} - - - - Receiving new event of type: events... - {'event': 'on_chain_stream', 'run_id': '91575720-886e-485e-ae2d-d6817e5346bf', 'name': 'tool', 'tags': ['graph:step:2'], 'metadata': {'created_by': 'system', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca', 'langgraph_step': 2, 'langgraph_node': 'tool', 'langgraph_triggers': ['branch:agent:should_continue:tool'], 'langgraph_task_idx': 0}, 'data': {'chunk': {'messages': [{'content': 'tool_call__begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'tool', 'name': None, 'id': None, 'tool_call_id': 'tool_call_id'}]}}, 'parent_ids': ['1ef32717-bc30-6cf2-8a26-33f63567bc25']} - - - - Receiving new event of type: events... - {'event': 'on_chain_end', 'data': {'output': {'messages': [{'content': 'tool_call__begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'tool', 'name': None, 'id': '639ca779-403d-4915-a066-327e1f634c8b', 'tool_call_id': 'tool_call_id'}]}, 'input': {'some_bytes': 'c29tZV9ieXRlcw==', 'some_byte_array': 'c29tZV9ieXRlX2FycmF5', 'dict_with_bytes': {'more_bytes': 'bW9yZV9ieXRlcw=='}, 'messages': [{'content': "What's the weather in SF?", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': '7da1bafa-f53c-4df8-ba63-8dd517140b9f', 'example': False}, {'content': 'begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-2424dd6d-5cf5-4244-8d98-357640ce6e12', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}], 'sleep': None}}, 'run_id': '91575720-886e-485e-ae2d-d6817e5346bf', 'name': 'tool', 'tags': ['graph:step:2'], 'metadata': {'created_by': 'system', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca', 'langgraph_step': 2, 'langgraph_node': 'tool', 'langgraph_triggers': ['branch:agent:should_continue:tool'], 'langgraph_task_idx': 0}, 'parent_ids': ['1ef32717-bc30-6cf2-8a26-33f63567bc25']} - - - - Receiving new event of type: debug... - {'type': 'task_result', 'timestamp': '2024-06-24T21:34:06.126828+00:00', 'step': 2, 'payload': {'id': '44139125-a1be-57c2-9cb2-19eb62bbaf2f', 'name': 'tool', 'result': [['messages', [{'content': 'tool_call__begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'tool', 'name': None, 'id': '639ca779-403d-4915-a066-327e1f634c8b', 'tool_call_id': 'tool_call_id'}]]]}} - - - - Receiving new event of type: events... - {'event': 'on_chain_stream', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'name': 'LangGraph', 'tags': [], 'metadata': {'created_by': 'system', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca'}, 'data': {'chunk': ['debug', {'type': 'task_result', 'timestamp': '2024-06-24T21:34:06.126828+00:00', 'step': 2, 'payload': {'id': '44139125-a1be-57c2-9cb2-19eb62bbaf2f', 'name': 'tool', 'result': [['messages', [{'content': 'tool_call__begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'tool', 'name': None, 'id': '639ca779-403d-4915-a066-327e1f634c8b', 'tool_call_id': 'tool_call_id'}]]]}}]}, 'parent_ids': []} - - - - Receiving new event of type: events... - {'event': 'on_chain_stream', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'name': 'LangGraph', 'tags': [], 'metadata': {'created_by': 'system', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca'}, 'data': {'chunk': ['values', {'some_bytes': 'c29tZV9ieXRlcw==', 'some_byte_array': 'c29tZV9ieXRlX2FycmF5', 'dict_with_bytes': {'more_bytes': 'bW9yZV9ieXRlcw=='}, 'messages': [{'content': "What's the weather in SF?", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': '7da1bafa-f53c-4df8-ba63-8dd517140b9f', 'example': False}, {'content': 'begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-2424dd6d-5cf5-4244-8d98-357640ce6e12', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}, {'content': 'tool_call__begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'tool', 'name': None, 'id': '639ca779-403d-4915-a066-327e1f634c8b', 'tool_call_id': 'tool_call_id'}]}]}, 'parent_ids': []} - - - - Receiving new event of type: messages/complete... - [{'content': 'tool_call__begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'tool', 'name': None, 'id': '639ca779-403d-4915-a066-327e1f634c8b', 'tool_call_id': 'tool_call_id'}] - - - - Receiving new event of type: debug... - {'type': 'checkpoint', 'timestamp': '2024-06-24T21:34:06.126966+00:00', 'step': 2, 'payload': {'config': {'tags': [], 'metadata': {'created_by': 'system', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca'}, 'callbacks': [None], 'recursion_limit': 25, 'configurable': {'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', 'thread_ts': '1ef32717-bc97-6a06-8002-8e9ffc1ea75a', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca'}, 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25'}, 'values': {'some_bytes': 'c29tZV9ieXRlcw==', 'some_byte_array': 'c29tZV9ieXRlX2FycmF5', 'dict_with_bytes': {'more_bytes': 'bW9yZV9ieXRlcw=='}, 'messages': [{'content': "What's the weather in SF?", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': '7da1bafa-f53c-4df8-ba63-8dd517140b9f', 'example': False}, {'content': 'begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-2424dd6d-5cf5-4244-8d98-357640ce6e12', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}, {'content': 'tool_call__begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'tool', 'name': None, 'id': '639ca779-403d-4915-a066-327e1f634c8b', 'tool_call_id': 'tool_call_id'}]}, 'metadata': {'source': 'loop', 'step': 2, 'writes': {'tool': {'messages': [{'content': 'tool_call__begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'tool', 'name': None, 'id': '639ca779-403d-4915-a066-327e1f634c8b', 'tool_call_id': 'tool_call_id'}]}}}}} - - - - Receiving new event of type: events... - {'event': 'on_chain_stream', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'name': 'LangGraph', 'tags': [], 'metadata': {'created_by': 'system', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca'}, 'data': {'chunk': ['debug', {'type': 'checkpoint', 'timestamp': '2024-06-24T21:34:06.126966+00:00', 'step': 2, 'payload': {'config': {'tags': [], 'metadata': {'created_by': 'system', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca'}, 'callbacks': [None], 'recursion_limit': 25, 'configurable': {'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', 'thread_ts': '1ef32717-bc97-6a06-8002-8e9ffc1ea75a', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca'}, 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25'}, 'values': {'some_bytes': 'c29tZV9ieXRlcw==', 'some_byte_array': 'c29tZV9ieXRlX2FycmF5', 'dict_with_bytes': {'more_bytes': 'bW9yZV9ieXRlcw=='}, 'messages': [{'content': "What's the weather in SF?", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': '7da1bafa-f53c-4df8-ba63-8dd517140b9f', 'example': False}, {'content': 'begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-2424dd6d-5cf5-4244-8d98-357640ce6e12', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}, {'content': 'tool_call__begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'tool', 'name': None, 'id': '639ca779-403d-4915-a066-327e1f634c8b', 'tool_call_id': 'tool_call_id'}]}, 'metadata': {'source': 'loop', 'step': 2, 'writes': {'tool': {'messages': [{'content': 'tool_call__begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'tool', 'name': None, 'id': '639ca779-403d-4915-a066-327e1f634c8b', 'tool_call_id': 'tool_call_id'}]}}}}}]}, 'parent_ids': []} - - - - Receiving new event of type: debug... - {'type': 'task', 'timestamp': '2024-06-24T21:34:06.127034+00:00', 'step': 3, 'payload': {'id': 'f1ccf371-63b3-5268-a837-7f360a93c4ec', 'name': 'agent', 'input': {'some_bytes': 'c29tZV9ieXRlcw==', 'some_byte_array': 'c29tZV9ieXRlX2FycmF5', 'dict_with_bytes': {'more_bytes': 'bW9yZV9ieXRlcw=='}, 'messages': [{'content': "What's the weather in SF?", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': '7da1bafa-f53c-4df8-ba63-8dd517140b9f', 'example': False}, {'content': 'begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-2424dd6d-5cf5-4244-8d98-357640ce6e12', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}, {'content': 'tool_call__begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'tool', 'name': None, 'id': '639ca779-403d-4915-a066-327e1f634c8b', 'tool_call_id': 'tool_call_id'}], 'sleep': None}, 'triggers': ['tool']}} - - - - Receiving new event of type: events... - {'event': 'on_chain_stream', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'name': 'LangGraph', 'tags': [], 'metadata': {'created_by': 'system', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca'}, 'data': {'chunk': ['debug', {'type': 'task', 'timestamp': '2024-06-24T21:34:06.127034+00:00', 'step': 3, 'payload': {'id': 'f1ccf371-63b3-5268-a837-7f360a93c4ec', 'name': 'agent', 'input': {'some_bytes': 'c29tZV9ieXRlcw==', 'some_byte_array': 'c29tZV9ieXRlX2FycmF5', 'dict_with_bytes': {'more_bytes': 'bW9yZV9ieXRlcw=='}, 'messages': [{'content': "What's the weather in SF?", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': '7da1bafa-f53c-4df8-ba63-8dd517140b9f', 'example': False}, {'content': 'begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-2424dd6d-5cf5-4244-8d98-357640ce6e12', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}, {'content': 'tool_call__begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'tool', 'name': None, 'id': '639ca779-403d-4915-a066-327e1f634c8b', 'tool_call_id': 'tool_call_id'}], 'sleep': None}, 'triggers': ['tool']}}]}, 'parent_ids': []} - - - - Receiving new event of type: events... - {'event': 'on_chain_start', 'data': {}, 'name': 'agent', 'tags': ['graph:step:3'], 'run_id': 'b7d0900c-bfc2-43e4-b760-99bbc5bad84e', 'metadata': {'created_by': 'system', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca', 'langgraph_step': 3, 'langgraph_node': 'agent', 'langgraph_triggers': ['tool'], 'langgraph_task_idx': 0}, 'parent_ids': ['1ef32717-bc30-6cf2-8a26-33f63567bc25']} - - - - Receiving new event of type: events... - {'event': 'on_chat_model_start', 'data': {'input': {'messages': [[{'content': "What's the weather in SF?", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': '7da1bafa-f53c-4df8-ba63-8dd517140b9f', 'example': False}, {'content': 'begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-2424dd6d-5cf5-4244-8d98-357640ce6e12', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}, {'content': 'tool_call__begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'tool', 'name': None, 'id': '639ca779-403d-4915-a066-327e1f634c8b', 'tool_call_id': 'tool_call_id'}]]}}, 'name': 'FakeListChatModel', 'tags': ['seq:step:1'], 'run_id': '0f2ef0a1-0fc7-445c-9df4-55e8bb284575', 'metadata': {'created_by': 'system', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca', 'langgraph_step': 3, 'langgraph_node': 'agent', 'langgraph_triggers': ['tool'], 'langgraph_task_idx': 0, 'ls_model_type': 'chat'}, 'parent_ids': ['1ef32717-bc30-6cf2-8a26-33f63567bc25', 'b7d0900c-bfc2-43e4-b760-99bbc5bad84e']} - - - - Receiving new event of type: events... - {'event': 'on_chat_model_stream', 'data': {'chunk': {'content': 'e', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'AIMessageChunk', 'name': None, 'id': 'run-0f2ef0a1-0fc7-445c-9df4-55e8bb284575', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None, 'tool_call_chunks': []}}, 'run_id': '0f2ef0a1-0fc7-445c-9df4-55e8bb284575', 'name': 'FakeListChatModel', 'tags': ['seq:step:1'], 'metadata': {'created_by': 'system', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca', 'langgraph_step': 3, 'langgraph_node': 'agent', 'langgraph_triggers': ['tool'], 'langgraph_task_idx': 0, 'ls_model_type': 'chat'}, 'parent_ids': ['1ef32717-bc30-6cf2-8a26-33f63567bc25', 'b7d0900c-bfc2-43e4-b760-99bbc5bad84e']} - - - - Receiving new event of type: messages/metadata... - {'run-0f2ef0a1-0fc7-445c-9df4-55e8bb284575': {'metadata': {'created_by': 'system', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca', 'langgraph_step': 3, 'langgraph_node': 'agent', 'langgraph_triggers': ['tool'], 'langgraph_task_idx': 0, 'ls_model_type': 'chat'}}} - - - - Receiving new event of type: messages/partial... - [{'content': 'e', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-0f2ef0a1-0fc7-445c-9df4-55e8bb284575', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}] - - - - Receiving new event of type: events... - {'event': 'on_chat_model_stream', 'data': {'chunk': {'content': 'n', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'AIMessageChunk', 'name': None, 'id': 'run-0f2ef0a1-0fc7-445c-9df4-55e8bb284575', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None, 'tool_call_chunks': []}}, 'run_id': '0f2ef0a1-0fc7-445c-9df4-55e8bb284575', 'name': 'FakeListChatModel', 'tags': ['seq:step:1'], 'metadata': {'created_by': 'system', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca', 'langgraph_step': 3, 'langgraph_node': 'agent', 'langgraph_triggers': ['tool'], 'langgraph_task_idx': 0, 'ls_model_type': 'chat'}, 'parent_ids': ['1ef32717-bc30-6cf2-8a26-33f63567bc25', 'b7d0900c-bfc2-43e4-b760-99bbc5bad84e']} - - - - Receiving new event of type: messages/partial... - [{'content': 'en', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-0f2ef0a1-0fc7-445c-9df4-55e8bb284575', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}] - - - - Receiving new event of type: events... - {'event': 'on_chat_model_stream', 'data': {'chunk': {'content': 'd', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'AIMessageChunk', 'name': None, 'id': 'run-0f2ef0a1-0fc7-445c-9df4-55e8bb284575', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None, 'tool_call_chunks': []}}, 'run_id': '0f2ef0a1-0fc7-445c-9df4-55e8bb284575', 'name': 'FakeListChatModel', 'tags': ['seq:step:1'], 'metadata': {'created_by': 'system', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca', 'langgraph_step': 3, 'langgraph_node': 'agent', 'langgraph_triggers': ['tool'], 'langgraph_task_idx': 0, 'ls_model_type': 'chat'}, 'parent_ids': ['1ef32717-bc30-6cf2-8a26-33f63567bc25', 'b7d0900c-bfc2-43e4-b760-99bbc5bad84e']} - - - - Receiving new event of type: messages/partial... - [{'content': 'end', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-0f2ef0a1-0fc7-445c-9df4-55e8bb284575', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}] - - - - Receiving new event of type: events... - {'event': 'on_chat_model_end', 'data': {'output': {'content': 'end', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-0f2ef0a1-0fc7-445c-9df4-55e8bb284575', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}, 'input': {'messages': [[{'content': "What's the weather in SF?", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': '7da1bafa-f53c-4df8-ba63-8dd517140b9f', 'example': False}, {'content': 'begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-2424dd6d-5cf5-4244-8d98-357640ce6e12', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}, {'content': 'tool_call__begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'tool', 'name': None, 'id': '639ca779-403d-4915-a066-327e1f634c8b', 'tool_call_id': 'tool_call_id'}]]}}, 'run_id': '0f2ef0a1-0fc7-445c-9df4-55e8bb284575', 'name': 'FakeListChatModel', 'tags': ['seq:step:1'], 'metadata': {'created_by': 'system', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca', 'langgraph_step': 3, 'langgraph_node': 'agent', 'langgraph_triggers': ['tool'], 'langgraph_task_idx': 0, 'ls_model_type': 'chat'}, 'parent_ids': ['1ef32717-bc30-6cf2-8a26-33f63567bc25', 'b7d0900c-bfc2-43e4-b760-99bbc5bad84e']} - - - - Receiving new event of type: events... - {'event': 'on_chain_start', 'data': {'input': {'messages': [{'content': "What's the weather in SF?", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': '7da1bafa-f53c-4df8-ba63-8dd517140b9f', 'example': False}, {'content': 'begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-2424dd6d-5cf5-4244-8d98-357640ce6e12', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}, {'content': 'tool_call__begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'tool', 'name': None, 'id': '639ca779-403d-4915-a066-327e1f634c8b', 'tool_call_id': 'tool_call_id'}, {'content': 'end', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-0f2ef0a1-0fc7-445c-9df4-55e8bb284575', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}], 'some_bytes': 'c29tZV9ieXRlcw==', 'some_byte_array': 'c29tZV9ieXRlX2FycmF5', 'dict_with_bytes': {'more_bytes': 'bW9yZV9ieXRlcw=='}}}, 'name': 'should_continue', 'tags': ['seq:step:3'], 'run_id': '8af814e9-8136-4aab-acbc-dffc5bcafdfd', 'metadata': {'created_by': 'system', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca', 'langgraph_step': 3, 'langgraph_node': 'agent', 'langgraph_triggers': ['tool'], 'langgraph_task_idx': 0}, 'parent_ids': ['1ef32717-bc30-6cf2-8a26-33f63567bc25', 'b7d0900c-bfc2-43e4-b760-99bbc5bad84e']} - - - - Receiving new event of type: events... - {'event': 'on_chain_end', 'data': {'output': '__end__', 'input': {'messages': [{'content': "What's the weather in SF?", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': '7da1bafa-f53c-4df8-ba63-8dd517140b9f', 'example': False}, {'content': 'begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-2424dd6d-5cf5-4244-8d98-357640ce6e12', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}, {'content': 'tool_call__begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'tool', 'name': None, 'id': '639ca779-403d-4915-a066-327e1f634c8b', 'tool_call_id': 'tool_call_id'}, {'content': 'end', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-0f2ef0a1-0fc7-445c-9df4-55e8bb284575', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}], 'some_bytes': 'c29tZV9ieXRlcw==', 'some_byte_array': 'c29tZV9ieXRlX2FycmF5', 'dict_with_bytes': {'more_bytes': 'bW9yZV9ieXRlcw=='}}}, 'run_id': '8af814e9-8136-4aab-acbc-dffc5bcafdfd', 'name': 'should_continue', 'tags': ['seq:step:3'], 'metadata': {'created_by': 'system', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca', 'langgraph_step': 3, 'langgraph_node': 'agent', 'langgraph_triggers': ['tool'], 'langgraph_task_idx': 0}, 'parent_ids': ['1ef32717-bc30-6cf2-8a26-33f63567bc25', 'b7d0900c-bfc2-43e4-b760-99bbc5bad84e']} - - - - Receiving new event of type: events... - {'event': 'on_chain_stream', 'run_id': 'b7d0900c-bfc2-43e4-b760-99bbc5bad84e', 'name': 'agent', 'tags': ['graph:step:3'], 'metadata': {'created_by': 'system', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca', 'langgraph_step': 3, 'langgraph_node': 'agent', 'langgraph_triggers': ['tool'], 'langgraph_task_idx': 0}, 'data': {'chunk': {'messages': [{'content': 'end', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-0f2ef0a1-0fc7-445c-9df4-55e8bb284575', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}], 'some_bytes': 'c29tZV9ieXRlcw==', 'some_byte_array': 'c29tZV9ieXRlX2FycmF5', 'dict_with_bytes': {'more_bytes': 'bW9yZV9ieXRlcw=='}}}, 'parent_ids': ['1ef32717-bc30-6cf2-8a26-33f63567bc25']} - - - - Receiving new event of type: events... - {'event': 'on_chain_end', 'data': {'output': {'messages': [{'content': 'end', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-0f2ef0a1-0fc7-445c-9df4-55e8bb284575', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}], 'some_bytes': 'c29tZV9ieXRlcw==', 'some_byte_array': 'c29tZV9ieXRlX2FycmF5', 'dict_with_bytes': {'more_bytes': 'bW9yZV9ieXRlcw=='}}, 'input': {'some_bytes': 'c29tZV9ieXRlcw==', 'some_byte_array': 'c29tZV9ieXRlX2FycmF5', 'dict_with_bytes': {'more_bytes': 'bW9yZV9ieXRlcw=='}, 'messages': [{'content': "What's the weather in SF?", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': '7da1bafa-f53c-4df8-ba63-8dd517140b9f', 'example': False}, {'content': 'begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-2424dd6d-5cf5-4244-8d98-357640ce6e12', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}, {'content': 'tool_call__begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'tool', 'name': None, 'id': '639ca779-403d-4915-a066-327e1f634c8b', 'tool_call_id': 'tool_call_id'}], 'sleep': None}}, 'run_id': 'b7d0900c-bfc2-43e4-b760-99bbc5bad84e', 'name': 'agent', 'tags': ['graph:step:3'], 'metadata': {'created_by': 'system', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca', 'langgraph_step': 3, 'langgraph_node': 'agent', 'langgraph_triggers': ['tool'], 'langgraph_task_idx': 0}, 'parent_ids': ['1ef32717-bc30-6cf2-8a26-33f63567bc25']} - - - - Receiving new event of type: debug... - {'type': 'task_result', 'timestamp': '2024-06-24T21:34:06.133991+00:00', 'step': 3, 'payload': {'id': 'f1ccf371-63b3-5268-a837-7f360a93c4ec', 'name': 'agent', 'result': [['some_bytes', 'c29tZV9ieXRlcw=='], ['some_byte_array', 'c29tZV9ieXRlX2FycmF5'], ['dict_with_bytes', {'more_bytes': 'bW9yZV9ieXRlcw=='}], ['messages', [{'content': 'end', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-0f2ef0a1-0fc7-445c-9df4-55e8bb284575', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}]]]}} - - - - Receiving new event of type: events... - {'event': 'on_chain_stream', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'name': 'LangGraph', 'tags': [], 'metadata': {'created_by': 'system', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca'}, 'data': {'chunk': ['debug', {'type': 'task_result', 'timestamp': '2024-06-24T21:34:06.133991+00:00', 'step': 3, 'payload': {'id': 'f1ccf371-63b3-5268-a837-7f360a93c4ec', 'name': 'agent', 'result': [['some_bytes', 'c29tZV9ieXRlcw=='], ['some_byte_array', 'c29tZV9ieXRlX2FycmF5'], ['dict_with_bytes', {'more_bytes': 'bW9yZV9ieXRlcw=='}], ['messages', [{'content': 'end', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-0f2ef0a1-0fc7-445c-9df4-55e8bb284575', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}]]]}}]}, 'parent_ids': []} - - - - Receiving new event of type: events... - {'event': 'on_chain_stream', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'name': 'LangGraph', 'tags': [], 'metadata': {'created_by': 'system', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca'}, 'data': {'chunk': ['values', {'some_bytes': 'c29tZV9ieXRlcw==', 'some_byte_array': 'c29tZV9ieXRlX2FycmF5', 'dict_with_bytes': {'more_bytes': 'bW9yZV9ieXRlcw=='}, 'messages': [{'content': "What's the weather in SF?", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': '7da1bafa-f53c-4df8-ba63-8dd517140b9f', 'example': False}, {'content': 'begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-2424dd6d-5cf5-4244-8d98-357640ce6e12', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}, {'content': 'tool_call__begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'tool', 'name': None, 'id': '639ca779-403d-4915-a066-327e1f634c8b', 'tool_call_id': 'tool_call_id'}, {'content': 'end', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-0f2ef0a1-0fc7-445c-9df4-55e8bb284575', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}]}]}, 'parent_ids': []} - - - - Receiving new event of type: debug... - {'type': 'checkpoint', 'timestamp': '2024-06-24T21:34:06.134190+00:00', 'step': 3, 'payload': {'config': {'tags': [], 'metadata': {'created_by': 'system', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca'}, 'callbacks': [None], 'recursion_limit': 25, 'configurable': {'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', 'thread_ts': '1ef32717-bca9-6418-8003-8d0d0b06845c', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca'}, 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25'}, 'values': {'some_bytes': 'c29tZV9ieXRlcw==', 'some_byte_array': 'c29tZV9ieXRlX2FycmF5', 'dict_with_bytes': {'more_bytes': 'bW9yZV9ieXRlcw=='}, 'messages': [{'content': "What's the weather in SF?", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': '7da1bafa-f53c-4df8-ba63-8dd517140b9f', 'example': False}, {'content': 'begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-2424dd6d-5cf5-4244-8d98-357640ce6e12', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}, {'content': 'tool_call__begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'tool', 'name': None, 'id': '639ca779-403d-4915-a066-327e1f634c8b', 'tool_call_id': 'tool_call_id'}, {'content': 'end', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-0f2ef0a1-0fc7-445c-9df4-55e8bb284575', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}]}, 'metadata': {'source': 'loop', 'step': 3, 'writes': {'agent': {'some_bytes': 'c29tZV9ieXRlcw==', 'some_byte_array': 'c29tZV9ieXRlX2FycmF5', 'dict_with_bytes': {'more_bytes': 'bW9yZV9ieXRlcw=='}, 'messages': [{'content': 'end', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-0f2ef0a1-0fc7-445c-9df4-55e8bb284575', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}]}}}}} - - - - Receiving new event of type: events... - {'event': 'on_chain_stream', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'name': 'LangGraph', 'tags': [], 'metadata': {'created_by': 'system', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca'}, 'data': {'chunk': ['debug', {'type': 'checkpoint', 'timestamp': '2024-06-24T21:34:06.134190+00:00', 'step': 3, 'payload': {'config': {'tags': [], 'metadata': {'created_by': 'system', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca'}, 'callbacks': [None], 'recursion_limit': 25, 'configurable': {'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', 'thread_ts': '1ef32717-bca9-6418-8003-8d0d0b06845c', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca'}, 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25'}, 'values': {'some_bytes': 'c29tZV9ieXRlcw==', 'some_byte_array': 'c29tZV9ieXRlX2FycmF5', 'dict_with_bytes': {'more_bytes': 'bW9yZV9ieXRlcw=='}, 'messages': [{'content': "What's the weather in SF?", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': '7da1bafa-f53c-4df8-ba63-8dd517140b9f', 'example': False}, {'content': 'begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-2424dd6d-5cf5-4244-8d98-357640ce6e12', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}, {'content': 'tool_call__begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'tool', 'name': None, 'id': '639ca779-403d-4915-a066-327e1f634c8b', 'tool_call_id': 'tool_call_id'}, {'content': 'end', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-0f2ef0a1-0fc7-445c-9df4-55e8bb284575', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}]}, 'metadata': {'source': 'loop', 'step': 3, 'writes': {'agent': {'some_bytes': 'c29tZV9ieXRlcw==', 'some_byte_array': 'c29tZV9ieXRlX2FycmF5', 'dict_with_bytes': {'more_bytes': 'bW9yZV9ieXRlcw=='}, 'messages': [{'content': 'end', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-0f2ef0a1-0fc7-445c-9df4-55e8bb284575', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}]}}}}}]}, 'parent_ids': []} - - - - Receiving new event of type: events... - {'event': 'on_chain_end', 'data': {'output': {'some_bytes': 'c29tZV9ieXRlcw==', 'some_byte_array': 'c29tZV9ieXRlX2FycmF5', 'dict_with_bytes': {'more_bytes': 'bW9yZV9ieXRlcw=='}, 'messages': [{'content': "What's the weather in SF?", 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'human', 'name': None, 'id': '7da1bafa-f53c-4df8-ba63-8dd517140b9f', 'example': False}, {'content': 'begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-2424dd6d-5cf5-4244-8d98-357640ce6e12', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}, {'content': 'tool_call__begin', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'tool', 'name': None, 'id': '639ca779-403d-4915-a066-327e1f634c8b', 'tool_call_id': 'tool_call_id'}, {'content': 'end', 'additional_kwargs': {}, 'response_metadata': {}, 'type': 'ai', 'name': None, 'id': 'run-0f2ef0a1-0fc7-445c-9df4-55e8bb284575', 'example': False, 'tool_calls': [], 'invalid_tool_calls': [], 'usage_metadata': None}]}}, 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'name': 'LangGraph', 'tags': [], 'metadata': {'created_by': 'system', 'run_id': '1ef32717-bc30-6cf2-8a26-33f63567bc25', 'user_id': '', 'graph_id': 'agent', 'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', 'assistant_id': 'fe096781-5601-53d2-b2f6-0d3403f7e9ca'}, 'parent_ids': []} - - - - Receiving new event of type: end... - None - - - diff --git a/docs/docs/cloud/how-tos/stream_updates.md b/docs/docs/cloud/how-tos/stream_updates.md deleted file mode 100644 index 1c08b5e80..000000000 --- a/docs/docs/cloud/how-tos/stream_updates.md +++ /dev/null @@ -1,217 +0,0 @@ -# How to stream state updates of your graph - -!!! info "Prerequisites" - * [Streaming](../../concepts/streaming.md) - -This guide covers how to use `stream_mode="updates"` for your graph, which will stream the updates to the graph state that are made after each node is executed. This differs from using `stream_mode="values"`: instead of streaming the entire value of the state at each superstep, it only streams the updates from each of the nodes that made an update to the state at that superstep. - -## Setup - -First let's set up our client and thread: - -=== "Python" - - ```python - from langgraph_sdk import get_client - - client = get_client(url=) - # Using the graph deployed with the name "agent" - assistant_id = "agent" - # create thread - thread = await client.threads.create() - print(thread) - ``` - -=== "Javascript" - - ```js - import { Client } from "@langchain/langgraph-sdk"; - - const client = new Client({ apiUrl: }); - // Using the graph deployed with the name "agent" - const assistantID = "agent"; - // create thread - const thread = await client.threads.create(); - console.log(thread); - ``` - -=== "CURL" - - ```bash - curl --request POST \ - --url /threads \ - --header 'Content-Type: application/json' \ - --data '{}' - ``` - -Output: - - { - 'thread_id': '979e3c89-a702-4882-87c2-7a59a250ce16', - 'created_at': '2024-06-21T15:22:07.453100+00:00', - 'updated_at': '2024-06-21T15:22:07.453100+00:00', - 'metadata': {}, - 'status': 'idle', - 'config': {}, - 'values': None - } - -## Stream graph in updates mode - -Now we can stream by updates, which outputs updates made to the state by each node after it has executed: - - -=== "Python" - - ```python - input = { - "messages": [ - { - "role": "user", - "content": "what's the weather in la" - } - ] - } - async for chunk in client.runs.stream( - thread["thread_id"], - assistant_id, - input=input, - stream_mode="updates", - ): - print(f"Receiving new event of type: {chunk.event}...") - print(chunk.data) - print("\n\n") - ``` - -=== "Javascript" - - ```js - const input = { - messages: [ - { - role: "human", - content: "What's the weather in la" - } - ] - }; - - const streamResponse = client.runs.stream( - thread["thread_id"], - assistantID, - { - input, - streamMode: "updates" - } - ); - - for await (const chunk of streamResponse) { - console.log(`Receiving new event of type: ${chunk.event}...`); - console.log(chunk.data); - console.log("\n\n"); - } - ``` - -=== "CURL" - - ```bash - curl --request POST \ - --url /threads//runs/stream \ - --header 'Content-Type: application/json' \ - --data "{ - \"assistant_id\": \"agent\", - \"input\": {\"messages\": [{\"role\": \"human\", \"content\": \"What's the weather in la\"}]}, - \"stream_mode\": [ - \"updates\" - ] - }" | \ - sed 's/\r$//' | \ - awk ' - /^event:/ { - if (data_content != "") { - print data_content "\n" - } - sub(/^event: /, "Receiving event of type: ", $0) - printf "%s...\n", $0 - data_content = "" - } - /^data:/ { - sub(/^data: /, "", $0) - data_content = $0 - } - END { - if (data_content != "") { - print data_content "\n" - } - } - ' - ``` - -Output: - - Receiving new event of type: metadata... - {"run_id": "cfc96c16-ed9a-44bd-b5bb-c30e3c0725f0"} - - - - Receiving new event of type: updates... - { - "agent": { - "messages": [ - { - "type": "ai", - "tool_calls": [ - { - "name": "tavily_search_results_json", - "args": { - "query": "weather in los angeles" - }, - "id": "toolu_0148tMmDK51iLQfG1yaNwRHM" - } - ], - ... - } - ] - } - } - - - - Receiving new event of type: updates... - { - "action": { - "messages": [ - { - "content": [ - { - "url": "https://www.weatherapi.com/", - "content": "{\"location\": {\"name\": \"Los Angeles\", \"region\": \"California\", \"country\": \"United States of America\", \"lat\": 34.05, \"lon\": -118.24, \"tz_id\": \"America/Los_Angeles\", \"localtime_epoch\": 1716062239, \"localtime\": \"2024-05-18 12:57\"}, \"current\": {\"last_updated_epoch\": 1716061500, \"last_updated\": \"2024-05-18 12:45\", \"temp_c\": 18.9, \"temp_f\": 66.0, \"is_day\": 1, \"condition\": {\"text\": \"Overcast\", \"icon\": \"//cdn.weatherapi.com/weather/64x64/day/122.png\", \"code\": 1009}, \"wind_mph\": 2.2, \"wind_kph\": 3.6, \"wind_degree\": 10, \"wind_dir\": \"N\", \"pressure_mb\": 1017.0, \"pressure_in\": 30.02, \"precip_mm\": 0.0, \"precip_in\": 0.0, \"humidity\": 65, \"cloud\": 100, \"feelslike_c\": 18.9, \"feelslike_f\": 66.0, \"vis_km\": 16.0, \"vis_miles\": 9.0, \"uv\": 6.0, \"gust_mph\": 7.5, \"gust_kph\": 12.0}}" - } - ], - "type": "tool", - "name": "tavily_search_results_json", - "tool_call_id": "toolu_0148tMmDK51iLQfG1yaNwRHM", - ... - } - ] - } - } - - - - Receiving new event of type: updates... - { - "agent": { - "messages": [ - { - "content": "The weather in Los Angeles is currently overcast with a temperature of around 66°F (18.9°C). There are light winds from the north at around 2-3 mph. The humidity is 65% and visibility is good at 9 miles. Overall, mild spring weather conditions in LA.", - "type": "ai", - ... - } - ] - } - } - - - - Receiving new event of type: end... - None \ No newline at end of file diff --git a/docs/docs/cloud/how-tos/stream_values.md b/docs/docs/cloud/how-tos/stream_values.md deleted file mode 100644 index 17e186027..000000000 --- a/docs/docs/cloud/how-tos/stream_values.md +++ /dev/null @@ -1,335 +0,0 @@ -# How to stream full state of your graph - -!!! info "Prerequisites" - * [Streaming](../../concepts/streaming.md) - -This guide covers how to use `stream_mode="values"`, which streams the value of the state at each superstep. This differs from using `stream_mode="updates"`: instead of streaming just the updates to the state from each node, it streams the entire graph state at that superstep. - -## Setup - -First let's set up our client and thread: - -=== "Python" - - ```python - from langgraph_sdk import get_client - - client = get_client(url=) - # Using the graph deployed with the name "agent" - assistant_id = "agent" - # create thread - thread = await client.threads.create() - print(thread) - ``` - -=== "Javascript" - - ```js - import { Client } from "@langchain/langgraph-sdk"; - - const client = new Client({ apiUrl: }); - // Using the graph deployed with the name "agent" - const assistantID = "agent"; - // create thread - const thread = await client.threads.create(); - console.log(thread); - ``` - -=== "CURL" - - ```bash - curl --request POST \ - --url /threads \ - --header 'Content-Type: application/json' \ - --data '{}' - ``` - -Output: - - { - 'thread_id': 'bfc68029-1f7b-400f-beab-6f9032a52da4', - 'created_at': '2024-06-24T21:30:07.980789+00:00', - 'updated_at': '2024-06-24T21:30:07.980789+00:00', - 'metadata': {}, - 'status': 'idle', - 'config': {}, - 'values': None - } - -## Stream graph in values mode - -Now we can stream by values, which streams the full state of the graph after each node has finished executing: - -=== "Python" - - ```python - input = {"messages": [{"role": "user", "content": "what's the weather in la"}]} - - # stream values - async for chunk in client.runs.stream( - thread["thread_id"], - assistant_id, - input=input, - stream_mode="values" - ): - print(f"Receiving new event of type: {chunk.event}...") - print(chunk.data) - print("\n\n") - ``` - -=== "Javascript" - - ```js - const input = {"messages": [{"role": "user", "content": "what's the weather in la"}]} - - const streamResponse = client.runs.stream( - thread["thread_id"], - assistantID, - { - input, - streamMode: "values" - } - ); - for await (const chunk of streamResponse) { - console.log(`Receiving new event of type: ${chunk.event}...`); - console.log(chunk.data); - console.log("\n\n"); - } - ``` - -=== "CURL" - - ```bash - curl --request POST \ - --url /threads//runs/stream \ - --header 'Content-Type: application/json' \ - --data "{ - \"assistant_id\": \"agent\", - \"input\": {\"messages\": [{\"role\": \"human\", \"content\": \"what's the weather in la\"}]}, - \"stream_mode\": [ - \"values\" - ] - }" | \ - sed 's/\r$//' | \ - awk ' - /^event:/ { - if (data_content != "") { - print data_content "\n" - } - sub(/^event: /, "Receiving event of type: ", $0) - printf "%s...\n", $0 - data_content = "" - } - /^data:/ { - sub(/^data: /, "", $0) - data_content = $0 - } - END { - if (data_content != "") { - print data_content "\n" - } - } - ' - ``` - - -Output: - - Receiving new event of type: metadata... - {"run_id": "f08791ce-0a3d-44e0-836c-ff62cd2e2786"} - - - - Receiving new event of type: values... - { - "messages": [ - { - "role": "human", - "content": "what's the weather in la" - } - ] - } - - - - Receiving new event of type: values... - { - "messages": [ - { - "content": "what's the weather in la", - "type": "human", - ... - }, - { - "content": "", - "type": "ai", - "tool_calls": [ - { - "name": "tavily_search_results_json", - "args": { - "query": "weather in los angeles" - }, - "id": "toolu_01E5mSaZWm5rWJnCqmt63v4g" - } - ], - ... - } - ] - } - - ... - - Receiving new event of type: values... - { - "messages": [ - { - "content": "what's the weather in la", - "type": "human", - ... - }, - { - "content": "", - "type": "ai", - "tool_calls": [ - { - "name": "tavily_search_results_json", - "args": { - "query": "weather in los angeles" - }, - "id": "toolu_01E5mSaZWm5rWJnCqmt63v4g" - } - ], - ... - } - { - "content": [ - { - "url": "https://www.weatherapi.com/", - "content": "{\"location\": {\"name\": \"Los Angeles\", \"region\": \"California\", \"country\": \"United States of America\", \"lat\": 34.05, \"lon\": -118.24, \"tz_id\": \"America/Los_Angeles\", \"localtime_epoch\": 1716310320, \"localtime\": \"2024-05-21 9:52\"}, \"current\": {\"last_updated_epoch\": 1716309900, \"last_updated\": \"2024-05-21 09:45\", \"temp_c\": 16.7, \"temp_f\": 62.1, \"is_day\": 1, \"condition\": {\"text\": \"Overcast\", \"icon\": \"//cdn.weatherapi.com/weather/64x64/day/122.png\", \"code\": 1009}, \"wind_mph\": 8.1, \"wind_kph\": 13.0, \"wind_degree\": 250, \"wind_dir\": \"WSW\", \"pressure_mb\": 1015.0, \"pressure_in\": 29.97, \"precip_mm\": 0.0, \"precip_in\": 0.0, \"humidity\": 65, \"cloud\": 100, \"feelslike_c\": 16.7, \"feelslike_f\": 62.1, \"vis_km\": 16.0, \"vis_miles\": 9.0, \"uv\": 5.0, \"gust_mph\": 12.5, \"gust_kph\": 20.2}}" - } - ], - "type": "tool", - "name": "tavily_search_results_json", - "tool_call_id": "toolu_01E5mSaZWm5rWJnCqmt63v4g" - ... - }, - { - "content": "Based on the weather API results, the current weather in Los Angeles is overcast with a temperature of around 62°F (17°C). There are light winds from the west-southwest around 8-13 mph. The humidity is 65% and visibility is good at 9 miles. Overall, mild spring weather conditions in LA.", - "type": "ai", - ... - } - ] - } - - - - Receiving new event of type: end... - None - - - - - -If we want to just get the final result, we can use this endpoint and just keep track of the last value we received - - -=== "Python" - - ```python - final_answer = None - async for chunk in client.runs.stream( - thread["thread_id"], - assistant_id, - input=input, - stream_mode="values" - ): - if chunk.event == "values": - final_answer = chunk.data - ``` - -=== "Javascript" - - ```js - let finalAnswer; - const streamResponse = client.runs.stream( - thread["thread_id"], - assistantID, - { - input, - streamMode: "values" - } - ); - for await (const chunk of streamResponse) { - finalAnswer = chunk.data; - } - ``` - -=== "CURL" - - ```bash - curl --request POST \ - --url /threads//runs/stream \ - --header 'Content-Type: application/json' \ - --data "{ - \"assistant_id\": \"agent\", - \"input\": {\"messages\": [{\"role\": \"human\", \"content\": \"what's the weather in la\"}]}, - \"stream_mode\": [ - \"values\" - ] - }" | \ - sed 's/\r$//' | \ - awk ' - /^data:/ { - sub(/^data: /, "", $0) - data_content = $0 - } - END { - if (data_content != "") { - print data_content - } - } - ' - ``` - - -Output: - - { - "messages": [ - { - "content": "what's the weather in la", - "type": "human", - ... - }, - { - "type": "ai", - "tool_calls": [ - { - "name": "tavily_search_results_json", - "args": { - "query": "weather in los angeles" - }, - "id": "toolu_01E5mSaZWm5rWJnCqmt63v4g" - } - ], - ... - } - { - "content": [ - { - "url": "https://www.weatherapi.com/", - "content": "{\"location\": {\"name\": \"Los Angeles\", \"region\": \"California\", \"country\": \"United States of America\", \"lat\": 34.05, \"lon\": -118.24, \"tz_id\": \"America/Los_Angeles\", \"localtime_epoch\": 1716310320, \"localtime\": \"2024-05-21 9:52\"}, \"current\": {\"last_updated_epoch\": 1716309900, \"last_updated\": \"2024-05-21 09:45\", \"temp_c\": 16.7, \"temp_f\": 62.1, \"is_day\": 1, \"condition\": {\"text\": \"Overcast\", \"icon\": \"//cdn.weatherapi.com/weather/64x64/day/122.png\", \"code\": 1009}, \"wind_mph\": 8.1, \"wind_kph\": 13.0, \"wind_degree\": 250, \"wind_dir\": \"WSW\", \"pressure_mb\": 1015.0, \"pressure_in\": 29.97, \"precip_mm\": 0.0, \"precip_in\": 0.0, \"humidity\": 65, \"cloud\": 100, \"feelslike_c\": 16.7, \"feelslike_f\": 62.1, \"vis_km\": 16.0, \"vis_miles\": 9.0, \"uv\": 5.0, \"gust_mph\": 12.5, \"gust_kph\": 20.2}}" - } - ], - "type": "tool", - "name": "tavily_search_results_json", - "tool_call_id": "toolu_01E5mSaZWm5rWJnCqmt63v4g" - ... - }, - { - "content": "Based on the weather API results, the current weather in Los Angeles is overcast with a temperature of around 62°F (17°C). There are light winds from the west-southwest around 8-13 mph. The humidity is 65% and visibility is good at 9 miles. Overall, mild spring weather conditions in LA.", - "type": "ai", - ... - } - ] - } \ No newline at end of file diff --git a/docs/docs/cloud/how-tos/streaming.md b/docs/docs/cloud/how-tos/streaming.md new file mode 100644 index 000000000..9ccf5d6be --- /dev/null +++ b/docs/docs/cloud/how-tos/streaming.md @@ -0,0 +1,879 @@ +# Stream outputs + +## Streaming API + +[LangGraph SDK](https://langchain-ai.github.io/langgraph/cloud/reference/sdk/python_sdk_ref/) allows you to stream outputs from the LangGraph API server. + +Basic usage example: + +=== "Python" + + ```python + from langgraph_sdk import get_client + client = get_client(url=, api_key=) + + # Using the graph deployed with the name "agent" + assistant_id = "agent" + + # create a thread + thread = await client.threads.create() + thread_id = thread["thread_id"] + + # create a streaming run + # highlight-next-line + async for chunk in client.runs.stream( + thread_id, + assistant_id, + input=inputs, + stream_mode="updates" + ): + print(chunk.data) + ``` + +=== "JavaScript" + + ```js + import { Client } from "@langchain/langgraph-sdk"; + const client = new Client({ apiUrl: , apiKey: }); + + // Using the graph deployed with the name "agent" + const assistantID = "agent"; + + // create a thread + const thread = await client.threads.create(); + const threadID = thread["thread_id"]; + + // create a streaming run + // highlight-next-line + const streamResponse = client.runs.stream( + threadID, + assistantID, + { + input, + streamMode: "updates" + } + ); + for await (const chunk of streamResponse) { + console.log(chunk.data); + } + ``` + +=== "cURL" + + Create a thread: + + ```bash + curl --request POST \ + --url /threads \ + --header 'Content-Type: application/json' \ + --data '{}' + ``` + + Create a streaming run: + + ```bash + curl --request POST \ + --url /threads//runs/stream \ + --header 'Content-Type: application/json' \ + --header 'x-api-key: ' + --data "{ + \"assistant_id\": \"agent\", + \"input\": , + \"stream_mode\": \"updates\" + }" + ``` + +??? example "Extended example: streaming updates" + + This is an example graph you can run in the LangGraph API server. + See [LangGraph Platform quickstart](../quick_start.md) for more details. + + ```python + # graph.py + from typing import TypedDict + from langgraph.graph import StateGraph, START, END + + class State(TypedDict): + topic: str + joke: str + + def refine_topic(state: State): + return {"topic": state["topic"] + " and cats"} + + def generate_joke(state: State): + return {"joke": f"This is a joke about {state['topic']}"} + + graph = ( + StateGraph(State) + .add_node(refine_topic) + .add_node(generate_joke) + .add_edge(START, "refine_topic") + .add_edge("refine_topic", "generate_joke") + .add_edge("generate_joke", END) + .compile() + ) + ``` + + Once you have a running LangGraph API server, you can interact with it using + [LangGraph SDK](https://langchain-ai.github.io/langgraph/cloud/reference/sdk/python_sdk_ref/) + + === "Python" + + ```python + from langgraph_sdk import get_client + client = get_client(url=) + + # Using the graph deployed with the name "agent" + assistant_id = "agent" + + # create a thread + thread = await client.threads.create() + thread_id = thread["thread_id"] + + # create a streaming run + # highlight-next-line + async for chunk in client.runs.stream( # (1)! + thread_id, + assistant_id, + input={"topic": "ice cream"}, + # highlight-next-line + stream_mode="updates" # (2)! + ): + print(chunk.data) + ``` + + 1. The `client.runs.stream()` method returns an iterator that yields streamed outputs. + 2. Set `stream_mode="updates"` to stream only the updates to the graph state after each node. Other stream modes are also available. See [supported stream modes](#supported-stream-modes) for details. + + === "JavaScript" + + ```js + import { Client } from "@langchain/langgraph-sdk"; + const client = new Client({ apiUrl: }); + + // Using the graph deployed with the name "agent" + const assistantID = "agent"; + + // create a thread + const thread = await client.threads.create(); + const threadID = thread["thread_id"]; + + // create a streaming run + // highlight-next-line + const streamResponse = client.runs.stream( // (1)! + threadID, + assistantID, + { + input: { topic: "ice cream" }, + // highlight-next-line + streamMode: "updates" // (2)! + } + ); + for await (const chunk of streamResponse) { + console.log(chunk.data); + } + ``` + + 1. The `client.runs.stream()` method returns an iterator that yields streamed outputs. + 2. Set `streamMode: "updates"` to stream only the updates to the graph state after each node. Other stream modes are also available. See [supported stream modes](#supported-stream-modes) for details. + + === "cURL" + + Create a thread: + + ```bash + curl --request POST \ + --url /threads \ + --header 'Content-Type: application/json' \ + --data '{}' + ``` + + Create a streaming run: + + ```bash + curl --request POST \ + --url /threads//runs/stream \ + --header 'Content-Type: application/json' \ + --data "{ + \"assistant_id\": \"agent\", + \"input\": {\"topic\": \"ice cream\"}, + \"stream_mode\": \"updates\" + }" + ``` + + ```output + {'run_id': '1f02c2b3-3cef-68de-b720-eec2a4a8e920', 'attempt': 1} + {'refine_topic': {'topic': 'ice cream and cats'}} + {'generate_joke': {'joke': 'This is a joke about ice cream and cats'}} + ``` + + +### Supported stream modes + +| Mode | Description | LangGraph Library Method | +|----------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------| +| [`values`](#stream-graph-state) | Stream the full graph state after each [super-step](../../concepts/low_level.md#graphs). | `.stream()` / `.astream()` with [`stream_mode="values"`](../../how-tos/streaming.md#stream-graph-state) | +| [`updates`](#stream-graph-state) | Streams the updates to the state after each step of the graph. If multiple updates are made in the same step (e.g., multiple nodes are run), those updates are streamed separately. | `.stream()` / `.astream()` with [`stream_mode="updates"`](../../how-tos/streaming.md#stream-graph-state) | +| [`messages-tuple`](#messages) | Streams LLM tokens and metadata for the graph node where the LLM is invoked (useful for chat apps). | `.stream()` / `.astream()` with [`stream_mode="messages"`](../../how-tos/streaming.md#messages) | +| [`debug`](#debug) | Streams as much information as possible throughout the execution of the graph. | `.stream()` / `.astream()` with [`stream_mode="debug"`](../../how-tos/streaming.md#stream-graph-state) | +| [`custom`](#stream-custom-data) | Streams custom data from inside your graph | `.stream()` / `.astream()` with [`stream_mode="custom"`](../../how-tos/streaming.md#stream-custom-data) | +| [`events`](#stream-events) | Stream all events (including the state of the graph); mainly useful when migrating large LCEL apps. | `.astream_events()` + +### Stream multiple modes + +You can pass a list as the `stream_mode` parameter to stream multiple modes at once. + +The streamed outputs will be tuples of `(mode, chunk)` where `mode` is the name of the stream mode and `chunk` is the data streamed by that mode. + +=== "Python" + + ```python + async for chunk in client.runs.stream( + thread_id, + assistant_id, + input=inputs, + stream_mode=["updates", "custom"] + ): + print(chunk) + ``` + +=== "JavaScript" + + ```js + const streamResponse = client.runs.stream( + threadID, + assistantID, + { + input, + streamMode: ["updates", "custom"] + } + ); + for await (const chunk of streamResponse) { + console.log(chunk); + } + ``` + +=== "cURL" + + ```bash + curl --request POST \ + --url /threads//runs/stream \ + --header 'Content-Type: application/json' \ + --data "{ + \"assistant_id\": \"agent\", + \"input\": , + \"stream_mode\": [ + \"updates\" + \"custom\" + ] + }" + ``` + +## Stream graph state + +Use the stream modes `updates` and `values` to stream the state of the graph as it executes. + +* `updates` streams the **updates** to the state after each step of the graph. +* `values` streams the **full value** of the state after each step of the graph. + +??? example "Example graph" + + ```python + from typing import TypedDict + from langgraph.graph import StateGraph, START, END + + class State(TypedDict): + topic: str + joke: str + + def refine_topic(state: State): + return {"topic": state["topic"] + " and cats"} + + def generate_joke(state: State): + return {"joke": f"This is a joke about {state['topic']}"} + + graph = ( + StateGraph(State) + .add_node(refine_topic) + .add_node(generate_joke) + .add_edge(START, "refine_topic") + .add_edge("refine_topic", "generate_joke") + .add_edge("generate_joke", END) + .compile() + ) + ``` + +!!! note "Stateful runs" + + Examples below assume that you want to **persist the outputs** of a streaming run in the [checkpointer](../../concepts/persistence.md) DB and have created a thread. To create a thread: + + === "Python" + + ```python + from langgraph_sdk import get_client + client = get_client(url=) + + # Using the graph deployed with the name "agent" + assistant_id = "agent" + # create a thread + thread = await client.threads.create() + thread_id = thread["thread_id"] + ``` + + === "JavaScript" + + ```js + import { Client } from "@langchain/langgraph-sdk"; + const client = new Client({ apiUrl: }); + + // Using the graph deployed with the name "agent" + const assistantID = "agent"; + // create a thread + const thread = await client.threads.create(); + const threadID = thread["thread_id"] + ``` + + === "cURL" + + ```bash + curl --request POST \ + --url /threads \ + --header 'Content-Type: application/json' \ + --data '{}' + ``` + + If you don't need to persist the outputs of a run, you can pass `None` instead of `thread_id` when streaming. + +=== "updates" + + Use this to stream only the **state updates** returned by the nodes after each step. The streamed outputs include the name of the node as well as the update. + + === "Python" + + ```python + async for chunk in client.runs.stream( + thread_id, + assistant_id, + input={"topic": "ice cream"}, + # highlight-next-line + stream_mode="updates" + ): + print(chunk.data) + ``` + + === "JavaScript" + + ```js + const streamResponse = client.runs.stream( + threadID, + assistantID, + { + input: { topic: "ice cream" }, + // highlight-next-line + streamMode: "updates" + } + ); + for await (const chunk of streamResponse) { + console.log(chunk.data); + } + ``` + + === "cURL" + + ```bash + curl --request POST \ + --url /threads//runs/stream \ + --header 'Content-Type: application/json' \ + --data "{ + \"assistant_id\": \"agent\", + \"input\": {\"topic\": \"ice cream\"}, + \"stream_mode\": \"updates\" + }" + ``` + +=== "values" + + Use this to stream the **full state** of the graph after each step. + + === "Python" + + ```python + async for chunk in client.runs.stream( + thread_id, + assistant_id, + input={"topic": "ice cream"}, + # highlight-next-line + stream_mode="values" + ): + print(chunk.data) + ``` + + === "JavaScript" + + ```js + const streamResponse = client.runs.stream( + threadID, + assistantID, + { + input: { topic: "ice cream" }, + // highlight-next-line + streamMode: "values" + } + ); + for await (const chunk of streamResponse) { + console.log(chunk.data); + } + ``` + + === "cURL" + + ```bash + curl --request POST \ + --url /threads//runs/stream \ + --header 'Content-Type: application/json' \ + --data "{ + \"assistant_id\": \"agent\", + \"input\": {\"topic\": \"ice cream\"}, + \"stream_mode\": \"values\" + }" + ``` + + +## Subgraphs + +To include outputs from [subgraphs](../../concepts/subgraphs.md) in the streamed outputs, you can set `subgraphs=True` in the `.stream()` method of the parent graph. This will stream outputs from both the parent graph and any subgraphs. + +```python +for chunk in client.runs.stream( + thread_id, + assistant_id, + input={"foo": "foo"}, + # highlight-next-line + stream_subgraphs=True, # (1)! + stream_mode="updates", +): + print(chunk) +``` + +1. Set `stream_subgraphs=True` to stream outputs from subgraphs. + +??? example "Extended example: streaming from subgraphs" + + This is an example graph you can run in the LangGraph API server. + See [LangGraph Platform quickstart](../quick_start.md) for more details. + + ```python + # graph.py + from langgraph.graph import START, StateGraph + from typing import TypedDict + + # Define subgraph + class SubgraphState(TypedDict): + foo: str # note that this key is shared with the parent graph state + bar: str + + def subgraph_node_1(state: SubgraphState): + return {"bar": "bar"} + + def subgraph_node_2(state: SubgraphState): + return {"foo": state["foo"] + state["bar"]} + + subgraph_builder = StateGraph(SubgraphState) + subgraph_builder.add_node(subgraph_node_1) + subgraph_builder.add_node(subgraph_node_2) + subgraph_builder.add_edge(START, "subgraph_node_1") + subgraph_builder.add_edge("subgraph_node_1", "subgraph_node_2") + subgraph = subgraph_builder.compile() + + # Define parent graph + class ParentState(TypedDict): + foo: str + + def node_1(state: ParentState): + return {"foo": "hi! " + state["foo"]} + + builder = StateGraph(ParentState) + builder.add_node("node_1", node_1) + builder.add_node("node_2", subgraph) + builder.add_edge(START, "node_1") + builder.add_edge("node_1", "node_2") + graph = builder.compile() + ``` + + Once you have a running LangGraph API server, you can interact with it using + [LangGraph SDK](https://langchain-ai.github.io/langgraph/cloud/reference/sdk/python_sdk_ref/) + + === "Python" + + ```python + from langgraph_sdk import get_client + client = get_client(url=) + + # Using the graph deployed with the name "agent" + assistant_id = "agent" + + # create a thread + thread = await client.threads.create() + thread_id = thread["thread_id"] + + async for chunk in client.runs.stream( + thread_id, + assistant_id, + input={"foo": "foo"}, + # highlight-next-line + stream_subgraphs=True, # (1)! + stream_mode="updates", + ): + print(chunk) + ``` + + 1. Set `stream_subgraphs=True` to stream outputs from subgraphs. + + === "JavaScript" + + ```js + import { Client } from "@langchain/langgraph-sdk"; + const client = new Client({ apiUrl: }); + + // Using the graph deployed with the name "agent" + const assistantID = "agent"; + + // create a thread + const thread = await client.threads.create(); + const threadID = thread["thread_id"]; + + // create a streaming run + const streamResponse = client.runs.stream( + threadID, + assistantID, + { + input: { foo: "foo" }, + // highlight-next-line + streamSubgraphs: true, // (1)! + streamMode: "updates" + } + ); + for await (const chunk of streamResponse) { + console.log(chunk); + } + ``` + + 1. Set `streamSubgraphs: true` to stream outputs from subgraphs. + + === "cURL" + + Create a thread: + + ```bash + curl --request POST \ + --url /threads \ + --header 'Content-Type: application/json' \ + --data '{}' + ``` + + Create a streaming run: + + ```bash + curl --request POST \ + --url /threads//runs/stream \ + --header 'Content-Type: application/json' \ + --data "{ + \"assistant_id\": \"agent\", + \"input\": {\"foo\": \"foo\"}, + \"stream_subgraphs\": true, + \"stream_mode\": [ + \"updates\" + ] + }" + ``` + + **Note** that we are receiving not just the node updates, but we also the namespaces which tell us what graph (or subgraph) we are streaming from. + +## Debugging {#debug} + +Use the `debug` streaming mode to stream as much information as possible throughout the execution of the graph. The streamed outputs include the name of the node as well as the full state. + +=== "Python" + + ```python + async for chunk in client.runs.stream( + thread_id, + assistant_id, + input={"topic": "ice cream"}, + # highlight-next-line + stream_mode="debug" + ): + print(chunk.data) + ``` + +=== "JavaScript" + + ```js + const streamResponse = client.runs.stream( + threadID, + assistantID, + { + input: { topic: "ice cream" }, + // highlight-next-line + streamMode: "debug" + } + ); + for await (const chunk of streamResponse) { + console.log(chunk.data); + } + ``` + +=== "cURL" + + ```bash + curl --request POST \ + --url /threads//runs/stream \ + --header 'Content-Type: application/json' \ + --data "{ + \"assistant_id\": \"agent\", + \"input\": {\"topic\": \"ice cream\"}, + \"stream_mode\": \"debug\" + }" + ``` + +## LLM tokens {#messages} + +Use the `messages-tuple` streaming mode to stream Large Language Model (LLM) outputs **token by token** from any part of your graph, including nodes, tools, subgraphs, or tasks. + +The streamed output from [`messages-tuple` mode](#supported-stream-modes) is a tuple `(message_chunk, metadata)` where: + +- `message_chunk`: the token or message segment from the LLM. +- `metadata`: a dictionary containing details about the graph node and LLM invocation. + +> If your LLM is not available as a LangChain integration, you can stream its outputs using `custom` mode instead. See [use with any LLM](#use-with-any-llm) for details. + +!!! warning "Manual config required for async in Python < 3.11" + + When using Python < 3.11 with async code in your graph, you must explicitly pass `RunnableConfig` to `ainvoke()` to enable proper streaming. See [Async with Python < 3.11](#async) for details or upgrade to Python 3.11+. + +??? example "Example graph" + + ```python + from dataclasses import dataclass + + from langchain.chat_models import init_chat_model + from langgraph.graph import StateGraph, START + + @dataclass + class MyState: + topic: str + joke: str = "" + + llm = init_chat_model(model="openai:gpt-4o-mini") + + def call_model(state: MyState): + """Call the LLM to generate a joke about a topic""" + # highlight-next-line + llm_response = llm.invoke( # (1)! + [ + {"role": "user", "content": f"Generate a joke about {state.topic}"} + ] + ) + return {"joke": llm_response.content} + + graph = ( + StateGraph(MyState) + .add_node(call_model) + .add_edge(START, "call_model") + .compile() + ) + ``` + + 1. Note that the message events are emitted even when the LLM is run using `.invoke` rather than `.stream`. + +=== "Python" + + ```python + async for chunk in client.runs.stream( + thread_id, + assistant_id, + input={"topic": "ice cream"}, + # highlight-next-line + stream_mode="messages-tuple", + ): + if chunk.event != "messages": + continue + + message_chunk, metadata = chunk.data # (1)! + if message_chunk["content"]: + print(message_chunk["content"], end="|", flush=True) + ``` + + 1. The "messages-tuple" stream mode returns an iterator of tuples `(message_chunk, metadata)` where `message_chunk` is the token streamed by the LLM and `metadata` is a dictionary with information about the graph node where the LLM was called and other information. + +=== "JavaScript" + + ```js + const streamResponse = client.runs.stream( + threadID, + assistantID, + { + input: { topic: "ice cream" }, + // highlight-next-line + streamMode: "messages-tuple" + } + ); + for await (const chunk of streamResponse) { + if (chunk.event !== "messages") { + continue; + } + console.log(chunk.data[0]["content"]); // (1)! + } + ``` + + 1. The "messages-tuple" stream mode returns an iterator of tuples `(message_chunk, metadata)` where `message_chunk` is the token streamed by the LLM and `metadata` is a dictionary with information about the graph node where the LLM was called and other information. + +=== "cURL" + + ```bash + curl --request POST \ + --url /threads//runs/stream \ + --header 'Content-Type: application/json' \ + --data "{ + \"assistant_id\": \"agent\", + \"input\": {\"topic\": \"ice cream\"}, + \"stream_mode\": \"messages-tuple\" + }" + ``` + +### Filter LLM tokens + +* To filter the streamed tokens by LLM invocation, you can [associate `tags` with LLM invocations](../../how-tos/streaming.md#filter-by-llm-invocation). +* To stream tokens only from specific nodes, use `stream_mode="messages"` and [filter the outputs by the `langgraph_node` field](../../how-tos/streaming.md#filter-by-node) in the streamed metadata. + +## Stream custom data + +To send **custom user-defined data** from inside a LangGraph node or tool, follow these steps: + +1. Use `get_stream_writer()` to access the stream writer and emit custom data. +2. Set `stream_mode="custom"` when calling `.stream()` or `.astream()` to get the custom data in the stream. You can combine multiple modes (e.g., `["updates", "custom"]`), but at least one must be `"custom"`. + +!!! warning "No `get_stream_writer()` in async for Python < 3.11" + + In async code running on Python < 3.11, `get_stream_writer()` will not work. + Instead, add a `writer` parameter to your node or tool and pass it manually. + See [Async with Python < 3.11](#async) for usage examples. + +??? example "Example graph" + + ```python + from typing import TypedDict + from langgraph.config import get_stream_writer + from langgraph.graph import StateGraph, START + + class State(TypedDict): + query: str + answer: str + + def node(state: State): + writer = get_stream_writer() # (1)! + writer({"custom_key": "Generating custom data inside node"}) # (2)! + return {"answer": "some data"} + + graph = ( + StateGraph(State) + .add_node(node) + .add_edge(START, "node") + .compile() + ) + ``` + + 1. Get the stream writer to send custom data. + 2. Emit a custom key-value pair (e.g., progress update). + +=== "Python" + + ```python + async for chunk in client.runs.stream( + thread_id, + assistant_id, + input={"query": "example"}, + # highlight-next-line + stream_mode="custom" + ): + print(chunk.data) + ``` + +=== "JavaScript" + + ```js + const streamResponse = client.runs.stream( + threadID, + assistantID, + { + input: { query: "example" }, + // highlight-next-line + streamMode: "custom" + } + ); + for await (const chunk of streamResponse) { + console.log(chunk.data); + } + ``` + +=== "cURL" + + ```bash + curl --request POST \ + --url /threads//runs/stream \ + --header 'Content-Type: application/json' \ + --data "{ + \"assistant_id\": \"agent\", + \"input\": {\"query\": \"example\"}, + \"stream_mode\": \"custom\" + }" + ``` + +See [this guide](../../how-tos/streaming.md#stream-custom-data) for more examples. + +## Stream events + +To stream all events, including the state of the graph: + +=== "Python" + + ```python + async for chunk in client.runs.stream( + thread_id, + assistant_id, + input={"topic": "ice cream"}, + # highlight-next-line + stream_mode="events" + ): + print(chunk.data) + ``` + +=== "JavaScript" + + ```js + const streamResponse = client.runs.stream( + threadID, + assistantID, + { + input: { topic: "ice cream" }, + // highlight-next-line + streamMode: "events" + } + ); + for await (const chunk of streamResponse) { + console.log(chunk.data); + } + ``` + +=== "cURL" + + ```bash + curl --request POST \ + --url /threads//runs/stream \ + --header 'Content-Type: application/json' \ + --data "{ + \"assistant_id\": \"agent\", + \"input\": {\"topic\": \"ice cream\"}, + \"stream_mode\": \"events\" + }" + ``` diff --git a/docs/docs/cloud/how-tos/studio/quick_start.md b/docs/docs/cloud/how-tos/studio/quick_start.md new file mode 100644 index 000000000..d196d8ed3 --- /dev/null +++ b/docs/docs/cloud/how-tos/studio/quick_start.md @@ -0,0 +1,88 @@ +!!! info "Prerequisites" + + - [LangGraph Studio Overview](../../../concepts/langgraph_studio.md) + +LangGraph Studio supports connecting to two types of graphs: + +- Graphs deployed on [LangGraph Platform](../../../cloud/quick_start.md) +- Graphs running locally via the [LangGraph Server](../../../tutorials/langgraph-platform/local-server.md). + +## Deployed Application + +For applications that are deployed on LangGraph Platform, you can access Studio as part of that deployment. To do so, navigate to the deployment in LangGraph Platform within the LangSmith UI and click the "LangGraph Studio" button. + +This will load the Studio UI connected to your live deployment, allowing you to create, read, and update the [threads](../../concepts/threads.md), [assistants](../../../concepts/assistants.md), and [memory](../../../concepts//memory.md) in that deployment. + +## Local Development Server + +To test your locally running application using LangGraph Studio, ensure your application is set up following [this guide](https://langchain-ai.github.io/langgraph/cloud/deployment/setup/). + +Next, install the [LangGraph CLI](../../../concepts/langgraph_cli.md): + +``` +pip install -U "langgraph-cli[inmem]" +``` + +and run: + +``` +langgraph dev +``` + +!!! warning "Browser Compatibility" + Safari blocks `localhost` connections to Studio. To work around this, run the above command with `--tunnel` to access Studio via a secure tunnel. + +This will start the LangGraph Server locally, running in-memory. The server will run in watch mode, listening for and automatically restarting on code changes. Read this [reference](https://langchain-ai.github.io/langgraph/cloud/reference/cli/#dev) to learn about all the options for starting the API server. + +If successful, you will see the following logs: + +> Ready! +> +> - API: [http://localhost:2024](http://localhost:2024/) +> +> - Docs: http://localhost:2024/docs +> +> - LangGraph Studio Web UI: https://smith.langchain.com/studio/?baseUrl=http://127.0.0.1:2024 + +Once running, you will automatically be directed to LangGraph Studio. You can manually access Studio by navigating to the following URL: `https://smith.langchain.com/studio/?baseUrl=http://127.0.0.1:2024`. If running your server at a different host or port, simply update the `baseUrl` to match. + +### (Optional) Attach a debugger + +For step-by-step debugging with breakpoints and variable inspection: + +```bash +# Install debugpy package +pip install debugpy + +# Start server with debugging enabled +langgraph dev --debug-port 5678 +``` + +Then attach your preferred debugger: + +=== "VS Code" +Add this configuration to `launch.json`: +`json + { + "name": "Attach to LangGraph", + "type": "debugpy", + "request": "attach", + "connect": { + "host": "0.0.0.0", + "port": 5678 + } + } + ` +Specify the port number you chose in the previous step. + +=== "PyCharm" 1. Go to Run → Edit Configurations 2. Click + and select "Python Debug Server" 3. Set IDE host name: `localhost` 4. Set port: `5678` (or the port number you chose in the previous step) 5. Click "OK" and start debugging + +## Next steps + +See the following how-tos for more information on how to use Studio: + +- [How to manage Assistants](../invoke_studio.md) +- [How to manage Threads](../threads_studio.md) +- [How to create datasets](../datasets_studio.md) +- [How to prompt engineer](../iterate_graph_studio.md) +- [How to locally debug remote traces](../clone_traces_studio.md) diff --git a/docs/docs/cloud/how-tos/test_deployment.md b/docs/docs/cloud/how-tos/test_deployment.md deleted file mode 100644 index b35bf5e13..000000000 --- a/docs/docs/cloud/how-tos/test_deployment.md +++ /dev/null @@ -1,16 +0,0 @@ -# Test LangGraph Platform Deployment - -The LangGraph Studio UI connects directly to LangGraph Platform deployments. - -Starting from the LangSmith UI... - -1. In the left-hand navigation panel, select `LangGraph Platform`. The `LangGraph Platform` view contains a list of existing LangGraph Platform deployments. -1. Select an existing deployment to test with LangGraph Studio. -1. In the top-right corner, select `Open LangGraph Studio`. -1. [Invoke an assistant](./invoke_studio.md) or [view an existing thread](./threads_studio.md). - -The following video shows these exact steps being carried out: - - diff --git a/docs/docs/cloud/how-tos/test_local_deployment.md b/docs/docs/cloud/how-tos/test_local_deployment.md deleted file mode 100644 index 1b7b0cfe1..000000000 --- a/docs/docs/cloud/how-tos/test_local_deployment.md +++ /dev/null @@ -1,32 +0,0 @@ -# LangGraph Studio With Local Deployment - -!!! warning "Browser Compatibility" - Safari blocks `localhost` connections to Studio. To work around this, start the server with `--tunnel` and you’ll be able to access Studio from Safari via a secure tunnel. - -## Setup - -Make sure you have setup your app correctly, by creating a compiled graph, a `.env` file with any environment variables, and a `langgraph.json` config file that points to your environment file and compiled graph. See [here](https://langchain-ai.github.io/langgraph/cloud/deployment/setup/) for more detailed instructions. - -After you have your app setup, head into the directory with your `langgraph.json` file and call `langgraph dev` to start the API server in watch mode which means it will restart on code changes, which is ideal for local testing. If the API server start correctly you should see logs that look something like this: - -> Ready! -> -> - API: [http://localhost:2024](http://localhost:2024/) -> -> - Docs: http://localhost:2024/docs -> -> - LangGraph Studio Web UI: https://smith.langchain.com/studio/?baseUrl=http://127.0.0.1:2024 - -Read this [reference](https://langchain-ai.github.io/langgraph/cloud/reference/cli/#up) to learn about all the options for starting the API server. - -## Access Studio - -Once you have successfully started the API server, you can access the studio by going to the following URL: `https://smith.langchain.com/studio/?baseUrl=http://127.0.0.1:2024` (see warning above if using Safari). - -If everything is working correctly you should see the studio show up looking something like this (with your graph diagram on the left hand side): - -![LangGraph Studio](./img/studio_screenshot.png) - -## Use the Studio for Testing - -To learn about how to use the studio for testing, read the [LangGraph Studio how-tos](https://langchain-ai.github.io/langgraph/cloud/how-tos/#langgraph-studio). \ No newline at end of file diff --git a/docs/docs/cloud/how-tos/webhooks.md b/docs/docs/cloud/how-tos/webhooks.md index 7bae74001..f8d7809a3 100644 --- a/docs/docs/cloud/how-tos/webhooks.md +++ b/docs/docs/cloud/how-tos/webhooks.md @@ -121,7 +121,7 @@ curl --request POST \ ## Webhook Payload -LangGraph Cloud sends webhook notifications in the format of a [Run](../../concepts/langgraph_server.md/#runs). See the [API Reference](https://langchain-ai.github.io/langgraph/cloud/reference/api/api_ref.html#model/run) for details. The request payload includes run input, configuration, and other metadata in the `kwargs` field. +LangGraph Cloud sends webhook notifications in the format of a [Run](../../cloud/concepts/runs.md). See the [API Reference](https://langchain-ai.github.io/langgraph/cloud/reference/api/api_ref.html#model/run) for details. The request payload includes run input, configuration, and other metadata in the `kwargs` field. ## Securing Webhooks diff --git a/docs/docs/cloud/quick_start.md b/docs/docs/cloud/quick_start.md index ea4cb11b6..87967e147 100644 --- a/docs/docs/cloud/quick_start.md +++ b/docs/docs/cloud/quick_start.md @@ -1,234 +1,164 @@ -# Quickstart: Deploy on LangGraph Cloud +# Deployment quickstart -!!! note "Prerequisites" +This guide shows you how to set up and use LangGraph Platform for a cloud deployment. - Before you begin, ensure you have the following: +## Prerequisites - - [GitHub account](https://github.com/) - - [LangSmith account](https://smith.langchain.com/) +Before you begin, ensure you have the following: -## Create a repository on GitHub +- A [GitHub account](https://github.com/) +- A [LangSmith account](https://smith.langchain.com/) – free to sign up -To deploy a LangGraph application to **LangGraph Cloud**, your application code must reside in a GitHub repository. Both public and private repositories are supported. +This quickstart uses the [pre-built Python ReAct agent template](https://github.com/langchain-ai/react-agent), which requires the following: -You can deploy any [LangGraph Application](../concepts/application_structure.md) to LangGraph Cloud. +- An API key for [Anthropic](https://console.anthropic.com/) +- An API key for [Tavily](https://app.tavily.com/) -For this guide, we'll use the pre-built Python [**ReAct Agent**](https://github.com/langchain-ai/react-agent) template. - -??? note "Get Required API Keys for the ReAct Agent template" - - This **ReAct Agent** application requires an API key from [Anthropic](https://console.anthropic.com/) and [Tavily](https://app.tavily.com/). You can get these API keys by signing up on their respective websites. - - **Alternative**: If you'd prefer a scaffold application that doesn't require API keys, use the [**New LangGraph Project**](https://github.com/langchain-ai/new-langgraph-project) template instead of the **ReAct Agent** template. +## 1. Create a repository on GitHub +To deploy a LangGraph application to **LangGraph Cloud**, your application code must reside in a GitHub repository. Both public and private repositories are supported. For this quickstart, use the [pre-built Python ReAct agent template](https://github.com/langchain-ai/react-agent) for your application: 1. Go to the [ReAct Agent](https://github.com/langchain-ai/react-agent) repository. -2. Fork the repository to your GitHub account by clicking the `Fork` button in the top right corner. +1. Click the `Fork` button in the top right corner to fork the repository to your GitHub account. +1. Click **Create fork**. -## Deploy to LangGraph Cloud +## 2. Deploy to LangGraph Platform -??? note "1. Log in to [LangSmith](https://smith.langchain.com/)" +1. Log in to [LangSmith](https://smith.langchain.com/). +1. In the left sidebar, select **LangGraph Platform**. +1. Click the **+ New Deployment** button. A modal will open where you can fill in the required fields. +1. If you are a first time user or adding a private repository that has not been previously connected, click the **Import from GitHub** button and follow the instructions to connect your GitHub account. +1. Select your ReAct Agent repository. +1. In the **Environment Variables** section, set the following secrets: + + - **ANTHROPIC_API_KEY**: Get an API key from [Anthropic](https://console.anthropic.com/). + - **TAVILY_API_KEY**: Get an API key on the [Tavily website](https://app.tavily.com/). + +1. Click **Submit** to deploy. + + This may take about 15 minutes to complete. You can check the status in the **Deployment details** view. + +## 3. Test your application in LangGraph Studio + +Once your application is deployed: + +1. Select the deployment you just created to view more details. +1. Click the **LangGraph Studio** button in the top right corner. + + LangGraph Studio will open to display your graph.
- [![Login to LangSmith](deployment/img/01_login.png){: style="max-height:300px"}](deployment/img/01_login.png) + [![image](deployment/img/09_langgraph_studio.png){: style="max-height:400px"}](deployment/img/09_langgraph_studio.png)
- Go to [LangSmith](https://smith.langchain.com/) and log in. If you don't have an account, you can sign up for free. + Sample graph run in LangGraph Studio.
+## 4. Get the API URL for your deployment -??? note "2. Click on LangGraph Platform (the left sidebar)" +1. In the **Deployment details** view in LangGraph, click the **API URL** to copy it to your clipboard. +1. Click the `URL` to copy it to the clipboard. -
- [![Login to LangSmith](deployment/img/02_langgraph_platform.png){: style="max-height:300px"}](deployment/img/02_langgraph_platform.png) -
- Select **LangGraph Platform** from the left sidebar. -
-
+## 5. Test the API -??? note "3. Click on + New Deployment (top right corner)" - -
- [![Login to LangSmith](deployment/img/03_deployments_page.png){: style="max-height:300px"}](deployment/img/03_deployments_page.png) -
- Click on **+ New Deployment** to create a new deployment. This button is located in the top right corner. - It'll open a new modal where you can fill out the required fields. -
-
- -??? note "4. Click on Import from GitHub (first time users)" - -
- [![image](deployment/img/04_create_new_deployment.png)](deployment/img/04_create_new_deployment.png) -
- Click on **Import from GitHub** and follow the instructions to connect your GitHub account. This step is needed for **first-time users** or to add private repositories that haven't been connected before.
-
- -??? note "5. Select the repository, configure ENV vars etc" - -
- [![image](deployment/img/05_configure_deployment.png){: style="max-height:300px"}](deployment/img/05_configure_deployment.png) -
- Select the repository, add env variables and secrets, and set other configuration options. -
-
- - - **Repository**: Select the repository you forked earlier (or any other repository you want to deploy). - - Set the secrets and environment variables required by your application. For the **ReAct Agent** template, you need to set the following secrets: - - **ANTHROPIC_API_KEY**: Get an API key from [Anthropic](https://console.anthropic.com/). - - **TAVILY_API_KEY**: Get an API key on the [Tavily website](https://app.tavily.com/). - -??? note "6. Click Submit to Deploy!" - - -
- [![image](deployment/img/05_configure_deployment.png){: style="max-height:300px"}](deployment/img/05_configure_deployment.png) -
- Please note that this step may ~15 minutes to complete. You can check the status of your deployment in the **Deployments** view. - Click the Submit button at the top right corner to deploy your application. -
-
- - -## LangGraph Studio Web UI - -Once your application is deployed, you can test it in **LangGraph Studio**. - -??? note "1. Click on an existing deployment" - -
- [![image](deployment/img/07_deployments_page.png){: style="max-height:300px"}](deployment/img/07_deployments_page.png) -
- Click on the deployment you just created to view more details. -
-
- -??? note "2. Click on LangGraph Studio" - -
- [![image](deployment/img/08_deployment_view.png){: style="max-height:300px"}](deployment/img/08_deployment_view.png) -
- Click on the LangGraph Studio button to open LangGraph Studio. -
-
- -
-[![image](deployment/img/09_langgraph_studio.png){: style="max-height:400px"}](deployment/img/09_langgraph_studio.png) -
- Sample graph run in LangGraph Studio. -
-
- -## Test the API - -!!! note - - The API calls below are for the **ReAct Agent** template. If you're deploying a different application, you may need to adjust the API calls accordingly. - -Before using, you need to get the `URL` of your LangGraph deployment. You can find this in the `Deployment` view. Click the `URL` to copy it to the clipboard. - -You also need to make sure you have set up your API key properly, so you can authenticate with LangGraph Cloud. - -```shell -export LANGSMITH_API_KEY=... -``` +You can now test the API: === "Python SDK (Async)" - **Install the LangGraph Python SDK** + 1. Install the LangGraph Python SDK: - ```shell - pip install langgraph-sdk - ``` + ```shell + pip install langgraph-sdk + ``` - **Send a message to the assistant (threadless run)** + 1. Send a message to the assistant (threadless run): - ```python - from langgraph_sdk import get_client + ```python + from langgraph_sdk import get_client - client = get_client(url="your-deployment-url", api_key="your-langsmith-api-key") + client = get_client(url="your-deployment-url", api_key="your-langsmith-api-key") - async for chunk in client.runs.stream( - None, # Threadless run - "agent", # Name of assistant. Defined in langgraph.json. - input={ - "messages": [{ - "role": "human", - "content": "What is LangGraph?", - }], - }, - stream_mode="updates", - ): - print(f"Receiving new event of type: {chunk.event}...") - print(chunk.data) - print("\n\n") - ``` + async for chunk in client.runs.stream( + None, # Threadless run + "agent", # Name of assistant. Defined in langgraph.json. + input={ + "messages": [{ + "role": "human", + "content": "What is LangGraph?", + }], + }, + stream_mode="updates", + ): + print(f"Receiving new event of type: {chunk.event}...") + print(chunk.data) + print("\n\n") + ``` === "Python SDK (Sync)" - **Install the LangGraph Python SDK** + 1. Install the LangGraph Python SDK: - ```shell - pip install langgraph-sdk - ``` + ```shell + pip install langgraph-sdk + ``` - **Send a message to the assistant (threadless run)** + 1. Send a message to the assistant (threadless run): - ```python - from langgraph_sdk import get_sync_client + ```python + from langgraph_sdk import get_sync_client - client = get_sync_client(url="your-deployment-url", api_key="your-langsmith-api-key") + client = get_sync_client(url="your-deployment-url", api_key="your-langsmith-api-key") - for chunk in client.runs.stream( - None, # Threadless run - "agent", # Name of assistant. Defined in langgraph.json. - input={ - "messages": [{ - "role": "human", - "content": "What is LangGraph?", - }], - }, - stream_mode="updates", - ): - print(f"Receiving new event of type: {chunk.event}...") - print(chunk.data) - print("\n\n") - ``` + for chunk in client.runs.stream( + None, # Threadless run + "agent", # Name of assistant. Defined in langgraph.json. + input={ + "messages": [{ + "role": "human", + "content": "What is LangGraph?", + }], + }, + stream_mode="updates", + ): + print(f"Receiving new event of type: {chunk.event}...") + print(chunk.data) + print("\n\n") + ``` === "Javascript SDK" - **Install the LangGraph JS SDK** + 1. Install the LangGraph JS SDK - ```shell - npm install @langchain/langgraph-sdk - ``` + ```shell + npm install @langchain/langgraph-sdk + ``` - **Send a message to the assistant (threadless run)** + 1. Send a message to the assistant (threadless run): - ```js - const { Client } = await import("@langchain/langgraph-sdk"); + ```js + const { Client } = await import("@langchain/langgraph-sdk"); - const client = new Client({ apiUrl: "your-deployment-url", apiKey: "your-langsmith-api-key" }); + const client = new Client({ apiUrl: "your-deployment-url", apiKey: "your-langsmith-api-key" }); - const streamResponse = client.runs.stream( - null, // Threadless run - "agent", // Assistant ID - { - input: { - "messages": [ - { "role": "user", "content": "What is LangGraph?"} - ] - }, - streamMode: "messages", + const streamResponse = client.runs.stream( + null, // Threadless run + "agent", // Assistant ID + { + input: { + "messages": [ + { "role": "user", "content": "What is LangGraph?"} + ] + }, + streamMode: "messages", + } + ); + + for await (const chunk of streamResponse) { + console.log(`Receiving new event of type: ${chunk.event}...`); + console.log(JSON.stringify(chunk.data)); + console.log("\n\n"); } - ); - - for await (const chunk of streamResponse) { - console.log(`Receiving new event of type: ${chunk.event}...`); - console.log(JSON.stringify(chunk.data)); - console.log("\n\n"); - } - ``` + ``` === "Rest API" @@ -253,20 +183,11 @@ export LANGSMITH_API_KEY=... ## Next Steps -Congratulations! If you've worked your way through this tutorial you are well on your way to becoming a LangGraph Cloud expert. Here are some other resources to check out to help you out on the path to expertise: +Congratulations! You have deployed an application using LangGraph Platform. -### LangGraph Framework +Here are some other resources to check out: -- **[LangGraph Tutorial](../tutorials/introduction.ipynb)**: Get started with LangGraph framework. -- **[LangGraph Concepts](../concepts/index.md)**: Learn the foundational concepts of LangGraph. -- **[LangGraph How-to Guides](../how-tos/index.md)**: Guides for common tasks with LangGraph. - -### 📚 Learn More about LangGraph Platform - -Expand your knowledge with these resources: - -- **[LangGraph Platform Concepts](../concepts/index.md#langgraph-platform)**: Understand the foundational concepts of the LangGraph Platform. -- **[LangGraph Platform How-to Guides](../how-tos/index.md#langgraph-platform)**: Discover step-by-step guides to build and deploy applications. -- **[Launch Local LangGraph Server](../tutorials/langgraph-platform/local-server.md)**: This quick start guide shows how to start a LangGraph Server locally for the **ReAct Agent** template. The steps are similar for other templates. +- [LangGraph Platform overview](../concepts/langgraph_platform.md) +- [Deployment options](../concepts/deployment_options.md) diff --git a/docs/docs/cloud/reference/env_var.md b/docs/docs/cloud/reference/env_var.md index 659459219..e25ef72ca 100644 --- a/docs/docs/cloud/reference/env_var.md +++ b/docs/docs/cloud/reference/env_var.md @@ -18,6 +18,10 @@ A background run can execute for longer than 1 hour, but a client must reconnect Defaults to `3600`. +## `BG_JOB_SHUTDOWN_GRACE_PERIOD_SECS` + +Specifies, in seconds, how long the server will wait for background jobs to finish after the queue receives a shutdown signal. After this period, the server will force termination. Defaults to `3600` seconds. Set this to ensure jobs have enough time to complete cleanly during shutdown. Added in `langgraph-api==0.2.16`. + ## `DD_API_KEY` Specify `DD_API_KEY` (your [Datadog API Key](https://docs.datadoghq.com/account_management/api-app-keys/)) to automatically enable Datadog tracing for the deployment. Specify other [`DD_*` environment variables](https://ddtrace.readthedocs.io/en/stable/configuration.html) to configure the tracing instrumentation. @@ -38,11 +42,11 @@ For deployments to LangGraph Cloud, this environment variable is set automatical ## `LANGSMITH_RUNS_ENDPOINTS` -For [Bring Your Own Cloud (BYOC)](../../concepts/bring_your_own_cloud.md) deployments with [self-hosted LangSmith](https://docs.smith.langchain.com/self_hosting) only. +For deployments with [self-hosted LangSmith](https://docs.smith.langchain.com/self_hosting) only. -Set this environment variable to have a BYOC deployment send traces to a self-hosted LangSmith instance. The value of `LANGSMITH_RUNS_ENDPOINTS` is a JSON string: `{"":""}`. +Set this environment variable to have a deployment send traces to a self-hosted LangSmith instance. The value of `LANGSMITH_RUNS_ENDPOINTS` is a JSON string: `{"":""}`. -`SELF_HOSTED_LANGSMITH_HOSTNAME` is the hostname of the self-hosted LangSmith instance. It must be accessible to the BYOC deployment. `LANGSMITH_API_KEY` is a LangSmith API generated from the self-hosted LangSmith instance. +`SELF_HOSTED_LANGSMITH_HOSTNAME` is the hostname of the self-hosted LangSmith instance. It must be accessible to the deployment. `LANGSMITH_API_KEY` is a LangSmith API generated from the self-hosted LangSmith instance. ## `LANGSMITH_TRACING` diff --git a/docs/docs/concepts/agentic_concepts.md b/docs/docs/concepts/agentic_concepts.md index 336633e95..ed1a811f9 100644 --- a/docs/docs/concepts/agentic_concepts.md +++ b/docs/docs/concepts/agentic_concepts.md @@ -31,7 +31,7 @@ Structured outputs with LLMs work by providing a specific format or schema that Structured outputs are crucial for routing as they ensure the LLM's decision can be reliably interpreted and acted upon by the system. Learn more about [structured outputs in this how-to guide](https://python.langchain.com/docs/how_to/structured_output/). -## Tool calling agent +## Tool-calling agent While a router allows an LLM to make a single decision, more complex agent architectures expand the LLM's control in two key ways: @@ -40,11 +40,13 @@ While a router allows an LLM to make a single decision, more complex agent archi [ReAct](https://arxiv.org/abs/2210.03629) is a popular general purpose agent architecture that combines these expansions, integrating three core concepts. -1. `Tool calling`: Allowing the LLM to select and use various tools as needed. -2. `Memory`: Enabling the agent to retain and use information from previous steps. -3. `Planning`: Empowering the LLM to create and follow multi-step plans to achieve goals. +1. [Tool calling](#tool-calling): Allowing the LLM to select and use various tools as needed. +2. [Memory](#memory): Enabling the agent to retain and use information from previous steps. +3. [Planning](#planning): Empowering the LLM to create and follow multi-step plans to achieve goals. -This architecture allows for more complex and flexible agent behaviors, going beyond simple routing to enable dynamic problem-solving with multiple steps. You can use it with [`create_react_agent`][langgraph.prebuilt.chat_agent_executor.create_react_agent]. +This architecture allows for more complex and flexible agent behaviors, going beyond simple routing to enable dynamic problem-solving with multiple steps. Unlike the original [paper](https://arxiv.org/abs/2210.03629), today's agents rely on LLMs' [tool calling](#tool-calling) capabilities and operate on a list of [messages](./low_level.md#why-use-messages). + +In LangGraph, you can use the prebuilt [agent](../agent/overview.md) to get started with tool-calling agents. ### Tool calling @@ -56,33 +58,24 @@ Tools are useful whenever you want an agent to interact with external systems. E ### Memory -Memory is crucial for agents, enabling them to retain and utilize information across multiple steps of problem-solving. It operates on different scales: +[Memory](./memory.md) is crucial for agents, enabling them to retain and utilize information across multiple steps of problem-solving. It operates on different scales: -1. Short-term memory: Allows the agent to access information acquired during earlier steps in a sequence. -2. Long-term memory: Enables the agent to recall information from previous interactions, such as past messages in a conversation. +1. [Short-term memory](./memory.md#short-term-memory): Allows the agent to access information acquired during earlier steps in a sequence. +2. [Long-term memory](./memory.md#long-term-memory): Enables the agent to recall information from previous interactions, such as past messages in a conversation. LangGraph provides full control over memory implementation: - [`State`](./low_level.md#state): User-defined schema specifying the exact structure of memory to retain. -- [`Checkpointers`](./persistence.md): Mechanism to store state at every step across different interactions. +- [`Checkpointer`](./persistence.md#checkpoints): Mechanism to store state at every step across different interactions within a session. +- [`Store`](./persistence.md#memory-store): Mechanism to store user-specific or application-level data across sessions. This flexible approach allows you to tailor the memory system to your specific agent architecture needs. For a practical guide on adding memory to your graph, see [this tutorial](../how-tos/persistence.ipynb). -Effective memory management enhances an agent's ability to maintain context, learn from past experiences, and make more informed decisions over time. +Effective [memory management](../how-tos/memory.ipynb) enhances an agent's ability to maintain context, learn from past experiences, and make more informed decisions over time. ### Planning -In the ReAct architecture, an LLM is called repeatedly in a while-loop. At each step the agent decides which tools to call, and what the inputs to those tools should be. Those tools are then executed, and the outputs are fed back into the LLM as observations. The while-loop terminates when the agent decides it has enough information to solve the user request and it is not worth calling any more tools. - -### ReAct implementation - -There are several differences between [this](https://arxiv.org/abs/2210.03629) paper and the pre-built [`create_react_agent`][langgraph.prebuilt.chat_agent_executor.create_react_agent] implementation: - -- First, we use [tool-calling](#tool-calling) to have LLMs call tools, whereas the paper used prompting + parsing of raw output. This is because tool calling did not exist when the paper was written, but is generally better and more reliable. -- Second, we use messages to prompt the LLM, whereas the paper used string formatting. This is because at the time of writing, LLMs didn't even expose a message-based interface, whereas now that's the only interface they expose. -- Third, the paper required all inputs to the tools to be a single string. This was largely due to LLMs not being super capable at the time, and only really being able to generate a single input. Our implementation allows for using tools that require multiple inputs. -- Fourth, the paper only looks at calling a single tool at the time, largely due to limitations in LLMs performance at the time. Our implementation allows for calling multiple tools at a time. -- Finally, the paper asked the LLM to explicitly generate a "Thought" step before deciding which tools to call. This is the "Reasoning" part of "ReAct". Our implementation does not do this by default, largely because LLMs have gotten much better and that is not as necessary. Of course, if you wish to prompt it do so, you certainly can. +In a tool-calling [agent](../agent/overview.md), an LLM is called repeatedly in a while-loop. At each step the agent decides which tools to call, and what the inputs to those tools should be. Those tools are then executed, and the outputs are fed back into the LLM as observations. The while-loop terminates when the agent decides it has enough information to solve the user request and it is not worth calling any more tools. ## Custom agent architectures @@ -110,7 +103,7 @@ For practical implementation, see our [map-reduce tutorial](../how-tos/map-reduc ### Subgraphs -[Subgraphs](./low_level.md#subgraphs) are essential for managing complex agent architectures, particularly in [multi-agent systems](./multi_agent.md). They allow: +[Subgraphs](./subgraphs.md) are essential for managing complex agent architectures, particularly in [multi-agent systems](./multi_agent.md). They allow: - Isolated state management for individual agents - Hierarchical organization of agent teams diff --git a/docs/docs/concepts/application_structure.md b/docs/docs/concepts/application_structure.md index e938dff31..47b03c6d7 100644 --- a/docs/docs/concepts/application_structure.md +++ b/docs/docs/concepts/application_structure.md @@ -5,25 +5,20 @@ search: # Application Structure -!!! info "Prerequisites" - - - [LangGraph Server](./langgraph_server.md) - - [LangGraph Glossary](./low_level.md) - ## Overview -A LangGraph application consists of one or more graphs, a LangGraph API Configuration file (`langgraph.json`), a file that specifies dependencies, and an optional .env file that specifies environment variables. +A LangGraph application consists of one or more graphs, a configuration file (`langgraph.json`), a file that specifies dependencies, and an optional `.env` file that specifies environment variables. -This guide shows a typical structure for a LangGraph application and shows how the required information to deploy a LangGraph application using the LangGraph Platform is specified. +This guide shows a typical structure of an application and shows how the required information to deploy an application using the LangGraph Platform is specified. ## Key Concepts To deploy using the LangGraph Platform, the following information should be provided: -1. A [LangGraph API Configuration file](#configuration-file-concepts) (`langgraph.json`) that specifies the dependencies, graphs, environment variables to use for the application. +1. A [LangGraph configuration file](#configuration-file-concepts) (`langgraph.json`) that specifies the dependencies, graphs, and environment variables to use for the application. 2. The [graphs](#graphs) that implement the logic of the application. 3. A file that specifies [dependencies](#dependencies) required to run the application. -4. [Environment variable](#environment-variables) that are required for the application to run. +4. [Environment variables](#environment-variables) that are required for the application to run. ## File Structure @@ -81,26 +76,15 @@ Below are examples of directory structures for Python and JavaScript application The directory structure of a LangGraph application can vary depending on the programming language and the package manager used. - ## Configuration File {#configuration-file-concepts} The `langgraph.json` file is a JSON file that specifies the dependencies, graphs, environment variables, and other settings required to deploy a LangGraph application. -The file supports specification of the following information: +See the [LangGraph configuration file reference](../cloud/reference/cli.md#configuration-file) for details on all supported keys in the JSON file. - -| Key | Description | -|--------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| `dependencies` | **Required**. Array of dependencies for LangGraph API server. Dependencies can be one of the following: (1) `"."`, which will look for local Python packages, (2) `pyproject.toml`, `setup.py` or `requirements.txt` in the app directory `"./local_package"`, or (3) a package name. | -| `graphs` | **Required**. Mapping from graph ID to path where the compiled graph or a function that makes a graph is defined. Example:
  • `./your_package/your_file.py:variable`, where `variable` is an instance of `langgraph.graph.state.CompiledStateGraph`
  • `./your_package/your_file.py:make_graph`, where `make_graph` is a function that takes a config dictionary (`langchain_core.runnables.RunnableConfig`) and creates an instance of `langgraph.graph.state.StateGraph` / `langgraph.graph.state.CompiledStateGraph`.
| -| `env` | Path to `.env` file or a mapping from environment variable to its value. | -| `python_version` | `3.11` or `3.12`. Defaults to `3.11`. | -| `pip_config_file` | Path to `pip` config file. | -| `dockerfile_lines` | Array of additional lines to add to Dockerfile following the import from parent image. | !!! tip - The LangGraph CLI defaults to using the configuration file **langgraph.json** in the current directory. - + The [LangGraph CLI](./langgraph_cli.md) defaults to using the configuration file `langgraph.json` in the current directory. ### Examples @@ -149,7 +133,7 @@ A LangGraph application may depend on other Python packages or JavaScript librar You will generally need to specify the following information for dependencies to be set up correctly: -1. A file in the directory that specifies the dependencies (e.g., `requirements.txt`, `pyproject.toml`, or `package.json`). +1. A file in the directory that specifies the dependencies (e.g. `requirements.txt`, `pyproject.toml`, or `package.json`). 2. A `dependencies` key in the [LangGraph configuration file](#configuration-file-concepts) that specifies the dependencies required to run the LangGraph application. 3. Any additional binaries or system libraries can be specified using `dockerfile_lines` key in the [LangGraph configuration file](#configuration-file-concepts). @@ -164,9 +148,3 @@ You can specify one or more graphs in the configuration file. Each graph is iden If you're working with a deployed LangGraph application locally, you can configure environment variables in the `env` key of the [LangGraph configuration file](#configuration-file-concepts). For a production deployment, you will typically want to configure the environment variables in the deployment environment. - -## Related - -Please see the following resources for more information: - -- How-to guides for [Application Structure](../how-tos/index.md#application-structure). diff --git a/docs/docs/concepts/assistants.md b/docs/docs/concepts/assistants.md index ef8986201..58c669223 100644 --- a/docs/docs/concepts/assistants.md +++ b/docs/docs/concepts/assistants.md @@ -1,42 +1,25 @@ ---- -search: - boost: 2 ---- - # Assistants !!! info "Prerequisites" - [LangGraph Server](./langgraph_server.md) + - [Configuration](./low_level.md#configuration) -When building agents, it is fairly common to make rapid changes that *do not* alter the graph logic. For example, simply changing prompts or the LLM selection can have significant impacts on the behavior of the agents. Assistants offer an easy way to make and save these types of changes to agent configuration. This can have at least two use-cases: +When building agents, it is common to make rapid changes that _do not_ alter the graph logic. For example, simply changing prompts or the LLM selection can have significant impacts on the behavior of the agent but does not require updating your graph's architecture. Assistants offer a straightforward way to manage these configurations separately from your graph's core logic. -* Assistants give developers a quick and easy way to modify and version agents for experimentation. -* Assistants can be modified via LangGraph Studio, offering a no-code way to configure agents (e.g., for business users). - -Assistants build off the concept of ["configuration"](low_level.md#configuration). -While ["configuration"](low_level.md#configuration) is available in the open source LangGraph library as well, assistants are only present in [LangGraph Platform](langgraph_platform.md). -This is because Assistants are tightly coupled to your deployed graph, and so we can only make them available when we are also deploying the graphs. - -## Configuring Assistants - -In practice, an assistant is just an *instance* of a graph with a specific configuration. Because of this, multiple assistants can reference the same graph but can contain different configurations, such as prompts, models, and other graph configuration options. The LangGraph Cloud API provides several endpoints for creating and managing assistants. See the [API reference](../cloud/reference/api/api_ref.html) and [this how-to](../cloud/how-tos/configuration_cloud.md) for more details on how to create assistants. - -## Versioning Assistants - -Once you've created an assistant, you can save and version it to track changes to the configuration over time. You can think about this at three levels: - -1) The graph lays out the general agent application logic -2) The agent configuration options represent parameters that can be changed -3) Assistant versions save and track specific settings of the agent configuration options - -For example, let's imagine you have a general writing agent. You have created a general graph architecture that works well for writing. However, there are different types of writing, e.g. blogs vs tweets. In order to get the best performance on each use case, you need to make some minor changes to the models and prompts used. In this setup, you could create an assistant for each use case - one for blog writing and one for tweeting. These would share the same graph structure, but they may use different models and different prompts. Read [this how-to](../cloud/how-tos/assistant_versioning.md) to learn how you can use assistant versioning through both the [Studio](../concepts/langgraph_studio.md) and the SDK. +Imagine a general-purpose writing agent built on a common graph architecture. While the structure remains the same, different writing styles—such as blog posts and tweets—require tailored configurations to optimize performance. To support these variations, you can create multiple assistants (e.g., one for blogs and another for tweets) that share the underlying graph but differ in model selection and system prompt. ![assistant versions](img/assistants.png) +## Configuring Assistants -## Resources +Assistants build on the LangGraph open source concept of [configuration](low_level.md#configuration). +While configuration is available in the open source LangGraph library, assistants are only present in [LangGraph Platform](langgraph_platform.md). +This is due to the fact that Assistants are tightly coupled to your deployed graph. Upon deployment, LangGraph Server will automatically create a default assistant for each graph using the graph's default configuration settings. -For more information on assistants, see the following resources: +In practice, an assistant is just an _instance_ of a graph with a specific configuration. Therefore, multiple assistants can reference the same graph but can contain different configurations (e.g. prompts, models, tools). The LangGraph Server API provides several endpoints for creating and managing assistants. See the [API reference](../cloud/reference/api/api_ref.html) and [this how-to](../cloud/how-tos/configuration_cloud.md) for more details on how to create assistants. -- [Assistants how-to guides](../how-tos/index.md#assistants) \ No newline at end of file +## Versioning Assistants + +Assistants support versioning to track changes over time. +Once you've created an assistant, subsequent edits to that assistant will create new versions. See [this how-to](../cloud/how-tos/assistant_versioning.md) for more details on how to manage assistant versions. diff --git a/docs/docs/concepts/auth.md b/docs/docs/concepts/auth.md index 7e3f98399..41b56df06 100644 --- a/docs/docs/concepts/auth.md +++ b/docs/docs/concepts/auth.md @@ -38,8 +38,8 @@ LangGraph Platform provides different security defaults: - You control all aspects of authentication and authorization !!! note "Custom auth" - Custom auth is supported for **Enterprise** self-hosted plans. - Self-hosted lite plans do not support custom auth natively. + Custom auth is supported for **Enterprise** self-hosted deployments. + Self-hosted lite deployments do not support custom auth natively. ## System Architecture diff --git a/docs/docs/concepts/breakpoints.md b/docs/docs/concepts/breakpoints.md index 3454f9de7..e373543f1 100644 --- a/docs/docs/concepts/breakpoints.md +++ b/docs/docs/concepts/breakpoints.md @@ -5,133 +5,10 @@ search: # Breakpoints -Breakpoints pause graph execution at specific points and enable stepping through execution step by step. Breakpoints are powered by LangGraph's [**persistence layer**](./persistence.md), which saves the state after each graph step. Breakpoints can also be used to enable [**human-in-the-loop**](./human_in_the_loop.md) workflows, though we recommend using the [`interrupt` function](./human_in_the_loop.md#interrupt) for this purpose. +Breakpoints pause graph execution at defined points and let you step through each stage. They use LangGraph's [**persistence layer**](./persistence.md), which saves the graph state after each step. -## Requirements +With breakpoints, you can inspect the graph's state and node inputs at any point. Execution pauses **indefinitely** until you resume, as the checkpointer preserves the state. -To use breakpoints, you will need to: - -1. [**Specify a checkpointer**](persistence.md#checkpoints) to save the graph state after each step. -2. [**Set breakpoints**](#setting-breakpoints) to specify where execution should pause. -3. **Run the graph** with a [**thread ID**](./persistence.md#threads) to pause execution at the breakpoint. -4. **Resume execution** using `invoke`/`ainvoke`/`stream`/`astream` (see [**The `Command` primitive**](./human_in_the_loop.md#the-command-primitive)). - -## Setting breakpoints - -There are two places where you can set breakpoints: - -1. **Before** or **after** a node executes by setting breakpoints at **compile time** or **run time**. We call these [**static breakpoints**](#static-breakpoints). -2. **Inside** a node using the [`NodeInterrupt` exception](#nodeinterrupt-exception). - -### Static breakpoints - -Static breakpoints are triggered either **before** or **after** a node executes. You can set static breakpoints by specifying `interrupt_before` and `interrupt_after` at **"compile" time** or **run time**. - -=== "Compile time" - - ```python - graph = graph_builder.compile( - interrupt_before=["node_a"], - interrupt_after=["node_b", "node_c"], - checkpointer=..., # Specify a checkpointer - ) - - thread_config = { - "configurable": { - "thread_id": "some_thread" - } - } - - # Run the graph until the breakpoint - graph.invoke(inputs, config=thread_config) - - # Optionally update the graph state based on user input - graph.update_state(update, config=thread_config) - - # Resume the graph - graph.invoke(None, config=thread_config) - ``` - -=== "Run time" - - ```python - graph.invoke( - inputs, - config={"configurable": {"thread_id": "some_thread"}}, - interrupt_before=["node_a"], - interrupt_after=["node_b", "node_c"] - ) - - thread_config = { - "configurable": { - "thread_id": "some_thread" - } - } - - # Run the graph until the breakpoint - graph.invoke(inputs, config=thread_config) - - # Optionally update the graph state based on user input - graph.update_state(update, config=thread_config) - - # Resume the graph - graph.invoke(None, config=thread_config) - ``` - - !!! note - - You cannot set static breakpoints at runtime for **sub-graphs**. - If you have a sub-graph, you must set the breakpoints at compilation time. - -Static breakpoints can be especially useful for debugging if you want to step through the graph execution one -node at a time or if you want to pause the graph execution at specific nodes. - -### `NodeInterrupt` exception - -We recommend that you [**use the `interrupt` function instead**][langgraph.types.interrupt] of the `NodeInterrupt` exception if you're trying to implement -[human-in-the-loop](./human_in_the_loop.md) workflows. The `interrupt` function is easier to use and more flexible. - -??? node "`NodeInterrupt` exception" - - The developer can define some *condition* that must be met for a breakpoint to be triggered. This concept of _dynamic breakpoints_ is useful when the developer wants to halt the graph under *a particular condition*. This uses a `NodeInterrupt`, which is a special type of exception that can be raised from within a node based upon some condition. As an example, we can define a dynamic breakpoint that triggers when the `input` is longer than 5 characters. - - ```python - def my_node(state: State) -> State: - if len(state['input']) > 5: - raise NodeInterrupt(f"Received input that is longer than 5 characters: {state['input']}") - - return state - ``` - - - Let's assume we run the graph with an input that triggers the dynamic breakpoint and then attempt to resume the graph execution simply by passing in `None` for the input. - - ```python - # Attempt to continue the graph execution with no change to state after we hit the dynamic breakpoint - for event in graph.stream(None, thread_config, stream_mode="values"): - print(event) - ``` - - The graph will *interrupt* again because this node will be *re-run* with the same graph state. We need to change the graph state such that the condition that triggers the dynamic breakpoint is no longer met. So, we can simply edit the graph state to an input that meets the condition of our dynamic breakpoint (< 5 characters) and re-run the node. - - ```python - # Update the state to pass the dynamic breakpoint - graph.update_state(config=thread_config, values={"input": "foo"}) - for event in graph.stream(None, thread_config, stream_mode="values"): - print(event) - ``` - - Alternatively, what if we want to keep our current input and skip the node (`my_node`) that performs the check? To do this, we can simply perform the graph update with `as_node="my_node"` and pass in `None` for the values. This will make no update the graph state, but run the update as `my_node`, effectively skipping the node and bypassing the dynamic breakpoint. - - ```python - # This update will skip the node `my_node` altogether - graph.update_state(config=thread_config, values=None, as_node="my_node") - for event in graph.stream(None, thread_config, stream_mode="values"): - print(event) - ``` - -## Additional Resources 📚 - -- [**Conceptual Guide: Persistence**](persistence.md): Read the persistence guide for more context about persistence. -- [**Conceptual Guide: Human-in-the-loop**](human_in_the_loop.md): Read the human-in-the-loop guide for more context on integrating human feedback into LangGraph applications using breakpoints. -- [**How to View and Update Past Graph State**](../how-tos/human_in_the_loop/time-travel.ipynb): Step-by-step instructions for working with graph state that demonstrate the **replay** and **fork** actions. \ No newline at end of file +
+![image](img/breakpoints.png){: style="max-height:400px"} +
An example graph consisting of 3 sequential steps with a breakpoint before step_3.
diff --git a/docs/docs/concepts/bring_your_own_cloud.md b/docs/docs/concepts/bring_your_own_cloud.md deleted file mode 100644 index 4a8e4c473..000000000 --- a/docs/docs/concepts/bring_your_own_cloud.md +++ /dev/null @@ -1,60 +0,0 @@ ---- -search: - boost: 2 ---- - -# Bring Your Own Cloud (BYOC) - -!!! note Prerequisites - - - [LangGraph Platform](./langgraph_platform.md) - - [Deployment Options](./deployment_options.md) - -## Architecture - -Split control plane (hosted by us) and data plane (hosted by you, managed by us). - -| | Control Plane | Data Plane | -|-----------------------------|---------------------------------|-----------------------------------------------| -| What it does | Manages deployments, revisions. | Runs your LangGraph graphs, stores your data. | -| Where it is hosted | LangChain Cloud account | Your cloud account | -| Who provisions and monitors | LangChain | LangChain | - -LangChain has no direct access to the resources created in your cloud account, and can only interact with them via AWS APIs. Your data never leaves your cloud account / VPC at rest or in transit. - -![Architecture](img/byoc_architecture.png) - -## Requirements - -- You’re using AWS already. -- You use `langgraph-cli` and/or [LangGraph Studio](./langgraph_studio.md) app to test graph locally. -- You use `langgraph build` command to build image and then push it to your AWS ECR repository (`docker push`). - -## How it works - -- We provide you a [Terraform module](https://github.com/langchain-ai/terraform/tree/main/modules/langgraph_cloud_setup) which you run to set up our requirements - 1. Creates an AWS role (which our control plane will later assume to provision and monitor resources) - - https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonVPCReadOnlyAccess.html - - Read VPCS to find subnets - - https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonECS_FullAccess.html - - Used to create/delete ECS resources for your LangGraph Cloud instances - - https://docs.aws.amazon.com/aws-managed-policy/latest/reference/SecretsManagerReadWrite.html - - Create secrets for your ECS resources - - https://docs.aws.amazon.com/aws-managed-policy/latest/reference/CloudWatchReadOnlyAccess.html - - Read CloudWatch metrics/logs to monitor your instances/push deployment logs - - https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonRDSFullAccess.html - - Provision `RDS` instances for your LangGraph Cloud instances - - Alternatively, an externally managed Postgres instance can be used instead of the default `RDS` instance. LangChain does not monitor or manage the externally managed Postgres instance. See details for [`POSTGRES_URI_CUSTOM` environment variable](../cloud/reference/env_var.md#postgres_uri_custom). - 2. Either - - Tags an existing vpc / subnets as `langgraph-cloud-enabled` - - Creates a new vpc and subnets and tags them as `langgraph-cloud-enabled` -- You create a LangGraph Cloud Project in `smith.langchain.com` providing - - the ID of the AWS role created in the step above - - the AWS ECR repo to pull the service image from -- We provision the resources in your cloud account using the role above -- We monitor those resources to ensure uptime and recovery from errors - -Notes for customers using [self-hosted LangSmith](https://docs.smith.langchain.com/self_hosting): - -- Creation of new LangGraph Cloud projects and revisions currently needs to be done on `smith.langchain.com`. -- However, you can set up the project to trace to your self-hosted LangSmith instance if desired. See details for [`LANGSMITH_RUNS_ENDPOINTS` environment variable](../cloud/reference/env_var.md#langsmith_runs_endpoints). diff --git a/docs/docs/concepts/deployment_options.md b/docs/docs/concepts/deployment_options.md index 8934e147b..31a53e945 100644 --- a/docs/docs/concepts/deployment_options.md +++ b/docs/docs/concepts/deployment_options.md @@ -5,33 +5,33 @@ search: # Deployment Options -!!! info "Prerequisites" - - - [LangGraph Platform](./langgraph_platform.md) - - [LangGraph Server](./langgraph_server.md) - - [LangGraph Platform Plans](./plans.md) - -## Overview - There are 4 main options for deploying with the LangGraph Platform: -1. **Cloud SaaS(Beta)**: Available for **Plus** and **Enterprise** plans. +1. [Cloud SaaS](#cloud-saas) -1. **Self-Hosted Data Plane(Beta)**: Available for the **Enterprise** plan. +1. [Self-Hosted Data Plane(Beta)](#self-hosted-data-plane) -1. **Self-Hosted Control Plane(Beta)**: Available for the **Enterprise** plan. +1. [Self-Hosted Control Plane(Beta)](#self-hosted-control-plane) -1. **[Standalone Container](#standalone-container)**: Available for all plans. +1. [Standalone Container](#standalone-container) -Please see the [LangGraph Platform Plans](./plans.md) for more information on the different plans. -The guide below will explain the differences between the deployment options. +A quick comparison: + +| | **Cloud SaaS** | **Self-Hosted Data Plane** | **Self-Hosted Control Plane** | **Standalone Container** | **Self-Hosted Lite** | +|----------------------|----------------|----------------------------|-------------------------------|--------------------------| ---------------------| +| **[Control plane UI/API](../concepts/langgraph_control_plane.md)** | Yes | Yes | Yes | No | No | +| **CI/CD** | Managed internally by platform | Managed externally by you | Managed externally by you | Managed externally by you | Managed externally by you | +| **Data/compute residency** | LangChain’s cloud | Your cloud | Your cloud | Your cloud | Your cloud | +| **LangSmith compatibility** | Trace to LangSmith SaaS | Trace to LangSmith SaaS | Trace to Self-Hosted LangSmith | Optional tracing | Optional tracing | +| **[Server version compatibility](../concepts/langgraph_server.md#server-versions)** | Enterprise | Enterprise | Enterprise | Lite, Enterprise | Lite | +| **[Pricing](https://www.langchain.com/pricing-langgraph-platform)** | Plus | Enterprise | Enterprise | Developer | Free with LangSmith | ## Cloud SaaS The [Cloud SaaS](./langgraph_cloud.md) deployment option is a fully managed model for deployment where we manage the [control plane](./langgraph_control_plane.md) and [data plane](./langgraph_data_plane.md) in our cloud. This option provides a simple way to deploy and manage your LangGraph Servers. -Connect your GitHub repositories to the platform and deploy your LangGraph Servers from the [Control Plane UI](./langgraph_control_plane.md#control-plane-ui). The build process (i.e. CI/CD) is managed internally by the platform. +Connect your GitHub repositories to the platform and deploy your LangGraph Servers from the [control plane UI](./langgraph_control_plane.md#control-plane-ui). The build process (i.e. CI/CD) is managed internally by the platform. For more information, please see: @@ -42,7 +42,7 @@ For more information, please see: The [Self-Hosted Data Plane](./langgraph_self_hosted_data_plane.md) deployment option is a "hybrid" model for deployment where we manage the [control plane](./langgraph_control_plane.md) in our cloud and you manage the [data plane](./langgraph_data_plane.md) in your cloud. This option provides a way to securely manage your data plane infrastructure, while offloading control plane management to us. -Build a Docker image using the [LangGraph CLI](./langgraph_cli.md) and deploy your LangGraph Server from the [Control Plane UI](./langgraph_control_plane.md#control-plane-ui). +Build a Docker image using the [LangGraph CLI](./langgraph_cli.md) and deploy your LangGraph Server from the [control plane UI](./langgraph_control_plane.md#control-plane-ui). Supported Compute Platforms: [Kubernetes](https://kubernetes.io/), [Amazon ECS](https://aws.amazon.com/ecs/) (coming soon!) @@ -55,7 +55,7 @@ For more information, please see: The [Self-Hosted Control Plane](./langgraph_self_hosted_control_plane.md) deployment option is a fully self-hosted model for deployment where you manage the [control plane](./langgraph_control_plane.md) and [data plane](./langgraph_data_plane.md) in your cloud. This option give you full control and responsibility of the control plane and data plane infrastructure. -Build a Docker image using the [LangGraph CLI](./langgraph_cli.md) and deploy your LangGraph Server from the [Control Plane UI](./langgraph_control_plane.md#control-plane-ui). +Build a Docker image using the [LangGraph CLI](./langgraph_cli.md) and deploy your LangGraph Server from the [control plane UI](./langgraph_control_plane.md#control-plane-ui). Supported Compute Platforms: [Kubernetes](https://kubernetes.io/) @@ -66,13 +66,13 @@ For more information, please see: ## Standalone Container -The [Standalone Container](./langgraph_standalone_container.md) deployment option is the least restrictive model for deployment. Deploy standalone instances of a LangGraph Server in your cloud. +The [Standalone Container](./langgraph_standalone_container.md) deployment option is the least restrictive model for deployment. Deploy standalone instances of a LangGraph Server in your cloud, using any of the [available](./plans.md) license options. Build a Docker image using the [LangGraph CLI](./langgraph_cli.md) and deploy your LangGraph Server using the container deployment tooling of your choice. Images can be deployed to any compute platform. For more information, please see: -* [Sandalone Container Conceptual Guide](./langgraph_standalone_container.md) +* [Standalone Container Conceptual Guide](./langgraph_standalone_container.md) * [How to deploy a Standalone Container](../cloud/deployment/standalone_container.md) ## Related @@ -81,4 +81,3 @@ For more information, please see: * [LangGraph Platform plans](./plans.md) * [LangGraph Platform pricing](https://www.langchain.com/langgraph-platform-pricing) -* [Deployment how-to guides](../how-tos/index.md#deployment) diff --git a/docs/docs/concepts/faq.md b/docs/docs/concepts/faq.md index 17d80f269..c274952b3 100644 --- a/docs/docs/concepts/faq.md +++ b/docs/docs/concepts/faq.md @@ -35,7 +35,7 @@ LangGraph is a stateful, orchestration framework that brings added control to ag | Streaming | Basic | Dedicated mode for token-by-token messages | | Checkpointer | Community contributed | Supported out-of-the-box | | Persistence Layer | Self-managed | Managed Postgres with efficient storage | -| Deployment | Self-managed | • Cloud SaaS
• Free self-hosted
• Enterprise (BYOC or paid self-hosted) | +| Deployment | Self-managed | • Cloud SaaS
• Free self-hosted
• Enterprise (paid self-hosted) | | Scalability | Self-managed | Auto-scaling of task queues and servers | | Fault-tolerance | Self-managed | Automated retries | | Concurrency Control | Simple threading | Supports double-texting | @@ -43,20 +43,11 @@ LangGraph is a stateful, orchestration framework that brings added control to ag | Monitoring | None | Integrated with LangSmith for observability | | IDE integration | LangGraph Studio | LangGraph Studio | -## What are my deployment options for LangGraph Platform? - -We currently have the following deployment options for LangGraph applications: - -- [‍Self-Hosted Lite](./deployment_options.md#self-hosted-lite): A free (up to 1M nodes executed), limited version of LangGraph Platform that you can run locally or in a self-hosted manner. This version requires a LangSmith API key and logs all usage to LangSmith. Fewer features are available than in paid plans. -- [Cloud SaaS](./deployment_options.md#cloud-saas): Fully managed and hosted as part of LangSmith, with automatic updates and zero maintenance. -- [‍Bring Your Own Cloud (BYOC)](./deployment_options.md#bring-your-own-cloud): Deploy LangGraph Platform within your VPC, provisioned and run as a service. Keep data in your environment while outsourcing the management of the service. -- [Self-Hosted Enterprise](./deployment_options.md#self-hosted-enterprise): Deploy LangGraph entirely on your own infrastructure. - ## Is LangGraph Platform open source? No. LangGraph Platform is proprietary software. -There is a free, self-hosted version of LangGraph Platform with access to basic features. The Cloud SaaS deployment option is free while in beta, but will eventually be a paid service. We will always give ample notice before charging for a service and reward our early adopters with preferential pricing. The Bring Your Own Cloud (BYOC) and Self-Hosted Enterprise options are also paid services. [Contact our sales team](https://www.langchain.com/contact-sales) to learn more. +There is a free, self-hosted version of LangGraph Platform with access to basic features. The Cloud SaaS deployment option is free while in beta, but will eventually be a paid service. We will always give ample notice before charging for a service and reward our early adopters with preferential pricing. The Self-Hosted deployment options are paid services. [Contact our sales team](https://www.langchain.com/contact-sales) to learn more. For more information, see our [LangGraph Platform pricing page](https://www.langchain.com/pricing-langgraph-platform). diff --git a/docs/docs/concepts/functional_api.md b/docs/docs/concepts/functional_api.md index c39aa8f64..61fbcbc22 100644 --- a/docs/docs/concepts/functional_api.md +++ b/docs/docs/concepts/functional_api.md @@ -3,11 +3,11 @@ search: boost: 2 --- -# Functional API +# Functional API concepts ## Overview -The **Functional API** allows you to add LangGraph's key features -- [persistence](./persistence.md), [memory](./memory.md), [human-in-the-loop](./human_in_the_loop.md), and [streaming](./streaming.md) — to your applications with minimal changes to your existing code. +The **Functional API** allows you to add LangGraph's key features — [persistence](./persistence.md), [memory](./memory.md), [human-in-the-loop](./human_in_the_loop.md), and [streaming](./streaming.md) — to your applications with minimal changes to your existing code. It is designed to integrate these features into existing code that may use standard language primitives for branching and control flow, such as `if` statements, `for` loops, and function calls. Unlike many data orchestration frameworks that require restructuring code into an explicit pipeline or DAG, the Functional API allows you to incorporate these capabilities without enforcing a rigid execution model. @@ -179,7 +179,7 @@ You will usually want to pass a **checkpointer** to the `@entrypoint` decorator The **inputs** and **outputs** of entrypoints must be JSON-serializable to support checkpointing. Please see the [serialization](#serialization) section for more details. -### Injectable Parameters +### Injectable parameters When declaring an `entrypoint`, you can request access to additional parameters that will be injected automatically at run time. These parameters include: @@ -394,7 +394,7 @@ This assumes that the underlying **error** has been resolved and execution can p print(chunk) ``` -### State Management +### Short-term memory When an `entrypoint` is defined with a `checkpointer`, it stores information between successive invocations on the same **thread id** in [checkpoints](persistence.md#checkpoints). @@ -524,7 +524,7 @@ Providing non-serializable inputs or outputs will result in a runtime error when To utilize features like **human-in-the-loop**, any randomness should be encapsulated inside of **tasks**. This guarantees that when execution is halted (e.g., for human in the loop) and then resumed, it will follow the same *sequence of steps*, even if **task** results are non-deterministic. -LangGraph achieves this behavior by persisting **task** and [**subgraph**](./low_level.md#subgraphs) results as they execute. A well-designed workflow ensures that resuming execution follows the *same sequence of steps*, allowing previously computed results to be retrieved correctly without having to re-execute them. This is particularly useful for long-running **tasks** or **tasks** with non-deterministic results, as it avoids repeating previously done work and allows resuming from essentially the same +LangGraph achieves this behavior by persisting **task** and [**subgraph**](./subgraphs.md) results as they execute. A well-designed workflow ensures that resuming execution follows the *same sequence of steps*, allowing previously computed results to be retrieved correctly without having to re-execute them. This is particularly useful for long-running **tasks** or **tasks** with non-deterministic results, as it avoids repeating previously done work and allows resuming from essentially the same. While different runs of a workflow can produce different results, resuming a **specific** run should always follow the same sequence of recorded steps. This allows LangGraph to efficiently look up **task** and **subgraph** results that were executed prior to the graph being interrupted and avoid recomputing them. @@ -537,7 +537,7 @@ Idempotency ensures that running the same operation multiple times produces the The **Functional API** and the [Graph APIs (StateGraph)](./low_level.md#stategraph) provide two different paradigms to create applications with LangGraph. Here are some key differences: - **Control flow**: The Functional API does not require thinking about graph structure. You can use standard Python constructs to define workflows. This will usually trim the amount of code you need to write. -- **State management**: The **GraphAPI** requires declaring a [**State**](./low_level.md#state) and may require defining [**reducers**](./low_level.md#reducers) to manage updates to the graph state. `@entrypoint` and `@tasks` do not require explicit state management as their state is scoped to the function and is not shared across functions. +- **Short-term memory**: The **GraphAPI** requires declaring a [**State**](./low_level.md#state) and may require defining [**reducers**](./low_level.md#reducers) to manage updates to the graph state. `@entrypoint` and `@tasks` do not require explicit state management as their state is scoped to the function and is not shared across functions. - **Checkpointing**: Both APIs generate and use checkpoints. In the **Graph API** a new checkpoint is generated after every [superstep](./low_level.md). In the **Functional API**, when tasks are executed, their results are saved to an existing checkpoint associated with the given entrypoint instead of creating a new checkpoint. - **Visualization**: The Graph API makes it easy to visualize the workflow as a graph which can be useful for debugging, understanding the workflow, and sharing with others. The Functional API does not support visualization as the graph is dynamically generated during runtime. @@ -665,279 +665,3 @@ Please read the section on [determinism](#determinism) for more details. } ``` -## Patterns - -Below are a few simple patterns that show examples of **how to** use the **Functional API**. - -When defining an `entrypoint`, input is restricted to the first argument of the function. To pass multiple inputs, you can use a dictionary. - -```python -@entrypoint(checkpointer=checkpointer) -def my_workflow(inputs: dict) -> int: - value = inputs["value"] - another_value = inputs["another_value"] - ... - -my_workflow.invoke({"value": 1, "another_value": 2}) -``` - -### Parallel execution - -Tasks can be executed in parallel by invoking them concurrently and waiting for the results. This is useful for improving performance in IO bound tasks (e.g., calling APIs for LLMs). - -```python -@task -def add_one(number: int) -> int: - return number + 1 - -@entrypoint(checkpointer=checkpointer) -def graph(numbers: list[int]) -> list[str]: - futures = [add_one(i) for i in numbers] - return [f.result() for f in futures] -``` - -### Calling subgraphs - -The **Functional API** and the [**Graph API**](./low_level.md) can be used together in the same application as they share the same underlying runtime. - -```python -from langgraph.func import entrypoint -from langgraph.graph import StateGraph - -builder = StateGraph() -... -some_graph = builder.compile() - -@entrypoint() -def some_workflow(some_input: dict) -> int: - # Call a graph defined using the graph API - result_1 = some_graph.invoke(...) - # Call another graph defined using the graph API - result_2 = another_graph.invoke(...) - return { - "result_1": result_1, - "result_2": result_2 - } -``` - -### Calling other entrypoints - -You can call other **entrypoints** from within an **entrypoint** or a **task**. - -```python -@entrypoint() # Will automatically use the checkpointer from the parent entrypoint -def some_other_workflow(inputs: dict) -> int: - return inputs["value"] - -@entrypoint(checkpointer=checkpointer) -def my_workflow(inputs: dict) -> int: - value = some_other_workflow.invoke({"value": 1}) - return value -``` - -### Streaming custom data - -You can stream custom data from an **entrypoint** by using the `StreamWriter` type. This allows you to write custom data to the `custom` stream. - -```python -from langgraph.checkpoint.memory import MemorySaver -from langgraph.func import entrypoint, task -from langgraph.types import StreamWriter - -@task -def add_one(x): - return x + 1 - -@task -def add_two(x): - return x + 2 - -checkpointer = MemorySaver() - -@entrypoint(checkpointer=checkpointer) -def main(inputs, writer: StreamWriter) -> int: - """A simple workflow that adds one and two to a number.""" - writer("hello") # Write some data to the `custom` stream - add_one(inputs['number']).result() # Will write data to the `updates` stream - writer("world") # Write some more data to the `custom` stream - add_two(inputs['number']).result() # Will write data to the `updates` stream - return 5 - -config = { - "configurable": { - "thread_id": "1" - } -} - -for chunk in main.stream({"number": 1}, stream_mode=["custom", "updates"], config=config): - print(chunk) -``` - -```pycon -('updates', {'add_one': 2}) -('updates', {'add_two': 3}) -('custom', 'hello') -('custom', 'world') -('updates', {'main': 5}) -``` - -!!! important - - The `writer` parameter is automatically injected at run time. It will only be injected if the - parameter name appears in the function signature with that *exact* name. - - -### Retry policy - -```python -from langgraph.checkpoint.memory import MemorySaver -from langgraph.func import entrypoint, task -from langgraph.types import RetryPolicy - -attempts = 0 - -# Let's configure the RetryPolicy to retry on ValueError. -# The default RetryPolicy is optimized for retrying specific network errors. -retry_policy = RetryPolicy(retry_on=ValueError) - -@task(retry=retry_policy) -def get_info(): - global attempts - attempts += 1 - - if attempts < 2: - raise ValueError('Failure') - return "OK" - -checkpointer = MemorySaver() - -@entrypoint(checkpointer=checkpointer) -def main(inputs, writer): - return get_info().result() - -config = { - "configurable": { - "thread_id": "1" - } -} - -main.invoke({'any_input': 'foobar'}, config=config) -``` - -```pycon -'OK' -``` - -### Resuming after an error - -```python -import time -from langgraph.checkpoint.memory import MemorySaver -from langgraph.func import entrypoint, task -from langgraph.types import StreamWriter - -# This variable is just used for demonstration purposes to simulate a network failure. -# It's not something you will have in your actual code. -attempts = 0 - -@task() -def get_info(): - """ - Simulates a task that fails once before succeeding. - Raises an exception on the first attempt, then returns "OK" on subsequent tries. - """ - global attempts - attempts += 1 - - if attempts < 2: - raise ValueError("Failure") # Simulate a failure on the first attempt - return "OK" - -# Initialize an in-memory checkpointer for persistence -checkpointer = MemorySaver() - -@task -def slow_task(): - """ - Simulates a slow-running task by introducing a 1-second delay. - """ - time.sleep(1) - return "Ran slow task." - -@entrypoint(checkpointer=checkpointer) -def main(inputs, writer: StreamWriter): - """ - Main workflow function that runs the slow_task and get_info tasks sequentially. - - Parameters: - - inputs: Dictionary containing workflow input values. - - writer: StreamWriter for streaming custom data. - - The workflow first executes `slow_task` and then attempts to execute `get_info`, - which will fail on the first invocation. - """ - slow_task_result = slow_task().result() # Blocking call to slow_task - get_info().result() # Exception will be raised here on the first attempt - return slow_task_result - -# Workflow execution configuration with a unique thread identifier -config = { - "configurable": { - "thread_id": "1" # Unique identifier to track workflow execution - } -} - -# This invocation will take ~1 second due to the slow_task execution -try: - # First invocation will raise an exception due to the `get_info` task failing - main.invoke({'any_input': 'foobar'}, config=config) -except ValueError: - pass # Handle the failure gracefully -``` - -When we resume execution, we won't need to re-run the `slow_task` as its result is already saved in the checkpoint. - -```python -main.invoke(None, config=config) -``` - -```pycon -'Ran slow task.' -``` - -### Human-in-the-loop - -The functional API supports [human-in-the-loop](human_in_the_loop.md) workflows using the `interrupt` function and the `Command` primitive. - -Please see the following examples for more details: - -* [How to wait for user input (Functional API)](../how-tos/wait-user-input-functional.ipynb): Shows how to implement a simple human-in-the-loop workflow using the functional API. -* [How to review tool calls (Functional API)](../how-tos/review-tool-calls-functional.ipynb): Guide demonstrates how to implement human-in-the-loop workflows in a ReAct agent using the LangGraph Functional API. - -### Short-term memory - -[State management](#state-management) using the **previous** parameter and optionally using the `entrypoint.final` primitive can be used to implement [short term memory](memory.md). - -Please see the following how-to guides for more details: - -* [How to add thread-level persistence (functional API)](../how-tos/persistence-functional.ipynb): Shows how to add thread-level persistence to a functional API workflow and implements a simple chatbot. - -### Long-term memory - -[long-term memory](memory.md#long-term-memory) allows storing information across different **thread ids**. This could be useful for learning information -about a given user in one conversation and using it in another. - -Please see the following how-to guides for more details: - -* [How to add cross-thread persistence (functional API)](../how-tos/cross-thread-persistence-functional.ipynb): Shows how to add cross-thread persistence to a functional API workflow and implements a simple chatbot. - -### Workflows - -* [Workflows and agent](../tutorials/workflows/index.md) guide for more examples of how to build workflows using the Functional API. - -### Agents - -* [How to create a React agent from scratch (Functional API)](../how-tos/react-agent-from-scratch-functional.ipynb): Shows how to create a simple React agent from scratch using the functional API. -* [How to build a multi-agent network](../how-tos/multi-agent-network-functional.ipynb): Shows how to build a multi-agent network using the functional API. -* [How to add multi-turn conversation in a multi-agent application (functional API)](../how-tos/multi-agent-multi-turn-convo-functional.ipynb): allow an end-user to engage in a multi-turn conversation with one or more agents. - diff --git a/docs/docs/concepts/high_level.md b/docs/docs/concepts/high_level.md deleted file mode 100644 index 5ad24d841..000000000 --- a/docs/docs/concepts/high_level.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -search: - boost: 2 ---- - -# Why LangGraph? - -## LLM applications - -LLMs make it possible to embed intelligence into a new class of applications. There are many patterns for building applications that use LLMs. Workflows have scaffolding of predefined code paths around LLM calls. LLMs can direct the control flow through these predefined code paths, which some consider to be an "agentic system". In other cases, it's possible to remove this scaffolding, creating autonomous agents that can [plan](https://huyenchip.com/2025/01/07/agents.html), take actions via [tool calls](https://python.langchain.com/docs/concepts/tool_calling/), and directly respond [to the feedback from their own actions](https://research.google/blog/react-synergizing-reasoning-and-acting-in-language-models/) with further actions. - -![Agent Workflow](img/agent_workflow.png) - -## What LangGraph provides - -LangGraph provides low-level supporting infrastructure that sits underneath *any* workflow or agent. It does not abstract prompts or architecture, and provides three central benefits: - -### Persistence - -LangGraph has a [persistence layer](https://langchain-ai.github.io/langgraph/concepts/persistence/), which offers a number of benefits: - -- [Memory](https://langchain-ai.github.io/langgraph/concepts/memory/): LangGraph persists arbitrary aspects of your application's state, supporting memory of conversations and other updates within and across user interactions; -- [Human-in-the-loop](https://langchain-ai.github.io/langgraph/concepts/human_in_the_loop/): Because state is checkpointed, execution can be interrupted and resumed, allowing for decisions, validation, and corrections via human input. - -### Streaming - -LangGraph also provides support for [streaming](../how-tos/index.md#streaming) workflow / agent state to the user (or developer) over the course of execution. LangGraph supports streaming of both events ([such as feedback from a tool call](../how-tos/streaming.ipynb#updates)) and [tokens from LLM calls](../how-tos/streaming-tokens.ipynb) embedded in an application. - -### Debugging and Deployment - -LangGraph provides an easy onramp for testing, debugging, and deploying applications via [LangGraph Platform](https://langchain-ai.github.io/langgraph/concepts/langgraph_platform/). This includes [Studio](https://langchain-ai.github.io/langgraph/concepts/langgraph_studio/), an IDE that enables visualization, interaction, and debugging of workflows or agents. This also includes numerous [options](https://langchain-ai.github.io/langgraph/tutorials/deployment/) for deployment. \ No newline at end of file diff --git a/docs/docs/concepts/human_in_the_loop.md b/docs/docs/concepts/human_in_the_loop.md index 0c6fc0bc3..4b2aa575e 100644 --- a/docs/docs/concepts/human_in_the_loop.md +++ b/docs/docs/concepts/human_in_the_loop.md @@ -4,720 +4,28 @@ search: tags: - human-in-the-loop - hil + - overview hide: - tags --- # Human-in-the-loop -!!! tip "This guide uses the new `interrupt` function." +LangGraph supports robust **human-in-the-loop (HIL)** workflows, enabling human intervention at any point in an automated process. This is especially useful in large language model (LLM)-driven applications where model output may require validation, correction, or additional context. - As of LangGraph 0.2.57, the recommended way to set breakpoints is using the [`interrupt` function][langgraph.types.interrupt] as it simplifies **human-in-the-loop** patterns. +## Key capabilities - If you're looking for the previous version of this conceptual guide, which relied on static breakpoints and `NodeInterrupt` exception, it is available [here](v0-human-in-the-loop.md). +* **Persistent execution state**: LangGraph checkpoints the graph state after each step, allowing execution to pause indefinitely at defined nodes. This supports asynchronous human review or input without time constraints. -A **human-in-the-loop** (or "on-the-loop") workflow integrates human input into automated processes, allowing for decisions, validation, or corrections at key stages. This is especially useful in **LLM-based applications**, where the underlying model may generate occasional inaccuracies. In low-error-tolerance scenarios like compliance, decision-making, or content generation, human involvement ensures reliability by enabling review, correction, or override of model outputs. +* **Flexible integration points**: HIL logic can be introduced at any point in the workflow. This allows targeted human involvement, such as approving API calls, correcting outputs, or guiding conversations. - -## Use cases - -Key use cases for **human-in-the-loop** workflows in LLM-based applications include: +## Typical use cases 1. [**🛠️ Reviewing tool calls**](#review-tool-calls): Humans can review, edit, or approve tool calls requested by the LLM before tool execution. 2. **✅ Validating LLM outputs**: Humans can review, edit, or approve content generated by the LLM. 3. **💡 Providing context**: Enable the LLM to explicitly request human input for clarification or additional details or to support multi-turn conversations. -## `interrupt` +## Implementation -The [`interrupt` function][langgraph.types.interrupt] in LangGraph enables human-in-the-loop workflows by pausing the graph at a specific node, presenting information to a human, and resuming the graph with their input. This function is useful for tasks like approvals, edits, or collecting additional input. The [`interrupt` function][langgraph.types.interrupt] is used in conjunction with the [`Command`](../reference/types.md#langgraph.types.Command) object to resume the graph with a value provided by the human. - -```python -from langgraph.types import interrupt - -def human_node(state: State): - value = interrupt( - # Any JSON serializable value to surface to the human. - # For example, a question or a piece of text or a set of keys in the state - { - "text_to_revise": state["some_text"] - } - ) - # Update the state with the human's input or route the graph based on the input. - return { - "some_text": value - } - -graph = graph_builder.compile( - checkpointer=checkpointer # Required for `interrupt` to work -) - -# Run the graph until the interrupt -thread_config = {"configurable": {"thread_id": "some_id"}} -graph.invoke(some_input, config=thread_config) - -# Resume the graph with the human's input -graph.invoke(Command(resume=value_from_human), config=thread_config) -``` - -```pycon -{'some_text': 'Edited text'} -``` - -!!! warning - Interrupts are both powerful and ergonomic. However, while they may resemble Python's input() function in terms of developer experience, it's important to note that they do not automatically resume execution from the interruption point. Instead, they rerun the entire node where the interrupt was used. - For this reason, interrupts are typically best placed at the start of a node or in a dedicated node. Please read the [resuming from an interrupt](#how-does-resuming-from-an-interrupt-work) section for more details. - -??? "Full Code" - - Here's a full example of how to use `interrupt` in a graph, if you'd like - to see the code in action. - - ```python - from typing import TypedDict - import uuid - - from langgraph.checkpoint.memory import MemorySaver - from langgraph.constants import START - from langgraph.graph import StateGraph - from langgraph.types import interrupt, Command - - class State(TypedDict): - """The graph state.""" - some_text: str - - def human_node(state: State): - value = interrupt( - # Any JSON serializable value to surface to the human. - # For example, a question or a piece of text or a set of keys in the state - { - "text_to_revise": state["some_text"] - } - ) - return { - # Update the state with the human's input - "some_text": value - } - - - # Build the graph - graph_builder = StateGraph(State) - # Add the human-node to the graph - graph_builder.add_node("human_node", human_node) - graph_builder.add_edge(START, "human_node") - - # A checkpointer is required for `interrupt` to work. - checkpointer = MemorySaver() - graph = graph_builder.compile( - checkpointer=checkpointer - ) - - # Pass a thread ID to the graph to run it. - thread_config = {"configurable": {"thread_id": uuid.uuid4()}} - - # Using stream() to directly surface the `__interrupt__` information. - for chunk in graph.stream({"some_text": "Original text"}, config=thread_config): - print(chunk) - - # Resume using Command - for chunk in graph.stream(Command(resume="Edited text"), config=thread_config): - print(chunk) - ``` - - ```pycon - {'__interrupt__': ( - Interrupt( - value={'question': 'Please revise the text', 'some_text': 'Original text'}, - resumable=True, - ns=['human_node:10fe492f-3688-c8c6-0d0a-ec61a43fecd6'], - when='during' - ), - ) - } - {'human_node': {'some_text': 'Edited text'}} - ``` - -## Requirements - -To use `interrupt` in your graph, you need to: - -1. [**Specify a checkpointer**](persistence.md#checkpoints) to save the graph state after each step. -2. **Call `interrupt()`** in the appropriate place. See the [Design Patterns](#design-patterns) section for examples. -3. **Run the graph** with a [**thread ID**](./persistence.md#threads) until the `interrupt` is hit. -4. **Resume execution** using `invoke`/`ainvoke`/`stream`/`astream` (see [**The `Command` primitive**](#the-command-primitive)). - -## Design Patterns - -There are typically three different **actions** that you can do with a human-in-the-loop workflow: - -1. **Approve or Reject**: Pause the graph before a critical step, such as an API call, to review and approve the action. If the action is rejected, you can prevent the graph from executing the step, and potentially take an alternative action. This pattern often involve **routing** the graph based on the human's input. -2. **Edit Graph State**: Pause the graph to review and edit the graph state. This is useful for correcting mistakes or updating the state with additional information. This pattern often involves **updating** the state with the human's input. -3. **Get Input**: Explicitly request human input at a particular step in the graph. This is useful for collecting additional information or context to inform the agent's decision-making process or for supporting **multi-turn conversations**. - -Below we show different design patterns that can be implemented using these **actions**. - -### Approve or Reject - -
-![image](img/human_in_the_loop/approve-or-reject.png){: style="max-height:400px"} -
Depending on the human's approval or rejection, the graph can proceed with the action or take an alternative path.
-
- -Pause the graph before a critical step, such as an API call, to review and approve the action. If the action is rejected, you can prevent the graph from executing the step, and potentially take an alternative action. - -```python - -from typing import Literal -from langgraph.types import interrupt, Command - -def human_approval(state: State) -> Command[Literal["some_node", "another_node"]]: - is_approved = interrupt( - { - "question": "Is this correct?", - # Surface the output that should be - # reviewed and approved by the human. - "llm_output": state["llm_output"] - } - ) - - if is_approved: - return Command(goto="some_node") - else: - return Command(goto="another_node") - -# Add the node to the graph in an appropriate location -# and connect it to the relevant nodes. -graph_builder.add_node("human_approval", human_approval) -graph = graph_builder.compile(checkpointer=checkpointer) - -# After running the graph and hitting the interrupt, the graph will pause. -# Resume it with either an approval or rejection. -thread_config = {"configurable": {"thread_id": "some_id"}} -graph.invoke(Command(resume=True), config=thread_config) -``` - -See [how to review tool calls](../how-tos/human_in_the_loop/review-tool-calls.ipynb) for a more detailed example. - -### Review & Edit State - -
-![image](img/human_in_the_loop/edit-graph-state-simple.png){: style="max-height:400px"} -
A human can review and edit the state of the graph. This is useful for correcting mistakes or updating the state with additional information. -
-
- -```python -from langgraph.types import interrupt - -def human_editing(state: State): - ... - result = interrupt( - # Interrupt information to surface to the client. - # Can be any JSON serializable value. - { - "task": "Review the output from the LLM and make any necessary edits.", - "llm_generated_summary": state["llm_generated_summary"] - } - ) - - # Update the state with the edited text - return { - "llm_generated_summary": result["edited_text"] - } - -# Add the node to the graph in an appropriate location -# and connect it to the relevant nodes. -graph_builder.add_node("human_editing", human_editing) -graph = graph_builder.compile(checkpointer=checkpointer) - -... - -# After running the graph and hitting the interrupt, the graph will pause. -# Resume it with the edited text. -thread_config = {"configurable": {"thread_id": "some_id"}} -graph.invoke( - Command(resume={"edited_text": "The edited text"}), - config=thread_config -) -``` - -See [How to wait for user input using interrupt](../how-tos/human_in_the_loop/wait-user-input.ipynb) for a more detailed example. - -### Review Tool Calls - -
-![image](img/human_in_the_loop/tool-call-review.png){: style="max-height:400px"} -
A human can review and edit the output from the LLM before proceeding. This is particularly -critical in applications where the tool calls requested by the LLM may be sensitive or require human oversight. -
-
- -```python -def human_review_node(state) -> Command[Literal["call_llm", "run_tool"]]: - # This is the value we'll be providing via Command(resume=) - human_review = interrupt( - { - "question": "Is this correct?", - # Surface tool calls for review - "tool_call": tool_call - } - ) - - review_action, review_data = human_review - - # Approve the tool call and continue - if review_action == "continue": - return Command(goto="run_tool") - - # Modify the tool call manually and then continue - elif review_action == "update": - ... - updated_msg = get_updated_msg(review_data) - # Remember that to modify an existing message you will need - # to pass the message with a matching ID. - return Command(goto="run_tool", update={"messages": [updated_message]}) - - # Give natural language feedback, and then pass that back to the agent - elif review_action == "feedback": - ... - feedback_msg = get_feedback_msg(review_data) - return Command(goto="call_llm", update={"messages": [feedback_msg]}) -``` - -See [how to review tool calls](../how-tos/human_in_the_loop/review-tool-calls.ipynb) for a more detailed example. - -### Multi-turn conversation - -
-![image](img/human_in_the_loop/multi-turn-conversation.png){: style="max-height:400px"} -
A multi-turn conversation architecture where an agent and human node cycle back and forth until the agent decides to hand off the conversation to another agent or another part of the system. -
-
- -A **multi-turn conversation** involves multiple back-and-forth interactions between an agent and a human, which can allow the agent to gather additional information from the human in a conversational manner. - -This design pattern is useful in an LLM application consisting of [multiple agents](./multi_agent.md). One or more agents may need to carry out multi-turn conversations with a human, where the human provides input or feedback at different stages of the conversation. For simplicity, the agent implementation below is illustrated as a single node, but in reality -it may be part of a larger graph consisting of multiple nodes and include a conditional edge. - -=== "Using a human node per agent" - - In this pattern, each agent has its own human node for collecting user input. - This can be achieved by either naming the human nodes with unique names (e.g., "human for agent 1", "human for agent 2") or by - using subgraphs where a subgraph contains a human node and an agent node. - - ```python - from langgraph.types import interrupt - - def human_input(state: State): - human_message = interrupt("human_input") - return { - "messages": [ - { - "role": "human", - "content": human_message - } - ] - } - - def agent(state: State): - # Agent logic - ... - - graph_builder.add_node("human_input", human_input) - graph_builder.add_edge("human_input", "agent") - graph = graph_builder.compile(checkpointer=checkpointer) - - # After running the graph and hitting the interrupt, the graph will pause. - # Resume it with the human's input. - graph.invoke( - Command(resume="hello!"), - config=thread_config - ) - ``` - - -=== "Sharing human node across multiple agents" - - In this pattern, a single human node is used to collect user input for multiple agents. The active agent is determined from the state, so after human input is collected, the graph can route to the correct agent. - - ```python - from langgraph.types import interrupt - - def human_node(state: MessagesState) -> Command[Literal["agent_1", "agent_2", ...]]: - """A node for collecting user input.""" - user_input = interrupt(value="Ready for user input.") - - # Determine the **active agent** from the state, so - # we can route to the correct agent after collecting input. - # For example, add a field to the state or use the last active agent. - # or fill in `name` attribute of AI messages generated by the agents. - active_agent = ... - - return Command( - update={ - "messages": [{ - "role": "human", - "content": user_input, - }] - }, - goto=active_agent, - ) - ``` - -See [how to implement multi-turn conversations](../how-tos/multi-agent-multi-turn-convo.ipynb) for a more detailed example. - -### Validating human input - -If you need to validate the input provided by the human within the graph itself (rather than on the client side), you can achieve this by using multiple interrupt calls within a single node. - -```python -from langgraph.types import interrupt - -def human_node(state: State): - """Human node with validation.""" - question = "What is your age?" - - while True: - answer = interrupt(question) - - # Validate answer, if the answer isn't valid ask for input again. - if not isinstance(answer, int) or answer < 0: - question = f"'{answer} is not a valid age. What is your age?" - answer = None - continue - else: - # If the answer is valid, we can proceed. - break - - print(f"The human in the loop is {answer} years old.") - return { - "age": answer - } -``` - -## The `Command` primitive - -When using the `interrupt` function, the graph will pause at the interrupt and wait for user input. - -Graph execution can be resumed using the [Command](../reference/types.md#langgraph.types.Command) primitive which can be passed through the `invoke`, `ainvoke`, `stream` or `astream` methods. - -The `Command` primitive provides a way to **pass a value** (such as user's input) to the `interrupt` via `Command(resume=value)`. Execution resumes from the beginning of the node where the `interrupt` was used, however, this time the `interrupt(...)` call will return the value passed in the `Command(resume=value)` instead of pausing the graph. - -```python -# Resume graph execution with the user's input. -graph.invoke(Command(resume={"age": "25"}), thread_config) -``` - -By leveraging `Command`, you can resume graph execution and handle user inputs. - -## How does resuming from an interrupt work? - -!!! warning - - Resuming from an `interrupt` is **different** from Python's `input()` function, where execution resumes from the exact point where the `input()` function was called. - -A critical aspect of using `interrupt` is understanding how resuming works. When you resume execution after an `interrupt`, graph execution starts from the **beginning** of the **graph node** where the last `interrupt` was triggered. - -**All** code from the beginning of the node to the `interrupt` will be re-executed. - -```python -counter = 0 -def node(state: State): - # All the code from the beginning of the node to the interrupt will be re-executed - # when the graph resumes. - global counter - counter += 1 - print(f"> Entered the node: {counter} # of times") - # Pause the graph and wait for user input. - answer = interrupt() - print("The value of counter is:", counter) - ... -``` - -Upon **resuming** the graph, the counter will be incremented a second time, resulting in the following output: - -```pycon -> Entered the node: 2 # of times -The value of counter is: 2 -``` - -### Resuming multiple interrupts with one invocation - -If you have multiple interrupts in the task queue, you can use `Command.resume` with a dictionary mapping -of interrupt ids to resume values to resume multiple interrupts with a single `invoke` / `stream` call. - -For example, once your graph has been interrupted (multiple times, theoretically) and is stalled: - -```python -resume_map = { - i.interrupt_id: f"human input for prompt {i.value}" - for i in parent.get_state(thread_config).interrupts -} - -parent_graph.invoke(Command(resume=resume_map), config=thread_config) -``` - -## Common Pitfalls - -### Side-effects - -Place code with side effects, such as API calls, **after** the `interrupt` to avoid duplication, as these are re-triggered every time the node is resumed. - -=== "Side effects before interrupt (BAD)" - - This code will re-execute the API call another time when the node is resumed from - the `interrupt`. - - This can be problematic if the API call is not idempotent or is just expensive. - - ```python - from langgraph.types import interrupt - - def human_node(state: State): - """Human node with validation.""" - api_call(...) # This code will be re-executed when the node is resumed. - answer = interrupt(question) - ``` - -=== "Side effects after interrupt (OK)" - - ```python - from langgraph.types import interrupt - - def human_node(state: State): - """Human node with validation.""" - - answer = interrupt(question) - - api_call(answer) # OK as it's after the interrupt - ``` - -=== "Side effects in a separate node (OK)" - - ```python - from langgraph.types import interrupt - - def human_node(state: State): - """Human node with validation.""" - - answer = interrupt(question) - - return { - "answer": answer - } - - def api_call_node(state: State): - api_call(...) # OK as it's in a separate node - ``` - -### Subgraphs called as functions - -When invoking a subgraph [as a function](low_level.md#as-a-function), the **parent graph** will resume execution from the **beginning of the node** where the subgraph was invoked (and where an `interrupt` was triggered). Similarly, the **subgraph**, will resume from the **beginning of the node** where the `interrupt()` function was called. - -For example, - -```python -def node_in_parent_graph(state: State): - some_code() # <-- This will re-execute when the subgraph is resumed. - # Invoke a subgraph as a function. - # The subgraph contains an `interrupt` call. - subgraph_result = subgraph.invoke(some_input) - ... -``` - -??? "**Example: Parent and Subgraph Execution Flow**" - - Say we have a parent graph with 3 nodes: - - **Parent Graph**: `node_1` → `node_2` (subgraph call) → `node_3` - - And the subgraph has 3 nodes, where the second node contains an `interrupt`: - - **Subgraph**: `sub_node_1` → `sub_node_2` (`interrupt`) → `sub_node_3` - - When resuming the graph, the execution will proceed as follows: - - 1. **Skip `node_1`** in the parent graph (already executed, graph state was saved in snapshot). - 2. **Re-execute `node_2`** in the parent graph from the start. - 3. **Skip `sub_node_1`** in the subgraph (already executed, graph state was saved in snapshot). - 4. **Re-execute `sub_node_2`** in the subgraph from the beginning. - 5. Continue with `sub_node_3` and subsequent nodes. - - Here is abbreviated example code that you can use to understand how subgraphs work with interrupts. - It counts the number of times each node is entered and prints the count. - - ```python - import uuid - from typing import TypedDict - - from langgraph.graph import StateGraph - from langgraph.constants import START - from langgraph.types import interrupt, Command - from langgraph.checkpoint.memory import MemorySaver - - - class State(TypedDict): - """The graph state.""" - state_counter: int - - - counter_node_in_subgraph = 0 - - def node_in_subgraph(state: State): - """A node in the sub-graph.""" - global counter_node_in_subgraph - counter_node_in_subgraph += 1 # This code will **NOT** run again! - print(f"Entered `node_in_subgraph` a total of {counter_node_in_subgraph} times") - - counter_human_node = 0 - - def human_node(state: State): - global counter_human_node - counter_human_node += 1 # This code will run again! - print(f"Entered human_node in sub-graph a total of {counter_human_node} times") - answer = interrupt("what is your name?") - print(f"Got an answer of {answer}") - - - checkpointer = MemorySaver() - - subgraph_builder = StateGraph(State) - subgraph_builder.add_node("some_node", node_in_subgraph) - subgraph_builder.add_node("human_node", human_node) - subgraph_builder.add_edge(START, "some_node") - subgraph_builder.add_edge("some_node", "human_node") - subgraph = subgraph_builder.compile(checkpointer=checkpointer) - - - counter_parent_node = 0 - - def parent_node(state: State): - """This parent node will invoke the subgraph.""" - global counter_parent_node - - counter_parent_node += 1 # This code will run again on resuming! - print(f"Entered `parent_node` a total of {counter_parent_node} times") - - # Please note that we're intentionally incrementing the state counter - # in the graph state as well to demonstrate that the subgraph update - # of the same key will not conflict with the parent graph (until - subgraph_state = subgraph.invoke(state) - return subgraph_state - - - builder = StateGraph(State) - builder.add_node("parent_node", parent_node) - builder.add_edge(START, "parent_node") - - # A checkpointer must be enabled for interrupts to work! - checkpointer = MemorySaver() - graph = builder.compile(checkpointer=checkpointer) - - config = { - "configurable": { - "thread_id": uuid.uuid4(), - } - } - - for chunk in graph.stream({"state_counter": 1}, config): - print(chunk) - - print('--- Resuming ---') - - for chunk in graph.stream(Command(resume="35"), config): - print(chunk) - ``` - - This will print out - - ```pycon - Entered `parent_node` a total of 1 times - Entered `node_in_subgraph` a total of 1 times - Entered human_node in sub-graph a total of 1 times - {'__interrupt__': (Interrupt(value='what is your name?', resumable=True, ns=['parent_node:4c3a0248-21f0-1287-eacf-3002bc304db4', 'human_node:2fe86d52-6f70-2a3f-6b2f-b1eededd6348'], when='during'),)} - --- Resuming --- - Entered `parent_node` a total of 2 times - Entered human_node in sub-graph a total of 2 times - Got an answer of 35 - {'parent_node': {'state_counter': 1}} - ``` - - - -### Using multiple interrupts - -Using multiple interrupts within a **single** node can be helpful for patterns like [validating human input](#validating-human-input). However, using multiple interrupts in the same node can lead to unexpected behavior if not handled carefully. - -When a node contains multiple interrupt calls, LangGraph keeps a list of resume values specific to the task executing the node. Whenever execution resumes, it starts at the beginning of the node. For each interrupt encountered, LangGraph checks if a matching value exists in the task's resume list. Matching is **strictly index-based**, so the order of interrupt calls within the node is critical. - -To avoid issues, refrain from dynamically changing the node's structure between executions. This includes adding, removing, or reordering interrupt calls, as such changes can result in mismatched indices. These problems often arise from unconventional patterns, such as mutating state via `Command(resume=..., update=SOME_STATE_MUTATION)` or relying on global variables to modify the node’s structure dynamically. - -??? "Example of incorrect code" - - ```python - import uuid - from typing import TypedDict, Optional - - from langgraph.graph import StateGraph - from langgraph.constants import START - from langgraph.types import interrupt, Command - from langgraph.checkpoint.memory import MemorySaver - - - class State(TypedDict): - """The graph state.""" - - age: Optional[str] - name: Optional[str] - - - def human_node(state: State): - if not state.get('name'): - name = interrupt("what is your name?") - else: - name = "N/A" - - if not state.get('age'): - age = interrupt("what is your age?") - else: - age = "N/A" - - print(f"Name: {name}. Age: {age}") - - return { - "age": age, - "name": name, - } - - - builder = StateGraph(State) - builder.add_node("human_node", human_node) - builder.add_edge(START, "human_node") - - # A checkpointer must be enabled for interrupts to work! - checkpointer = MemorySaver() - graph = builder.compile(checkpointer=checkpointer) - - config = { - "configurable": { - "thread_id": uuid.uuid4(), - } - } - - for chunk in graph.stream({"age": None, "name": None}, config): - print(chunk) - - for chunk in graph.stream(Command(resume="John", update={"name": "foo"}), config): - print(chunk) - ``` - - ```pycon - {'__interrupt__': (Interrupt(value='what is your name?', resumable=True, ns=['human_node:3a007ef9-c30d-c357-1ec1-86a1a70d8fba'], when='during'),)} - Name: N/A. Age: John - {'human_node': {'age': 'John', 'name': 'N/A'}} - ``` - -## Additional Resources 📚 - -- [**Conceptual Guide: Persistence**](persistence.md#replay): Read the persistence guide for more context on replaying. -- [**How to Guides: Human-in-the-loop**](../how-tos/index.md#human-in-the-loop): Learn how to implement human-in-the-loop workflows in LangGraph. -- [**How to implement multi-turn conversations**](../how-tos/multi-agent-multi-turn-convo.ipynb): Learn how to implement multi-turn conversations in LangGraph. +* `interrupt` function: Pauses execution at a specific point, presents information for human review. +* `Command` primitive: Used to resume execution with a value provided by the human. diff --git a/docs/docs/concepts/img/breakpoints.png b/docs/docs/concepts/img/breakpoints.png new file mode 100644 index 0000000000000000000000000000000000000000..0fb5aabea3c4b165282c86fd246f7685a1b05296 GIT binary patch literal 10815 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 literal 0 HcmV?d00001 diff --git a/docs/docs/concepts/img/lg_studio.png b/docs/docs/concepts/img/lg_studio.png index 5d41830fc844e9ee9ab294944e292320bbe1f122..91fcc447c964d2664eaea5006af61c2b9197c222 100644 GIT binary patch literal 107873 zcma%i1z40@*EXF35{kr-(gG?a4bn)5D5=spbT=ZQfOIo-mvpB}cXz{(gER~S|D*4F z;yZrlyMDQZJ@f2Xd#%0KUVGj56QZIdgNH+ogM@^HCnqbZhJ=IxLPA25!@>Z*S#a)b zK|;c*GMA80k&}?1QLzV`m|GbmA<2fs#$#$k&k*^-Zu5fBP%>U%H)D@t(=fchFSf0z z@tlYz<}M2Iw-4Q`IHl->gevzP#U6uTgcewEwL_>NS#!kZ6NrI$?MwUs#$)_!8M1seM^B4(_*%!xgCdHAKo~Dg} z=4sh22lWB6ne-BGYRD<9^;Ro#<7kv0NemgQ%YKZX1q&iQNg~7Ci-hEa@@3b^7|Zkm zzvGB5TkO4z$usZpJdG>XO=xbir4TIA4(!1~S?IImA@NWzr{(`0HZEalf3Y^nioA{bS3tdMg(L zxs>${?_wvE~4j63|?bEF#Gf5YLDpAK#hx!#tD_ z;l7Jg?8{S*#!Ex#YIHbh)KB>#kyV#%wTsDU_(6Br+Q=)E@R@f>IrTYsNL=SG2dA#* zZ_f0ehhCu1y_6IjIGJ{8-z3FuE6_k%x43U5z=r(U4lR8ln*P4=;LI?W!2>b0r(#t3 zNOS-ejRo^V4t^Dz!%`%$?-F#)IF_G8qu zK#Ap8TcH#T(@wWT{5q1-4-xGHhf)`eo}>ps2JOVmzERIvGOJW_nFT^aj%1`VR#oW6 zr8STX(KN#>#Hup{RBKfc`A^18x$i4VjSc6T$yD(PkPL|DW$hH=#%xJ>?sO^w8hGK@jhm?#}gf@g9u%abjXCjY;Jb13~(1tONh$2`k zSUDJ$ot<5kvzLRCbD_qsmZQd$T`Gqs>&4g;`AJSejayD(R=kj*I+`kKF|xxt zB#eQIGqNmsDH-#53f*eP>_!MCCB4zVrwE#89sLX~`Z)va42Fix?Mq{smh8Zgrs~l^irnW{}VWwu7CaPwo z20@{|DoE#HYquStscL&>^hc_Kc8l*8;ugE(_ytY{iusoL9tF4)=S2o;)MF~+wiB}B z%#+W`o)pSWI8Lrx-nY~r_LNgke`3~Cr8a9kTNjrUR~z@LNWMtNQf*F5P(x6wQ59Z* zuNqWJoTpwqmcdn8RM4p4(rnXwKrif1rN=1_hUn)l%6Oq7Y!M|_>{s*{y%>)ItODEv zm_8Uukalu+T679ZzoKtYjT%ADqB5MG{{F1JZvG+;+v=TV2Os~N(Z&ar)81d+*qyGz zb04aIFwZq_-u6w*OoY5Hef@D}m!aWBX560sX#IL}eVALt<=f+~`}X%m?$_V9z7J*( zW9N_Ch;u3Kewp?%xmdeo@m2Dx<6;7B(ejMhN0l=cV{eZqCI?>{&Akz{$g?Ch)Ozaz z;ZP<>2j>}7c1<_VfGb2TZ)e&kX**Z4J0an@;d0?JAelJwM;q+IO^(BIb0Pa08{;qq zhj6=_k@_X6zQBF8{iAu!uGn4eHG%%e?;bu4f1=-**cdXOG%xZLlt7WNf57a*d5&^! zL%<)Q67e*`G;KERN7`xHnm(`oZqsb@lf{D!UFPH(9@7dk(7!0F>8t%B>w3dnmRtin2^0;MJ- z6^jpFeR27wQl;qVebO9@!8TRg)FSVsc~t07Wc;#H3liG?^?es*SmHZ)Wzh`rm*VNr zX*>Mr%8298-Cp+1@S_x0siu`@d3Bj}k*;|c!auUGIj|Y94LuoKKix8p2!46`!!XK6 z&3e?)-qqd^M}&cK-6)mmnB{iJ7k{Mq}86r`7-7NZ#_vD+nNN8Rb; z47?;hOjO;DgO7%;WA4Q{S%mG8wW5Pfy6a@BbfUI$tbw05DI4_siFb^_P- z9necvNX=`fFQwG1$q(9C*gxPoo_+;eqf=!xi( z;I>D_8VN$9)4X}?p5l0}ze&EE^|9-V=P!ILjVxhg5H65)xV2(y0z%E><*wBwf1rcl z5b@AfDx~GJ*V|0JX%XiqH>+>DcEY>j={OeZDP8N~p|Ds>E#Wf#9V18mx=qLZJ*S{u zQ=4IM)qGX+%)If~#7WUWnc_mt!a(hwP4(IIdDSV$zVOo4sLPKU_Kvus@bc93Nn=}%k93ghM+_T~Q^_0*;a~rzFdnM-R8SmUtFC)N`0Ke zWIhoz6E-J$HzHDd8)wfaVSr7mya*MEJyd|(L=T&g01g;$kO_gIuv8Qd9G&9 z2F~ZAw_~==X?4D)fzVaD{nu8JTy=1f$P%gZg^})R^$$!{q6{FI5*Q94t~MBudpbzu zddP=h%r?9cr(iigOeFJlek3=1JM{9{SfhcVj!FmkCzWtyl>zSa!&8duPGQVziA|HM z)^UU~-b2;f+*@>|6zp>(z3oCEjD2VPO3p-45s4KjVQ>JoB43+jgU#>O@dW?;u-<(v>C zBot9|jaQDZ6cq#v!PXpajll1WIb5x6e>Oo9auooI*2a!+X%HW8X6iQdm|G8HA(6JHU~Zl)0sIs+6r)T zy12M-xNvcR?M*qK@bmL?K7Pvi^eH<~gWbW+#__EyyNv_=e>(Z2A4y{eLwj>uM{}?Z z&Ch<{z5_cs3e(a39O%z~|B=(!)%>rKY#jbOEntG2Kc8?u;dspXzcq6-H~E)lKcD=k z*{^y1XE>psoe8LzyBb@)mNd5pvLA#QEEI|E({?`BTMz zQ~7`F`RiN2pdvUzoPRD35u6q7^8zF!F(f%jaSd1Gy#-895-E7w52lCXG{MLkXnUcd z@341@%8qK&-=RKw}*9hycr~f-Gw^Jahy8ZMj-HAF(hQP z|NU3GtDpQgun8Lq7L6~`zx=wJiXHm+B98u6fnGTuv|1W{> z(m?Mb2M_#TBmIA=<|&<(>3=n2N0_hQ{6V8YTl4AD3j<|cvA(zTIyF|21IfHSAMkej z-omz@{w9(neOoHTEG9qTr&{h-in+TtjL#Ruk&uvdUpZMyfrY?xHSC*b(_cJsvU74~ zeAOo`CUVXOos9NHE%!__J=5@-rT@7C{A^LOwQ!g^-G43&zd9_lwztQ*VP}jE-rgd} zL3R0Yt9L>VsIoBUy4}#e!^lN?xn!&)i;_^v0a& z5KM$FbSuFBH&Yfc0PCQ-l*#nxbRNd~4z84&(<29EH!#bMlKpF&wiF;b7v`q`#HA@f za~w5G?WENh$(!GunA5bFoR?$Olt(T1E%?0fg;e6LHEf9%L)0k>GYcAw+6mqtTbKXsh$iDM?86ROL4b*Z&(IaL48HT-!8MHLgoJv>~wb!xx& zrR(dr^{ZWvX=k7h76OqA6%Ax8(!Jp++i&Pku`J#bzY_-JQaMAp=M)nVT?XBPQMyX~ zwiL#RgISxSFetu%a$~t`J1pks{VmJvuEgA=A&D0Eu*!5$hi||EDJxRussHZ%DI2%h z$tJg&_4W0bJdQCfG*8lDSTtK%Q^)z5z1aWmX6}YO8x;>gw$bqSH!sidf`2SdZLFup zt^i8b_Y`}w;dQHcx$=9hZ zO_a$@^SnizGg!x6{V#?LL8A+IJj9@^GFA*+56yk*4$XLbVBM{S_smQf56MiYq1X=v z?-^P|!f@oBACDH1WQ68U8`(*1yZid0Bk5(Xye{e}IfaGwN*fQf&Bt<`bZ3vVBBRbO zn~rCDtEaxZJnXgWLdY!o_*Ce6+Ifg7)z4GYv$HFP3m!bXJQ-8&L)4=|d>8i)MmNYE z#u~*Bb8${v^qU*(m%PqFKJPESk+OwF5h5_ zzLdi+-z{zI{m3c8x#Y>Eqwl_r?smQq^3=E&^T_A++{e#^qkjEeqewa3hd|5H?ME{+ zGf(z(Z%pcV^rd+mY)6|MfpWbO?niB?0mkPGF7bY-uxNZxY1F|2xQZThP@h*u>HKPJ zeb>?7BU?OQ%fL(OY}S&~a704sSw>)$&4To1ef6a#Ye6B{TiK(uf)p1S`Jme zyzBosF<4kttcGdF`FF90xi|3=6Qn-Dy4X5=_o%bFjir#u83SENCXO70{=Cxt_wM$VD z?h!rb=s<@1KSga3c6OvDa143icM9=QK@*ZboZzln-`)B=ZOs z%g(if&t^=i-LAGrjuu>&l0>{s!D-uJ(pnbd`EPAR7QtzI2>Dz^c=x;+yv+0Z2Z`H8 zY)6%jc9~MDz-9=v{i)^T9f#|(^&2=WdbZlKk#T(^-k?hPW=FB!ZtZ*TeEm{)`CEb{ zhr&k;`^P%q=C^58BBM1WTT=yNvCcD=PaQT*a|tAj;`N-dPsB+F`M0bD4MNiL&RVVK zc%^D&;L-yp=B7OGog&VD=4{N+6tErDiU{eI+r?4eYpGfO({c4Z9>=WocjkPv4y@+Q zw>RgmmzP_Cya+|PbN14f-1-LiL8H-T|MpQQ!P3l7c<$McIDC*m!qAxD_g!2HO6bHc z27Ga1MD@W!gHx=_qMJ?&!nsE1a-Epb>7`-q%=MjAj(C0d5Jb!PnnIe8oRTPlyRlib z=;bDt+QrP|(7w9z2FBUPs`B$ikG@Um+oVg&Wef>jQA&f}JMVB`z*3xlKJfeMDeKV#Iy=>*HN-Y@) z=uiP6{f8H)I}@mLJn4s5yJa&&b>379=XK%P2|PuIEB;i%4Raf;nuTa*hRDC2;CByk zNGKd_`6!zN-|OJtbG_Jz4?N2atjR*g09~ewqw6`(byRDOOfk_dr{}t_IZWy8CMPH6 z^)bZj8bPoOsx5Mw>o1{M^paqa2r5LCMuFPIe7=W#IREAY4;Flp3mUhTKvOAjCIR(L zu;-6&q@(r66ZUIie6#!Rs5^#g}0<5$F#mziEJAFaz5k-66o`(>?^_i7uIlXM!BRW90P>{9R8UyaR*g1l!g{ z!T^4JGFETjj=q(AB1zrt0c++Y)f*qgc&IKVm|p#{{)ec*Fr3$V zR`&MBC2?pCw#j%Bz?+}T7jW9+sdciYe}1rFG@9M>^i7+XMfYG z93Q&5=yNu+)qnmjx0yw^)!U2sZn7ncnxS>GmI27LMiiD5cF|zF@?70i=ZhaE-ZQ9a zdb!P4#=hbXKTIl`kM|K307kTR2%RXZ#ah-ZplSDyq?|Q<-u)SG3A#mpKb#KGYD9CX zGIzO5`l}o`-%p=_@2+IhB|DNx)VYyyPp1=0HP(Yd_n>ZTsk*b34bRydd;an&88sL*pI!F_JQ+4fWj28q8SHzH~f zo}PuysNgz>_RQw9Vlr=HJ;z{esr#DSY*oSL_p`9Gf{iw8MC08-1+dNT*q}ST9dsDe zYCnXSX_og?@gV^Sl+JMBkkOu@V^cqaA^ttwYa-lg1nIq!TG5SZikUz#G>mOUZYYoxakLDWATzGxtZYg zp^3?Orw3y`_aH`8)&BNa-kiY5%~&)1lo5LP8BfRzhYDkJJ|B%?p~hTn{qcRynFa*50b$?4Cf=S;~8ue{ZVz zwWZDYlA%wjnabM}XyhjR81Vh8MPh>PcdTVT=DxL@JJY2o*K2gPP7gQ01r*D(CB(4P ziATXZ|LHxeP&^Q-EqM-+gyX+1Up6HsX`T*`>K+=Z^;^Y>|aXYpnEOWTwUi13Kz*96m z`LCZ-7n&r+gTO79yg>L*;Sxk?A1s`fOKLAQwL4a(eIlpjg>&VPI~a|M|4a;D07^5G z+*EC`Z&bS*rpg}8s8~^UHPjuMh0=GG?Pa??dn!ONeptHXvV^)f_U&rDG}mL4sg>tJ zI^TETBr-z9caK*5C}Ivvt3e!gvYeTeS-wEU)po?k#&a|uK?=UV--;`+z6E}=ZHohL z1NP653EFpicuZxN7H zQ6IHie-LarI0qc#9L+EjM4`GJ6Qp<4$Jsi|Nat3!?0fEzA!u<|b`H^cYxx$Q72R#I zyfz|(%fuZ~y|8>7+6AW%e>RU+R~UQo!IQg7zrnEp(GT%BsOLqG#AvG;e=1)2>64=a zh=7}=O&U`qfV^&Ow=m18iqcVqSO?a0JV@L;vda#KwHhq%^DU8J%s2)%J}IULt*UY# zrXyo0RLTUcM{1uQ7(^Q2GVN<6HjjTQ8kBCdh7` zy}=9Ob;j!#dcUHJ3a_8?ZlLJ7qeckXp3z5r)N=>p}`xNUp%b)bcGNrk8C|&F>dYoh13{9{M zSVmCIp%Nt77YLzKo;01B+(yb!QPI4rv8pHAcl7hR1+F`vF3%vy4WqjSF!(vl@EjuI zl}lDoEz7Mr{Ef7BOwljXPZm5=!LXD|cwEXhYcpc#zI*wl7ps>VNNcLa61~2 zp+>LqfFB?}nZG#?Bu%UJ!$gpYdSAP8`AENfBYOY$ETNwnI&i&%=D#;XK_!b+dgk7~V1 zrZyh4Oeu9L9?Qx8Y(Dqi`3ugbkwUjMy%DCXQ?@!N+9VM9a`8De&MkkixgGMsfjpSn z0JpMxs-0&?D?N4K7czp+Wqu2(@oCWesFYo}@r~5r&OFT&iKM$H=$=Xxks_pd-`uM? zaZ7>wTNIa_a`$f7^R30IZQ4w6tW=rjsCY?PdXQ(6s-*1MALGVvf~ zQN*Lkh0cRK^P-c=T=Tj#x6Ri&%3H*CQtBhnZc1VA9C?ZTE!8qZ=QGvPQ0zzjUmzh< z20oqH8*cpN`l4F`p_vcA!QCG9c$b!9P}w^`s+MqprD~gdXyLz5OstL>&!~tab6@Totw(9iBgO`OficA|G_Q2D8u+M+RCj#(JpUp;kLHf z=>`1qxaQmM>B{U}u`lA7!p5MUyB28}c+7Q3ev600o-lIBVO9JF#g7;yj>#BgP2U!} zv8d!!buDr_8Uow#z&Zs@d#20c;K3ztxV1?XG-%^=%AmF&_(UL#3K8?#$CPI261e;r zgL7T>Tyqr5*01vv5-q@zjh2lT6BaW0`|5@G_@Z@SFK`|R0n$9rNRMXBuQ9~Ro5`IbBv207FD&YG2(l~b?2Bw9I#0I<1@ zVBY&&&5?R+$Bs?I2;r7)vmmifaa@M&%7a4l*N)uMW%|M!sV<8==K8rwJtjU}kXx!6 zW3P@^@zn;@o+{6Fp3Bgk?0e+dd3Pv?AwJZ}B{?aDM8$l-qe$w>S}Ol8@nPOnoo4&` zF5rC|Q?ux!x*D8zJE)Wb=mp4tt*LLe<@n&qJIQn#^I1G@q9Am zg;IHG13@xD?Xm4%^Z6pL6u?3lq{zHHaFYCLYO)v=$F6h#@TxLyv~tX!iL=Fnv^ln2%j>g^it7Q9+hIm%jm(>vbfe;ee#4c zMzv!B6os+C?JeDaw4@}CXVp^#qWxTc$yozD&x8txtg;O&K))SLYU(uahQ+~Wjgh$e zD0s}S0feNww%%_lT~7R6ywd$&+w$ct2*iKrX(sTVAS7-WN_Y~ejNNEhciw*L)QB63 z24+)+A#j8~J@}E|%wM+cHYivY*6dftSBXJD^{$@EV-H&}YU7|0KEqVwl(`*fE4itG8l(VG6vUO??q(mYF=I;kYH9W==O4p zdd?<)M8t*~R;0Z<6o3!9F_k8)e%fBSpXJkZs^<1O4Auyv6?Bm}-jqpHCCHm~BiZb~ z97Iczo=x6c88iq8ju1LZzEBftQSZ4Pxvf-6(`%+cp`$8wmSUXFd^=NiBD7a zd~k@F8m&3?e0Ey{WvQ8tdzL^FuS9jEW^LLdgO?RCOc}EwTMa2Gl!9Fn`uh6M)!EG< zr`T=-BQOyE@}Lwr7d&70Wg1)kwBUGWq9{m#AbWogh$MN#f-Je_iv~&4_urEfW)Q1e zT96O)luDrzaG7{o$cQ=ay*gpBQFO}k8g&S*mYg%SHej04Z}pa-kqRjtTeH+ABJ~|{ zYG;Vk5Nx-GdMMJL4vAXsV+EHfDt1YdQ!Qw277=5FQWj$635zc1}jNz3E}d zM^S~ta~`Plu$bOL7f2vJab7*H92Dp(sVEbO2-3F%jb!nCdZF#86b+;v5{5>vq7Jkf zPdgDp*0U#vYUg<-14(Bdg%87b$_nD*IP^?VH5Zi>(yrs=dU(HQGkYw4x?gA*5i1|nseLokvQ_cM6uuds58!)okl_eH@6=?QGyq`ACr%1 zG>~XqeNvOfT03IRn64%$PBLspcOUkFTM@Z<+(K7SS&slc87b%$ke!-YDJOq8QZ^c6 z1~2X!=H_V6c}AdBn_Z7s@NO?lQp>3$B8X7gXDS3z!8rPP$1Lv~&e~7qkM-3l>S?rW z1s57!xLABjpJusY^!cNU&JjKn@R7+MdFf6(Cz$AFs}s2hL~S{;Vr*&%jl~w{{aGSN z+7;s=CJ)y_Ai$TX_TiGAoas7ixY)Q0P zyyi&HqUBVn^_JPN&;@WzM!{j!7NeI!+AsB1>z-f%skYV6;++qY-jV*Mf3frq9LZGu z0y^x-gA6)7>p|caLBw+RU~9V_liEaviQ#CvXTAnQxfOnpY;=&x>4kfKdAPAmiT0aE zC!$kfp)DC@{?7!zVHN8&8j@GME6khE4fVcZaS`XI{cUtCth%pv;)UJ~+Q=i{^7E0067~D704sazO|cc4Xv7J8{T> z5d1EGb{v4ok2j>H-~q#a)<6+Rq6M&|LM^7l&l;q;p9Hgh!mpoA3O{k81^q-g{~p)V zAOp~^JQAxS-A{#Ck-mZtkr&jfv&#+TKT77cDQ9u20g|K5C@=0k7u&KOj*%DW5J$zo zs!#uoA|SQ{fbp`;mc3*@L47#}6%`elBCQhcERcn4Sbx&lcLz16&x03?=?>4#Oi7^3n(Lc8N}HRJwx z{Cl1EIDmSXIm7-5;{GWMjfx#WoX|+I97z0SjNdf;6Sn@W0tk$~kz@By)%|5u)^K1s zggTV)tN(i)B31x*&uHQf{|6NQ*GI8$ga9aRSIT1=`q!8LD2Y8s#}arL6aW3UQ}Is? z`xUEdD;f!xuDM zm4%NCYR1bt?I{2LggFOkJ60aM`{3VAOrydqHteU2^4l`|%LZSifRS|{nE&pi{?a^_ zz#-W`*>Ib8watR|=;-J}PR=1%>3gBHCz03J{-5Vwh5X%iH`p2lQM443W#=$o zO6Dl}90$yvA--fvxf0OsGUd708E_g@9)tR@U z9~_2+wSMM)05~r1(d&w@-ar7H?3^8dL7&72rg~-YlH-#jGn-rZ$Gqav731rcX0J`QHS{ zxtFgoi$S*!+XS0U7QfaYma-gfpP2CCxe)u!cmFXgVCQvGS+n7G^gGXU)I%kS`$QsV zjRgPJ>p$1wLnWFF@u06x$-hUJe@;e>W(IH$59jV>{Eln<=|N)D{XW^xf*ZpAQ0v1m zv5nsCsK`i;Sk@c{MM!T0y-ux7G`kMYL(x{6+|oDX#5##EjoDrOO(rqSzt+}WW(hyN zoqgKso$+W^&7v3D+V5^!=4-5ztrn}qCyRAi+2S~qx@U+SWwF@8{_Cv7r0xzIpcH8q zJ#x=-I^JYgQz@^eOL5lNN=Vc1!FX4wr5qndaV+KYB`o(1d6?SKWXNd)6O3$x>(9OF zr-DL87Mo*HU8q)Xe@{+XnLsn=c?lcyFlH%lUv5}(f2YJN2hSHDol>1v z@s}m~#HULt48jRF1Df^r#s#k%OYv+U>7N9wgBM?onuM0XJceoc`1q`Xj*gDrV`q0B zmHz>MMk$D);sfxEXpa(8>B0!oC-3cGbf?+!w+kvH4ei%Z>IbVI`WpSv4!#gJfSOFrKJg%(}{zHkN_b-u$(ma)|OZi)tSYD0y8eP&hUoBY#z!Lk&P1_}fpo6w)Q(cZW1yv|xggcr5RG z+BE$cBlM;MgsgOySmsD{M{e0zRx(0V?gZ(YN6I{z%?BIXDbPQuf+|3b_W>A`lck6} zIxa~ems4P~xl3`aivJ24j5T?!=FP?)#Wto(C@Cq0$UKIMko=)jn%C$6g=^C`_+Ter zojcmfkUZ7Yt>E6i6DQ}EgyU;x=iv5D>mj|YwHa_}HZn2k zZE`y{+MO)%2F0!YIno0$Hy&b=ZJrRa(o4+&0G6_fHp4#@zvHSKS!rcv^N1*Hye;Ljj0@+_}=LK0e zfS0_Fc8b>47hITnf6^JW^qic2&inyD8{l7gf7{!RnXEyyi!&yB;bay5i^QZNf?lXq zwxZL8coqj*d4q!QWH}MXrUYgP+nM6D_rB6^<-YslB-_O(q@W1?)#Gab^_F&Lb|}Ce zQeD12@%sd12I&ve0!MLOQSn!_9sE8>;ER+$mbI(B-HyW&c;6^c{HMEEWggD%@dGY9 zoVfR|DJv#`2w*nP&*#Q1!)mdK-w5>bKIgJDSDiLws5d$**|g73F=Z<0pClk<#Lmv@c;l|jw%HyasRve=&+!a_#CNf`Mv=zE&!UF3h!#MIv?@so1-N7 z$uMVlTa$(h+D{Z}8h;DD7nPiB=^f-Y;?cmMf3tLZ!vws0>P-_oQf01w40kn5 zd}jA9WRA5=(Cn_b%;ToBBlV}76Z-^>t};)d&Lw$L@y&DBLNIx6s!xCIu6wF9z*TI~ z6>%@|;>@xF$Os;YspQDtBNII^*2%M5`ygm#D&>eWBmy^z3?;V(a=aREQgNT7y-Wx! zopSoo66Ssh$ ze6y{=VUYh9e=kw+T*nQ*U%MWou2eH;F;&XWWvUcElI4Kv1aA5g4|p zCjLFbXTqjPJulo$MQV3z!;2#TlYnTyk}YX=`=AjPwLK;p4Z!k)2QF1|dYkNejrvSL z0+bozBO)Q-+%($Avaii)5P&@t?L-?}*3SbfC)aWOsnbFdgBQf&r z^ptxa(tWDJCnr|V@Cwy97Sn7yuzylsXUhN%Pa45o4DSCZI$~F{O~`b ztiok56B+48ucJ~V`T=9*v>@4;iIpwX*{!XIvT?)%NW+Vk ztDPc{_QbN^;^W)1IsT)Qv7v7BylQUcb7AuvW*e~0*P$pNBhCr{g#OTIA0Vq*fgEzR ziP7nE3pYq6+Ro1kukgdOZsp$aMLnzC#=HOM)thj;(0O-DFfsE*I|j4GWHF1of}&TI z*$C$mK}5QVs|+VP(Z=N|R48ScYzIh({BsX|_GHupOlcYkglEu0_&2#T+Ma&$^M z$CO1GfNkYptXn_YGUfYekm1Klka{*?aiSNjK|lsPY0bJae4+6it0x^96Tz?biqGiY z%U=Ou440pPlk<~XpIP?d-CRWif=5j5w5na&keAaAim4>lBMkzr0SC$X-cob%qmyGx zPPvN7i~up`aVsY!*jw~MMZ4C<8uf0a$v_mqCmy|SxhWPhWE@%ql5*=wmZgz~;r!ok z^q5NKkj9IK+Pk&rZW`wFV5$OCGm(*b^xWYm8%l7#T zme_d+FqCPYqmq!vK!;Zf>rS-yy)RGsdbrKwXKRGDeo~qOUbqhcoH$dN3XP(dnrYrU zcE|58Nx#<|YVY!hj?I5vFpOB(uh!TC^5k=8EaRuIYHdX zEd!i6(PnI~K6bwDf=w1Ly|k+z+}le&pL_aRIXFxs| z&F5_;lrI5ZOb);%-`jd~0?q61_ElzJ%KL~Xppf`f3SV$fg?}}eevi6eF^T)hlFN(! ztuMA;+W;usdTu=VEQdwld4^_D<=$z-dep~#EDQv_zKncbW_uvOLS1T^SeA9*5`Yd0 z!e>QqoN|<;y-p{zW^Q(ZLxZTPI1Imk!mi55sw-`63E~ED>SDMoM{84nqM*}C;QroF z6o3UKs1i`ub;d$9x4K;~R)U^mQ0cbO>WXDbVrKrrPQ}!)pjZG64~QTcSgwf6l!~v; z&l&m59l7@#8f=!#&g9MnuG%_*O<>aa8i<>E202n3O2A7kjEFrHfbOT)kF`N)vRGW; ztnvQFdpu8>8mLu$i8v#!KWNz9gV6x51*GFqL1D93NK!yncaImeU(f|zXsm_m>Mr@* zHVaRNFr_gIL;+;XL& zmv-+f2d;(}N-oD}Cv=G>Ht#I&8g_dTVE7Ynr8wk1y13lR#(4(ChOUor3HC?1iT2ls z2dX&mn1S%5&9oW#rUHa7)o!w!t!Go{qZhrD-4~|k!p+FuUALwo!s?L`@s2H<0&dpV z4;%u{#S@QISJYo>87!!BwB)DWAs5nknUt;;pHj3wB10AByw4f!?_a`LG7vsx=n_4f zmsVe+=fn|8NIyVrekEBat4C}#O0l|_dCF=^a??;|o$9EDdmJ;PPzhEZ$y@eVvd=2! zjfT(oY6aiunWE@3rPwyfF*qi#gJU=+pC_^-<12>ffN!xI!b}npd_PMHzGu?aJdrXW)Iw!zN`IW zLV@^Ke=?!&%HcLe2 zShB?~Q zW?E4NcJZcxrqfgBDnnRa#B;E%Ixf0duh$y*#5cl8Z&pkA$|w#-#7eo3QGjdX3u);F z>_>O1&0{d|S`19QZbDA#ZWyDFHY^*PH_Y>7xsD~PF+fSY!mohWIUbn1&CZ-L*1a5N zI(8}z2?`P=cWt=YEo+UWm7pqz?}|n<`MmKbb4d{E@#*Kh9(yR<9Cg{b!cF$f430M; zw((H=5ZG*46yYL_f{%B^0|>tiZm7(&a2V9gW1v(GrtmMxv8|04&tw2RR2Rnco$p}) z0^_nY*YovM`q*j8Ij%_1z*I&ADk7R7S0IX5N9Et?rbi{#$21@)$un;ArQKvaOzGfL zy(uE5K5waxK&%~nGce**9#!+WcK!Cp?E|yJeItHU*Pg=)pSz!p4 z6R%&@PNYbj!-qPVkghpb6R149ZT0}6yS25oTk1!2EmBU~8%QNwgGt4`L4+K{ypsO` zNSMWNA$!?w0wKRb{RqBba`FLN|G*&wfV1)B1?cmZ6iJ=4>sEmKCPc3ezXGx4KzD3! zg~bFb*Q))SNK97lds*i$AW&*Lfj(3gUCWXCeXatloZD_mZ9jCBk}C-=KC)!Z?Uj>j z6X4oH$1>;Zw zy1DTv;IZV_Jp95A3Rj*E(nsaK#(!)eg++%fsZcBSnKoz4;>OCp{rkz3I;b*2{s zbYqz2%b~D9tkX*}Wz%Hf+Yopb$gG0ldzz7wmtk-(=R70GfqWhXNz*NMUhZ3|$CwB;5Ad1A7dW z#GP1wOLn@Uy6uxLl=uO9Mi%9~x*L$w${tO8h{k{B}u#vz)K3Z1j58>WK6{}$K!!O(Rl9I7`CJvF&SQ{ zBB~;|+<9MH&^}8p8dWbg!GPy5{rH`kfq?TKiG$!?@XrkE=XsPsKiEA#w>z8tES{ek zBb%Ka7$5GuDhan>Wb4QFyd1mE55U*fdVxo52_ct3bt$d+fp(ikPs$BVZ>0v_Ln|YU z$VK+|_eT-bZr7ZQiD@W(`13}@m8A-F26H+sC^; z&r1->bqXCHuVOnRh4I{?O}2t}?jkBHfAL(A9 z@Zw6Ho<_z%mHe7e%gzXE89oA#E|!ZG7~zTrs!2@lS*);57KsHlKu;$!`3i7_l(R*z zplggyns0lvhdrcgc?Yr~*c|Q3DZ3tuq}eP9P0C622yVRb?K}uuyzZ#dplDh333oy4 zLESOOvBphfseGXKgoY--#NaEa8f07jf9$}p(w`=0Ci8dCTUPNq; zowry$5C=ISz?(Yn?ak-3(^D+-)sYTlG2POC=@(i@OfSZI(`u&9`T#zCDUf>pVc;k1 zEuEfR|EEfCVU-@0LafX^nxTCl6Fdi`okpIkKdc8ef<{=0pytl}?KR&7m(Q~R!nZZ6 zdZ~!|+SwpCHLKt`frc=L?Ki-c&1f@YDfhl4hvX-9YEvx%H=A_**YG54fm!%w-)GW9 zh&FTV*i)UwN|u8wO6B_-y_b34zX884CV+gE2SXuN@F{$sWrE(MP+H~8$VhMs;dijU&HOCGwOWlDJcwZR7n3 z+~MbBE@ZLH1xvV#nwTbswaOQ+M82U8dow>iW*Ig!QEz~Iv&oJeR^n)>Y^FW&RdFIE zA3=wAPA4bXW8|8dZV_c--X}Dgm@lmJb8T)zQY}_7oXl=I zxQKVN>7{w0u$sfusBa~E;IUqm994BBOkyLU&D`6;39~g_OyyfaPLG#Cot2r~uZq{W zyC`4xuS+Vi^4@b+-}UF=ohB+8S$m{;0TbV}iAxC|6cG>H+IA2R2~EFM zK@ydwqBq30L+2F>P2(dvGb*$da`ghQ#XEUN^NWzgG;e|;xQIC;Y0nu)3}ab$M113l zeQR#$n$zYy$D7j9*9N4+-%HRY6)Y0)pEdT*e{enO1yGMbz*5%Iw>W`dvN6tk2TA=E zC-PCeC`)z7m!0ZCV@&@&lb!sEcT>St8DZb|P3^oy6IDxAzqPhti%GQ1+};~T8q-~U zVH3;eQDIwB++6yd&4P8x_iOpSaY67kL;TosClmIHT$iWLnum#9RBIFOCiWKx80y}N zDN@_nc}S|`l*n8&-rHN{;r0?JjB~RVpWRYrp=^owB7VHTmcoF}v0hQ)AMK?D{32}M zS^_?9K1gHk^)6=;-UglvDppD5?J5%g@_*UO0&p$#Oa>9z7rHxkY#7fiW#O7gDfieo0zcCYDH$KCO8Su@~` zCV!*bNbvQ6zw&$(Gw>a6E`0x$%lZ(-sB38OkbjS(gS(N3Jo&Yyfas&lAmB{AK}}-z zmT0|+l>Uo7a5Y9s*ZZ34Njd1+>8?$^doLng?{C2%>{4pwvbQW$G@bN%ZmcDeSXgLu z#_bxpkl#gFhrQ*xZ!}*C#(n5B0Y5&?`&ubm{2l;(XA4;yNeyHaW-0;)mqLzQQ+qszGFn+L$ zBr@<`at{8Z#iTP+nep6w>MFj6>vs<+;ulG(t(j7S7ia*$b>E3Yt?*^(HQC%N%WwRQ zT4!n88ID492Cnh-_y^+uv3(pBGarRuoKtbl1GTY;jFB=|w-|dI_#I{jJ z=HZOIDXhR+uwteyMXQx=dhyf13aFHQ;jA5rlF#a!av;%?uFTF&cbx;hb)@#ic&NPE z@0Qp>($h+*AtM0ZC}1GUVqYG+$D`mF+ANw`HQnZ zaE0jT$PGHHH*FKMq)RU`4P?i3NN~4@Fl;MVCAFipXGl=(4UC~sF|>7WBw4@Xs!f0K zi9V96mS_|N80K}vU%x#M^BD(%`sbVk;y&kM;~MgWd({35J$Wypv$`8A-8K?*zKL-^ zu34uAR)e^30=5e-JEnV@dY@roUjZg&$)Ln_K8+!#3CyDCZ@M;4pL5lEtW6JRB9oWc zB1k=wy6E(2=ULlF^$EU&GcZiYr}!U-nWHPogtSGqf{pc~je^?`2V^s!PRM^@Sv8vm zbm2#<_+o%bd}FXal12YIaOS7xKJ9(GOGASQb3Zp*<%mN1jBWNGAUcspKHCDyR7Y!%e5mI`XF^NUWgvaMcJlew zP;zN$9jFMoV`@fO=)!f|>!eGCl>K>hItmMo_%&UHe1<;YLbMLK*BHYae0?ZD&o>9Z z7VDecB}?!7&$*8EE(Dw|i^fm4Z9ns_lwE7+O28=^Ub!)$kdm3EpKJNffZJ#D4CCYVlR)y>P$@F9QFjp2 zYj%^MNLCxv_gZA7u3RbM#e#IN*`Ee9gwhM8hGos$8_f&wpxyDZHE8);XO@6xaFJB+ zq!UHpiLa|DqjS8Id7CSe5y46yF0yXW-lsgMzTVa2Wqb7*#&X+Rh9e#72p&gqc0mM? z+riNL)y2xX{&MsO2(@UEx0Mv8)k6|1pZxa<#a-~UEfmbm%sr|jk0kw5>N@ypJ}jkp zCsRHB?~-C2*Y2yzd)w+F|4CC^;j z^D?eiA|KZi`Cp5Uou@2X7@vGUMSG<5z%p7uqnig_dcPXoz;3u>brs%H2MNYT#;Ni- zk}JUm`rJWD9nIAJtV3}U%~!<|LPfsYXRB?F@etVm)}JUFBnNp5`Z^t>A$eTUO?IO$ zBdTGMa5}l$bLiF@s0fzMh~nWO);D$uLycLi41e5&vtw56;Cl%1v0w$8fpEaGieM>P zOiWCD%ZkTLFvQ`!INBBQoj7xsH+(VYlK385(ENsRq<(NH(XAkRvZ$!&P3Cd>!x?P+ zkqPh=>h5nzgA$8KZEkK3M^1jMI{SEf5&z?p&DOVXcl9w~bFqpxujsXHRk+6zuHpK&en(+6@)|35|) zCIh)yAQ%ozQ8V52j|jLLP4es`@r6!ZFlWl|&z}5S4}0q)ff%w)4}J*gXDkV?^^+gZ zUQtwlegjT?}-qWo5K^4L4(TK4TNJJ-l)?~^VlgF3 zxj!>ukM}R-3=akk2o5IaipVW^iO=eDMN|#zA6Z@x9-mi#hJi0N)s`ZYeUWh}ZoRJ$ zqu3a*rHE~r4ZpzK#|{e;q&;iRaSRyNpzONHwi>Er=K}a zIr|BHu+f&BoEa1P*#!egm9IflGseI}jBk;wt7Q&cjt>3B;^ida7fxrjLLNfDeod`< z;Pr;8RN#aJNFxwh4BI}>$#)Q`r# zh>qv@32cZF$fSL2p~ZB1f4`?OVIf}zGr?E=27)t>c#DHPRwLuN-x%bXqrC%WdIqum z7rV)Zbzb}CTlNQe9Bmr3=6V2T!a_DVQr(Uv(y2$-KsIxBQ8w>J0L&Y!D-l7gA;kd~g3Rwv8&c?InP8J0B@pVZE-;1p_LQGl6{-3$Kp z$ZK$vU430gc_@Fb*_8x zLDbX+FlH5?XGr(-zvDu2V$WbI0GS6YFBzWXZcEnXziss#^eyfZ@6^zJP9Qu)Kqj0v z6eLhHg3N4T`x{(8oX}@D@zKA-2#%Osg}`h7kvkOxy@H32^|>?r0HiCg&;~5Q@-i_J z@ERs{-PBI2JExZpn#Wy-0_A`uG{{e5$xp9opy-My)IdidQ@Sc%JLW?`6n`G=&x)55ilnH3NFxxH>WBB4FS)nYONwCr zeKGG|!G#7*=W+wE1JU$B{XhF<9FZ$@g*-s^j@L@{eaXL%2q9GfJT41)@n4Tn0nT$P zI~)5S3=AF(@VKkPu>O2U2YB|X2F7`)*sTA><20Zzhj58q8fc3_l4s%zx{`=c$4u=4Zcj zpPuG-v>XB~7isVvC)VHLm%;$RmzT+;d$#%G$w;myKkNW zTxT9H2l8skH}b;YmmAOnCX(LWF}FVR>ZyOXfJpnuZh+x_vc5A{5CecT5B>+3lhgTi z^*_Lz!lTpB`M(S>kO)MW9W7Y#Ps`!};r1Q}0{RUWlYu@&yz2m=iJ}^>5wGMH$`^b@An!}dAYnC-jesY~`N`voGM0a< zbkn8?h)|S+bxpo6G?{f8q*Br_7l2M<3=v)t7NH(;r=m&R8<}JYZg`ridECr(;I5$* z=05dChy;)l(|cV6r{sJE;FHO21bJ~EJ@qbNpvI+yT83QsXT6udE0YD6o;~Hh`A09n zpFOVlSPyswaDVu__HZ7)LAEkH4wSBf1}(cQ-CF=M)e{zMGqW}ZC z$x?U#^2|>UnbCO7tw7D#*w~bH;P1MDDv^EMu4gDWRI}Hh3 zIXn@I_t1R?prz4~juH*W0SCMa#sVuSi}{DO_P`#tedBv>h}fkToVMX*(n{(TRZllN zw10H}{nIA+p_>E=z>ZWj{cSR#K4@HbPSD)68SNjlAj8zDJ2Le8N|Yu`WGY^kWr$Rk z#K;Vc$eM#onExOkigbw5qeuHspU*`jVwUO$sbGC9E7mHxgtZ{oSpxA$8|^d%9*7*{ zeyR$LI_ zN(oz%ca3wa7$8JHMxAre7SyfV$pVEERLWUoD*PvoyVET4my8WWpcBlv`)6l?Q@S&0 z4p0R?-)}p0>+FF+X@Hq`4|?x6pUau&y>9@$B+6;e$`(2tlzYEU}vc%+}EkdS%^m@1itLVJ8p=#4ccg$U8{>GW9aqu z^{u-X53XU?H!>~lW)YqgHv)|w}>5!iKJhNQg(ptQJTAk|Ngig_^h;DgEvoZGmWOzrQW} z^K*#YGtiWjEWe0jDC*yP`{W%x)cyB`NH6LKpcYxN(QgQ#ig^3ZgvnLSsQo} zbnKN_RV=ogc0TVuV&R5!r4#zjdgj$FW=m^pxe|r(Q@d-Dj4LZ+FzP9cAADGH3esb8 zaU*xUO4%IW*`sh>OdKUVnQR6Hbkt~65+e;z6}pNn2ajA#6AO&Z+Aqs2h7}#5(LzrW!#9UlHGX^+VaNEY08)t=o8u@FK`H)1P#{ z&mn`dCJYPASnP?$Smi=GKU)RsUDe_IUSsy1__)Vz=b#2?fL|!9oSF|q9JKavj|Ed+ z@j@OG8+tRTh6Orf_BHhsn}ijDY$h(A+>z!igYnU6J8qw0C(>3qj7~m%)B8I@Dg0p zTT9Pg#1eoqldz7d>?asI4hv4CJP|LA0+6w2GAoDcKYO)G@X`{7z7M?I%G_v#!GBnb zJ`6>A6jDH11Q@3VGC%|})2Qpmd@4Wy+_@ZmeM$0`c)6sU>8Q^!m&K{iV7%Wxf3+}O(}kwk4q@ck{A9F)HENb||IX4P z|JK7C$Qab`Srf{62h&gc^#u{@zy7^yZ6j>kOt} zZwYw~+U=*o5C~+hzpnCkSsBzEZ>XCod1xRRCxI}6oIo9;@S2f_sMEn)hAG{}K%lGC zPBc3IK^_X$J0xhfmU4AQH1}+L>db=^$q0chVnhr4fdPmW%X^l+bRjQO1owsWShL)) z5dVSQ)ZEwrzLpSL*k^eqo%FD#DD4Lb)hEgRCG<(!`+1axKx4~T()vCLAvau`%? zqZRbcEV@rjJ29kFLtmSeGpwy|c*5#{opdTT)=fOx(>gn3u-ihzSBfhO2J4RJA>s2}2@ry@D!;%rBdHV>fBX1Uo5}N}Ly7l#wE<0cKvSQdVDgV5HPF#5>(nRK`=ACkg?1lGIA?Hc` zx$U{)x$^V491vGXHOkj0PV&+v1l+{=;_al~plL;GHWdO^ZwNVBjV>Es$*o#lPQF$c zBAp(&$q`Ntg{ubWl(q4=OlnaXqgai&$+k}&ugy!nfBYJvg{HE%H~AL*cBf zE*l^@pGP}V=3pJ>DOXf)Ro5{y!#%fa_$Il`|o|K8E@{DLVhwX&E9U^e(bXc*&TQ}-Lcze-% zWWSv-t)C-`Aj|Shfrj-hxm_be0)*?PKnK2(q~g=N-0s41@A(ebJy(bu3Zc_l;4mnQ zM=r6k@ff!m?9@naC4~D%ixoS*C03`)%{Tf7IC{9|MN)jw+l!8?aR91lBv-CNebq zCwJV3vpyM)(wEq9Y!-T+gYICzx~b{Nu^xim>chV^M84j6j+F|cAqAZS0JL@Np#1%u zA#t4Wbf7g*hyE0Q5ZTHnEi_z4LM#=$nV5;GtLYR?gmBc+mX1A5btLN8)}R#f2N1=t zW5rHy837>9inmyPJENhBGe|YZ2@s}Z;Xd~xzv{_tK&GrwZ2QeCX@Sg_x~USbj>ti* zr?`&T;SE$dMISy=p41`#gKn7}Wp32(7{lTZF{FGQ>8s$a{iL^>Mf4VOvrFJKUYvLR zn-*F(eq@%?%4Z0>S6``?={&72$h$;f3mTYsHacyXv?TRgG&&9QF789Vy^g5kY9~ze z#Q7XEKc|?fDR)Ku3>L`>$Gy4Zg{SbjL-+GDbj6aKhgjXt8_uB88Qnqlp0&RX96TV} zgT12oygXJTdmW3Zxjsb~bg9wY!z8hYAQ7=Bj$63bmzhHgxW?g)TLOVK8Qpkk?7reo?UN7Xv1 z28Zfa0>ej02-u`jcF?Vtb#VfY69`0fi|O!Z1~h~X_;?f%jp|9=hfO5`n%HyD8Pu;a ztjr9iqe;4{%2_RlIC=!!Y=jPd*~437?XA7o#7>rS3VAcxSr(HAS8%{}%!LaEw>vX;C zv&eb4XHos`VZzWqSEloN>|IGoN&5xC@KVy!QKIlg8`Zw;-owq5wJuOLkCN%K|9XR)OqY=Nn9DYrjRR#DzPl`Zh!smR$0y1+86=L`+zWU2cieIt z4$a*Ac2{+=(87*`8O8o(uEYgY^SJA9-OMq(t2ngxl78cyfae;+!xNde;?UiVD}twz zj0s`0t@9)L*1i;#XZ`7=-_mxY3mc)$+%1pDT8MzC=!1$jfAx)u{e}WhkNP*wi_VQC zS2C{Ee*#}KCoC@=o3TXqmfp+*VkOh*TbjTgKTHNr!Lfzl@ykV6L1cmh+^B~7}@N(`T{7Z<;WtJq!%zY2$e$+M(U zIPpTXW!g_E_!1`QX{~0vD7Sc#S@-LMRU5C0!z$cr9~?}tTUwt$!#>3;d@F&N z9$R*{1FJCvYAZpaRhTYYqb#upF1ZB-UYJf(`VWRos7pY(YYf29F0rhMuO90hpiOk>*${+%Xf)s z2)RM`bJX5Mw(?gmYiMvxX{^$R941!P)Yr++=sg(XAk|u6)dCojNVHkHlJa=$#wvK+ zI$~Y@+Nxe|Pk6?94;EJCy(}7438|=L2*snhC`;GVE5ge=GF|9yRP4r>wu%?H&t@LR zW@!mcl7+T+bX-;2s+#nweeoTmj_?C1q21UeGDcF~mfWYa`GEr?JNQ7u;Yr&1DteYc zM}Y;#;!I*l230|w>noy1=Xy!d30kgH6DyV3i`(|k4&w1GLDQ-{aHC>xZ1HfVe~aS$ z0LbD)^$Yd2sw{`i1wh2=*azdihmXwd-(HYA9C;Cod$1p225>C>VX14V!+6!fA>M!O^lB#F`T?0V!zGw3i>y*scOe^Yy9 z%yige5;Ve*L_-TEtu(764(_1$d$8@sZ)>t5y3RXXGPwKEd!|^gS#db?a4{D5*)@7% zXNo@4eP3Xv5noIT7L1RzeQY%~HHFN-m$~RiqYl1Q4sraX<#Y5{c3!zV(zw9E{rOFePQtx>RK))bRNNvz2=4s~d;& zgXR3BLs*jFGinhYh7Cox6rvjxJxeie{GdRWA#RmBXDRRlWZJ}krbuu`!WE*5{9bue zRtdBR*J%@UBFGLhqo`&tUmkA?a^xn#^>O}YIEWQvZ=hcBWIkH$$`z&Zy_lx{{^)4X z5Hkt^%?|^39*D7IZTFU`tAwfN(RjY{KX$g&tF89f9sTt38qu(g^JLyG5qC)R2(2Sx zT5J5+;y@tU5611!gJg4JmHspq)+vB#Cs~%50gwMcV|^xX8n=t6HQ8fh110{0h3se z6SgoUzNCaYnoqywt?)25$>9qaU3r2}LwS%Kjuo%5gSa{i$vueAkrl3R-kaYzo&sNhxg)51fjxh%fG+2_4)^UQF zMDp210e_C|gUv&7$Ccn%bk+LDEw$4`CKWuT;|wM@_^yCD6?{hLk6&7}ZoOKzaoL?V z1zO;|jrj6+^@DNhDk1)z_%$h&wjFl$<(ZMzVflgqDFxh-z13LUjk*4k!R-TXq*R&1 z*?D=1p&D#IG+b57I||t&%}Y#!2WsP}LCojj&>5Nr2ClL_?PF)q5@44dJ<-Kkyj@v| z@ZXZNxX7)h0!`=h_!;>eKldV~wvyqJx@iL3vEF!(xqBb?#Qgt>J680d%lGpP=9V806FO2* zX1=wAwCJK6xypXHT~d$R$xSCE;-tNu$mHx?gGSH4RO#knh3(nf!(O_)DR7ZvP4a{8 zH&h|2J8|D$7r4u%5%-#)dmVIMU97Vr)A=5CX@o@-G+?ppDtFRQ|HMk-$G7wDro+a2 ztWJB|m3piAf`S5$*Ezy@dq!T{bRVo>+?6bk?}H$ud%l zO)YV;VwZdOe!AmKYb++W&4NLVjsf<0I5{kkOON{5=g8B5MJjdwydhV}C7DO?$S=i6 zol)!-oiIIRBsp&Zvp!q1JE!D+7&Pq*WNBxH4HN(J_Bg;+8R{@Sz4)cHpJVT|8ZM%v=M*q++!G+FrCUq`%GzMk$v^l+8U zq#J*sY_t4QKemuJivvE$2=Z>U6kEO)eu7CqC?7g;>1LVq^K!N_X_zBWR%*!C#P+GT zMa7_XFA*r~UP#dp&H<(}KAdihnG(lj)Q2jdrCcgMkQ~goAJ_o=EKmfo%(lwtH2q_V zhfb?OHtjk0$oIOGI$S|tF-!VVgl-Hmpk{UTPXq|wyYM5-_?>3njYcr%$&FK?s2>W{H+s^krc$TOad>n3Ec^AIrRc>y2c-&_vkbV3 z%I!uhlr?e4o8H1LcfV}Z6I+h(ZOr&Xs22biC;8Gx|D#?2z}?x=2Y*31_LX~?g9BoW zsrxx-DvD9hnwTw@qW4Bfu;fKR`ximF8HzuDITz3{<H-wB;PhZM?DQD* zSH{wzgnE(tzrtlRcBGnHs}(@E7YKyk`02J9t8K(woggB%UK}7Q-_JaZVI=tL4k!R zQfE{sVa`=pl(fgSFgnpNqll`%6tr3VAi(Od2*Qer$RE;l#_3;yd>}X`hi*#E=5F1$ z)LKn|L5o5<2Y{O4{uT~|z-&wwJqi423-ZcvFg`4gW2M6V@ zT(fE{d5%*C9V7-m^{OSzPZ0-3(@qg^^sn>rud5WWF2Abq3?olUo(ejQQWJ>5RJc{7 zxwED}jqcC8aj$T40I4ciGJ`}7G2=Q!qYKW9gpWGPdPW%L$9k}6Hxcn|c(S69jAyCR zM{{!cF0cs*Q(fb#<57!akM&lF6+$Ygc_SytC>-(0)i%3Vt&woe(?K=yIcUGnaKi=8 zi_x^%f(aRX;m%m^=~Hp$7vvybnli& zAbNj)|8UZ4XPk_R;Rzk>W@9+u-3MxqfTQ3E0&yV2qSqtHo|K|tZ^>~znV*rVk+@+l z@8^7BOsn@sy5r@xMN#AdL5HUj!y^G7h@P`-NCYPX9Lb(}AcC)HI~1?wDx;+NlQwIamoC~lk=OZ9;0mFB&5Uv?iv`- zpZGH?RhC^QN(vYF4wNQ+^j!2vu4NsKHkii4sfQ4JgJ3fY8m0ib(7oe!} z(!MvJNE0;bou=`QiHT|Ily4t5LTsx)50{5^6tFU5soq*1tv-rZ$&UYLyy_W7`&D`3 z6O zk|$iw()jprcnXAiiYzeEKtw^TLY85@)}WP4|0eVfe2lZbfI^A2ssf1k3_EO*>?-gQe~#manf-rK<68dSVhEMyDBWx$Wf z-og%2H!bibAn57&M46dgUyPa1nnyCiR64pHR&4N4OKt;vbyJ+c@=JPw$CE-~E!GSP zCG7Um5G}JBNtHC1x@u`PFRWG~(7C{?seAkS=a45>EfJ~0al-H~E%k!@I>e6LVNlOY z@1`Dj;hEA94@AQ5#F^q|A}g{8h50W&cBM zr9dXHOfb`KO{uj0?XT`;_Kwn{! zT8^uJ;D%V+iHVc-nLi!>tbX=OLPIAmznfYUK|;lUB112@!qKA%a)@`u>tqRC^)if` zm5w%cW>Hcua5(5(_xwJ>AuZcl8)tdE9o@E-_}6lpr$a}onr_uzLa(Joqo~;gja8G- z9^l6M_wFxFyA1H1nc&!Z4`BM?t6URVwyMREzjB|oW};4`M&qNWEgxtbzggq(p;C~C z@vPW7)<3p!U9A_8VLhB*&0y2}Jq7f*61&P*PF`Gef`JUD!%FH(Vz zJG{k`qG{j5GxF}NF&yPxRy%7;A1jDJO9}JyQ*>&7XTbK1ti0~Z1=QuxdELcj1;Sye zFRlW0FC*eVd`QE;0kkDohz!c!RL^4ayi@lVb)21@)Rjg_nQem`U^Vy;kJ3Ocy-pH8 z-VHpybR0;@5o3DIMVrwbka(j~YF0zw5ec|e#SLC-0Mc4YO%fItjk^ZCfRXXxd4Wg# zGcFKbDXssNQMBh=SgCL>9sK{IwT{Qo&cOd@$q-ePHi{`J5j`L!5;3^%{|(x0&tc=qt24Z3Iz@wmgPq zxf9be` zTDKcCW8L^qOq1WZ0)!V?*72>tJ#Rzi8VK;R)HI{*C#y8XJq{pK!vz{`jC2A?j$zq} z>U+fUe~q$zS#NskRlEE*x>{EO!tH=b!8hDLlcn09JiH1HEAsA84~a8>Zm#=MPIv{~ z+Pd6&Y;4j}`vU-9mN&nQ3ITF9@z*ENV|fdyO_ra@)M|e(A&AxxX(K=N-t^&6t%cEwt?OtE2euBL?Ei8NuMPr9!Fg^0{p3Iz*MR zlcPL?egVobq7u=+p<0~VrdfBgh2MaD4$5`u-Ok;XW=dr-uGiAABvZ2T|CialRTPKf zou}K*1ffsHrMdd~+nPviXwKRA@$n;VvA|ogzaD}A7l43h12WfGj`PlS1m$l}H2M5oHla@? z2tX}p4)Ou7?pn{L>Uu^K`_~e_&7wxHfq?-{wfWnB>>a8EFuYA#9ehU&OYa=C*I4=L z!ML(I!9&pu5ul+6XC6kgqj6kBYG6GJS7;RSD>YhbqIi7p%R6}}fk`Q+<645tqm7xv z<=8#Dt=Pk&l)3GOfImnl&Kztg^g}4{)Wb*KA4*f-y}#8Uf0$x4zpwOlk$(J3rV&o? zr9XE2n^snhvo*@k*!bCke`tVqQkaZJZ9-xj@vB@eZ`O^@H`vkVc zx^S)*Fp{`tcnoVzeKaBV9_l*|X9kDr0L@VElUk<^I0{(>jkjo`${fX2MAse89t|WE z;A<*;Iv)6e<#nYgZdkslmrwH2z4MyLl{Az`fUyZ9kGyN~+9SZ@biCYDDqz4pQ~H@@8VS+p z*^1B{c~!4DHGcLu=I#z-CdzetnM=kz~PfCdqVl zCf2jPm-uPWBSWe)P?Rz}PfjGV<{J3JhuY){m&vuvFwD8CuB6w!LnP@=ZSx+3d&3B& z%&83ctvsov7MjVH<#$^?!{5()iHcn(f$k+4MKU4A^Tu@5H_hcr`Q}hK+U^ermn7VM zt~MEy6#C;Sp;#|1muLY9r{PCfL`=BmQ%!3^MqBa+i#H}UyNhS5KSj^J{{AKk-I#WD zO{Bw-BX=O;mZpS)WtZS^X%W){H$x#YJ~qesn8rx!=_ZB#vm%oa0+InPL+<}fLv}+J zBjn~R-JjzZcR?T)V%wXn9=vE+kZBOm(O!OS9F+%|BP5e)Qi6-Cbfj>Q!EvI(bT^hV z!7e{E^BgDapsTPR_C6#?92P+x0L_zUZp$e7%Weg`<<>Z1pg`jSEQE{8}dG zr*VgKg~sB;3|9%B?2Fj-tq6Y^##&v-A3hXWScZml&I%=j)CLasYY9cv?bW#~r^b$@ zexyS(ORL2ORU$cW2qpZ8F0b>%s4hR>g=NJ*xj-lua9O*j@}K|=sa*BnNzYa5Oy4u^ z>d2!Ex00m=E^Y7F?X7NqT8FE2a$%=D+dtR|a91D262vJ@civkF)NLt}WsI6`wid9- z^``ZAaqza3(+2GXy&0W_=nq;|lrKU$xm~j0mOqfhLbq+-pbtoM&$eKT|cnN3-Y8rqXb1$p*ml&vDV8jlDw{0BbXd z&p38K9+S||3qYsOFwnbFBG1NTjz%$nWpATdY5&DCha$ole5FMD-?UdLG{CNv-qHV% zNdK`&mN>A%3)ZPrf3b?8N&v2HcU2?KKgwuUh1yz$hs_S)i|(q` z=C9gsaTD6qENeE@q-cJVNvm#X_je~Mv3|Q5oETuYf-QUZKpu=OJyrq>W&))>Ij>PJ5xP7`oiQSq~O?7q$!(E zbJx5yIhoyY9_bLz*>cpy!=`kBmkg2evHcez7j~n;BHn(+19C(H=fie+PZ@vivMtl% z{jOm8>hSVa4;I^|!?DtCA$QD*b;;Ih_5m}etzDD-ilyBOCvDq<5nT6&3C_HFCN`Z5 zxqSR3>&YHB9tTjC6qw%Z-m3n>r_|-NDx^ljWn*=99Teg9JZGKFYZMty(FH4v^fs2SO1<9h{$7bWz?f&SXm!(oO@ z``)Y$;a6Px23wzd4{m&o;!AU3n?88x#f0p#z98wzuFT*rQpHO9KEA$obOaD;Uc z6_>&Jz}4_mo-dk7+1h;lXW#zePuwPWrUQSX6SM&}N4p^!hW@D(H}kEGY$s<2 zWso^|3TL28jh)WCJmuDMdQXY4CHRds3-?$TFD`%CsZEZ-jj`wu9QM>cEK{E!2zyEM z84kl?V?nra(0Valb9N(r_`S?kj~9)0nzq&S1B40Zcl+f_TiL8twh{^sK$}a`Ufu$C z0^Rh-GuBx>fvUs{H03DlMyhBJ^Bk!RU6=)b?oa{9WbB|un|&5}|r zZgU`MyE2_O>|O1DG1H;`5QRDEo0!n!(*5;CjDi6t3$EJM)I9oX2mXVNwS&g}VO-Sh z(!=0IIX5s})5krcfOeAOtB`&J=lUIL!|p-r8FWBf;H}&#6i=27 z5ih=W0i&XDzS#6z0e@_U=q1cgl~rY!gG79r@oBB+8eUO!-9F4BuTEw4_r#-7++B-Y z8z}S>%+C-|34T*hu!etmy7u6#J`PmN?8;2)D&pmIW7u!dQZ$~j>6E3=#X|wxL+Zh6 z2WyLm@0J8z%*sfd9}8-3c9Hwj8`b%);;JchsUI{&?;;T9U>kPuUpg4C8~kdGRO&B$ zUslC*!sKmTNiZw3bIAJpoPY&{>YNsz?IwEvjs zQEm2dYQ%EyA@x=3Mf;(RD(gev-JpkvZi!k!OozR7dCAH0l&xG=^WCZ|EekOVOIyMI ziIYmfuGLX~oRpcpg?0kAI6+v$PQyl2_Bu<}kp>fL_BsamJn=rmVAG@|L+8 z9sW{@gW=j8tYjiC$B8~H+yFkQ$e+C!j@ z$j))AgStY#Yq8>CY1ew6;%cydV8=$qlO|VzQq#tPjH-3BkNSVQ4&#b}_-tQ)gb!N> zqv^slu6senMt^+|IyPbmQ8KsvlXdcXZ?9m)s250|sL>$0`VN!%Mi!M0D(vxTX=zVL zwMN{9cU9F16}lGhRYd!xFz*m$i~eDj2iO2{RJs|k1B4_fl9b?GSTk)W;CuDnKWkC` z(4V)6?ncRGJ{GR4T7{YFPULNUrNSNm!|W%t%G?E>DZ$B!lM~-!Vi~(sW~%&Bh$t^$ zEcZMW{OH4x*Fs&f*O{1uXKM8A!wY^)j^QJ*da?vSWguI;mz55<8leKX-e`Ap&wIu8 zuLLh)4wiAPZEP%roAtiBwL6cyXym9Pz_F5*&>~=_l=QI$FzbufbVfZn@unFT^12G; zBj2ma(N7sOKM@N0>GI8CE3Nh94uD@8{7@}_j*P6s*4NG~Kk_7j-19KpF}YE)DDNS_ zRJ@d^Y5lx5T8R1u-{Hm!HTlAf!%qqIYvR4ubFU-8Y5JLVeXZVAm+n%(x!83xWzbU0 zBUpO?#IR{C{C-%1zq3`)rtBI(X2=CJ9>rX&)hNXa6?3s{cJ{X0f|-P}LmlJnUh~|W z2p4nkfett#(UWz0N+=|-GyPoSglq5q+^ zc;SpMiC88l9m++=5vN!bWg8=O?w~yU394D18q3z`L+tN7%X2|5dvz}Hhj3yzm zS~`-qc(Iddf04rVa+UwVq*r`_$)SF7gHqPlKUjr0C@E~BAW8>n97}TL)6KrijGT*t z!&?awsMx{!FESkaOAsL{tMiRsTL^m^w1`L}pFQc-cNbU`E@i&HZ6>ng(`%EdKwQ2S zU4a>U_?f?^KPV+Rnc8tDjRe!hyf)SgJLsH1)Z^*)@KP$L^@?FXq%aSXy}gos%y8|) z68?SbttlLrun8O?qZ)a!O&&){+sFM{W-@=699SIifYbykEnv3h3S*W<=l7*-CP$W1 z)@$RYAFnkEKSLZvm2=jaOX zy-f?9%baIHyK?)NM}y!y;2w7MmJf(zblnR(sy%gM7<)tRCMezaFmW7FuYRT5skzmU zxo_=#$Ma*$tBzZm9c$g1pW4P2d;6m`*LSGzcE#vATGL(`!tuxKV*O6R|-JcnB7guKA;MYFMb2=Io zq?dpY{@Vmrm~n$dkJZV$^_tS<8caNZ&#$Uo!HBi9eZ@Swbdyc-qCL!-7?tEBCRW`y zEnEmA@d5(Zjp38ipDGqQDcJkD=yx#R@;lE;m^L#)FAD0P2g(PGI$>!9XUH3R)93t; zyBv7u&wIH&w7@+3Ok6h1N-J^6`&;Nz7FJuiX9U=n~j3FEU4`W{$Rpr*Tt#n8z(k8JX$f0u-7*`vCwnQXAQ86JFRiVOD9gqpDN2($Bb4Z;7{N36{`V>1!wgWs`OjGY=uas!e_$Gzh9oX6NP+;#!0AW; zEs6$45B&ec8M}Z-DrYB;4<-SKLlC*9gO#_+qQ4%g3fevaeRRJf{~YW*vOiWWi4MAV zDY2XYrl?K4RT?kb+IXtJ_;BG^ZS6jJf7t&gE>a0|cQf9QXGv?} zv&i+&_C7bMiBh>QR?B}zw;Yuq>YHVvc5-zZ9Eu zLoihb-hf2-=x=!D|9Ik%*HFCUxl#hCQ&66tI&&w_n>%>HW7TE3a3u@0K0R7~ zjcqJZV!}Irx5#;=wNeNn%4NY6Ui#<8_y3PaB}WGtz@jd5&y$ZHGyeWXV!XC8Q!BS{ z7PJ77L$`gpVWZdLIBcn9x)Zf|!skW|Z;X%JWMlHN-R=x)YrMY&Jp$HeEP`YjpCNC2 ztkutJBnOB4T}yL#)YKG23FDU*=Z7uck+1(+H4D;p`ZqqM#ev=_2fsB%1! zZP_#pNYT3! zs%T7RX6xsw#b&-R11Ro6-}WRXTdbIY@im%?todPX0p&bqChF98dt<)%!QEX=|9$~e z0Jus3brVyz#2I@JqJbo3V2-gA;?Yu|$=|ZO+EZYTvtb?y==W<%<31O4}!-jIa43i!W|VTVi^w_+0)GIL7LGK z_X!Okz{N?d<7TX%`w$=P4;qGlYw#ZG{+PUpr;dlqx{4y#CEr=aezwhvKHzG7LkPw> zAWv18qRw>2VElq7f0Zz^6*iQDHd z^`##uPzUtdwS4W9bn6)&!rgVqV!d5T>3{lPV@o7Q28t!_`}7j?KUYy1yI)vXiTVMP zikXXes>*gtnSx|9A9f`29;5~&6tiLrxXME2yQo9iSqS&Q$bsJq9|*}}*lWwr zq7(>3CCvV&#)kOeGNk3U-K*P0zgCDA+GK&xst2l@A)?rLCX}KP<^(R|r$0>2f@Za= z90rrl8Wy=j8b#R_7iPn25$oHK|6N!x+k}jnU}k7$=BWZb+6cR4tEe$s4n@Vp;-IJm zFQ`I-cw%AN@bGZkLlXpyFh3{=7KdM{`89cQPN{gGf4w%*6}2lM+UrvrCt2+yVb@h| zIH{vc=EpzSpV#rnb@0uoEV!8n+Ohw);z^_wsnsxi(FxIVVEv;+JU>4e3oUpqnJel9NB%ixfSFG85 zLvFb1+Gy$Bof4jUMB>&w_oW5FnjC7|!<2rPALcoBeS@y(DX#Aj{mJp^XP`=V-BX&* z+GL|J#R3W9nb~IMrAGw7MT$xwsgh&G0R26=W-d7@PpkIynRaaQBML&l85Ums4+p#V zE48nhvjKZ+32&Z8?V88f=n#A{#v;r#>rBbVxl6ngMR!{ue}C_x96AJ`vi)3U8V;+` z(kmSW1&8DH&h}A4^%NHi8v(iy!-mfM++GEsSgn8q5wx}Yh8NUMJ|iQXz?^y{&fZGa zaQxuUa1!5VlS!Hro&BQKS}QR|n3S?jB%)Ue&9 zX-=onBq<3-D~7Q42T7+Z_8|1dj1p)SIq0Smm0bFh%skQx{pJwGZM<$vRZ*PRe)~cU)K@5B{M|9(OalSNnyF;jL@#-ToIUUGBr#+cwt-aSQH7GV7sHFO8 zU{9sM^lQYJ90|a?yOwBi!Ij&%y1v@)^eG68SaXuy?c=PwJ{P^)?Z{NxOzit?nL79o z!*ciq1yw3BK{j`}*YA`0juHkKz1KLwX5UD${nKV9%8PdfekHyjhsbyva?OJvIR^$G zkv+{4xlX_Sid#qBx)D~Q{d2D2;1p9EYTcc*%Vlh&@Z;f7GN^1BWWSi|ylrMZnru$( zY#yww*}M{#`S6bRR9(urqVVTS_wdZfWvJz9dkFfu{+dVBk=gk9^vipFeSIMY75}$X zsISC5foLnIa_E750NxwHR%VX$fF1!Dfs+8|H)agJvvBs*AR#Ambj52;3MCbte7?Ur zmwWq_*43=@X+6ylL(hf*T5N^gT0uQUz8r~I%D1xKfD5c=fGN(POMz44e2PJ(aoUiPDOh&Bpouo9Kw&Jl zJyuoF0=16z6|R=L+_itE)xe^GxI!+e2=uo?lHp4R&?d6Hd6;Aq6xMcUEn4EG1-Q46 z_-Ig{{16JDAUWhQ(u3=d_FPnNqO-)r zVfgVy6V}L<>B`r4^dkmqFZ*wM|~)2D&wc1&dVkAyW-wDt1|BJ6?eB*{#U*jDX+frm8}COTfLbH5$DprA+3z|9~n2tb;wnBGbIXxImKJtUK3 zf`D3v8FOMEqwrWCEA*}LGufs~f9E5)_~{XH^&yG?yZ@%iX#+(n5?VC-5Qt`ZUR7WS z9?z5M6G4kLA$8EQxpMvCub@i}3CIWQJSHy2?RKG%VmKSNygLl*eh@q7@NtG(7tBNdvDZxh2GDX^kSZ-vE?0RRi*u(p7UX6P ztjIjADn#(X($%1QgVx-C`B(MmzrAW5^&)Yp!WmVn7DO9l5AgyTnT!ijBW1n|pegsn zmXWo(CMGU)RD1t(7Ng-_!{hr+k$OJ(ao@{?AB~Ulz8~Y$hi5}SGC~cbz~H2#;$MXo z7g)b)LL(cDMk>UJ**|*s_7+SkKi>c@fg+juV;(m(B5__0Yo`gXP*IIBsIKv`9ks<9 z6$e=xI+BBTX+Mj`HNdHccs>HdvruEX%y_b#XMP=XL>%8ah~nbjg!c7fx!?uhI-M!^k%5gC#Hj@ zxGZ)6f4CCki1W7UhP4O<24CX~i?VuzOBX8EJ-v8!Xvy@CI)jK|`BFR@gilQ*&c}pB zI5=t3C!BP5N_XJVBF$9TOf0$AHun8?bs18 zV-5dd_G!A*L-e3|*)kq8v6y<@Mf#s}4ywT&(7f^FeCcA@=unw;#~vdR`FTD-jPaxE z8775>06`4UZsm1!@DFs{9xPI;c5)*3nb$_x>j~T+X#IJjM$Kw8-!Sy43;9VWv3Fl- z4JIS&CKg9YUVl^5z3dl&7S2Fu-$^4T!h%DrsGNkeh5r~4kNNw#qakc5C)sO%k5?>N z^Q7fZv))Y6QF=j zOAXf(PV(=53PdwO{vTiA`paZ!`q7bei-B;%{8#_TrX&E5zF$h3B4hHrg77qxXYlO! z9~(n>GgK})#iA<~!Qe3m-^B8&c>kO)5SD*I2N8DU)^|`X81?-Uk%Y~MJ%p1K3~gKK z?ru1@Q4aW}(y|gj4}Fe)J}7W7q6~7KFiyCE5C<_mF*QnuaQQf;IY|4Mr1b#9Csl2e zRkZt$JvTstRM8&m_nvFiw26vxyrTFeEWb^l2nCAn*Q>S)YRtAM^o0lIN#F^mbbet#l6e34gy0UH%eCIh*6lqjuiw=0<* zFtfm0ByN&Az~X8Cph#XzLi}69nT%Zs4KZD=$U&GStIn2SSh&i+H|E6w*6{YePhQPL z4Z3B613&-XuhjCU0&vwYx4Fx~Xf8ZpW@paz3Lm1U7nfv*kD5=bU&4rYGh+&WJ;2UX z_oE;!IU!m6G*p>aUr?ld`bqEKsYzsOFr(HTj)>XNhCng0cWEt1MH)bnxgxi+SQYY} zVQmz4ZRM^SO|1hRiHREga*MY%=U#vlA{qY7pL-{q`HPnId zhIZbQ*SrC%y3QhZy<&Q5e0V#?adjI_^Gz0+@rmY?>~o?83%6HdLX;HNy|Gu#$9e-t zlc!$>|Eb%_p}-uotvX*^Q_6gr4)v`?MnJb-7D4$ZaFR1b;%ca=jd{bAg|{X=JWq&T zUnw3LRLnw4+TlAs>_7Wg&;I?E!>It=J{dROl=1+jn;R|{orP^WB?&D-icL=FqTp(i zU$LW2Ys+}qb^w=&1wH_-2Cfvd7#B7p5fM{pf(KmY1jLG=B^B7w!!xn zsc+-I-1jzVZE5R;5hbJ`}Vek4k9Qx}`yeU9Fbb%J=X-Lf@)%u+Qo3~V{MCj9| zTU@(>`!5T!qD3m^ZE!w!hzYgY|9ckxUg{um;JqJ?Gi<)_Xe38|d?$Y$#AehVTY5sY z>tdkdSy5CRgDu=Q=V&*Xezdl$Zo!B8yfwS^LlD!Hd0vF^pEWRYfl%B1*P*$E=!d+fEiFN~; zcPH8kL4sc>rkoHoKGCP60nWgaqK{Wyal@4EBTviaZ!eeSj2@4<_!i>XbYy77G~D0~ zF%hHWIR6$IX=*Ual~9aEyUzZMYYlhrKT!!1Us#{K41kPO$z<5ELgCX8_k2ylTIN-F z6aryxGPV3nJH!NA2QU-9IBhH0{%-M56i>>ma{I_x3{Ca^y}(qm8*`$we#;1lG&YV7vVm)iVMYwdRP za%)J9^mJl%rcxo=LJQZwX94^&^D6)=q5aFof)c#$oo(D1&K$9VuRY*kbditEC>D3= zHTmRum<()4(r70j5W|tO;e$Tvze48K$K&Br`5by(!@7Ry%c$qnYI1x5R(Qg0&&O+Q zC9Umhl%cM`r@upJ_@lz^Jgi?KwC1R0IxvSj?>_9@4+` z5D`TMoi*KA5&aP|oWn$0gi21+{MS@4?T8J%PI}cpSp_i0mojeeIBlk6oiy;3W(b zKMKd>`-FhGURUWf(RSGr!nl*Ne`#Zoz6~Ir3N?(#pfn~r_AWpmzTXcfT~U{{8-`bK z>C+fY3pr=li89l?D(%9SZ|BudB?73M81Jy9xN`EQT0gT)>0<=~ zm!efs>}BlVqmMcQMP%*m$16LG_D}VRE88~$gm!`_$J^M>yv{9GQ-t&%SbS5S z3_9=Kr$c56`W$rc&XKw&W(%tu!um6kRD^>OlsZhwB34L?{w0mfl=(f z^=d20c7V?i12LZh8On)4<^pqUgOtd`OW`5%8SWU_bk&;Hf9Ke$|9$xSirl0Rryi<7 z>?O|{_SDq-S7MgtPcmsfBap_elvuw*{f87rgb~$%#UuaYchBK64#Q~&($2m<_IeUK zUl|@^NeNFhTj?ZnDyosw$#>{Jsx?kwfco%*8X37@{X~Llfe24m!faah@+!_}3gg2U zfLr0olcf8InUO6Wtg%n5WMm%Q!N?RMqVZi9uOb59*}XHH9OeyqP(%bHVQFbf3gcrK z@F5nd9x_#NAH1mswP5(|ab7L-KBuFn57VT+_t5ki5*phuS7B=_pFB-=03{WbBm_BP zd9OpChl<u*({LuGi!sE$Os~R9Pfka^%Or!;t;2-(;n-S$XedGRX@)b&UI85I(k*!PO?Tx4x zH7{nO+aaB)l2WQDi5{mG79m4d?-yf8y%NL&Q1<@hhNzMS+&)(YyqscWW^i$tIq{i! zOBo-O@_f;AhuP}S6Hg3Lk8-0>eaPhm?-L(N!G4nB&=eF8_%9F9FHuy6$J3%yE+krk z{-qACZq4$YDisSJ4h3~mJz-om@%D?MnL^B+8>P{RFY`Ae-@BAuVS(|e4>b01;nAn8b8 zy&K<+4#iLW;h&d_kV(P(+`yz(EqQqlvX8nh{gVrg&-?Dh8z+Q4N22cuMNF?HC5oq+ zlbU?K7`v4{(0|(JIn{tZO#1g0|9!tkct9qkVG*4D1O}-!(Zjv*y{X;%Yo!o^AO0Tb zmCJA>9IETbihi*u@(=$M63l%-*uF1U1n51ADf?^O5Y;vIESGe$uSe)|?Hixb1W?b* z5laX7hk3ZqH$@xp$*-*m{3#`5nE3ZsZG6A6>q7~Tosx%&@NB!?Szn7uS@vOh`ew!2W z1d;qd>?6=qidheIoA0c#XeXvf648Bq7l%p#Ch5lHI2PF04{t@*9QxDh$zJ{6_q>8B zS5O$*^}jLtT!HXQn7p_YtVHiYf>3y5C4D%CXnVHLVF_QYadlSM@cF=s(!bpBN>L4e z)Im4Sh>VO}(e4Q}gI*=vLk9RCy+~wa5)xlR5+i-!{!y6V?OJ_-%K5PT{EZYG<~}yw z;3aMClZ3HjiCkZANHZrkdQlwqVWig{uOgP|mf zXFgVW zoomem+*{{$1;Z#nv&%KQ^H8mt`!;=j6`adB{~&kSJ9#MQTPx(xm2UL_SK(E?di?M{ zoD00opqg~A^y|6&;)~8&d(Tmi3&IaaeDa%{$OfSF#z!VM0aN^s$C6>*0Fh3)BY5*1 z4igj_e8}e;B&!Y{mYuwstj%kwG?}VSf5iLpqsrYZ+Jnr;`1ZYz;$bFb;sF64S=WHz`2-wJS>z{VHUrFLp7H)Hqv)8_ zRXy3zIrfJ9!-EB${swzkYwpjY(E_Pz@7ijRt)8zPE&JMKhN(-T2`F;qPuHm4@^74W zk+j|ZUVITL6b`d#)kj!ZRDcr}upUW{BrE5?4M|8~uC?Eb0K=vtCP}ifv$L~9B9t%h zv)&!;O;;;`!GZL>w{L0k)yrtw9mfiuOq3Z~m*GYpLeJcLT);qP_dy2yw+Tsil`*^< zqe^s8AqKJ3S?+3kqEx+&(TO3;m7+M*y$CXk7A&_$G(f*UvS^>~Xykot#6_n2@+V7I z_}SWb%#!O4q~AN@YX_;Eb5n3S+hyvGEDX{K;8jLJL2>b$u5)CM<~hK?vKXgCB8xRLlT!E_Q{)RN`d2 zaHFPuVZrRAq21E+$y)NBMkD46ZPAC_IV`#1;6MLifJl@(C|XtMn`cnB<53ym&eMl!MC+ZV|-{Vm=un%m1uQYf>Y7-}PAU z&VC04#@AjJOewyzY3t>aG3`(=e5|X=QaF0y+wT6)+WtC6>*%Ko+*qx6OQ9pI?L?+y zcYE#>uA|ykox(epxdkM7G1hhpVx7p@4(41Cg|j2JjdJ$yNjk-)0HggE3Oe z#qA`)`0N>-H)nHe6Pa~RPIhdlqCV*1XS2@Y8Pc)zN2@*IeL`0+0)%gQ_B6MxV!2G0 zA&9$?b8dtz?$@kMjB_-gZlmU8Zxl!TH+@ElxzOe@yqN=eg|EtM-vc*|1ef(AT zkG+n`o!lH76D5p8bPi0Dtehw9)k;Zx&phSen5H*n>i<^SWNvVPLxh}<^!eO(*OgDG zy@f>|xMz-89M2aX4i;()TQ9k!pebtDO{BAZ{AnN|BNK75H74oi_IJ!joFV+F>3N-8Ty=<4fF^!(jnlzEDe0t@uNA9GHXlarevS+4M==XDF*C89HEBY;Ag(hJw_Z z+Bn#Aw2a2y-jX2bOs`a*9=p~h%OF%Z%&Igqfy|*{H7Jyzg%*P=NSH(4Wod?!)wTbs zcVEiPE_L^}qVhm7NSeRBA`NP8eqMbt>Mq$G!PNDc_qbnl=NiMw+I4@P-0EUQC5o&$ z`EWp-R5DX0zI7vie<@JMlmwAjaj2%hJ?-WFpaHG zJsb^8x66sMo7}M4%+8GVXcWQcKc$(OJ`-F46Ur7r7!KCKv(F zMl}aaT2*4MKW5XhD0ghoc=YJe@;CP0{WwXQmfi8oMbAJ(;JFoA{E%P}|Vg zdH(zKBDDs4oWiJnckyy$yQAWNF$jwxAopbN%*HvFnw;ll*7IIFLm1a zp83G;2!RR7;b7EwH((^Ae);mH9nX`QB&_FS*$VBw6LN}W-J#mFIBnl9p5riU=#~y9 z;F7wXCu{DG$EYr9?O4OBD5JvI@vy`xERkPqNpRXs@PcpDjIRz(_2 zy$;--RMHrWi;K&OZ=Ax3AO-s-f`;@o*aj`h`ZXLTlGZz|Q^kvhXxR?oOGSa|ac)WB zASrg57g?bQ1ebQw#S@!EXtN+V9Ku~?SMlUV=|)m~)3{NM`LlIUX#@Ywj}Ml3zx^dl zc9=fl!j}6tJpw!KX+&U(KAY?1vAo`#`<;;83=n+!N&Y5bLvuuFzRuE9BRn?UB4W3V zMp&Q86F%}|utx8F_y)20a6eIJ>VLk$Od;)#WI5|J>%`Hu*%!iJGzh{SnP&k_e-a8M zTr%>EPM#*W3A<@j!RL77g2|@Ya7P-h?cL#c)(>aPHJ6J@bLUB1R>9A#@cs1XLdF8k+k6-Xk%a0L1v=i4E*G zW*;BU;+Y7lml?c=MR&hBiHx%uq_cZs#ANjLZH{dJGiTRzq5QYyC0MVwieAfXPFI(f zcJM=A!s8*J9sZ60Vgz;=CyK*V$HFlBy|ZqyPQUygOD++U>y^)8A0S4NJb;Fa-{T~b z;8g(yFLeR(=Ectt^y7sN3XeF}Eu_IqhFLDTRm9qiXXL9_ z`mH8LMHzT2Uk>n68qIpR{PPAx7zFZ9jG*+gWBW=sm0OU2up zGhwp3o4uj**8+eslb^=3_hNs+hcqhrvs*CO#+b~TzVPE?*X3@OhGU{s*(2Em0SR=0 zeUXWJ=gM!S!n0;W$&qe1C)~UTt&4<53sHSd3cmEraO!>Vs5nvgdc+jkliRk1qS^HW z)?bVOHI#x@<&fys>g%J|pY+V?;KyB2{mYL%F-$GqXzaDy2ebZqP*FXBis~Kqy?c;x ztaGL#^^NhW%wt0#RXfU_azUIj92pj`L!)Iu#gJWbk7NO+3Uawpn90&-&OF3s-fA)R z??Zl0$hn=}#V|4HLqV5cK6;AeJJ611HEHM`DT>ZJp81a8DRfNK%B=HVuqXyGb>*~G z>CEkzwsB98#8_t(tM>V}u-&$--Jn5zQ$Z*#KRAJwT@-3-7FJs;1jxm>b01Lo?yIC zIe#{wpw6BdEqi#Sx`~f<#IM_!)}Rsb+F1pDT;6CbMm2ebo^g`Gk>9R+bf?xR1u2dl z0nTV7hbo(nE<}S{Eu`nOeYtd`x#rrOa!M(^5|dt8#pJqTL8tsi_#h3HeRMJb%1_-$ zczzVhKB>v9tyf5Jk6uYiM)*&tLAZ+1p^Hfd2ZN7~U!o)aT~>q~ZbD2Gr)jv<@o2ST zO#I`=k6sP2>qS!KMpUi!>cg6^P=F3$B?qo>qu!Hs%zIScD&-AZIr=siK=w*k&2Hrr>_3^Y0IIyKq*_?$jHxTyFoOw7+=UI+0b^F_sj;m8Rsg#=qv5FYdXqS z)Y3DjD>r_jGR!t3Ag^E~an$x@aJVjxLr*Kgh2JvvDA+y{>3CyE(&==aKAz8(R%r0BqTki;QktmHd)g(zjCdeX?AQJ zBVC5Lj3>fLn&r}>BY$0>Mu~3p&-h9?Fn4^ZK1L501=Gf2;bmsm-{%+j6|79qbzPx= zu4|j}#?#mC!gfItzcotpKv(hhA;iq95Y=7rEv+$%8;cxzFoF=p=6b8VLbr? z`ZmqY)ecL|cG}OMoF%J;wt%GEsk3WR^}W5tTGhHUi`hlOsrIw`l9R@r^6)-IyeRNC z=Y<*4L+LNSu7(Wcc$FE3F3_c)Iz+MAdIReaK8rzuZO;TgZ0sbX;@=M|1|SG|BPSTn z1_VZVBMuFhXlz^vzCe)BEv`g!l>JyrO5<6dbXz@YLNvEPqHFFOt^FqJtAWyaIIN$3 z^;>mZj%;=?j}x$2i~6S@klX3rIVJ2}PtBQBSPQj^4A6a`g7+q7Q$!cA2%@CMIkQr0 zaPwr;C{v7JQ8#pES7fWj8=pBUeC|<#VAOQqPDe=!#el{4l=w8fK$Gt^2s2EG{rvov z&*tvJwA*BTJNe$M=K!AYtQunRC;zy6WO86k5;05`mJO1}BhlPmzLH=YvslK<;j^_R zYh8VEEQPkNm7{5`V>o;P)C!b@9W88>#}50`e#eZDN#{2vitOv>KGrHQA`q9&OV}E9 zcKUD>)jQ)9(g$I#3p1R%!D$M`7n)my7OW6W_bXSu4i* zu;ugTV-`AS>d^@p_0G1Db{~5mfymi3qFC5J^5O`$I=Cg=mU?}@t6L`hUmWU#YLcCi z(PTZV#%P;=U}06&bk2ll2kwBu`^79`qu>bO!OZNU8+0Vinmv@mZ4pBN@}a#ho$}%`4j4X zX*yyhY1~p_Xc%tDn2r+;DC)?AT%hkU#ft3;7ZfRzrS z_BfnUMk2ux(ju|VW183v6l|5<&y;@Q>`0eb=+Qf80hUQ}rp8vUb8zKwV!e=xfnmy? zMu>dg>b@z~Bv+Zgf%*Vfs;LhYvH5qi$mEW|G8o+w$bG^@){U~<=F~HLr<#r#EG9r$ zzhQ2E?Ti!m+}#&{3^rhUCkxVcI6h_f(ukR`_`Z< zpvcaT9vCDN%Y|>%hMzfJ+7rX6LM;{bIGNp=0Pcgj$dq3NzVxJb8B_2du%VF*cv#Pb z^(rPRB^6HKc|&PX<|k1p!h>xNq<66Q6X5Tj@DRo&VBGFKJJu+oLHZzkr_kQ0pNYm} z`UJsm`|?RfdU_{dCZh#*x8oE1*OkC83L54x_h7;w_Jfrcp9-p=GF71bZ4v*njgS~< zJj=ct2l9AE@?-(9=$xHh)w#_3l~{qnVrYb~KCTj6=v{x#(Qge#s!|o13aB7Am7L7@ z6KdzA0HsnNr+FDbR)lgW)O=kq{x-VAvX1QB}QGSfeoa)= z4%5jO0RkVQW=xy+LMgeq3sXeL1Mb1BAQ=!2R-{P)GAvdQssBg5JVbQik@#MW#+HH{ z1ScGaf!wB^^7t(3O8uT-0YT=f99;7gi}Ux06E3!lmwMeQ-YZ19ejZbBWlV;#gUe;C zmH2Yn|FeQg)Zl)@X+mqiQeYPOB5S?GX~tu{@~Wzoq13YW`LNjHWJEB~FEb<@su24l z-{l(zz{(CaYwEvlDgYyjfKk*vl-U<@eeKfcgafi2mw#PsHTm|$nhNoM9)1t<4&XF! zsjWhPedA|2093lBYt~i(&kXW2j+6T{Zzwhl5)aH|MVY^$`Vg1+pU?jWeLjyh&hO{D zUhV2fuJx*u0R;IpPyaqxb($no$*Cyn%pNahd#hj9`<96SP$f;f;dU@bi9zDktE}OT zSZ;IXjSXpfTd9})Ag=k6a?vI~39y9~0L}WPKM}W8Bjhk30|C*OO*THSrAhurbs)-4 z1MmOhb2F)t`aLBNP<4M5=|W77wAEkFD&t1P0aaeb4+^^K!_$ zOXJEyBh+lBru(5d5xz8K82o*>W=72FyP?n3Pjmx89*v>@yCwtg<^KKCk!+o<@q8oz z_##1eXKKgml?ybOrYg-b7Ln|}=tG{tB6fVCA<@?cTETxUXY|#~uWeZ_t0$mCqIn5D zlUXGmv(sa-%b9UjApm?*vjWk4r#ITxNPT(3m&1s}vo1$>QWndgKa<8v&@_;L*8%_OyLZvc#UC=Uv$B}=l-W?Y6jvvGmSVOW z?ryCHC1}JUa4$i^`4vc%_=a(;J-Y{CgZF;0PF|_u9^i_`UnCoSReT@ffVn=Motod~ zhn>5a%r~4I1GARsUNLRI7k@fZZJlYf+O`0Ji>p{Is~5Q{`YS$gg6FeYCj%WNX99W2 z_gAj=8v4G+$u}Id-9-~l!NvuK#Kkd^x?g`;FP0f>Y}#K?>B>wDh#1o%q{~dWwAT*> zEkVsn6-13pL8(87jWWYZ9COXNU8i7|@`x3m}Vn-c_4x6T8dFg2Hjbm3#LON7eVn1K$P$ z3}nJ;n@#1 zHMBIn(fEhmGRp!8Tn=S69hdy?*aU5bIOdAq*wt!Xm4u*=rOj%)9E4X>>ueW)`SK-U z#`$cv&n@!%q~;vzS~ZMC z#E_Gv&N_(*IcAK_j7s9~|ko6~v9(=Bd&K-LJ3S3}eELrBuI5T&CxO!!i0ga5Q z469>0?lZw!1PS`a$RTn`_(Qd#K(RGP$CD%n$`T6W^~gwt6upCcAayp z;3Te@ckOtCeR(4@v1IG+C~-=lo>YK8#!L7%iVS!tp}p~6o$EHa(74v6&kct%zO1H; zzQTU|IBLOZHw575S_O57M(lUZ0|_Q^M~>j7_V`9~RkV9~mZT#YPW~gOv?lMgzxeI@NYY!l(2LhH>U0G3Ai@20mp{2T8&Nifuo3x+dXL+ zl3BrL$8D8-#!i3^Ob^5rhii#gE2mTDM{oh#Vn?Zrwbs47Dl)=153HB2v8;8jpJl5Q zCVay?@U2FG_`H6gXuns(w>Ct$&xhejow>a-GRG@3*PSB??xfqF)O5IA+Bbf<$=Sab zOudtA4Y(;K#Kepp0h#Ga!`)5c`cv^pEvM+2-8%}_;(+WmB=)r_685lh>C@W&hP!+G zHj%rzEAES5X!JIR={`CXF048q#!ox%-JCinO#yiC$yBaxt1n`Y<6hY54u6O6o#Pj? zNA4Ky#!2m5| zo7*Ekbp||IjGEHV??HHQX)lB=;#9&m$>+rY94Vjr{c9m%A*!uiA=I-p9z zKAJ{-*7MLe$)keP)OzEJgG-k4V^r)@xa%h!ec8aj0-WfS)QG|n$;8Dpo0qoop zksVOjGPaxuP=qFz=B~L;RS>DwITYW3;muF1TdI!xUv7;RMgo*8hIJ?K=@oOyl@X@y zbXB5h(lcjGP!Sa=8#oqQ;&h~CzIeOea+YANRQA;UR>1LMWl;+kduPjJj67vnQ~~h! zxWEwCn018#D4>nMh8ApOId_Teqa9prm!<-Sz4oqf1{2qjcGkmL;h^~0tT7T~r+l}I z75&=UQAuanb?F0AcgAY1Sx2SxT_=~9C-%K>lr=*_x4IN$1r5Kec#Xbs?mpfe=|+G9 z*q%{@b8ONCeu}7-;h;zKsjkDxh|0G8K&SQ`XCUAw2e`_F$=Q&tPW!FFQU3~<={~;a zh0s${Qt}fsgkk3tWSBQUPO<9)ioes^j70P573zs%9Utb1*OOn@s@D=qA(Uv;nl=OQ zt99x>`_-KV#=5SqG_W06F7U_=YG5u1)r7N!1NsA7107|NOGtt`YO|yxi%0wIHvK0V(iP0BCyGqG|C+_?Q^YeUEn~YgMasbCuZp5*KG$G3HTfy41GKmRM$g zO1Gz(_XXX_gBVascgu>6V7m<;LXB9txO6>(c zV=7cFZZ1un#j|sw<6(&R_#7>SQE{q6TGv#ZVqU&QjRwV zp1tLoYPV^S3PDqg)f*TbIh}EzD-q((N~9L7DGy!kA&9l!jyRzXbUccbG}D@=VeIOn z>36zG&$i9Y7%X;WIQpuRlh>ue(yfxu?*8B@zBw7o=*vWrqk1fOee>zZu3le<9;IjQ zQPew~K6M{24>DavZcmqt>^{`%PHz;@Q&uKm(+#?zkoMt;V$+M6$%kC%6uRHR{>1X= z(aq*{JKe5Mk+pyiC5SP*MkFd~U}^#ItnO~z#YdQ*dGFBm5;2i^OnVJI$-5#g?@3J$~B%-m}bYR>Hgt)Y@E9)}Id2#=jmbJ{H0*JlKs+maV>`xr-gWR9pK= z%iws2_I6ZgC4cO_hfRv{&cpe5yKUMm<$m!a6vYa^%{@(Tk#4@nA@+w{HmeHz-`#4i zfnf-*nT_#5piKZt|D*amDnQ~@RPR_)!u2YUL{KoZYPV)fYJXF1pc>Z(9epPqkX&+4 z&VQ;1L}liggQJ(Junt-8e=RF?QFVPhB%81l?-fj;UD@Kcu{;heK{dYjhCI7{TfWdU zJpH+MUFlbsGIG0Hi_1SiKBP(<)CM{iaB|vy5t$n8(QBPaZ}$a*h8K&8!WV{*cAqv> zUCuJ{?<|Y1Y!9JFilJ>?yxL%S<1UlH&{ua{Y%*EbqaS>??XD5u$b~ zb8*4HvbA>?q;j{1nwV){cb08%v5bWt(ap@)bp0t-(P&KDEtdSw)iTUPrz%FCE6^Lilzny$0vP2c-H*ptl?)rlK7QCQ=0*0z=#UI`bFkc*Y7p?#RWPr>=fGIl0V{rM&_@a8_HF zahsq5C9<8weNvy8w3+6Y((&GtTK)zFEihl-C+@xjUO6k)>i11{#_kwS<84@&%R3cU zBoUvDfiGt9VZj4kYR7fv59bxNQX*Scd#~AyXt$ zS^NP~Haq&;UWe z9dS$J5#Q%9cTB0kjUjz^{-z_t%=k^@*XymrvycZju8M2o{VJ(q{y+Ow_F}czJ-6*8 zX|hI1kPGWib6huy*W#?T8k0OL@&VpI5lJ9;GR*$*@DQu#8oiJI$5|bs0&`z4&?EO? zoIw%jmqHjABwqv~@4KTk`TL0J*-8x0ydP{*Va&Kzr)8Yaa#*jIAvW(+YLK-Pb7mCCcZv_Iw!&qx&Upf(re765{pE9!9qyMzxq@s7hOfk1yXu}u|ae46UeCwSE5^Cj7*^+-<9 zT3>p0f;eth45#e0`PB+eiTVl0fiW+}$8gWPGgG>(v)j==ZL2^)IYuy3lkidHJD>NI z#^````GhWfC(wK9!L#!CCN{GGKO(af#JA}#M?GT+d7rXV_17?&*F*RDqKkW3lSN^P ztva4sw>ZZMdZO>7K6@DNNlro0QbXc)z90m~a0T+&Z5z0gq6`l;&dE5-uL~fIX*t)& zr;7NbT(%1{b75g~m&mSO>1y>N)-M#!5y$(8`keD_7q#>h$$f`pTA^c9WvA4flcsT> za9X6zja{A)M(v3aJ8Nn?@7NML?9XYh8TM;Y8f9k#D&UItPfHo0f$qlx?ObH35LC3E z!}+l$lTA3a4ZX=pSnkG8WoYQ;?C0#bklu4U-SnF#x*SHMv90grO@2I1x8^fAY@o&t z?`GIy!)0eznOJB(p1!Q*0~o-fcGC78VVnC5C>*z>E7F}HxL6wr9IvTAc;1PY-(BE5 z&7LNoFeWGNLu%!rVRiV5;`7-QU9_CQ47m!9 zeA9NWicZ>BxmcargT)bZmeg?W2`@1i_<(=XX~6Ei>tguPyQ60RlXbfJoX}|$P*_Ue zZ+6Am(T^S^3iR?`JvgG&vBbCWOjv6#7LLulhuhhB|K_KEuuc!DQ+tdAysLBkg>JJ? z(BD?DJL=mnE7;6z(N269?0$E}#s2KD`!pjTy_Vf{k^_VeK7#*`y|;|2YWw1b1wpz5 z6r>d-1W{7@07{62NF$-r-Q6e$Pyq=kNokPo6lsudknZlTcO47l{=MTF;~nD}&xiZv zj(xoBz1N;=uG#Z9XL=d}ER#aDqa1rSRd<^t7VUwHV3)t}CFE{Y)A7NIv4?-rSInW0 zaL|HbyC&_Z6erLSlL|sM2MLdS`-=#d%MV&y6v3qPZuEk_#zWprsh&@_Liq&hzEprh zu18o6sY?n+1GfaIA306DeHZEQi`S(fb~lt~$lL6APY%r!d}^vB=XJrzVW*;_ZLT*{ zgKXHFVCL>%5&VbivvGBx;({a}I;R<|@*H~6EPu|Pyo5T+LE5NnOU}GmEw2)D3*0vN z02+tN_DQvDfHyBAz% zmE&3><35yfOQ?3F?LbTW9j&jyR-QMP_&3@Fv94$@Z#`*_0+n7HDkZg;dzzObvw6W! zuc4-sFc7OynR@^IFq|B2NN#X#UEc$;Wim)!m5tx`vF0+c<*_}nTwiW(YN6*&TQhWq zvjly6YJ|L(b^oZ2>!knN`?XLk0_wpcg%Mw;4rZgNyNSb#a~*RAy|!16SK_(8GOpA_ zM5;P0G4CxlsYNtzmzjRtUmq|(dGCSYZI4sBv*x>AVf`?&usyoQ*@$ywIdw=qqim`o z+eSA*k`!rk?z-sN{N1;a<#kHU-Ub6ShEiD|D!IhP(CR#LyvoK#k`%~!E&_cH4l zc^&oM_PASeY9qsG!=Uq(|80L5Mz;0wm^}@0gxfJLXTO%4fWLeQa7ZlgyCFDNJk{!o97t zMy9TuZx9q9!CQ6c%-7pb?<_%Ve5^w61TW@}Adgv}Ku&*zY)N(Rhwi_gjEs&=GnN zM1$V;7od;sUCb6^yt8EFOL%#~3wuVwYV697g!!SY(QBjo~zPu5~EnF)DcaJPPMj*+LKi2vO z=r%t1cs4Gj(8ZNo+9!UFtS(TX1JMc^hvF=h9N_$dicHN_!nD?Gh#3 z6^td`;1xMW zxwtP!_pTga@op~;=4e~DX5U7?!$bJN#ofxJsDkIB>otV$-sxs zOI7Aq%)ZBCkrQ2fnkqoJg6Sfr-Lf}4X0b1C4aw}KRHIa*4%7W6)O!}o-}*7<;@D>* z#=PJoB8*dEyGRq$s=g|$951z1qiZ(8}$DjGFyIfvfT5DWigDJ&Z>dy}4 zQUq;Bj4OurJV5~fJ;;xEFp@qH2B5)6izD3uH7m|7v>U-;eALZ%D+utcy*q|+2pL{S z#r7r&?Jvulw|u{T z?T&ODTpH{F2Cw7xEm9+iVC~jWWjdXh1=i*dtXxUqH)`xRaya27!p#TNE!W2teqrCozHWwa4gfP8-rwk_@UDUk><@BTGtyJlDihcLrjP%oS)UhII>_DC`b2AP3A!P8wO+)vei8wt0$PBY*o(0HL)GEEBWrSs`Ac4rM zNt%IAk-c3Z;>cahxXGNfx9nf%5UdW_+n3qZ)OBabbJM1i`sFaRa%bf*k7gB1Q-@f& zp>vi#DC;WLTwW;Sr~XtvmOnGud3S=US0CPh;lRadNOPA@(%)LO|sogQOvsv38&yH;RCkcyELD6M4N zQD?jKBLH*Bk^FqhR7MGO#0A})xPUM&OioSRD^Z=ss@Hv8MJ|o5q(HD~dM?u2xVhgb zxFBpIA`VwPF%;rvt^T<`VWl~YEx(M&LXrBzaAa`CYkn#Wtx^`V+)(v>vHlVC=B^T9 zq`Cf2Wfm&~EiIxkf+@3YV%IDP)~W~jry3-XyIw*hTG*K9lwTxk-y|5$&YQ;_@4nyv zV(bGaZLW3kbQn={rs=RgJfrcqT-sF+y7ZxWSsymT!N72_2ZK#KA#eFXZ)9hjq2IZD zG`1?J8yef9vPOtifR*bQUwkibJk74J#1ymPkv6W1!!c-PxZ*K6 z8CPb@61=Bse#b_;C*5$()e?1N4L@8pu;gdjy-Urh5Mldw^b4- zFmyi{_*}h@fu1Mxj%rX}2tti-)SLc^#X!S@MtMWN8SlDJYYML5{N&q)h8iAGCZP1X zr}5_|hwNhn53DpJRiTFsI^Ee{mkf|2T=F@@2QG>Jk@tjEajM(IukQPE!9TtcT?Tj9 z8TDkwR*uA}9!@$@V)Wi*I}~g4(YG{n=Cl#1b(z(uo5-VaFMJ7R!MWzE)gO#{@~}l& zPq+eKDIq;#u(49`VAqfqQ?+z=U#A~bsMS3{%OE9;#{`9;tn`^qD~A`vJ9d)C{Htf? zER8}@aBtetu}3@ewPv3PD0g0rkqt50l?>yqF)u#aUeI(aDaRG(BJ$av z`okI>x7({+Q~;xzV__`%2)bFaG`0AjenIs$b@&* z!2tuK%NQPZYSjc}3yT$vClg1#J^u0}0%Rd1?6&5|_7>^mKvo{Dm5)K~4I$Nt6SERX zAWa&eHXMB5*w9!S7$2L@?X3ab3`?P-101fGxQ`v1Dn9s@LKT0wn;UcWK%f4Qg5S&8 zO!6S3bzvY#K7|8hVUU)OhpN``MR9gj^Mu3IPQ1Yv&o<>N2FBikE}z@hJi8v;b|?6; z?7OYpQ+MVxryuTa`S!=+3NMHs^Ix&!iOlS{UwClh#Im`+ zqZxrCp;d|U0niR`H%A1aB;+j!F#*lC){8W&A6^4ZB2Lb1{uU1(U$i*1m!kQRM`U>T zRl^5w_SO$UbHMr+w2XR?%zHL%EBbCG%Kl;b{ytYIo1sTUSJ9IhAG0;S+kWpEUPB#} ziz##a8kL8ym~>Vz5L(q&PLHG)XV;?V z1ifpgi<_ZlR)aItADGTvvTSbS_=N?aOGJ5E>GGY|Udn@F3>(J=64z_^HZxUZlkX1F zGc{+wWxbsh>)h-Y)7bMKUz?oys!WF!-VnS}yhWxJJA*LSUsmSWPg3SI>n9>vv6|Hz z=3nE>dnCH8E2AdCWgCK_icZ)iwmB6g6gFDDbJOH;=;mC=T1SSlJhSd*c}M26un*?7 zINMWEb)|?+Q?KOtHq@H6frM7?&kpK{7ZcX)NOO;Y^|aIR@Y;;T%;{} zw7)gAm?KfZcvAdHAxj#VMBkh(MR-p(J6qSMl~)=;NJD!=-!OgW)zuFR0Xwf5%k`#r z`+}q0eIL&9=_muq=X+lAIl+0zqgLG2hD6sQB!sCVgIrreno2=?B6w zQFFJZ@BKK*1X(%37)z@a%lyI*$ z{23QJVKDMN!)9H3fC_f5?g1GJ5wNq%8L#ZCdT0M;IuvxR6Rx{aC_P_VAKGi3&aZEE z@Wa=C;45NF)Fl?=*g@3DhI=1`1QNfRv)w(&)yenm5|{Ab>JQf(+83AB@!&vZ(=|qk z_*zud@M33qhz&UgSCVUk7a?3y@j#bn+i>s;CRU!ol$w8(q%wwvWmUiU(mc`#O{5^O z!P8O+UAwyQiuMxp7aK+#S8)5w9qpU(C5G7&OOCSl@I2t_O(k^*6cXk zLyNQDF$&_if4gv1I+WemDc;8`FJhrPm3k(^K8#@-SCW^}*0yGYphk)3o9b|Gu10@I z^NO|638@sYyMC6^y7u7!CDKGPHQHNpX-omg1wp(ATY+=TTK4%hg92L9 zdbZ;YC$-9XUzDP-_^#pi91i&x<$nUXWyAknbAu}?TpOD6L#vJ6SgosW*ft+2KM;NR z(7Tn57g&H>2)W|AgP`IlZ+@!2{fz#D-BSt5fRW|AkACb5a?I!PnkJ30FEv1q$D$KU z6^XhFDxhZzkl#l9{t!?=^Y;9walk$;XZq2PC+{L3vMjS76e$<9bi^E$^A5r~mSl0; z^5YC226Wb@yvG$jCm&@VfZdSox_9aO7P(?0YiMdV`Mz+@;=tfBi3U2)gIqov^0^Ei zR_UhOksojP=KK;AVN2MWHu$xKMI=y7D32av%x zEfdj(B7^?0XGs3^5BrY^m ze{#ZCSotL|e`p1vSA4}*jPUh*AvN#=a=Fbq9pIzA&Jj$?99A0H63GlzP#3p~Y0eVQ z;iPB@UBvcefcstqnE!BPx#RZJ-21$wTSX6Mhf+(3O{*!SQ?Hz)TJ03L4Fpp~8ww73 z=HrVGSmk1zud~yWbKxRnU1;qWq{*br`8?f|XK03OPIU|6x#W*^mt89?sot1j^tT=% zqT;ez^phYNY)VcfW(3v5rtGMB!k;A}gD>+j3~zk@gh7gPEYnpAS?cP_wbw5vXqSb5 zasAb+8o{mm@(ncNw($MRR-!8{wEn|)9_Jg3Fo1H_#=!_fhcd^~d>>A;khp|| zMv(5CbjRWg=uSPM+aX}9&Hq^`Tw_H=!*j;8ynPu~DE$0;t@e#n;PBsw7^D`U7ve;I22TJiqd`Z*}2vS_&;SS`%#eV_}K3KS;C zfl8Q;V#`~)FH{E$W<*=q;2*L&*xqx*K+bK^p#t>KZcd}6()en;OOdly0V58IOrAed65mr%bE@I5!w3e07kgT0Waqo zJghw23yC$8#}QT@PDX8*A!I~+O&tEUxGxk#vA-kxfjQS#>EPQW@uK^@{!tZz`Gymm z!ku}s^kX<}(SvOi7d1vdUyO@H`C>Sbt5|+GZ@)L;+c3sKQ6v-r)|FI3iTAsk8`M>p zeQ#JX74Gq+DHDCt(994?_SqPh>;;58&xoODw6L}#*ECkc@U}l$Gw#R&`xQwhl8ZHo zp2#vv(M2e^B>feUGh8Rz?BP_#b;}QDs^Hog?|?IJHtOn5dG~Jn6*;J~QlU;Vy;{Ds z72fK}r`Za(z&i@A#SIM|Hg^c{eqf8I~_FNx^z0C)EO!}hb1})FheF#bd@d}7t zYcceioFb&-jDzt?dc)EL_AI{1_3KTWlhyy<+}s=hRn>p^X!b;#bNPLTBi!cHTfK+JiX9J?zxUHo3jmfc!&ma8&+kQ7#Y*dFT|= zuP3r42PR?!p;jH`D#{J@I<%k;(lYcy_gkcM?L3HO*T%y$9qN&b+AK4MwU z5AN8WPH<&}%9)zM26(kazQ?H#P;em8bntc?R`y2ej8 z!1>H)pL)RGuL_kxF1{p#FYkA6+qq|e45bEOBLN{%q5q!p2Z8^i%RgAkwn?pL%ygxX}gfBKN^;BPcoZf6W(Ga?#>xf~R^G0KVfP z+e;#?sJmSv%&n`MYzT0)yE|*Qa#ZS${a8one8A%DH-d;+pF3ttDaJLKwqWKse_V|= zCXRzyv*>3b7Chfu$IiUxEO}y;$*<#z>PuB}>8kVFGv8w*aT4v-?NG%&*C%=Q9&Aq@ z*UU>KEPl~&uK@86HnrMX!z>i2w4dv$B$knVP{rEs=OVzd&pp%L`;XUKqr7CD9Yr8w zDU45YBJUcF&yMrdPF>BS46&ih;wN&t_!>y<*alzUg#_{&9uv z_yb1~Lq3be6VzM2e2Ks@7Z2;JvzAVlETT-g(%Lcp@aj!vwwMd&-W{GHiYY!E!xHcK18BPfCZutyIxYs;77q=nYGid=u?ji{Kq$) z@;COoXm=+4QT~f45_kA7q6I%S^D2Yqgu3T|l91c~=7m-JKoqF`tq5|1-EU&h=w$Nq zaaAJDsPu9ylwG_mK?)ii|G5)C9XW^v8f9D}`yg)ebxwXHo{_Ji%sf@M=Jt6V_wT0= z;73yb2&*KS@L8Rq55NpXjftXUAE6fS=%WO0u<^*zJ*+YaYV?#5z3Pi0J#k zGxtIiJH726S5g=t?ArZ#Lh7#)3IUtuH^SE0_5MLf8A0$S*42A>zZvIr6~C??g3wu@ zLgv58&u(nc`;5Vj`Mu8PER|0m>v|b1nCc4szfqDEyh-Mwui)9;__d0kEc+j6&JpDF z=YOO*rNz0c|C^*C&$?D8x7T)jbP#O22+WDbZ?&MR^nV`;a6CL!T|E&=gnWo;rx1xs zy;xRF8mNM8GM*Ej9-V( p!&W}Vrx(W;r`T7`F6vw%{2&8nA&(AfrpS>|whb@v+FRaexbH528f&M z^pWp#&wie4Yd0OE{TFo|bH&r9jh`CY(-40YAVDB5iR6sW`}gN!bHU?aaiWv)a$8x@ z(4Mih&dXl}2JE%yi?|Pv91Z)vcQKq}xF0`VLoS2Y!wNz@o_Hs(puYOMe2jkT>WKtn zgE?C4GE#25?`aMR4;=d3yIu}yyj)|TuvwuDFM|$xrL;SiC z^rR=@V+BQH{_nSaSG)jB1P6^1o!}1n>;UJ11dIh<{L6O(1PnRy#j0Cnn;l{u70%9t zybgtqSXwqzL-IRlS|edo6N~@yvQgyk`h3CxdFG)0-3`MwiV$<1%$S?hA0&R*!EUs4 z2WK@Jz&7}42NSeHdd@x>`yuRbeGt&kfM!eQZW;hB)r0^1Y_94Ztn*sYxW(gCEkZ02 zzwnm&JHvgX${ba@{V(hS%PwDMduOrb-Ecm${BsqnCyPT!4tSc!b!%!OE-w+V;c5D$ zGTo8g-0*AC`)bzZTe)ODtG48fk$5H{)8$_jLs-O+S)^gR->%M&N3VUcMgS@$aKtx4 z{WTjUJiB38i+zty&0p{4toWF8UWiW0z*@8aC$ZS2V~D#DqVo5y$%Xo zAKbO$vt<0!_=@ucX)L@VDGS`+x1HyHR}FxE?6)ZIdHi>E z?{^(U)ukr|+Qt7aMf_EOd6KP0u@61no^w|aZvf6M@(%3*``@jG|A_M+asJ8A|Icv_ zM96Y8N3FuCr^sCU&3=#fj9SZ6CFd$BZ;oOw=;69>=9EKHkSSR@ zDe6rKILzW+X|uj$+*y#vb0N6HQPR&!U8w<8Pv4$m-Eau1!sP0zxU|wV;A{Bn zkIu;|*iS!hcoYoI!1r_5Eq4I|%4z}q-^~#hz@n6tKxa8%Qbp`<&OI^1U->siKt!0Q zjP+G1wpfFLVKW(RV|a11y%}n+=B58Fa^o*ZzRZt=h`qnPv@mTzpo>qaDoT%fPbW%; ziPGOaK=toLkg`YYFf&(9^PQQSnVNd#hJ=s7nZ(Ec8RVrg*A`W)^UcFq3pAThZy3F< zY2>u*pyw&`IS|d^w47H^Qc|K1i$7aiaQS+s(~+HWfloTDs0io+L}9w|BlW$rheLk}~@c5-}>8ywX^s zY`#|WwG-D*ocn(qqNF!2q#qjU>obeD<`uQH60o?_K=ovLCA4uf;1AcFd=1{T)k5Tu zR`$qqt=^)(UZh}ui`igrT{Hjr-g=6)KR}lH&66URUDGaMr185O+@gOvL7JjS)T#Pz z4*QA3wKL&4@@06_sLq&NX5>~oWVPF$oai#-tptUH!WdL@{agg;)I|0H^43ol!hQ_F z>Yi1V-zhELi9fp&kR|-2_tEZd=wS=|xIzo84#UteE84)Z=pv%`^s19k=@i|Wy1g@Z zki%gRrP!+u9n6!4oT20e5RW1sis#1?*-UN?Wv-Kq{8nJBrr(_s^p=>Tqt=%!YSt*w zjyv8%|It9omF6+OP{rQ&w-py_i$2-e%PwIZoMB&VNjUL4Wm?U8O)U-E8{CBjvbVS9 zHT@W#YCgDjN+bxmDQt2}C8r!{PsN1Frpm2T(7N4CJ*A^wy34dpl00K)>zY(|j)nv@ z1vQ)R7e#=W@&cbe7IfL(yW5;alOry%mts_k=a3j6ul;;R^fg45I``#QmXeRoo`2T? zDqsOg^eU5O1LmkrwhTLCkdqf7S}>;BKSw?DBIK^yaJ-1sb9VahW!OPGvvW&AOe_ar>i-|VC2zsb z{0z?Ld7)D+4veR7I=ZLOh`;&t=Vtt%$L(Hw$EQm1kIyVgTGGXSqN_w}^US@jjWATs zQWE=f(0*rF%moqx5$a=leHX_>(roRH{3A+Tgr9q&R}K*p^3Y_h&j;l_OmilL!S
  • W4JB^gOGQqrcXNW@%=FX8k7a^$% zabGIiQMCfF9s9#W0Od>cs>SXMU&f~60SHnr9_>)qNWDuqeVShEg}cx&8(9wOGjw8u zwaSQ#D?IUWsl_SZ9e;fYW=bqRkuYTYEjHTGat(@J8I~;N<5+(M0$IhXza~3}NCChm zEE+p=4Kgt^-{^Te^^ioe4#O$`n^}_ro22p|ybgH_!jFFA!C4X!v$vnw+1YtV-5vT_ z&f_{jZZhhMG;k}UR0E8Q7@4%d;+Vv?-gO34 zA`*I{4lrw!OSXEH4d%Nf7ds_4mH;$%*0*op+FGb1EMhZK_lt_emq5xW3ybgYbNQZ@ z2hUpd3o8J037yxY(6MieCVKs;H=KRgW~jh&quG54poW<=MS0B63g-LVwOJL9u{;eC z$l}{f1<9*O#YB>riTH|#aUSo!SXwF=$pYQ*#RuV7hG6VVUMO=#f1GNm++z6w>FvR1 z?9Sg{396Cstwq~MrI_+lR;_!39Qk#m_A-Se-Mx~B51%hbO!PV{oi)H*vthB|_yCQ; zFc#hCpj`ECnGbw9S8BE{cbIKIY;1sIz2w%Rc3WWif zf0tV1*IWTq&A>|(;{h+~NCkre4-6tDfYb6cp>o3sbe|g=lR2{V4_(xR&XYLpKHHuQ z@Ez<`liVRh0U*-rgFal#3Q@_}G6rD$$JC6of#bn8id_H6(Fox-XbSfj4$jNe>!v#x zb#Gv^U58qIhC4V&DGn}Pt93oD#O7JN3kHq=l^8#g-z}%SH}MLKh*j$=js0v4k|4C- zb|zvmKr#W(K7=wi3k+HNcDGc(6#a~CIM)kCJefb z#Q6}#>Uhr)e9G1GF8~Hb?_f!O)0N!;3z7N~W@-C&zc$~&!HE5!B;U~@`^muwd*52u|jxY~kLZKUi;?JFY};##w8ij@sQL z7|7L~*pXFPN*xPxi*>1$S98QK{nVxpkiC`wI@`J>68f&M{pS~CJD=-+ZMrpTWubb!SLf=kP4y8? zh?LwVL2MH#l_kNmni~#*?uOsv(1<>2Hwb)A^;HHX1Aq{p1@uOb^&|lK%UqjK+iW7? zTwLbWsCb;_Zfk41y;}A0uo$#0H#>Sp%q-|TA&Db=!kWNm*!P3YijdlR@cK%q6V0#9 z0ZQhkc-Z6$Ge97kW4c7T)(k)uO^wo_^5Tk@-Zj3us;aXy;#~2Tl&99Xr;6~J(k$>1 z^2VxG)~oK!i8=Fp&H}I6x2M!(r&-`P1Vzu?OI)1NoiUb;*JOuk-xBS)yvoK+uPCn= z;Z^?(i8AFh9_BvbWn6g{)es$B50v6zrWEJ#3tygPpS%LJmy;zgv=wJs?29?B^P2EO zkDf*p2-bOb3t-=u8s(?5Ss5u*LqWSY8_B_Nk1pfaH^8)z6fV#gaig+FPWf@6V_O#6#CkZja9BwQ^34d5vsyR0uMQg}97 zqQnu)bL-9yZ_*gGYz?nDY8ouwUB9Eljn?B&H=}!`g2Dn)fJL?q(CqeY34w9_rllc( zIymeBPHu1d&~kYT5bByB7MI(k-WRfN*Q-)BqVIq(`xiK{!4X{cm=Ue(qE?+7`p&R zEn1MFa67E@j!iM+y&=%K$8;S`dB9Iw&)CO)n%$M5RxwF8{9B)*;Dm6PCy-s9185j) zxFWYUo*nJKRa=Kz3oLAGBo?D2Q5RCYT^9%s)Qxs=^Db{w%h7rpzB2ZRFZUhkH=C8R zoh6V}*l>LbkWe{t)ojsV*rFpl^Qk9OIV6F50Qre$X)?gR=ySbHg*|A{I?`{OQD4_Z zl*%8r)4#g8`&FBNv2a4dh-v;Jun|VsHEpVM0@1m#O*|9X41X^Y@aX|Uh)D63r{)-f z*sA#>PFzpO1*iy6M}aumT-gC;i*7nJ+90QyE#X=C=^?d5p&5+PZhi466cIT3w{nO8 z@!zO8tUYj2xPkEuz_oD|Kl0dFDx3fVAm-4H00v5H3ఱWrZ^vuk`Vk=Pa`y5vr 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

    *Nz5J3d-6#8d3v0&ta~YGEGe5-q5!>p zm_aJyL}M)K3@fQPGAc?5Qp;aQu+#+vU6nk{B@RN38uc1BkSphqeoJr*c#jJEe_l7c z1J%igI%NEZKZ=y;6Sz3DOe5h_Y#)x_iX?cwSV3?eo}bI|t**gCmgCq>y&fG1=C`Z2 z8>GvxuCgjgtE-9Kj$cBB>%wv)enw@;JLN1X3XBJ@!(@4b%>)d()gJ-P=;8vX-o|Qt zeIT$l77)84X@(M&%U6>b8}R!Yer*Ef3Ptl7dYegG>uWx|vlh>!v{HI9X9^C->HwP z?c;AuRO2q(Y<=A=za+A(tGPD77y=pC>9=)J_nt`0tC7QqIZaL98>*>+ZO+d{_v1R% zuE;ruwMBWq#uSI4;s*AAM%RuPc6~CDJsSfk8WNAN4RgKd2}vAhk_!t9HQ!jD;_Yk7 z#iNzF_1euYB7U#2d`z-4IA#mcr0vABT>}_G1iH4HJrJOMgt)iv_5Tb#cJHfXac-R2 zL#;D z0%w66S#zDQr%mdMU-XoAwbS)>hp;ICbo_MT>{Raq``MtI6E)`Fl+=dOda${fFLKZ>BD!hmC(6@5k2pO# z#gPBXaTo;S^=C^$ul_hMiepm3u4px(gVSXx!Sv&3o=ClOV&o$Su091g!-}W!^&RZN zKy*B<54V$k{z02^yvC&-cNZ(=XV>(Wd^yK1Kg*zlR->bIUQF0rTi1eoeu^Wd62RY> zG4n-rM)}H?+ubXUlNtmp_l@eODgAQ!dEJp)r{IJGS)ODLY=D0Jl77Wi>HCfE@}I9u zzit_Q_pp;$^UvGj^x}GmYh@gn9q*Pp=fLn%;onX0H9GRM8PPI}Lk4WEvs(DpOmlxj zL)w}9i)7(!Rocf{@Y=~YZ;Tj85#Yn7iDvV-aS2Ijmdl+78aJ(mZ8u7@!SU6R85WEM zneRu5$$RbU!{*ywP2*CZcNcHHoFCR$>ZM}v40)u~lNQYXV+Z^}qW} z!hdIN_hNPIWaqFBn%nLL6RY~u4gCDb-3tDaIa}dAN;;rEdUs_je^4ojGKnAMF!l3Mus&&@q`}p zr0#_Sv)IU+F6|=^KjVc~Yux$ACON4$sT>cOOy25SiDJi5CKDB&h2!H=y!c-sw0TdD zxlcmFYI9*MH^yXmPu?<8YsvAy+Ee9+>DR}LPA+S)=qa5z-;ESMjuD;|@~mcEy^bC~ z85Ytxl4oZl=7JY3z8(R>_3JNPUXfg1|6F-Z)1mM|bpp?%UZJiU1Sx!h&^Fi>7xOMNkR+gpz`|__<12$N|5& zy5k^ZW8J>i&&T7{WOLKGlp|}UIbVQ~>rQpSADQ^CdlO@GviC3$Zs*U&{EPvYYFZj+ z7p2Pi&vlMHJx>x@3FLB!<%|MNEdkMi$QJ@yy&IrelvvF!&-e&6YLoUI%dhc=A=k75*Fz%yYsr{?a-j57`|9Z{0k%nrHOl9ULuoagz?Mx9xvd}FvuYQ9Wv@@| zEhi)DAl&1lk1=$K|-ViiOguqUG=?vmrFGc7GG9QB-s4X)vN9sD(vf`?Oq! z5+myZ+}2q*(D@=L_6+E(2)ft}>j&)U zeW{E&p;7m7e_9FYv9o54#~B{hG>EVWhTmP->`Z3V53du758 zU(Efn+5YSTvd8i1j}|WJnM~Vhj4o(%u3^AC-CnCCAnJ&tj!-{2E_Ir*>l$86fgQj38dO~B!8s-1dZB|m!3p(q}%)m%% zHjp`g|1&z&*3NnrkpH8P4^mEujSG-`DS&}Y77i~etB5hbGqt*>U+OpLFfda1by3~9Mxx&Ba)onL*f zGyPJq%S1>fzIHQL(h|sDGiOL^Pkf*Jwwx^Px#rF|?`=^U+#iXAL0fVs_B>@-0~0=3 z_l$09hSg{n`)pwfA-PNH@r7?_?Qz-EC7JQ9O7Y<}_9OIhj4daeQ!=}SJBTvY^AZ{`3zH1h&?ddY`;vZq+S9)whJ|EIT6+P*;SC}CfvrjuR=zbv?I_({}))ctD)@w z33yM}XA9hP3dJ7V@_E7lzSANchwXK{ z290S+l47@^GVs(`8igF+#~Zsf2R3~u&D@q)&q&Ru27pwZ>+XrQx9<6iaUE3cQ+s_Q z%UH_iq0mztN2{~@x|E|-i}w0ViR?N|rzyB6HLiVKonW)j>{>q~*z0_@q$^vFp3eJn zwRFNU$R6mL>0Yz5=dH?J&Z!=px(hTTw3p8U2p%WeZM_e4Yo9*&<76tS!18>Jtxfe- z)nK|Gc65#{u)ief$nlbtFGexm=F{M=vj5^5WU<)yUxR2oCEl&Grv8+wsx33kAT$RZ z#SiZ$6X(hO>4>F^sFVq(f{S-daeYvs#xt&tvW;zBAt?CMBh_W99YRM2S>_l{4f`&F z1Y?c3u)!1JXmx*{mPxY#7olMK>j9Ok`rEag6KH1>)kx&@_sUb>JzM2c zYyBd@j@`0dMDN5a{)AuHy90~*ZreVg*_)xWg=J>QNznSkG}T zl!!O(t!jL@m)E0@FJxSr+&bDL1rF$iA8vQF`0MKPVQWW>D# ztYIRf9`<8|qo@2rsDMK$=yl^gdV@nCri)5S`30E!RJKj#q`eHz7L&N^=>7;4*3#qi zqvKYMUwfFEF~{DD_Qf3kv&;=6&4)89)yMfa2M=l5q1*h-NDWU0`nQk0RZW_<=9|UJ z?sF{b-mV}%;R4u??xcqn@;lqd$o_d2%#u_mGW_BWBcBhVIZ&d41H)d}Mz7Px-CL68 zkpXEVRC#vPi|P5fpxT|G$`Ot`={rV`bgNAW{sMA5oiZ~5=Z9TCFa5=u>F|;JCcKY; zpIXMe`D7xK(8XcSc0^@eIGOThF?kB=sLG@VPB48xFl+ERLlncC0Bp9^UkbL~u$qak z1&eGpkbVHxyK=0b^yn%sso9ilkB4!%=cQd`tIq={I4<+_9*#-SP75)X-L1SbaNAfW zx`y`C*9X;yG~!Rmp}s>HcSl2tJ1j@GIbQbT*qlNBVh9qqJFN1#IoY_dVMV2}2Qcs? zXqmnx+i-H|ZQ1n~phn+|eYUkAO0DJKbL}X%2j!v>N&LsN>Cf%h6b9B)(^}b(92MP@ zQj)JXh@N|Uhkj*+PRd6ow4P(olf8mYgzPl^RP`p}QnII36xI_!H%TePZtRp(`zLs6 zrGI+}Z;8wUqnM$X9gW##qX&Dq09-uKvh%r5c^eEmCR#R6R@j-Sf!p|6jqQzL6(+Cm6?^&+F9qV+E2UN2QFDd zg6*2Rxpjus*rE;`t0(1M(gq8<9DVI|g>L9dn1$_4;53mQP^-OwW<|R_T=^$X*W1rW z=FaEIw)-MFA9@1snc{3IK3`MibTX#e%_5V!&2rx4itzCnT3mBJywUcjUbPkll3<+D zlJ;PWw9vaTu8o{f-SnNEm+S(Vi|A&M4%s)sx_b8?F+}WxrtY5lt3LkQYkPHYIpt_n zcN~TyZjwHBS!Z3k_36IaJ?=)|$3r>l>a1W(bxNRA!mFPnyl7x{hW+v(lf*l^}9o|gG~dt+uYvF435I>XD8 zENP3Y!S5{ECW0qrOW6@VKGvRm>HJsh%C_POw%^VDWNzAQX)2RM1`#(zPG(7dc04^l z>~P3fm_LreHy+)Dx>~ka{|`nXCyTmIJ{6GPyNDaZV65Q?Guek`f z$z`8;XHCEP8R#sLcbnFUe#KIZR$XsJX zLup9~p6i@Fh(lH^=g%AQFKikVNrI_cYbLz2+8LlZaer^RNU!rScwxMKABli0RHD)U&r+aTXo3 zf!18_X9k!>0ZqTKFpAtU;msE5-5@FCJlOp>LVbB=wfgV@#5-8jJphgXBU0n;W~8mt z1)lbq8zg1Utn>42UbGqxgg!l$H*`mD>FV9!mZ8%-l47=y36Z4klcb?w2|h!-;c_VI z(_zbwpt7g08;MhwTzhF|&PpX4@znj`cJSHIJN3bsWByFz9gzgYSSb2#jz0QC=|olF zXi~K2=bJ^li})KC-PGbN?`T!0$x`YkPcwEd-9V5@je+Da5{87o z9B2p$rov}N*51mD4)I%?RVaBu_ zHufl)bqyEQ9}Hxle6XxlO6!q$?5ZCg!MY{KBSZZI?4z0+_Z`wyWwV^p{z5xl67Tdq z+0~EVMn-9|%6aRZ*mAe-(c@6<7Ql#)^YpoJ?sNbfY7C*WGL1@5QIF(TJCuFtPm ziyeL0Z9U{PFESDlaF{SzxM{eynu^E5fp#RYN9L^I&#~R(@b5u2r z02fXZhj#*+Wossgvr zb^r5Kb*0Ko!U4aeCGzE9cJKVI_Uq@@bmfNma>5T);{Os-W=2PjTQ(q8nt@_GO|CP zF*y3R0k7U$=I3j)cF+L;61Kd)APe+d!O_k$K9Jq=x#S$ zXK|-r31@0&>#)}HUi$T_0gT>NoSKi7)0fvfrm>3eB&%D;?|$q=|IKZBQ*<`n(%6x0 zEW*(~OwUw0JGVdJF4O7U9ga=QrkM^NWWwa0KolK5i`>a&myV&BQFGi?j^w^Hd868) zeDGPG`CD8ERu=sDdWoY;(teI=&le0|qVMXM==t!(x)nNyNE%X;tRB93XdHMXjUq3Q zjnq@K{!6x?m4}@){akS=fQp1HAe)CoY-W7?y(=c;Jpc&KCw7H?ha5L9@{uL8@J2xP z^Rol`2HEA7KX-a`-UN6za^X}+YHK8CVJ4K+Z)*TSYIhQalU#olT$P&PwA>e-HJ)!7 zVgB3ak5NB1c6)_c_s~WW$nBA%BW$Y?&RT}8Op1$F%sBQw%CRd7VxBu7(ZE_4gJH5br&#uu4K#uWB zHMior4F(>s;fq^NTxZK6>GN*;aL_@|irY5z@+E4MZK0jGQ)Lfa`fBX{SdE_#Xl1kh z=)kJwe){afX$i}@gm!<8U*D6|2aXj@2fB;ah5e=$jh9gEa#H2X!I zV=+pVMa}JW`}r5suDZ2_z*D>qnbO1r4ES!#=QwY?JI!w2n1kk{Qv3K0!61h81E9A1w54jM)^_HGga}eqjdzs`DM-V>bBQ?QQkLY}nOcFj z#Q45Sk7+(dfuz`20#6iLOKqqq;|3x7M4ncudau1u-myzdBqFeZIIDmgRa5|%Rzr_H z@@EkuIL>BCUDYYO)oJ|?p!hRe**}%L6!mGy7~xex?CdnH1R$1Nj8>)EWo2bYqj%p) zkV~moy-D1lCl~)#T`i#y&|){~01bosa)-&u$}-f4(Cy7x3u#~+2HOlhAz~X+pE+OB zW7pGbuETkrJS?b-j0_|fg?zsBy29)eeChn%Z8`IRaz*^+H%1leUyWv+SU1-Qh!kih z&1}jn%4_8cF0`tu>O?!gN%H-(3IjIOdoILLp-4oOG_1`FfL-Y~8r9Cbv*=AL&pD8q zavOBKJue`-&#$yU80zF8ukwVk)^SnM)USyjq(Vbc^~ny3=}nT^nyK!?m(}X!J^`m6 zi+alGG*PSiMxldl?$4CJi-=%XScuZIsg_!1(O3TJp?T_a!o}EsX_7C<;13(V!@0R_p{^FNkE#BXU0hO3^JPNJ7&soO=p2}h7u7Z|>s*kD% zp;PMxCh-H8_X0^|cRqB_P?@HmmcfBm=7T8)_XA3!%LGmpH(BqcckN|aiUm~P8 z9D{}91}eT-nXAS%orOuwqKZbhW*i}%+s(^{cC$@=PaDF)Jj*`1gEgWy}(H;GQ zdZqTKd~2-%&Ac6b-(L+t5c(x;kPq?WgYe_=j+Uw>pEQ!Ajflrq8Roi()ff0>fbkmU zz{CR&hrWOCexU4GZOONGd`isb#Tjr>q8pUXhQH!-Q6#cMu+&Vs&=IHc8T`E+p8)!V8mUlo z{P05F>EN#PB3k}ObYkABD!fm~4T;Q)3g@?REflZ4ZgBP_;sr$CqH@w!i3Kh&sfvY& zB-`l{_LYkOe3KZY2q<|(P_t0V5`=}i?&$)8(o(3L9$1)OXh#>^xrn-Yaq_!{0jFnF zH-v7~z3c3c))Ms#GI1ZjsEC4|<rauMgWO#R4pFr!K5ii1W2nDFr; z?4}mp{Kxx#+5X<~8nsx5xjLBXqIDd{E-Ugo-#eckJc@#+@rz^}E@ z>7}~5`XCs^DC*;7V(M{Zj1N z!v9Crd&g7#|Be5ZiV~6{dxppe*&IbEIg&CmPO_4{$HA$D%HF~uo9ub)nZ5ToaqN8@ z4vsUNbH3+&UBA!odVl^pf1cYpuXCQy$GqRcD6~_;7G7k9Iu34MFzh2WYji{2t(h{W zJ?o|LOnJ#g%1b`BdFi2F!XEt`{&df2_0P4skJISevlCJeOMh5YcEXN5Smm5wbrw`t z4-!NSwYE?wiv6-u3}o@{(Z?xYAzv-Qi4TJ4;_I?q+~_Y>VPTM!a+6K27| zAZ>c?9oxT=80|%2YHk+WLnTgg_5CxY2B;~Gj&Jx~C@Q}%rY3154@PXrF~lYo&{K5#K8c?dwf0bbFuZ~&2a z?QUJWVH>w9gYS4ky(9>5(VODrzVVitgDZ*;_|Lvp!UfLnA9TJYo8ObAr2AK|+^lOZ z3%C?~SAd(^X?~j9FIG7j|Hp_Vax{#rVcee(dP>RyxOH=U)w+%L znfU5PB3-P*E1uY64P2i;T>p2b1iXLw?RmbM6`5)2Mst0iSiV}|SHQ+_{92ewV&L;( zsjCF-r=O;;J01}hW?N_a2i;m%J$(STaT_*S@2_m*PaV!fhhI>L7;ScEh|wQ^x#y@D zN~*}XOccDE1+X|%X1<|NH@}hGHg(WSpg{IqAa>>c(}Paoh?DtM)6SM1U6%^NfvNLg zQfW?^`y7$Awp-2I`d_Tii2 z8Qkw}NOicle-#m(3|lyBgFss-^2D>!OFs7y#by3EMEooahna`rloBA86sk^J;5xq% zLAR?k!wSr&=l6{z?p)W!KRmvyP4{l4KW+(}JU`otiLCjUdZ*zXz;y8Wgtgn~1Jb|#T}AVOo!N8jBV zR!o*&;7|rd8SqXt*}3)~>W(=s6rj_3yeUxu2_hrrkIBnd>b&6=fO3_tvgY0A;DM)l zRf)y0TnAv^3-1hjXUc`%x})p8BQ0M0$n-o*6%?Y(kvk7F3r$#DWzgq~FBq=T1i;cI z{oeZjI@Za=84)%iBrU#rZ`9mweTI!)MqtLG&nV~jbEpE?!ao_+H*OVZgL;v+23JOS zuAK$mJ93is7*PffF^Sii!+#iMeUf1CU2@wSuJc>-2ME6UtS|H7JHvDZ-1N7v*Gn%xZcRa3B%?dHPgU225!zd%0?5F z_j_wfr=d~S9<;tofLmieMTnm<&d1^d{TDv&#NCR&;#=JoV&#J6LBdCqDU>y? zD~dsJpV6C@*v+7-4gdX+mxC&~+_v{vs`jCPsWo5mfUx-~23GpxReO9T5FIu7&^bc) zD2+p@uB^5gfYB#xF$9jCjZ>%;1uxJ-Ha)M;zge=^8Z7UrT91tXD;83FC(qxGV}&=U zx{?>`K5l$OTynHl^nD%>0iYY1sYnklH4Z8-HSq!+oz#N9hEnzhxIYJ*b`#fy3!7US<2CcKiw>#{q-H8bHRDq zi4&JLB1S_%{OHbYJE)iUmAEUk%<^tZ{G1ewgr5JmiAg<>wNBE5Be6Ik`DbrS;-+Ut zpSm8M%`LS`l+uKz55Zo}P~H8r+{HXgBiElo{dF_*ygw6bI9vY0RIA$Qm;zc!FAOr_ z`;2Pbi&`JOj@X$jU|$O$6A&mXfaqe$8j2HF4Ip@c;qawRxpl5YXFTPmnnYO2_FGVh zo$~jCpyagi*gEIX7o@Q;RY#O>uTp?>LBWwDqIL1v?03w*9RS{npDv%1frPP|UaiW; zdX+a#ES;9M=@BVaCNU?|K#E{)0oF!5)wsnyiV1qx@nenRp@8K(6#~vzqU9R`E8{25 zaC1WWkgfJ>H+aKYnTla;N0BJ3@~G!6tcU%<&93g>iBl2(H9`n9x%^Q9_v}^rG5V0} zRRHs>r{n0~{c`%Bs#f_bYd=Tph(Q^+Pk`Gn%PvJkYu+Ps2GWrZ=?_9jscWX(-04iL z1zzU@x81ThyxVkcBT;Sc#5uEDE^pFgTU%;T%eUcjd^WY@wdG;}UX9SNvs`>@>P>Fx zpIH%opS(0!yXBsyV41M!b=I=ft8MCve_xGR^0c5`Y4Dx|HXVMUJ?HJLtb-ego$c@6 zWoFo^jrdSYfc7nJ73WD{kQrMN#;e6S6s0};Y`zbb`VAj^(r{Z7akB>M0V_ANI4Sg) zm@_J^2Uxb_gv$Y+*KNT&;)rWB4SO(H?wu|c<%53v>5B49pnq%6TS&@DcqYlH_}C$i zrS(KFzGVbtay&+}_S{PJs;|8MK*cg$H|Io8GB=dIwz6LWw&8!u&q zPP^X+2EBbQHdd)~_&7o9Q(-Ab1E{P^&##C8@2GaP;B@YMioFZTPD`^B8`iaNy5gKq z=e-<8E{rXuj%9OZQtCN6{Dc2NeNYKLz(+2YuKB>=NElJXh9U}1asf$7PrDo!ygl$v zJO4Ic=>dzhRw}FC@r^*Jef>A_&-LcTkvH?#BdAX(@|DqrVhf^F+pjihCsQwSpwE0u zkY&?;DjPAfrp| zv2XQFhw|zl*bJ_h2O*k z`04PeQe;SPKd%o-CkvPx85!|?=H+AT1390l2}9P{5hr4?Lb+$7hL@r%I}uWTekfE9 zH}Qi|L)$wDHVm>Y`WdlToH#2Ohvx%z^L`d~K29^Nwj0H?kr^qpx7M!jlWkQJK}X>j zY%e*Z1vl&hMA4I$&dR*dSa&7zxyODcX(uz_6a@sYGG%_Cuw@W9kxg*AnuQ~ag|8)F z2IMf9d(I=1K!}>oK^kP@t@$juPYbo?xryW4`FAEyh^s7Z0wx;N2~VK;`N0EScb_paM=QGWjc5{FiL^S6kwD?JnpT7WXUHs53OFw)D)JN=(S}3J z&H-AF$@9sr=a0ana8mRldJr^c@3BRRqEyB)H9iY2&g4?!F+nw!>k!`L10(iMqbk|U z$ln2Ge;ws;&eBE@Ea3XBsb{NtkqQkl68g&4C{X6E5&PX+96NXtd z@XS-;esdqFsS4go&S7^t*fC)6lSF6Xg9L$4XV~9!CQv1z?OL*23$g_xhr$)AoL!MP zekfi!oHnCSw>PN-*&~34J7-2Y2@6hZjgRc-n#<*qmokX5ZWFJYi23ZLy|A$i`G)$k z4AOz(|sX9ZSQ&X2xTe_@Pr+0X!T2shXQ)M((?ZPasO(vUb-xw z>untim5fi3RQgNVZ))-eb$0($WVN&nX&rPGtaH!#LoVesHTAlr6EP{&vVk+_Ck(uD zoAj!c9z#1^6KaRX8)R)_2Q6tX<2+X=zu-;#cZqm*W=BH0g*Hl#hXMv?$V+3P4k!n= zT5OJ7AsUtAB$`fV0cVi)k&@;J5-;?%=f9y3?e{}3Y?+I-;!C@}--pou^+r0wCT&M6 zwv^8lS{sjwNC$b&5bh~f`@Gc*74W_g0QX&m7^f4^y>^TY2jQQjihXrUCe-2$-?yl= zke0HU&hYex8*Wj3&)Z|vmNj_VQT7zV9cBhb3SkP?0~Y(5^y9lFg1RBS)Q~1VE)Y5{ z`Cc~jmlMig;ww`xIVtpLjhoz#$ZDE3Dh?WC7FS-(zzuE9dCd}|+mg?`DfLxpBn1(9 z#8$2{Ow5u z-K>Ee;+z)LLP%Ead5S3~<9V$@D0j8TWZrRn#>s06RNq;97PJrS#!^lL)$L*sxn<&% zVy4=uS@6N3H(JHqD<@djs8tUwxKR(l8=@fl=)irec!;@qWXn+`Bx$Lo*ypkpcB(*i zFR1)^?#a;4>NwOOh$I5~+#-C68w4%w|3QKB9tPnjGqnXMbheHt)SmHI2pog^ajS0B z0_Ggd)TZY-@d%XCn;l#TLZ6ulLC8xaA_A~xr8EhvTS_&&%Dr|o z%4Uv{>0bd@`!&sW5PXe+K$&Y@P_Pp_GD<5sGop|QgWdU|)&X@;$jX{yGGNMQbkS#i z>RC<+ykFb!ZygLaujkS{ZY$w$_V%=Ca1?AedctXSo{pXcVk{uYty zbX9*2Yik-bQXj2yXg$1Ux}h|zd|I_N|Mk1Uz6s>;7T6o9V-A~gCT{2fouPzG*-8rroQW-vIIhJig zCS}g2Pcjc6JH(l4*PuU|g4rL`35$5vFxWJOGrD(5L@`8)U!ZJiGPmB!(&dE8>kKGI zyZ7}D-%;}Vs{Ad05?&7kX0NqJt9w2F?nxQr03QwxKHvjMzxkcSBz5zjdH5$K*YAF* zT#N35ec(J#uvm_v?O*E?b*;Q#jvo%JV=~zS7zX>N=i? zU^lv%RI*A;E)N(UIc(W)=-4D*k_r<@y?u}Dd$djs?w;Iyf1VFI?<{Lx9d-KJ7W`r0 zkJ}6qe$iDQEOOn{Q4Hh_Bd$@CyDiYGECl8;t7`k(6sAo~UJQ%Y7GOPpsftLU~%N1{|0 z;}tD7i@(O2c$^cVt&t~38Aa}IC%2V)Vv1*B1B#m-h_GXYTSCKK$G3!u%%OW>&M6gd z9*XL2;fC`l|2uyBJHLB|s=NCr{?(W=qXjs8(yRZDk=e?^>g=#fT$-U-b%m4UWy!C5 z;Y7ADu{d6NlWRkWvGSl(QPbA*i=#(&z~>{+8je=pqDTakj*~kQ?sI-wlI6;J$P0_c znm&~omlWP69~P97t;1T8L4g3L9F!;AsPydyNrz}|GZ~<>ZBG(kgEN`XS>#ZbXi=xr z2wsM*DivV%8?Lpi)<$iq(WDSoY}7oyRS zmDxrbxyF2)(&Rsr)v*msU4%TN_?{-~2z$Ym0?7qA0=3)&FX4Wcj~ z%y3{~oKC>GAKk@m*MDt^Sw^(eSeb4yw)&sM>16&KVQ?TS!d82wc*l z+bB^sa6;Y`W@G2ZwZkxxr$d*?+N^1+l^l8IAw9xM39dgth-J}@hz>dvzjr zQ(3DDX>F{X9@T<4#RJop8{7x>c)ucqrq!y^IB?9`NfH;-MNd(bMAl2g5y5iPP%J)^rMRxWKf{td7Zq2^ltNFP#TTA=U=BK=U zY9Nv}v! z$g>BE?*}wW(7zL+d(_$4-GbdpcXiwbwk+>(3MKXCJ7OR$d7Y2Ge{cOx{klH8xq^#o9p3;nG`s>SZOQ^6ZnepX ze}OqK+9F$rK)egc;sptS3#BCS-^2FBlFoOVrx1%L*j|;9jKg(1dExFK?@5)) z(_fvYlO#-?At%|%3!)Yz^hq=k5V);QdaV!kAH99-Ml%6$q$6?PZZ#$aw*y?yslPyO z@`jEc3(aPpme|d|F*3Jtm@S1-R7KU%j<@bQo_nX3LK`_EVu}--R&zF86_tHT+7qaoG|v)6HF`9;!)H;l1VE8QMt4N z!;c2Cc-vjL8-_tD#}t*fc#BYySggs$NG-KoT|GuEH7$*(X=u(T*&Cf1W0=S+2kO&b zLq#s8IQo+hC?0aCr?lP33;4BTRr9_X3b-IwEN6#semr_s8Uu>cep7}!Xg(g9N_Nlf zaSM=CAsKFmJ0&nC;@LZUWXEYpG)_xG%{GIwh*ZBP6Onhv)1TA4b5?b`J$D=aqTH-u zg8R~ZVu1Jl+$su3OfCOSVbIuXTT2)Js8q+u%E;tCT)8nnNcn`mhWqH~u_~M52`@?P zN5`UIE9`R9LJK&$+%Uth@A)#NpjdD2*1Z?ljb@+xz3tORa7CZpZ4CdfU_O-fQupcG za+iC}`=q=&n@L-c=S<2$xeL7Uk;;YoL8Ccfn&ixAFnDq#Ej?$)Olmq%Go8&tytjcJ zMYE|W1vSECYPr+T9w=?@qtA|k=?}$m-w#->&cu-*gg$j{Vs*N;7-x2q-l9GZRw(X=gv zAT=&|J0nuh{R3*eF_B)2tPka|Umh3*JX+5~NeRA(N@MrkKu9C!?*}LE4+t5*thEw zw;q9DIvE%laIA|QCe0M$tTWO$wnT3Afg5C?ZxfaQ=TLwy(SH`YB{%n@07m^n<_6u4 zdC!b}c|i9dk^97!qGH9_foGM-Gi}2UNjhx10c?S`i>+7Sc1Uuy59g;hEYBb`_ijG9 zb&EztKy7jM)J_36>>0p2VYb`|1XMiIzy9C~IGJd;wl`X^j7c@%wc*r16XBL^OAxCF8E7+q=!(Zq6tSFS# zp(Ok^-i&=blWw2H%+&k-Pr5?*J(zuHt`N}3xv~esOLw|k8yu?KYOaSn5TxexjN$NI z{`^en-fV)a$R+ldD|cJhqLfZ@4^d5!!zN%v)l0*_Sd^X%6*+?XQCx}zY$(m^-_+h&T(2(T@S)5Ei@FnYB9dKd|mcq z#Y^gAeXre-%(j zX1oj@DNWbQaW?)oUs%(B__33rJgr@Y#`lUtmEa?&t<%d_ z(%V%04+>e5&$L^AJZf75HkoA7y&myd&eMscxO=h4CBcACqKg$@Q4ENG%s)F%M_}j)4+% z#Bm1b)nog~{Q0QEbPg{r(Uq{ed>Wxd#;c4gzuhD(_!muH_mUpIZ40?xwfnV)*b~#; zS+HozV(@I%-0&HE;p)kejUX=r``ppj(YsAsywO3+Pj4JCJYiaVCuz0di<=Gf8GO0; zK+yFaEM5MKpUNz~nx5(F$Ih1^er23qTjPsRkhHko`&ziV zzb8`KF~YM>F^ciW9)lJ)uXKT~K2Gx)>)nmJp=%E!i0!o3toS1a-vJyanYBG%L_NIO zqbnQwJc8TlMXuK}JVjil&~Kn>bXyJx&F21f@&_AjrN7*77d(>g7yd|b%vs8Lil}G>rE{>3~j58$=-^R|7)!DuKhw6zl4Ndlq!Di zrCC}1DqD*YRyA_KGxmsKE_GP3yr%?9Y8)}J_z^d&r?~}1>{6D*&Y$1n&P&GiTeI1pP0V^ zTk5;M&Y~V$LkXdgQYBfNVsGbDApNU-1rI%Xtmn^QVFP)y#Pav1B?Sou^MQk|?PXKC zxjbLLSQJMg?SdK2NsC3r57LU=-E-k@aaq zB)7(Z)A^>j;;8L}-1^cP8rAvv1~j6VY?Hzn@W(B#j2hJ$KX~8EA;F%TN7XIxXY|z@ z%_6|E(j~V1(Xrc1Ro95QpqpMXw78e~PKRrk3#9gbhT{9eyyqF_9)t8*7Hqh@O}H1{ z)a^)ysI;~Rt3LcCb{P4}Dg4t>%r6bDSKcX_T~anbL(zTJRN7fu?5Vomx80}IRV-=> zO!ya`aH0kJD(TSr`5dQxv<7o(D)=jAb7i)XJnZutWpy!_Z}c+fzLuB5xd%>qaQ=Mn z8;}t|?>9DX61Qjoedpt8rQu3W3tkjdc0pPYI?O=YcX{EYeg;S9+vPD~Z`$|~x+LwB zNXi*E@t%>K=Z4@zGCrD%(>y-f3ncVyB%9}-y{w&awO88V8$^`eIp?9eNa7C(>D0Zq z?>Ra!kiZHUNwf*Kdn0KyRas1GFaLfZI>wgX*v_{&wd0ZN*xj7#SbcuUV;6W=?iJg% z9W*o9NfB$rP>|5ON9^T&c9-Rw_;nQc+24%5;sxu6l^NLekL(dg6FI=j1;bIQ414syOMd9how>c~pV z7&~w7v-l=z2b|rEJ(qS**UW0bW{2<78>GMfOR+7Ada_t81T!dVlY(Xe>w3u`M=ux| z<;2W(21m74yX$_f>NdV4B*7TR{MG&0v!WNX6($YCw4Q$j6m8iYynG$X*0>{T4NJ^y ze5ixNo_U5dBf3ShQc9VZOI(dBbWp{@o1&AZK_J9P8fwBT;swE={ceB_y7nVFO9 zQ>i?s$D-^6J*cw2jZra_>!U~dX3kdV=ejGJ-r;rr7XFr3ddj-Vi=oN4cxmOzbn1vCCAH zflG4trZtx29`*2D`xbgw4m236#dR-?%fB#VCh!?&8uvAh>|Rcv=9BGl-Kz{F3le^| zP218^D;VE$wv>z@lU}yy$RP%p1Ydkpr3%#QTj%tNIOqwPCLBeGomi0J{~R-C<)g5XU@&~~M)P+f0o9gMPd72l zkDT(B!>z}UifPCKsVF^bdOXY`+ebocg{nAM$IE(5ZuxJ%?q^~drM}IYZ}@uZncn1R zZL3jl)ZqUF=Ko)OUh#(K)5QwKHOZbXTGIFJH(bbjB#up&mjxw}^S9J>O{rYwUiRoh zi^eI7*<*hK*T3ihlfyE6EoKX5`+g{ht~U?r#Y4RpDfAYC7^|#*^P-Tl-;A;caC7^S z2ok){@3AEjTQU?X+xtXDM_%6)X3r0;lSr69X4al8>FfW2nMmXRy(>9yGplkUX-rF( zcAgV}>)^S+R8|^gFgV-4Mnp_W^^EeQmpIKgs?npssS&KQ+FPI2a<{yj2E@Unx6EQG z1=N*Sw;#9E?H)qQyw=2WkGX-$I$aJ0gY6QklI*VUq232~CIXwFHmmje=p%6X^R&9B zQZASqetR2sr}OZ^mEMfs?A7q+e!N=%*@aWg2rO#M@qUJxtj^ zd*edrO)joT-lso*l<+ffE{pD`SBZKGK2VS96}F_t^VHo*6j^x63BTsW6E3yi;fz&I z2o|TYxw-$;4ZIDlQwU(1eJ2OKEz)4CqOiWsD19c9PPDH<%ic|OB=cx@9}$u zft96DVkV^QlGpWAD|ug@fh#3%GrLzW(KMA`yas&qDM{S8kbEI=zLQrZDdEBN*j4Pn z@(5xB6C48mQc1{2C~E4io%E%gnjgv_rEI>buk1ngJ*kbgE+wZ(G z%yIuyq|^2b#B>!JYbN zm#3X8J;g5Uc^`cxROu7fdxd4j|m%!%SV3m5kL|Qh0 zThE=-`iwZTv}v;)Ps=6+_*;E>7eklCocgHCim@MGDr-(N(sF0e57 zgGlbhL+J_zQ0M6Fl&TyB2m@)+vMMb|e0ciWcO^rF-* z09Vv{uFX+y6Eiu}nkfann##$`2F*vuogUWKGBbAlC5Id@?hy%THJt#l%q8?l#>enG8%S^I-GUA0Xbh{N3RXt-@V{$2V6c|3ecD1lZy>x zP<{}57cD?Xj0}$g6LpSd%SL1ZA_(AXukmiLbNyCGiv{+m}moQ z!BjIfeG~a{J7V=*FiQIp}tO0#36c%!yk=^{Hbfl72Z$roKEPIdrqCPAPSyG>d>K}gy_Z)^8{%AO0h zTHH8Y_-RN8b1NMnw;(;B>ioH0TY3=wnYRcF?GvUG0n}$|ZgEJ{n)l9JQ4Z;lEZoqb zd&)|mIBNk>A5qwHG~f1pvIIft_7951WvRC&ik3ASiZ`9SG7U)0;k{*A_u;+})H6<8 zUWMoEZ(u>l)!u9I>hw6M_?MHJt>65V;k{5r5TkoV#ymv}OO$!BsQ-5M<@E(vGSg{m zi>$vQn~ws=EUf%J>`5ydw)O^>?AwJ}XJ@h+s~X@a6lF_{2>7XJlX}pI0J3Ot$61{U zj2VG~vVDLkVaj;u1f=Ff57_o2<|#z#QS)jaqxujIy!^Rs`p^eL`fk{~@PEl{3IxZ;!hgdh8eej*H+|TyzK5oqhnR1a`K8YaQQ*D) zzMLq<=W-85;&<3C-Symm*sHCtpVd4~Hvie?S}D^%nt0FuO9S>(piIEQ9rSv5a{X7j;6|F#S7p;r<6Tl)QWrCNo(i={1vJfRCP7P_MC|Da8OBc@OtWKp#)fUC*T&ST%S=74IXWuxV zk#q$#Wrtzm%k_ipE0)ssDlOHH<9tNNRGDeQC$eqSz|fGOKM2JjXz*MA``elirI|=e zf6n2JFW|tHA+u5+S6;^xO6%9w{mPZ6_!eP(rSWDY5=PiFd*2An<&<~*)W5#5@o{cN zZk^IVs$}{z#$r+y`0+OaP!^f8?e9{kr=tU-tK^29XF;2Z7A(VRcgex^yv&yQM3l?{YROI4KsTodZ1W4y|n(bulWHl_J;P;Qw;E`oqLhc{CmTHS`xI(b|o0l$kf zmsYI2ZzBff)gyA)g%s!CBR*XO+4te#QwKz5MX>8C>V^j=^vl%U6>x{ateJfA!!_r= z|NGT)e17}sLQk}pdsBaXWzM6LBMx@yPF|CFOWufDceaAT%U;GKP-4z-^v%*Z=X+Bu zALh1tGfCwfC2M_A-QAnZf1XX=j~5)EEr;+RO|5r~9}f4#iOGm;>JXO_Li`Vl9nKD_ zjOFrd_pU9!VYAQon-oNcj>IMG>5*8Ub08Q(AaRyqCe7+{T_?NTOI@*_H`=(Z{TsB zR8(!OQsG}~!@hIYnX@T6M>L||zPh2@^{yLjqp!WI-O_J20D9mKjo(@HM0UP zR`Rzdvy(kTIo$SlCiLZ?3z{#G?I%U?>kYjqX*(kwFRAhwoO5bfmt4Cqc;*GGtnaTf zgkFVKce(&yF`lRb+@_Lcxu_PAMB>Ex2$sz4C%qM!?~dOzT2**1q7E zg1p=d(m~so^WM!BjmhuY$Iu;R8Rv@+B-~?w+H%<&YjSBQVPCdev3l_=XgufXQ&&Oq zF=VS6%v8TvlngNs2yUmi1ivd=T?l(r==J*%jd4n?tJKv`%Ms?o8Qk}re75P27WZ@2+hz$4eP8LB528=mQ{Q)3 z4V=tRnEJreDJVXCw2?{!e%HZzzrM0j8dA4eUUOx91#ly|i4@dSBPyJ9fM0|3k{9!v z_SpBLuUmhU$zVD6^a}*&*T?0+kq4cc$1(`=$4d>`Vo0CF)bYD*N?w6hbI>5{V zM`yBGKxGEkT@kBWv@*uaeIF+@ILCYYDXXYL+=1BG3=L+wc%qO3)`xnK(`Ts^H~7GM z?IJa&$f)X3MFw!2Pm9|lofMo&y`y%zx>e2BZy!IRc*=+2v;Ccw{g2=_@0hVF}!3@;h%2T|0LDzqhBwC z4v89;+&X6`lL$ncnRGui1qn9fcWp}oTkIK7F_B%8`z+|#EYe$Q6j(#gjfW~@uuR^3 zhm`13W($Q;+W)=Q^r56eK``a?d@JOdn7tnYF5LS# zjfWP$arvz{9yH|uQY-d+;tW*aWa;eB{muw9T2&aB>d<+@E|2t`&r9wna0mPs`^R3DqOYy8ft^a+!glWTd}W ze7x83D)wmY1c#d0dv5#Ot(R}H&?hH7a71DALQhYBA>ccGB~x4bZQ#lI`3#$dZ++BO z^b1u>(Z%^_u>WT&=3ZBT3`dGQQs?7hBUJHP@>0f$7%hMQZe1C6mZDfBHj?pC6PK zZj2l1fzMzpaJ4j#6BIkKkxYWjiT*AwE+B@l&zO?Kve{Y{W-HXd+e{qGrKT)%wqFOu z!w>Mf*B$cJ!+@9}iXLHX__uw=OP1Hksc!o(nX=93le6Q!G3d;TPL+dJwGSo zZ9R6CHct5j%*c0Z=SyC^%v0U!|F8i5(_8)D2Hxq-_Vax8J!L<9e~{u)n#7ex?}&$1 zHXe@-rDZ18JS3X4d{7S(G3Icg^&HI0Xxxk9<_9}xGlVMdENAP|v^?=<1wIq8JcG}g zg;TX37PM-HnMDW(VVMIC=5eg)mb&YuHp2LpK2&CsR9kVx)stmlCpOU( zV!D$GG4;}pPIQ~x)b5q_QxpsVe>i5^bPzMW(?=kJ>R2e{@35Mi_=X!%Mx3I-Gr}YC zkCdJNNU~yxv$u8gU2js=Z{K#gJxx(QR=cAGw0dFXt%t_1l75~uJ3VR|k%eYMYkxee zQ;eZzz#6yWcKMmq0ft2$DaSO+QIqhz#s(ZWOv{5&zKS(AvCcvD3cYWsj`fW3W7b37 z_noYnp4nX70@#?(RKZfhVcb&Kl*?+N{s~!8hOAi`BRAI{Cs_VeKD4LydSE0Nt@=2s zDzU#v`xPY+*QegNo-lCn#zm2bdiM_3=)!vDAA8C!S$?_B`m#Br?&5VC_n4I%5jGe) zo81pH?HX*DXs1uqN@H0WwxS8@D(gkGem8ybvsQ{dhp>h37lK^fPx;O|g0Bv=kxpIc zSOR{Um0EIPrX(%p7nR;E%Qd#YGJ^aa5K+G1i`BA11Y(%e*_Is2TaXrodyj6ta^^FpW&cdZ+-aW`l zo?LsaXPcjKPP`}t0mV`d)t3j2d(K{8Kz6j(WYk;ir2$bNj$3qFkOgO!8snciP=Jj=&ql z7l)4OVf3-mKqG2PPV*P~KjkbSPgCvd-<_PLdq~7llaKWreC7@r^QnYXKKxX?m@EO! zDae(m9>om9mZTQHV7k$92e-ob8H6M~&?id|h>r2n(vzfnZ7bj$E8<^AVvx@ib*WV* z3rEa1=bQ?--B%nn$Khh*=~zfvqin0@UAw+_^ubEWZoLv5-E-F0>;ybr{e6*dRf>Lv z+w-IghpN}9hrN&Q-l7yi0`{n^4;S|rYQq9GUFRsh`d^(sea&>sXGlMV*U~+z5?RaFPtE-{eXc(6@{Nq$nqf_dh zJR|+E_Emn}Vux5!uSZ|*^(1eLPCRIlt#pE4!kq>Y=I?sW#h~sfQSnAAqhQJ3dE6B5&kugO%@8EuWbfiUA4hbV_s@< zS~%)e8``oBsEOAw?uK~Jv&8vNPg|K#a=#=ILGa+ z7aIk@m?izL;*GhT7|q7H_+r31W8U7P%Tw=5I14(r&?{=^%bQ*YJcvL-q9Rc1pKd+r zgBFMq9I9Hdyh$yLC$Jj;mgU;2L!v#+zfpQ5<!<-d8~J- z4V#{E*-+>(IddRN37OB!&{kP7DvtxtnxCZ{`!sQSkB{19iT!=O_+wV_UlHN=3q3UT zTJ{6hk#&6cCR%!j(nV-z}CEME%0=MzBh| z$LKEXU^^G}>bE`&{X5V841AWUw1JpK!_w>85_juY`WZMOL-|UIy`5GKr&ERwGY^qTFE~>-wkf&Ic6;Je6|T&wcRIjWyuF_vzeIAs*qu z+p<~I1@|m+Z@L7C=f>z+Y}{uKnpxO-{?nJ+k^zx3Up<(4NBJDNtVCZRW+8BhHCxYn zUMYV?OPny+aCLC%B7}5)x^a{E?e?jV$YZXk?LOew`x)1qV#l=Vv@#0*6SeC_q|6 zU2n_qBY)yz>S~8ycygz)ApE{Mhifv`?N!?DyYX$C|)38#YG232&nDLrXdxh1dykJBUdGi+Ws?ihz~48{cCFqr!MGU~X5?}&Nf zDHlkyZ_@e6kna#bozsNo95dk(mvF*kg(-&PLh0W_7bBjtg$szbhIt+J+-Fq`;vJPT z@cxD$3+BL$?_R2B%!>NN+fCaXGiuPf{5hrvY5H`ZPHLOwM7`-|_?cYQ54M80kr&e2 zyP@C#t7z2^DC^aYhX#VL+{okxFN zZ2-R06!L3XGZhxg1dOHRF=p2n?r6ikolZwSM|`krWy?{A1zN_+xXirJyP~J>ToX=R z@Qr1U-hV9j+5e;LEr8nE*7sqwP$<&U;#yj)IK>@Wq_|sgf)tkk3GStMad&qJ?$F}y zE+triqQRkGdVlwvd#?Ov&Nq{p40{r0XYKXs^SsZBCBR*^tgcoo#I5gdTx-7_m@XED zghO`>i3$CnNspiz^H zQS+H7h!7xDFXy?R_XJ0(TjUD_&*&f+e}>k?D+K4dpAX+U&2vr_7xP9s@IC5o48bPF z#ryb4 z8HyiQW$8S)$ljGaiXQv3B|mGmv?48SiiF@oz<&><0BT=?ZXJ?6aL1vUFjAdzZv+`F zLJusi{+eGj?2Pvv_eT%JA*QD>Htd&jujBkL&!R%q0kFP@Q@ z4LhPk;z)TeX>iRXbzOr7pzhPMBmfDRFYt5*vRvSS>Lp14uMaiMc`Hy6=rb(ZVu?Ze zo2JeMWR?ag#5Oee0ahH@!>DF4DD1Y@B<@v~nn91?&%HV$Vtp2fx~$&){dBW0GFnYZ zSnc67v13=bIRbh%COW4avi7Ne3&i44-6X^RM-{T zzTri8B&C}N!RG~cBv~u3Wc0$-$jZBHtI7Yj;80vpeN5Ii6Gne%4*!N^>pLuB_Q@V1}GKEV=EvC znzp)L1;=(h)|;QnTZ0 zO7?517N%`EygNZhZd)-WD{b=e5eEN==7ncj-?n)8epalev{D+~^KmIa;8f(q+sDsT ziYn`EbM}SHqShrcd#MZ1!t(Rqd93KZ;D zXho(m9b!$6^p17(8|h#2{wwkSXZ|+d`?PcURj!I8=-1|$nbiQ6RdOZ^zXGZK323YS zmg5y&lE$z`X+VT`WKv3ZaThvrT#wK_h&`m)!F-4l7|p39{kTU;GPBtx%1T>0b=_~A zXiiR3nXZ%SH86WUKTCak2SB$PfaW+}GZ@Ev_Zhl^hO zYG=iDNnw%bg=JBX6?ibeUr|l0*h}1Fgcm|U&44!}xOfnF{NugT$c&b6{MTle!+5AE za%`BVtoaKP)^&gd0A}?=LDUu%>Snk z$9DX@EB_&R@+S{7i}0l{LCIm5z(A_~`J7gV8Q$fhhvf@ucKd=0i0JY2mxUj3s(!k=`N(2gdyf#P~1^-4BJE~0QMxrl)SKFYHD9jlfZ`Z z`4)iGbweBPf}_B8A}9Yt*%ba*G9et$f4R0hfBy2YGB{;+s+HPCDm==kI=jla=MgC< zxM-jiZZ6stc77p9)sK98#MVdU(-n+Ytc!$JW97V7)25)k8REVs2tDnY4=_HC)_+qIu@ zv{6E;U%q^?@xu{4FE;3`Xl&Gu++UjOUeI?r$(-(G(A)js{l*(>R2_bC_(h})3=Sdd zzG*wYvwrdF_Ci?d^z1AaS6|(m+sHTF>3T=>p(6j8@M})_M|d~7tgQ%Af>mKUAgK4K zZv{Q;auuYnbTz8_pg3vqDqa~m&HPSFoU_wFV6 zx>6FU1bB5>>UJ{#e672UUOShjK6Sh8(c zp*d>%Rec9uTN|AGUV8v>{z4*Mq)LO=kN@~lV2j_`S*qNT@MRposA9qqhL7#t?~bh# z62_HDS(sp$694t9Sdt2|*Bf`}6kgLRJQbb~*F>*bgtfNEbd0nD-zlzJg5P>v2>s^M zEj#wspTN_z4mz4%PVMe_+)!Ddm z1jTZNNv{S^uY%=D+=17jq-i%{|9kz+v#N?UhN+LtrROPykY>0VXr%=G%ioz1xQEnuIYO%2 zk}c!d`w|pTN&gXdvhfIJ?QIM1FtBO55n-W3z5zj-R=vvUTV#&~<)a@cDuixD+(RQZ z9wVgtRtrU6>$Z@jUg(Vp{sbV#hx5|Bd-~YHBlTrG;Rnz++G; zFuMl96P(l{8piMa`8AAf_SU6v(7Ljn;XOt3qU>ko!bQ+M;mky|Cjzny9-!&CO+TND zt;qDeDXwq&0KPb2L?EmHuT6dX6_1|`4J+W<=Y)iVCw&z3xzb9}G?ML!v*mhA)=7(d zv*p&DW-dds2oDUL8<51ilYT(xVw^7SSMH@ZIYZk0Sa&H{C9ktZ!VgwO66vr= zGSeC0zf#)uop(sTf=yNRRaKdEbRqz|(MM(>=@$@39r0VgnyE+-#EVKUZ_bM_L z7l~R12R@z1U@g1);K<0{;wkgtuXJFrI~)dADpYloR6E?3n)sTZKUttJ4cd$6g_hNh zPFD3vBYuMQ0aKWgs9bCzP^k9)VreMZB8~B=?J_3fR&$q5Ed1~WW-i%+Vm6Fs+Y;K& zuDx7kSEgbkE*bo!ngcq6z#t|}nv*2Km2DR_CqD<{-{jkoUUtLKKJeoDhn)PBhIQVr z2V9o#3D1C*TP`zBFP7|w_AA?po;rXB{e!}0E*vP7Mq|A$SG0cfUd^EWPfz=M@U*8% z-W7v({cg9mv^wLhk z&))OKL7e(0(YSx8Z6om=QODEfQ z;f8_+vy|NZl*syXDcSG`p){}a2d7v8U#&E7jj)0us!&g)l%+z%4~&HDt{A3`u+yq0ks03-?R?E%}Z{|%pbrmISb&>G8aZM&7dI}-u6aigf~ z<%(NuqJgKTRK!PZt2ulo;O!%YYM?O{vhN8n8SHj=q}hnRanje|pX z=$+3mx3HiUK@~~WBLq+u>?k|%47A=AGCi@RMOt)58aUO4Y3n|UI3-K8QShiW%;j)# zgth3`n9l?4kXG5-J`T~`?GdM~O}w=j>xwo-Nijn}^QXdAi#} z<*IdSZur%Phc&J4F*NgY^-Gae0-Ll?R&(vzb}jd;1NIqg2)37=9$K0ZphW28N^-HU zq8?MPqRo+?`B|l|J{|nrBcy7n(Qq`qgDfQ9`cDk6?y(dk+IX5@a4df&o7UG zk&!x|%{9+65DV3-vmKteiWLF9ME(kj;~5Kqf+iK$*?u|%Z6jeyQCP!u38=+?c^5Wq zC8Pv{G0p-*2^zUi$_6+vfUb_TEdz*{UMO7q=-mdoLbAAoSZYwhzPS5ig>8((D%1WbP`U3lh%#Ojj zIRjcPeNcSF`)dAEgaO9Bsc2VB*&-^6b&n4U$#`oVx9oh>=Clghf%W!>LDSvVxG;|4 zbNa7w&iNySw~3ohg2`-_znmhR+*X2~eSFQ9T%O9lP_0@vs==Rz^oJkvTMR+krnR!F zDRBv9Hmui9fkNd%4Y;(u<;)NFYc4I{hribC`Ahv0btzk9zG_mM496SoYA_1x&seSd@w0|r$B;)Kb?wgz+eHy%C3+l;Zj z{g3H0=z@ZRz)r3ZexFnxYub@hCtI2?Vb&+oJyvs%N}{R;L+*Yya2j^1Zo*Nr`Ax zvz%$_JEWiFSD~oBi9QR%0h1biRQ=trl?OLHW#~?ayr>qR;>MlN-uF4^e7p26igm`S zXoFb$9ZWBo2N3SEn}-X1A9F8F_WA~ zD&^-SBa1#Af;|seDNIXFW;E>$kKbllTDtdiBAQIz*e;PG8z$1>ASx=+Ty zrSOAU)A^6Ht#B^I*p>&^7CWgWLolMDGi>OK9vVR#&I_~p%oQ`^)D=Xu>uyzT#%-JX z)Mau61ny0?=ns4x`-;A@oOwdTIQ;X;LL2PK$l#}!qN6FVuSaU~-zg!R_N*%K8oaT$ zge3n^Og|_2kY^lA$f;FXy*pmq@-cg}5kY{GZFV~gKb%}5nCwl&!sGZ%=Wk#MyX?)&s`Wwjfw=Rc06)gwU^cn6Y85MSA zPwfi^T8>(26yTuLq8>^zxsB(n3W^mBc5u#Ymy@zH-=rd2aW-kPl@b;#*Rh-}D}m!B;BBhCR0{GR=6_xVvtHui0y*{8PPFNhccM zXN@r<)}?rg*KW!u?~xyb^2De>d>WuJ{ceH2ae`r(v zCjMdUrfSAA&A7tjs3|1FTOsi&tyGexc*`uO#ZP}|Vlk(h_VK5MoF3Lf+w-+pL;|z-hwwL;a z-BuVY+b>E4fSGavKH1ZyT5Pg&(W?QEeC%;Om?z^|4Q;byH(I?mt}W*Cpgi{U`pp|$ zGtq;Cw)4tLmQSc?-#qd(4|9h*etATp*3H#^-CLS6G#%8F&@0W?lU62=L$s=J(-9;v z@x8y^|GOxRWNPiNdq9TT*U>CFvQ&&d!zCv?lU-ctCyV0PdQ zTSr!kPP1%f(0b%@(;49|A56z;5>jVY%Hzf{2^zK*6ASRF|3jh^x z)NW!6?orF42}_r7h6qTMZS1|cmp*WtRj+=zH|C6xSw8ZYkx!kJCg`DKOlI>ybFv=z zw*I}(N%+Eo&Uk`F1_;GG9RGskk|$)NPHUgbC}6_{r%m`2!^_pmW>d0%pm zNoNc*S6Y?XVQbgB^M0)#W7L@#LUekJG3kg!*^VTyGRB6c`V1!NPYz&=;@s-&!3GR| z;@QJTP{OW@)F;dVt~6oIaAer3mlYyLEqgTZ&p8k|Dt&8=PQZ z*y8F;YDsLPoXDDP%Yj4hE3U1*Nz_9e-@0Iu7QBOsP)(P*SgMRVxZU@HX0#l!htMl3 z+hc7|1p=Dq=h~~%Gx{UJfkAwHr`T96^PQoEEuHC8^B?j7m=cgy!5 z8$gj>7*|oxp)nSs?pmDeU2f>E4uj|bW~N}U&5+t3PV=|#L{KG}UxU%55Tod_Q)va@ zXYO&xwL=wcz|9R51bZzEs)rNg>6dZ-J-DUGdFO+H0T+b@^Z3a@?&2aBj&LY)Ds$m&#_UpH|@eeRshDggdGy8zf8Yu<3SQ z73-%8*)}vq1n>>d8prVG=#_5ru#_kBYj5yHF}f zE7z$=;{<|^lRuOITLc%6zEEwl$-(#* zPAj6dksAUmKBYM-bnz|`fqeHA%8y8q;b@R>VKka!;F7MqvnsNF=zLsmSE??3PXL6o z?lI%gM>aX=>+rcX4<~b~!t9O*3{5bFSk7y`M`pE=!{4#AgOi|NGmYrI!ea=SPZ?h- z@$XKA1`8c>;2d_-4N}A2<$oT#=n5bQsuT!A#f>S3WQ>ViWwOa_vMA9+2D9}~l{527 z$UEOk(c1U|NX0`WHp?*ZzHzF}1JWPwk}Y9fL"$2eid7~V;UnXXN2IQ6ll@U$A? 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 z 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%0AP&c&lRRW9MMduM&Gglqg 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 SaaS(Beta): Connect to your GitHub repositories and deploy LangGraph Servers to LangChain's cloud. We manage everything. -- Self-Hosted Data Plane(Beta): Create deployments from the [Control Plane UI](../concepts/langgraph_control_plane.md#control-plane-ui) and deploy LangGraph Servers to your cloud. We manage the [control plane](../concepts/langgraph_control_plane.md), you manage the deployments. -- Self-Hosted Control Plane(Beta): Create deployments from a self-hosted [Control Plane UI](../concepts/langgraph_control_plane.md#control-plane-ui) and deploy LangGraph Servers to your cloud. You manage everything. -- [Standalone Container](../concepts/langgraph_standalone_container.md): Deploy LangGraph Server Docker images however you like. diff --git a/docs/docs/concepts/langgraph_cli.md b/docs/docs/concepts/langgraph_cli.md index feff59db6..91cf50b9f 100644 --- a/docs/docs/concepts/langgraph_cli.md +++ b/docs/docs/concepts/langgraph_cli.md @@ -5,20 +5,11 @@ search: # LangGraph CLI -!!! info "Prerequisites" - - [LangGraph Platform](./langgraph_platform.md) - - [LangGraph Server](./langgraph_server.md) - -The LangGraph CLI is a multi-platform command-line tool for building and running the [LangGraph API server](./langgraph_server.md) locally. The resulting server includes all API endpoints for your graph's runs, threads, assistants, etc. as well as the other services required to run your agent, including a managed database for checkpointing and storage. +**LangGraph CLI** is a multi-platform command-line tool for building and running the [LangGraph API server](./langgraph_server.md) locally. The resulting server includes all API endpoints for your graph's runs, threads, assistants, etc. as well as the other services required to run your agent, including a managed database for checkpointing and storage. ## Installation -The LangGraph CLI can be installed via Homebrew (on macOS) or pip: - -=== "Homebrew" - ```bash - brew install langgraph-cli - ``` +The LangGraph CLI can be installed via pip: === "pip" ```bash @@ -27,49 +18,13 @@ The LangGraph CLI can be installed via Homebrew (on macOS) or pip: ## Commands -The CLI provides the following core functionality: +LangGraph CLI provides the following core functionality: -### `build` +| Command | Description | +| -------- | -------| +| [`langgraph build`](../cloud/reference/cli.md#build) | Builds a Docker image for the [LangGraph API server](./langgraph_server.md) that can be directly deployed. | +| [`langgraph dev`](../cloud/reference/cli.md#dev) | Starts a lightweight development server that requires no Docker installation. This server is ideal for rapid development and testing. This is available in version 0.1.55 and up. +| [`langgraph dockerfile`](../cloud/reference/cli.md#dockerfile) | Generates a [Dockerfile](https://docs.docker.com/reference/dockerfile/) that can be used to build images for and deploy instances of the [LangGraph API server](./langgraph_server.md). This is useful if you want to further customize the dockerfile or deploy in a more custom way. | +| [`langgraph up`](../cloud/reference/cli.md#up) | Starts an instance of the [LangGraph API server](./langgraph_server.md) locally in a docker container. This requires the docker server to be running locally. It also requires a LangSmith API key for local development or a license key for production use. | -The `langgraph build` command builds a Docker image for the [LangGraph API server](./langgraph_server.md) that can be directly deployed. - -### `dev` - -!!! note "New in version 0.1.55" - The `langgraph dev` command was introduced in langgraph-cli version 0.1.55. - -!!! note "Python only" - - Currently, the CLI only supports Python >= 3.11. - JS support is coming soon. - -The `langgraph dev` command starts a lightweight development server that requires no Docker installation. This server is ideal for rapid development and testing, with features like: - -- Hot reloading: Changes to your code are automatically detected and reloaded -- Debugger support: Attach your IDE's debugger for line-by-line debugging -- In-memory state with local persistence: Server state is stored in memory for speed but persisted locally between restarts - -To use this command, you need to install the CLI with the "inmem" extra: - -```bash -pip install -U "langgraph-cli[inmem]" -``` - -**Note**: This command is intended for local development and testing only. It is not recommended for production use. Since it does not use Docker, we recommend using virtual environments to manage your project's dependencies. - -### `up` - -The `langgraph up` command starts an instance of the [LangGraph API server](./langgraph_server.md) locally in a docker container. This requires the docker server to be running locally. It also requires a LangSmith API key for local development or a license key for production use. - -The server includes all API endpoints for your graph's runs, threads, assistants, etc. as well as the other services required to run your agent, including a managed database for checkpointing and storage. - -### `dockerfile` - -The `langgraph dockerfile` command generates a [Dockerfile](https://docs.docker.com/reference/dockerfile/) that can be used to build images for and deploy instances of the [LangGraph API server](./langgraph_server.md). This is useful if you want to further customize the dockerfile or deploy in a more custom way. - -??? note "Updating your langgraph.json file" - The `langgraph dockerfile` command translates all the configuration in your `langgraph.json` file into Dockerfile commands. When using this command, you will have to re-run it whenever you update your `langgraph.json` file. Otherwise, your changes will not be reflected when you build or run the dockerfile. - -## Related - -- [LangGraph CLI API Reference](../cloud/reference/cli.md) +For more information, see the [LangGraph CLI Reference](../cloud/reference/cli.md). diff --git a/docs/docs/concepts/langgraph_cloud.md b/docs/docs/concepts/langgraph_cloud.md index f83d676e9..b9c835913 100644 --- a/docs/docs/concepts/langgraph_cloud.md +++ b/docs/docs/concepts/langgraph_cloud.md @@ -3,7 +3,7 @@ search: boost: 2 --- -# Cloud SaaS (Beta) +# Cloud SaaS To deploy a [LangGraph Server](../concepts/langgraph_server.md), follow the how-to guide for [how to deploy to Cloud SaaS](../cloud/deployment/cloud.md). @@ -11,9 +11,9 @@ To deploy a [LangGraph Server](../concepts/langgraph_server.md), follow the how- The Cloud SaaS deployment option is a fully managed model for deployment where we manage the [control plane](./langgraph_control_plane.md) and [data plane](./langgraph_data_plane.md) in our cloud. -| | [Control Plane](../concepts/langgraph_control_plane.md) | [Data Plane](../concepts/langgraph_data_plane.md) | +| | [Control plane](../concepts/langgraph_control_plane.md) | [Data plane](../concepts/langgraph_data_plane.md) | |-------------------|-------------------|------------| -| **What is it?** |

    • Control Plane UI for creating deployments and revisions
    • Control Plane APIs for creating deployments and revisions
    |
    • Data plane "listener" for reconciling deployments with control plane state
    • LangGraph Servers
    • Postgres, Redis, etc
    | +| **What is it?** |
    • Control plane UI for creating deployments and revisions
    • Control plane APIs for creating deployments and revisions
    |
    • Data plane "listener" for reconciling deployments with control plane state
    • LangGraph Servers
    • Postgres, Redis, etc
    | | **Where is it hosted?** | LangChain's cloud | LangChain's cloud | | **Who provisions and manages it?** | LangChain | LangChain | diff --git a/docs/docs/concepts/langgraph_components.md b/docs/docs/concepts/langgraph_components.md new file mode 100644 index 000000000..78b9e7c8d --- /dev/null +++ b/docs/docs/concepts/langgraph_components.md @@ -0,0 +1,13 @@ +## Components + +The LangGraph Platform consists of components that work together to support the development, deployment, debugging, and monitoring of LangGraph applications: + +- [LangGraph Server](./langgraph_server.md): The server defines an opinionated API and architecture that incorporates best practices for deploying agentic applications, allowing you to focus on building your agent logic rather than developing server infrastructure. +- [LangGraph CLI](./langgraph_cli.md): LangGraph CLI is a command-line interface that helps to interact with a local LangGraph +- [LangGraph Studio](./langgraph_studio.md): LangGraph Studio is a specialized IDE that can connect to a LangGraph Server to enable visualization, interaction, and debugging of the application locally. +- [Python/JS SDK](./sdk.md): The Python/JS SDK provides a programmatic way to interact with deployed LangGraph Applications. +- [Remote Graph](../how-tos/use-remote-graph.md): A RemoteGraph allows you to interact with any deployed LangGraph application as though it were running locally. +- [LangGraph control plane](./langgraph_control_plane.md): The LangGraph Control Plane refers to the Control Plane UI where users create and update LangGraph Servers and the Control Plane APIs that support the UI experience. +- [LangGraph data plane](./langgraph_data_plane.md): The LangGraph Data Plane refers to LangGraph Servers, the corresponding infrastructure for each server, and the "listener" application that continuously polls for updates from the LangGraph Control Plane. + +![LangGraph components](img/lg_platform.png) \ No newline at end of file diff --git a/docs/docs/concepts/langgraph_control_plane.md b/docs/docs/concepts/langgraph_control_plane.md index 85143f811..918921639 100644 --- a/docs/docs/concepts/langgraph_control_plane.md +++ b/docs/docs/concepts/langgraph_control_plane.md @@ -5,13 +5,13 @@ search: # LangGraph Control Plane -The term "control plane" is used broadly to refer to the Control Plane UI where users create and update [LangGraph Servers](./langgraph_server.md) (deployments) and the Control Plane APIs that support the UI experience. +The term "control plane" is used broadly to refer to the control plane UI where users create and update [LangGraph Servers](./langgraph_server.md) (deployments) and the control plane APIs that support the UI experience. -When a user makes an update through the Control Plane UI, the update is stored in the control plane state. The [LangGraph Data Plane](./langgraph_data_plane.md) "listener" application polls for these updates by calling the Control Plane APIs. +When a user makes an update through the control plane UI, the update is stored in the control plane state. The [LangGraph Data Plane](./langgraph_data_plane.md) "listener" application polls for these updates by calling the control plane APIs. ## Control Plane UI -From the Control Plane UI, you can: +From the control plane UI, you can: - View a list of outstanding deployments. - View details of an individual deployment. @@ -25,7 +25,7 @@ The Control Plane UI is embedded in [LangSmith](https://docs.smith.langchain.com ## Control Plane API -This section describes data model of the LangGraph Control Plane API. Control Plane API is used to create, update, and delete deployments. However, they are not publicly accessible. +This section describes data model of the control plane API. The API is used to create, update, and delete deployments. However, they are not publicly accessible. ### Deployment @@ -57,8 +57,8 @@ CPU and memory resources are per container. !!! info "For [Cloud SaaS](../concepts/langgraph_cloud.md)" For `Production` type deployments, resources can be manually increased on a case-by-case basis depending on use case and capacity constraints. Contact support@langchain.dev to request an increase in resources. -!!! info "For [Self-Hosted Data Plane](../concepts/langgraph_self_hosted_data_plane.md) and [Self-Hosted Control Plane](../concepts/langgraph_self_hosted_control_plane.md)" - Resources for [Self-Hosted Data Plane](../concepts/langgraph_data_plane.md) and [Self-Hosted Control Plane](../concepts/langgraph_control_plane.md) deployments can be fully customized. +!!! info + Resources for [Self-Hosted Data Plane](../concepts/langgraph_self_hosted_data_plane.md) and [Self-Hosted Control Plane](../concepts/langgraph_self_hosted_control_plane.md) deployments can be fully customized. ### Database Provisioning @@ -70,8 +70,8 @@ There is no direct access to the database. All access to the database occurs thr The database is never deleted until the deployment itself is deleted. See [Automatic Deletion](#automatic-deletion) for additional details. -!!! info "For [Self-Hosted Data Plane](../concepts/langgraph_self_hosted_data_plane.md) and [Self-Hosted Control Plane](../concepts/langgraph_self_hosted_control_plane.md)" - A custom Postgres instance can be configured for [Self-Hosted Data Plane](../concepts/langgraph_data_plane.md) and [Self-Hosted Control Plane](../concepts/langgraph_control_plane.md) deployments. +!!! info + A custom Postgres instance can be configured for [Self-Hosted Data Plane](../concepts/langgraph_self_hosted_data_plane.md) and [Self-Hosted Control Plane](../concepts/langgraph_self_hosted_control_plane.md) deployments. ### Asynchronous Deployment @@ -83,19 +83,6 @@ Infrastructure for deployments and revisions are provisioned and deployed asynch The control plane and [LangGraph Data Plane](./langgraph_data_plane.md) "listener" application coordinate to achieve asynchronous deployments. -### Automatic Deletion - -!!! info "Only for [Cloud SaaS](../concepts/langgraph_cloud.md)" - Automatic deletion of deployments is only available for [Cloud SaaS](../concepts/langgraph_cloud.md). - -The control plane automatically deletes deployments after 28 consecutive days of non-use (it is in an unused state). A deployment is in an unused state if there are no traces emitted to LangSmith from the deployment after 28 consecutive days. On any given day, if a deployment emits a trace to LangSmith, the counter for consecutive days of non-use is reset. - -- An email notification is sent after 7 consecutive days of non-use. -- A deployment is deleted after 28 consecutive days of non-use. - -!!! danger "Data Cannot Be Recovered" - After a deployment is deleted, the data (e.g. Postgres) from the deployment cannot be recovered. - ### LangSmith Integration A [LangSmith](https://docs.smith.langchain.com/) tracing project is automatically created for each deployment. The tracing project has the same name as the deployment. When creating a deployment, the `LANGCHAIN_TRACING` and `LANGSMITH_API_KEY`/`LANGCHAIN_API_KEY` environment variables do not need to be specified; they are set automatically by the control plane. diff --git a/docs/docs/concepts/langgraph_data_plane.md b/docs/docs/concepts/langgraph_data_plane.md index 9d47b7e77..47195a8ce 100644 --- a/docs/docs/concepts/langgraph_data_plane.md +++ b/docs/docs/concepts/langgraph_data_plane.md @@ -11,16 +11,14 @@ The term "data plane" is used broadly to refer to [LangGraph Servers](./langgrap In addition to the [LangGraph Server](./langgraph_server.md) itself, the following infrastructure for each server are also included in the broad definition of "data plane": -- [Postgres](../concepts/platform_architecture.md#how-we-use-postgres) -- [Redis](../concepts/platform_architecture.md#how-we-use-redis) +- Postgres +- Redis - Secrets store - Autoscalers -See [LangGraph Platform Architecture](../concepts/platform_architecture.md) for more details. - ## "Listener" Application -The data plane "listener" application periodically calls [Control Plane APIs](../concepts/langgraph_control_plane.md#control-plane-api) to: +The data plane "listener" application periodically calls [control plane APIs](../concepts/langgraph_control_plane.md#control-plane-api) to: - Determine if new deployments should be created. - Determine if existing deployments should be updated (i.e. new revisions). @@ -28,32 +26,37 @@ The data plane "listener" application periodically calls [Control Plane APIs](.. In other words, the data plane "listener" reads the latest state of the control plane (desired state) and takes action to reconcile outstanding deployments (current state) to match the latest state. +## Postgres + +Postgres is the persistence layer for all user, run, and long-term memory data in a LangGraph Server. This stores both checkpoints (see more info [here](./persistence.md)), server resources (threads, runs, assistants and crons), as well as items saved in the long-term memory store (see more info [here](./persistence.md#memory-store)). + +## Redis + +Redis is used in each LangGraph Server as a way for server and queue workers to communicate, and to store ephemeral metadata. No user or run data is stored in Redis. + +### Communication + +All runs in a LangGraph Server are executed by a pool of background workers that are part of each deployment. In order to enable some features for those runs (such as cancellation and output streaming) we need a channel for two-way communication between the server and the worker handling a particular run. We use Redis to organize that communication. + +1. A Redis list is used as a mechanism to wake up a worker as soon as a new run is created. Only a sentinel value is stored in this list, no actual run information. The run information is then retrieved from Postgres by the worker. +2. A combination of a Redis string and Redis PubSub channel is used for the server to communicate a run cancellation request to the appropriate worker. +3. A Redis PubSub channel is used by the worker to broadcast streaming output from an agent while the run is being handled. Any open `/stream` request in the server will subscribe to that channel and forward any events to the response as they arrive. No events are stored in Redis at any time. + +### Ephemeral metadata + +Runs in a LangGraph Server may be retried for specific failures (currently only for transient Postgres errors encountered during the run). In order to limit the number of retries (currently limited to 3 attempts per run) we record the attempt number in a Redis string when is picked up. This contains no run-specific info other than its ID, and expires after a short delay. + ## Data Plane Features This section describes various features of the data plane. -### Lite vs Enterprise - -There are two versions of the LangGraph Server: `Lite` and `Enterprise`. - -The `Lite` version is a limited version of the LangGraph Server that you can run locally or in a self-hosted manner (up to 1 million nodes executed per year). `Lite` is only available for the [Standalone Container](../concepts/langgraph_standalone_container.md) deployment option. - -The `Enterprise` version is the full version of the LangGraph Server. To use the `Enterprise` version, you must acquire a license key that you will need to specify when running the Docker image. To acquire a license key, please email sales@langchain.dev. `Enterprise` is available for [Cloud SaaS](../concepts/langgraph_cloud.md), [Self-Hosted Data Plane](../concepts/langgraph_self_hosted_data_plane.md), and [Self-Hosted Control Plane](../concepts/langgraph_self_hosted_control_plane.md) deployment options. - -Feature Differences: - -| | Lite | Enterprise | -|-------|------------|------------| -| [Cron Jobs](../concepts/langgraph_server.md#cron-jobs) |❌|✅| -| [Custom Authentication](../concepts/auth.md) |❌|✅| - ### Autoscaling [`Production` type](../concepts/langgraph_control_plane.md#deployment-types) deployments automatically scale up to 10 containers. Scaling is based on 3 metrics: 1. CPU utilization 1. Memory utilization -1. Number of pending (in progress) [runs](../concepts/langgraph_server.md#runs) +1. Number of pending (in progress) [runs](../cloud/concepts/runs.md) For CPU utilization, the autoscaler targets 75% utilization. This means the autoscaler will scale the number of containers up or down to ensure that CPU utilization is at or near 75%. For memory utilization, the autoscaler targets 75% utilization as well. @@ -83,7 +86,7 @@ All traffic from deployments created after January 6th 2025 will come through a ### Custom Postgres -!!! info "Only for Self-Hosted Data Plane and Self-Hosted Control Plane" +!!! info Custom Postgres instances are only available for [Self-Hosted Data Plane](../concepts/langgraph_self_hosted_data_plane.md) and [Self-Hosted Control Plane](../concepts/langgraph_self_hosted_control_plane.md) deployments. A custom Postgres instance can be used instead of the [one automatically created by the control plane](./langgraph_control_plane.md#database-provisioning). Specify the [`POSTGRES_URI_CUSTOM`](../cloud/reference/env_var.md#postgres_uri_custom) environment variable to use a custom Postgres instance. @@ -92,8 +95,8 @@ Multiple deployments can share the same Postgres instance. For example, for `Dep ### Custom Redis -!!! info "Only for Self-Hosted Data Plane and Self-Hosted Control Plane" - Custom Redis instances are only available for [Self-Hosted Data Plane](../concepts/langgraph_self_hosted_data_plane.md) and [Self-Hosted Control Plane](../concepts/langgraph_self_hosted_control_plane.md) deployments. +!!! info + Custom Redis instances are only available for [Self-Hosted Data Plane](../concepts/langgraph_self_hosted_control_plane.md) and [Self-Hosted Control Plane](../concepts/langgraph_self_hosted_control_plane.md) deployments. A custom Redis instance can be used instead of the one automatically created by the control plane. Specify the [REDIS_URI_CUSTOM](../cloud/reference/env_var.md#redis_uri_custom) environment variable to use a custom Redis instance. diff --git a/docs/docs/concepts/langgraph_platform.md b/docs/docs/concepts/langgraph_platform.md index 77d3f7c06..2b1890506 100644 --- a/docs/docs/concepts/langgraph_platform.md +++ b/docs/docs/concepts/langgraph_platform.md @@ -5,44 +5,35 @@ search: # LangGraph Platform -Watch this 4-minute overview of LangGraph Platform to see how it helps you build, deploy, and evaluate agentic applications. +**LangGraph Platform** is a commercial solution for deploying agentic applications to production, built on the open-source [LangGraph framework](../index.md). - +
    -## Overview +!!! tip "Get started with LangGraph Platform" -LangGraph Platform is a commercial solution for deploying agentic applications to production, built on the open-source [LangGraph framework](./high_level.md). + Check out the [LangGraph Platform quickstart](../cloud/quick_start.md) for instructions on how to set up and use LangGraph Platform to do a cloud deployment. -The LangGraph Platform consists of several components that work together to support the development, deployment, debugging, and monitoring of LangGraph applications: -- [LangGraph Server](./langgraph_server.md): The server defines an opinionated API and architecture that incorporates best practices for deploying agentic applications, allowing you to focus on building your agent logic rather than developing server infrastructure. -- [LangGraph Studio](./langgraph_studio.md): LangGraph Studio is a specialized IDE that can connect to a LangGraph Server to enable visualization, interaction, and debugging of the application locally. -- [LangGraph CLI](./langgraph_cli.md): LangGraph CLI is a command-line interface that helps to interact with a local LangGraph -- [Python/JS SDK](./sdk.md): The Python/JS SDK provides a programmatic way to interact with deployed LangGraph Applications. -- [Remote Graph](../how-tos/use-remote-graph.md): A RemoteGraph allows you to interact with any deployed LangGraph application as though it were running locally. -- [LangGraph Control Plane](./langgraph_control_plane.md): The LangGraph Control Plane refers to the Control Plane UI where users create and update LangGraph Servers and the Control Plane APIs that support the UI experience. -- [LangGraph Data Plane](./langgraph_data_plane.md): The LangGraph Data Plane refers to LangGraph Servers, the corresponding infrastructure for each server, and the "listener" application that continuously polls for updates from the LangGraph Control Plane. +## Why use LangGraph Platform? -![](img/lg_platform.png) +LangGraph Platform handles common issues that arise when deploying LLM applications to production, allowing you to focus on agent logic instead of managing server infrastructure. -The LangGraph Platform offers a few different deployment options described in the [deployment options guide](./deployment_options.md). +- **[Streaming Support](../cloud/concepts/streaming.md)**: As agents grow more sophisticated, they often benefit from streaming both token outputs and intermediate states back to the user. Without this, users are left waiting for potentially long operations with no feedback. LangGraph Server provides multiple streaming modes optimized for various application needs. -## Why Use LangGraph Platform? - -**LangGraph Platform** handles common issues that arise when deploying LLM applications to production, allowing you to focus on agent logic instead of managing server infrastructure. - -- **[Streaming Support](streaming.md)**: As agents grow more sophisticated, they often benefit from streaming both token outputs and intermediate states back to the user. Without this, users are left waiting for potentially long operations with no feedback. LangGraph Server provides [multiple streaming modes](streaming.md) optimized for various application needs. - -- **Background Runs**: For agents that take longer to process (e.g., hours), maintaining an open connection can be impractical. The LangGraph Server supports launching agent runs in the background and provides both polling endpoints and webhooks to monitor run status effectively. +- **[Background Runs](../cloud/how-tos/background_run.md)**: For agents that take longer to process (e.g., hours), maintaining an open connection can be impractical. The LangGraph Server supports launching agent runs in the background and provides both polling endpoints and webhooks to monitor run status effectively. -- **Support for long runs**: Vanilla server setups often encounter timeouts or disruptions when handling requests that take a long time to complete. LangGraph Server’s API provides robust support for these tasks by sending regular heartbeat signals, preventing unexpected connection closures during prolonged processes. +- **Support for long runs**: Regular server setups often encounter timeouts or disruptions when handling requests that take a long time to complete. LangGraph Server’s API provides robust support for these tasks by sending regular heartbeat signals, preventing unexpected connection closures during prolonged processes. - **Handling Burstiness**: Certain applications, especially those with real-time user interaction, may experience "bursty" request loads where numerous requests hit the server simultaneously. LangGraph Server includes a task queue, ensuring requests are handled consistently without loss, even under heavy loads. -- **[Double Texting](double_texting.md)**: In user-driven applications, it’s common for users to send multiple messages rapidly. This “double texting” can disrupt agent flows if not handled properly. LangGraph Server offers built-in strategies to address and manage such interactions. +- **[Double-texting](../cloud/how-tos/interrupt_concurrent.md)**: In user-driven applications, it’s common for users to send multiple messages rapidly. This “double texting” can disrupt agent flows if not handled properly. LangGraph Server offers built-in strategies to address and manage such interactions. -- **[Checkpointers and Memory Management](persistence.md#checkpoints)**: For agents needing persistence (e.g., conversation memory), deploying a robust storage solution can be complex. LangGraph Platform includes optimized [checkpointers](persistence.md#checkpoints) and a [memory store](persistence.md#memory-store), managing state across sessions without the need for custom solutions. +- **[Checkpointers and memory management](persistence.md#checkpoints)**: For agents needing persistence (e.g., conversation memory), deploying a robust storage solution can be complex. LangGraph Platform includes optimized [checkpointers](persistence.md#checkpoints) and a [memory store](persistence.md#memory-store), managing state across sessions without the need for custom solutions. -- **[Human-in-the-loop Support](human_in_the_loop.md)**: In many applications, users require a way to intervene in agent processes. LangGraph Server provides specialized endpoints for human-in-the-loop scenarios, simplifying the integration of manual oversight into agent workflows. +- **[Human-in-the-loop support](../cloud/how-tos/human_in_the_loop_breakpoint.md)**: In many applications, users require a way to intervene in agent processes. LangGraph Server provides specialized endpoints for human-in-the-loop scenarios, simplifying the integration of manual oversight into agent workflows. By using LangGraph Platform, you gain access to a robust, scalable deployment solution that mitigates these challenges, saving you the effort of implementing and maintaining them manually. This allows you to focus more on building effective agent behavior and less on solving deployment infrastructure issues. + +## Deployment + +There are several ways to deploy on LangGraph Platform. For more information, see [Deployment options](./deployment_options.md). diff --git a/docs/docs/concepts/langgraph_self_hosted_control_plane.md b/docs/docs/concepts/langgraph_self_hosted_control_plane.md index dc0ee0322..e15fbe86d 100644 --- a/docs/docs/concepts/langgraph_self_hosted_control_plane.md +++ b/docs/docs/concepts/langgraph_self_hosted_control_plane.md @@ -1,28 +1,29 @@ ---- -search: - boost: 2 ---- +# Self-Hosted Control Plane -# Self-Hosted Control Plane (Beta) +There are two versions of the self-hosted deployment: [Self-Hosted Data Plane](./deployment_options.md#self-hosted-data-plane) and [Self-Hosted Control Plane](./deployment_options.md#self-hosted-control-plane). -To deploy a [LangGraph Server](../concepts/langgraph_server.md), follow the how-to guide for [how to deploy the Self-Hosted Control Plane](../cloud/deployment/self_hosted_control_plane.md). +## Requirements -## Overview +- You use `langgraph-cli` and/or [LangGraph Studio](./langgraph_studio.md) app to test graph locally. +- You use `langgraph build` command to build image. -The Self-Hosted Control Plane deployment option is a fully self-hosted model for deployment where you manage the [control plane](./langgraph_control_plane.md) and [data plane](./langgraph_data_plane.md) in your cloud (this option implies that the data plane is self-hosted). +## Self-Hosted Control Plane (Beta) -| | [Control Plane](../concepts/langgraph_control_plane.md) | [Data Plane](../concepts/langgraph_data_plane.md) | +The [Self-Hosted Control Plane](./langgraph_self_hosted_control_plane.md) deployment option is a fully self-hosted model for deployment where you manage the [control plane](./langgraph_control_plane.md) and [data plane](./langgraph_data_plane.md) in your cloud. This option give you full control and responsibility of the control plane and data plane infrastructure. + +| | [Control plane](../concepts/langgraph_control_plane.md) | [Data plane](../concepts/langgraph_data_plane.md) | |-------------------|-------------------|------------| -| **What is it?** |
    • Control Plane UI for creating deployments and revisions
    • Control Plane APIs for creating deployments and revisions
    |
    • Data plane "listener" for reconciling deployments with control plane state
    • LangGraph Servers
    • Postgres, Redis, etc
    | +| **What is it?** |
    • Control plane UI for creating deployments and revisions
    • Control plane APIs for creating deployments and revisions
    |
    • Data plane "listener" for reconciling deployments with control plane state
    • LangGraph Servers
    • Postgres, Redis, etc
    | | **Where is it hosted?** | Your cloud | Your cloud | | **Who provisions and manages it?** | You | You | -## Architecture +### Architecture ![Self-Hosted Control Plane Architecture](./img/self_hosted_control_plane_architecture.png) -## Compute Platforms +### Compute Platforms -### Kubernetes + - **Kubernetes**: The Self-Hosted Control Plane deployment option supports deploying control plane and data plane infrastructure to any Kubernetes cluster. -The Self-Hosted Control Plane deployment option supports deploying control plane and data plane infrastructure to any Kubernetes cluster. +!!! tip + If you would like to deploy to Kubernetes, you can use this [Helm chart](https://github.com/langchain-ai/helm/blob/main/charts/langgraph-cloud/README.md). \ No newline at end of file diff --git a/docs/docs/concepts/langgraph_self_hosted_data_plane.md b/docs/docs/concepts/langgraph_self_hosted_data_plane.md index ba10e5d75..c9db23015 100644 --- a/docs/docs/concepts/langgraph_self_hosted_data_plane.md +++ b/docs/docs/concepts/langgraph_self_hosted_data_plane.md @@ -3,30 +3,35 @@ search: boost: 2 --- -# Self-Hosted Data Plane (Beta) +# Self-Hosted Data Plane -To deploy a [LangGraph Server](../concepts/langgraph_server.md), follow the how-to guide for [how to deploy the Self-Hosted Data Plane](../cloud/deployment/self_hosted_data_plane.md). +There are two versions of the self-hosted deployment: [Self-Hosted Data Plane](./deployment_options.md#self-hosted-data-plane) and [Self-Hosted Control Plane](./deployment_options.md#self-hosted-control-plane). -## Overview +## Requirements -LangGraph Platform's Self-Hosted Data Plane deployment option is a "hybrid" model for deployment where we manage the [control plane](./langgraph_control_plane.md) in our cloud and you manage the [data plane](./langgraph_data_plane.md) in your cloud. +- You use `langgraph-cli` and/or [LangGraph Studio](./langgraph_studio.md) app to test graph locally. +- You use `langgraph build` command to build image. -| | [Control Plane](../concepts/langgraph_control_plane.md) | [Data Plane](../concepts/langgraph_data_plane.md) | +## Self-Hosted Data Plane (Beta) + +The [Self-Hosted Data Plane](./self_hosted.md.md) deployment option is a "hybrid" model for deployment where we manage the [control plane](./langgraph_control_plane.md) in our cloud and you manage the [data plane](./langgraph_data_plane.md) in your cloud. This option provides a way to securely manage your data plane infrastructure, while offloading control plane management to us. When using the Self-Hosted Data Plane version, you authenticate with a [LangSmith](https://smith.langchain.com/) API key. + +| | [Control plane](../concepts/langgraph_control_plane.md) | [Data plane](../concepts/langgraph_data_plane.md) | |-------------------|-------------------|------------| -| **What is it?** |
    • Control Plane UI for creating deployments and revisions
    • Control Plane APIs for creating deployments and revisions
    |
    • Data plane "listener" for reconciling deployments with control plane state
    • LangGraph Servers
    • Postgres, Redis, etc
    | +| **What is it?** |
    • Control plane UI for creating deployments and revisions
    • Control plane APIs for creating deployments and revisions
    |
    • Data plane "listener" for reconciling deployments with control plane state
    • LangGraph Servers
    • Postgres, Redis, etc
    | | **Where is it hosted?** | LangChain's cloud | Your cloud | | **Who provisions and manages it?** | LangChain | You | -## Architecture +For information on how to deploy a [LangGraph Server](../concepts/langgraph_server.md) to Self-Hosted Data Plane, see [Deploy to Self-Hosted Data Plane](../cloud/deployment/self_hosted_data_plane.md) + +### Architecture ![Self-Hosted Data Plane Architecture](./img/self_hosted_data_plane_architecture.png) -## Compute Platforms +### Compute Platforms -### Kubernetes +- **Kubernetes**: The Self-Hosted Data Plane deployment option supports deploying data plane infrastructure to any Kubernetes cluster. +- **Amazon ECS**: Coming soon! -The Self-Hosted Data Plane deployment option supports deploying data plane infrastructure to any Kubernetes cluster. - -### Amazon ECS - -Coming soon... +!!! tip + If you would like to deploy to Kubernetes, you can use this [Helm chart](https://github.com/langchain-ai/helm/blob/main/charts/langgraph-cloud/README.md). \ No newline at end of file diff --git a/docs/docs/concepts/langgraph_server.md b/docs/docs/concepts/langgraph_server.md index 97ecb9657..9dead2ca3 100644 --- a/docs/docs/concepts/langgraph_server.md +++ b/docs/docs/concepts/langgraph_server.md @@ -5,34 +5,38 @@ search: # LangGraph Server -!!! info "Prerequisites" - - [LangGraph Platform](./langgraph_platform.md) - - [LangGraph Glossary](low_level.md) +**LangGraph Server** offers an API for creating and managing agent-based applications. It is built on the concept of [assistants](assistants.md), which are agents configured for specific tasks, and includes built-in [persistence](persistence.md#memory-store) and a **task queue**. This versatile API supports a wide range of agentic application use cases, from background processing to real-time interactions. -## Overview +Use LangGraph Serverto create and manage [assistants](assistants.md), [threads](../cloud/concepts/threads.md), [runs](../cloud/concepts/runs.md), [cron jobs](../cloud/concepts/cron_jobs.md), [webhooks](../cloud/concepts/webhooks.md), and more. -LangGraph Server offers an API for creating and managing agent-based applications. It is built on the concept of [assistants](assistants.md), which are agents configured for specific tasks, and includes built-in [persistence](persistence.md#memory-store) and a **task queue**. This versatile API supports a wide range of agentic application use cases, from background processing to real-time interactions. +!!! tip "API reference" + + For detailed information on the API endpoints and data models, see [LangGraph Platform API reference docs](../cloud/reference/api/api_ref.html). -## Key Features +## Server versions -The LangGraph Platform incorporates best practices for agent deployment, so you can focus on building your agent logic. +There are two versions of LangGraph Server: -* **Streaming endpoints**: Endpoints that expose [multiple different streaming modes](streaming.md). We've made these work even for long-running agents that may go minutes between consecutive stream events. -* **Background runs**: The LangGraph Server supports launching assistants in the background with endpoints for polling the status of the assistant's run and webhooks to monitor run status effectively. -- **Support for long runs**: Our blocking endpoints for running assistants send regular heartbeat signals, preventing unexpected connection closures when handling requests that take a long time to complete. -* **Task queue**: We've added a task queue to make sure we don't drop any requests if they arrive in a bursty nature. -* **Horizontally scalable infrastructure**: LangGraph Server is designed to be horizontally scalable, allowing you to scale up and down your usage as needed. -* **Double texting support**: Many times users might interact with your graph in unintended ways. For instance, a user may send one message and before the graph has finished running send a second message. We call this ["double texting"](double_texting.md) and have added four different ways to handle this. -* **Optimized checkpointer**: LangGraph Platform comes with a built-in [checkpointer](./persistence.md#checkpoints) optimized for LangGraph applications. -* **Human-in-the-loop endpoints**: We've exposed all endpoints needed to support [human-in-the-loop](human_in_the_loop.md) features. -* **Memory**: In addition to thread-level persistence (covered above by [checkpointers](./persistence.md#checkpoints)), LangGraph Platform also comes with a built-in [memory store](persistence.md#memory-store). -* **Cron jobs**: Built-in support for scheduling tasks, enabling you to automate regular actions like data clean-up or batch processing within your applications. -* **Webhooks**: Allows your application to send real-time notifications and data updates to external systems, making it easy to integrate with third-party services and trigger actions based on specific events. -* **Monitoring**: LangGraph Server integrates seamlessly with the [LangSmith](https://docs.smith.langchain.com/) monitoring platform, providing real-time insights into your application's performance and health. +- `Lite` is a limited version of the LangGraph Server that you can run locally or in a self-hosted manner (up to 1 million nodes executed per year). +- `Enterprise` is the full version of the LangGraph Server. To use the `Enterprise` version, you must acquire a license key that you will need to specify when running the Docker image. To acquire a license key, please email sales@langchain.dev. -## What are you deploying? +Feature Differences: -When you deploy a LangGraph Server, you are deploying one or more [graphs](#graphs), a database for [persistence](persistence.md), and a task queue. +| | Lite | Enterprise | +|-------|------------|------------| +| [Cron Jobs](../clouds/concepts/cron-jobs.md) |❌|✅| +| [Custom Authentication](../concepts/auth.md) |❌|✅| +| [Deployment options](../concepts/deployment_options.md) | Standalone container | Cloud Saas, Self-Hosted Data Plane, Self-Hosted Control Plane, Standalone container + +## Application structure + +To deploy a LangGraph Server application, you need to specify the graph(s) you want to deploy, as well as any relevant configuration settings, such as dependencies and environment variables. + +Read the [application structure](./application_structure.md) guide to learn how to structure your LangGraph application for deployment. + +## Parts of a deployment + +When you deploy LangGraph Server, you are deploying one or more [graphs](#graphs), a database for [persistence](persistence.md), and a task queue. ### Graphs @@ -43,16 +47,14 @@ that can be served by the same graph. Upon deployment, LangGraph Server will automatically create a default assistant for each graph using the graph's default configuration settings. -You can interact with assistants through the [LangGraph Server API](#langgraph-server-api). - !!! note We often think of a graph as implementing an [agent](agentic_concepts.md), but a graph does not necessarily need to implement an agent. For example, a graph could implement a simple chatbot that only supports back-and-forth conversation, without the ability to influence any application control flow. In reality, as applications get more complex, a graph will often implement a more complex flow that may use [multiple agents](./multi_agent.md) working in tandem. -### Persistence and Task Queue +### Persistence and task queue -The LangGraph Server leverages a database for [persistence](persistence.md) and a task queue. +LangGraph Server leverages a database for [persistence](persistence.md) and a task queue. Currently, only [Postgres](https://www.postgresql.org/) is supported as a database for LangGraph Server and [Redis](https://redis.io/) as the task queue. @@ -60,76 +62,7 @@ If you're deploying using [LangGraph Cloud](./langgraph_cloud.md), these compone Please review the [deployment options](./deployment_options.md) guide for more information on how these components are set up and managed. -## Application Structure - -To deploy a LangGraph Server application, you need to specify the graph(s) you want to deploy, as well as any relevant configuration settings, such as dependencies and environment variables. - -Read the [application structure](./application_structure.md) guide to learn how to structure your LangGraph application for deployment. - -## LangGraph Server API - -The LangGraph Server API allows you to create and manage [assistants](assistants.md), [threads](#threads), [runs](#runs), [cron jobs](#cron-jobs), and more. - -The [LangGraph Cloud API Reference](../cloud/reference/api/api_ref.html) provides detailed information on the API endpoints and data models. - -### Assistants - -An [Assistant](assistants.md) refers to a [graph](#graphs) plus specific [configuration](low_level.md#configuration) settings for that graph. - -You can think of an assistant as a saved configuration of an [agent](agentic_concepts.md). - -When building agents, it is fairly common to make rapid changes that *do not* alter the graph logic. For example, simply changing prompts or the LLM selection can have significant impacts on the behavior of the agents. Assistants offer an easy way to make and save these types of changes to agent configuration. - -### Threads - -A thread contains the accumulated state of a sequence of [runs](#runs). If a run is executed on a thread, then the [state](low_level.md#state) of the underlying graph of the assistant will be persisted to the thread. - -A thread's current and historical state can be retrieved. To persist state, a thread must be created prior to executing a run. - -The state of a thread at a particular point in time is called a [checkpoint](persistence.md#checkpoints). Checkpoints can be used to restore the state of a thread at a later time. - -For more on threads and checkpoints, see this section of the [LangGraph conceptual guide](low_level.md#persistence). - -The LangGraph Cloud API provides several endpoints for creating and managing threads and thread state. See the [API reference](../cloud/reference/api/api_ref.html#tag/threads) for more details. - -### Runs - -A run is an invocation of an [assistant](#assistants). Each run may have its own input, configuration, and metadata, which may affect execution and output of the underlying graph. A run can optionally be executed on a [thread](#threads). - -The LangGraph Cloud API provides several endpoints for creating and managing runs. See the [API reference](../cloud/reference/api/api_ref.html#tag/thread-runs/) for more details. - -### Store - -Store is an API for managing persistent [key-value store](./persistence.md#memory-store) that is available from any [thread](#threads). - -Stores are useful for implementing [memory](./memory.md) in your LangGraph application. - -### Cron Jobs - -There are many situations in which it is useful to run an assistant on a schedule. - -For example, say that you're building an assistant that runs daily and sends an email summary -of the day's news. You could use a cron job to run the assistant every day at 8:00 PM. - -LangGraph Cloud supports cron jobs, which run on a user-defined schedule. The user specifies a schedule, an assistant, and some input. After that, on the specified schedule, the server will: - -- Create a new thread with the specified assistant -- Send the specified input to that thread - -Note that this sends the same input to the thread every time. See the [how-to guide](../cloud/how-tos/cron_jobs.md) for creating cron jobs. - -The LangGraph Cloud API provides several endpoints for creating and managing cron jobs. See the [API reference](../cloud/reference/api/api_ref.html#tag/runscreate/POST/threads/{thread_id}/runs/crons) for more details. - -### Webhooks - -Webhooks enable event-driven communication from your LangGraph Cloud application to external services. For example, you may want to issue an update to a separate service once an API call to LangGraph Cloud has finished running. - -Many LangGraph Cloud endpoints accept a `webhook` parameter. If this parameter is specified by a an endpoint that can accept POST requests, LangGraph Cloud will send a request at the completion of a run. - -See the corresponding [how-to guide](../cloud/how-tos/webhooks.md) for more detail. - -## Related +## Learn more * LangGraph [Application Structure](./application_structure.md) guide explains how to structure your LangGraph application for deployment. -* [How-to guides for the LangGraph Platform](../how-tos/index.md). * The [LangGraph Cloud API Reference](../cloud/reference/api/api_ref.html) provides detailed information on the API endpoints and data models. diff --git a/docs/docs/concepts/langgraph_standalone_container.md b/docs/docs/concepts/langgraph_standalone_container.md index 5b6fd7324..99b895c21 100644 --- a/docs/docs/concepts/langgraph_standalone_container.md +++ b/docs/docs/concepts/langgraph_standalone_container.md @@ -11,7 +11,7 @@ To deploy a [LangGraph Server](../concepts/langgraph_server.md), follow the how- The Standalone Container deployment option is the least restrictive model for deployment. There is no [control plane](./langgraph_control_plane.md). [Data plane](./langgraph_data_plane.md) infrastructure is managed by you. -| | [Control Plane](../concepts/langgraph_control_plane.md) | [Data Plane](../concepts/langgraph_data_plane.md) | +| | [Control plane](../concepts/langgraph_control_plane.md) | [Data plane](../concepts/langgraph_data_plane.md) | |-------------------|-------------------|------------| | **What is it?** | n/a |
    • LangGraph Servers
    • Postgres, Redis, etc
    | | **Where is it hosted?** | n/a | Your cloud | diff --git a/docs/docs/concepts/langgraph_studio.md b/docs/docs/concepts/langgraph_studio.md index fdfb6ff3c..fbd013dd9 100644 --- a/docs/docs/concepts/langgraph_studio.md +++ b/docs/docs/concepts/langgraph_studio.md @@ -9,10 +9,9 @@ search: - [LangGraph Platform](./langgraph_platform.md) - [LangGraph Server](./langgraph_server.md) + - [LangGraph CLI](./langgraph_cli.md) -LangGraph Studio offers a new way to develop LLM applications by providing a specialized agent IDE that enables visualization, interaction, and debugging of complex agentic applications. - -With visual graphs and the ability to edit state, you can better understand agent workflows and iterate faster. LangGraph Studio integrates with LangSmith allowing you to collaborate with teammates to debug failure modes. +LangGraph Studio is a specialized agent IDE that enables visualization, interaction, and debugging of agentic systems that implement the LangGraph Server API protocol. Studio also integrates with LangSmith to enable tracing, evaluation, and prompt engineering. ![](img/lg_studio.png) @@ -20,44 +19,17 @@ With visual graphs and the ability to edit state, you can better understand agen The key features of LangGraph Studio are: -- Visualize your graphs -- Test your graph by running it from the UI -- Debug your agent by [modifying its state and rerunning](human_in_the_loop.md) +- Visualize your graph architecture +- Run and interact with your graph in a GUI - Create and manage [assistants](assistants.md) -- View and manage [threads](persistence.md#threads) +- View and manage [threads](../cloud/concepts/threads.md) - View and manage [long term memory](memory.md) -- Add node input/outputs to [LangSmith](https://smith.langchain.com/) datasets for testing +- Debug agent state via [time travel](time-travel.md) -## Getting started -There are two ways to connect your LangGraph app with the studio: +LangGraph Studio works for graphs that are deployed on [LangGraph Platform](../cloud/quick_start.md) or for graphs that are running locally via the [LangGraph Server](../tutorials/langgraph-platform/local-server.md). -### Deployed Application -If you have deployed your LangGraph application on LangGraph Platform, you can access the studio as part of that deployment. To do so, navigate to the deployment in LangGraph Platform within the LangSmith UI and click the "LangGraph Studio" button. - -### Local Development Server - -If you have a LangGraph application that is [running locally in-memory](../tutorials/langgraph-platform/local-server.md), you can connect it to LangGraph Studio in the browser within LangSmith. - -By default, starting the local server with `langgraph dev` will run the server at `http://127.0.0.1:2024` and automatically open Studio in your browser. However, you can also manually connect to Studio by either: - -1. In LangGraph Platform, clicking the "LangGraph Studio" button and entering the server URL in the dialog that appears. - - or - -2. Navigating to the URL in your browser: - -``` -https://smith.langchain.com/studio/?baseUrl=http://127.0.0.1:2024 -``` - -## Related - -For more information please see the following: - -- [LangGraph Studio how-to guides](../how-tos/index.md#langgraph-studio) -- [LangGraph CLI Documentation](../cloud/reference/cli.md) ## LangGraph Studio FAQs @@ -105,35 +77,6 @@ def routing_function(state: GraphState) -> Literal["node_b","node_c"]: return "node_c" ``` -### Studio Desktop FAQs - -!!! warning "Deprecation Warning" - In order to support a wider range of platforms and users, we now recommend following the above instructions to connect to LangGraph Studio using the development server instead of the desktop app. - -The LangGraph Studio Desktop App is a standalone application that allows you to connect to your LangGraph application and visualize and interact with your graph. It is available for MacOS only and requires Docker to be installed. - -#### Why is my project failing to start? - -In addition to the reasons listed above, for the desktop app there are a few more reasons that your project might fail to start: - -!!! Important "Note " - - LangGraph Studio Desktop automatically populates `LANGCHAIN_*` environment variables for license verification and tracing, regardless of the contents of the `.env` file. All other environment variables defined in `.env` will be read as normal. - -##### Docker issues - -LangGraph Studio (desktop) requires Docker Desktop version 4.24 or higher. Please make sure you have a version of Docker installed that satisfies that requirement and also make sure you have the Docker Desktop app up and running before trying to use LangGraph Studio. In addition, make sure you have docker-compose updated to version 2.22.0 or higher. - -##### Incorrect data region - -If you receive a license verification error when attempting to start the LangGraph Server, you may be logged into the incorrect LangSmith data region. Ensure that you're logged into the correct LangSmith data region and ensure that the LangSmith account has access to LangGraph platform. - -1. In the top right-hand corner, click the user icon and select `Logout`. -1. At the login screen, click the `Data Region` dropdown menu and select the appropriate data region. Then click `Login to LangSmith`. - -### How do I reload the app? - -If you would like to reload the app, don't use Command+R as you might normally do. Instead, close and reopen the app for a full refresh. ### How does automatic rebuilding work? diff --git a/docs/docs/concepts/low_level.md b/docs/docs/concepts/low_level.md index d652bed3e..852682b97 100644 --- a/docs/docs/concepts/low_level.md +++ b/docs/docs/concepts/low_level.md @@ -3,7 +3,7 @@ search: boost: 2 --- -# LangGraph Glossary +# Graph API concepts ## Graphs @@ -17,7 +17,7 @@ At its core, LangGraph models agent workflows as graphs. You define the behavior By composing `Nodes` and `Edges`, you can create complex, looping workflows that evolve the `State` over time. The real power, though, comes from how LangGraph manages that `State`. To emphasize: `Nodes` and `Edges` are nothing more than Python functions - they can contain an LLM or just good ol' Python code. -In short: _nodes do the work. edges tell what to do next_. +In short: _nodes do the work, edges tell what to do next_. LangGraph's underlying graph algorithm uses [message passing](https://en.wikipedia.org/wiki/Message_passing) to define a general program. When a Node completes its operation, it sends messages along one or more edges to other node(s). These recipient nodes then execute their functions, pass the resulting messages to the next set of nodes, and the process continues. Inspired by Google's [Pregel](https://research.google/pubs/pregel-a-system-for-large-scale-graph-processing/) system, the program proceeds in discrete "super-steps." @@ -31,7 +31,7 @@ The `StateGraph` class is the main graph class to use. This is parameterized by To build your graph, you first define the [state](#state), you then add [nodes](#nodes) and [edges](#edges), and then you compile it. What exactly is compiling your graph and why is it needed? -Compiling is a pretty simple step. It provides a few basic checks on the structure of your graph (no orphaned nodes, etc). It is also where you can specify runtime args like [checkpointers](./persistence.md) and [breakpoints](#breakpoints). You compile your graph by just calling the `.compile` method: +Compiling is a pretty simple step. It provides a few basic checks on the structure of your graph (no orphaned nodes, etc). It is also where you can specify runtime args like [checkpointers](./persistence.md) and breakpoints. You compile your graph by just calling the `.compile` method: ```python graph = graph_builder.compile(...) @@ -383,47 +383,18 @@ def my_node(state: State) -> Command[Literal["other_subgraph"]]: This is particularly useful when implementing [multi-agent handoffs](./multi_agent.md#handoffs). +Check out [this guide](../how-tos/graph-api.ipynb#navigate-to-a-node-in-a-parent-graph) for detail. + ### Using inside tools -A common use case is updating graph state from inside a tool. For example, in a customer support application you might want to look up customer information based on their account number or ID in the beginning of the conversation. To update the graph state from the tool, you can return `Command(update={"my_custom_key": "foo", "messages": [...]})` from the tool: +A common use case is updating graph state from inside a tool. For example, in a customer support application you might want to look up customer information based on their account number or ID in the beginning of the conversation. -```python -@tool -def lookup_user_info(tool_call_id: Annotated[str, InjectedToolCallId], config: RunnableConfig): - """Use this to look up user information to better assist them with their questions.""" - user_info = get_user_info(config.get("configurable", {}).get("user_id")) - return Command( - update={ - # update the state keys - "user_info": user_info, - # update the message history - "messages": [ToolMessage("Successfully looked up user information", tool_call_id=tool_call_id)] - } - ) -``` - -!!! important - You MUST include `messages` (or any state key used for the message history) in `Command.update` when returning `Command` from a tool and the list of messages in `messages` MUST contain a `ToolMessage`. This is necessary for the resulting message history to be valid (LLM providers require AI messages with tool calls to be followed by the tool result messages). - -If you are using tools that update state via `Command`, we recommend using prebuilt [`ToolNode`][langgraph.prebuilt.tool_node.ToolNode] which automatically handles tools returning `Command` objects and propagates them to the graph state. If you're writing a custom node that calls tools, you would need to manually propagate `Command` objects returned by the tools as the update from the node. +Refer to [this guide](../how-tos/graph-api.ipynb#use-inside-tools) for detail. ### Human-in-the-loop `Command` is an important part of human-in-the-loop workflows: when using `interrupt()` to collect user input, `Command` is then used to supply the input and resume execution via `Command(resume="User input")`. Check out [this conceptual guide](./human_in_the_loop.md) for more information. -## Persistence - -LangGraph provides built-in persistence for your agent's state using [checkpointers][langgraph.checkpoint.base.BaseCheckpointSaver]. Checkpointers save snapshots of the graph state at every superstep, allowing resumption at any time. This enables features like human-in-the-loop interactions, memory management, and fault-tolerance. You can even directly manipulate a graph's state after its execution using the -appropriate `get` and `update` methods. For more details, see the [persistence conceptual guide](./persistence.md). - -## Threads - -Threads in LangGraph represent individual sessions or conversations between your graph and a user. When using checkpointing, turns in a single conversation (and even steps within a single graph execution) are organized by a unique thread ID. - -## Storage - -LangGraph provides built-in document storage through the [BaseStore][langgraph.store.base.BaseStore] interface. Unlike checkpointers, which save state by thread ID, stores use custom namespaces for organizing data. This enables cross-thread persistence, allowing agents to maintain long-term memories, learn from past interactions, and accumulate knowledge over time. Common use cases include storing user profiles, building knowledge bases, and managing global preferences across all threads. - ## Graph Migrations LangGraph can easily handle migrations of graph definitions (nodes, edges, and state) even when using a checkpointer to track state. @@ -455,7 +426,7 @@ config = {"configurable": {"llm": "anthropic"}} graph.invoke(inputs, config=config) ``` -You can then access and use this configuration inside a node: +You can then access and use this configuration inside a node or conditional edge: ```python def node_a(state, config): @@ -476,139 +447,6 @@ graph.invoke(inputs, config={"recursion_limit": 5, "configurable":{"llm": "anthr Read [this how-to](https://langchain-ai.github.io/langgraph/how-tos/recursion-limit/) to learn more about how the recursion limit works. -## `interrupt` - -Use the [interrupt](../reference/types.md/#langgraph.types.interrupt) function to **pause** the graph at specific points to collect user input. The `interrupt` function surfaces interrupt information to the client, allowing the developer to collect user input, validate the graph state, or make decisions before resuming execution. - -```python -from langgraph.types import interrupt - -def human_approval_node(state: State): - ... - answer = interrupt( - # This value will be sent to the client. - # It can be any JSON serializable value. - {"question": "is it ok to continue?"}, - ) - ... -``` - -Resuming the graph is done by passing a [`Command`](#command) object to the graph with the `resume` key set to the value returned by the `interrupt` function. - -Read more about how the `interrupt` is used for **human-in-the-loop** workflows in the [Human-in-the-loop conceptual guide](./human_in_the_loop.md). - -## Breakpoints - -Breakpoints pause graph execution at specific points and enable stepping through execution step by step. Breakpoints are powered by LangGraph's [**persistence layer**](./persistence.md), which saves the state after each graph step. Breakpoints can also be used to enable [**human-in-the-loop**](./human_in_the_loop.md) workflows, though we recommend using the [`interrupt` function](#interrupt) for this purpose. - -Read more about breakpoints in the [Breakpoints conceptual guide](./breakpoints.md). - -## Subgraphs - -A subgraph is a [graph](#graphs) that is used as a [node](#nodes) in another graph. This is nothing more than the age-old concept of encapsulation, applied to LangGraph. Some reasons for using subgraphs are: - -- building [multi-agent systems](./multi_agent.md) - -- when you want to reuse a set of nodes in multiple graphs, which maybe share some state, you can define them once in a subgraph and then use them in multiple parent graphs - -- when you want different teams to work on different parts of the graph independently, you can define each part as a subgraph, and as long as the subgraph interface (the input and output schemas) is respected, the parent graph can be built without knowing any details of the subgraph - -There are two ways to add subgraphs to a parent graph: - -- add a node with the compiled subgraph: this is useful when the parent graph and the subgraph share state keys and you don't need to transform state on the way in or out - -```python -builder.add_node("subgraph", subgraph_builder.compile()) -``` - -- add a node with a function that invokes the subgraph: this is useful when the parent graph and the subgraph have different state schemas and you need to transform state before or after calling the subgraph - -```python -subgraph = subgraph_builder.compile() - -def call_subgraph(state: State): - return subgraph.invoke({"subgraph_key": state["parent_key"]}) - -builder.add_node("subgraph", call_subgraph) -``` - -Let's take a look at examples for each. - -### As a compiled graph - -The simplest way to create subgraph nodes is by using a [compiled subgraph](#compiling-your-graph) directly. When doing so, it is **important** that the parent graph and the subgraph [state schemas](#state) share at least one key which they can use to communicate. If your graph and subgraph do not share any keys, you should write a function [invoking the subgraph](#as-a-function) instead. - -!!! Note - If you pass extra keys to the subgraph node (i.e., in addition to the shared keys), they will be ignored by the subgraph node. Similarly, if you return extra keys from the subgraph, they will be ignored by the parent graph. - -```python -from langgraph.graph import StateGraph -from typing import TypedDict - -class State(TypedDict): - foo: str - -class SubgraphState(TypedDict): - foo: str # note that this key is shared with the parent graph state - bar: str - -# Define subgraph -def subgraph_node(state: SubgraphState): - # note that this subgraph node can communicate with the parent graph via the shared "foo" key - return {"foo": state["foo"] + "bar"} - -subgraph_builder = StateGraph(SubgraphState) -subgraph_builder.add_node(subgraph_node) -... -subgraph = subgraph_builder.compile() - -# Define parent graph -builder = StateGraph(State) -builder.add_node("subgraph", subgraph) -... -graph = builder.compile() -``` - -### As a function - -You might want to define a subgraph with a completely different schema. In this case, you can create a node function that invokes the subgraph. This function will need to [transform](../how-tos/subgraph-transform-state.ipynb) the input (parent) state to the subgraph state before invoking the subgraph, and transform the results back to the parent state before returning the state update from the node. - -```python -class State(TypedDict): - foo: str - -class SubgraphState(TypedDict): - # note that none of these keys are shared with the parent graph state - bar: str - baz: str - -# Define subgraph -def subgraph_node(state: SubgraphState): - return {"bar": state["bar"] + "baz"} - -subgraph_builder = StateGraph(SubgraphState) -subgraph_builder.add_node(subgraph_node) -... -subgraph = subgraph_builder.compile() - -# Define parent graph -def node(state: State): - # transform the state to the subgraph state - response = subgraph.invoke({"bar": state["foo"]}) - # transform response back to the parent state - return {"foo": response["bar"]} - -builder = StateGraph(State) -# note that we are using `node` function instead of a compiled subgraph -builder.add_node(node) -... -graph = builder.compile() -``` - ## Visualization It's often nice to be able to visualize graphs, especially as they get more complex. LangGraph comes with several built-in ways to visualize graphs. See [this how-to guide](../how-tos/visualization.ipynb) for more info. - -## Streaming - -LangGraph is built with first class support for streaming, including streaming updates from graph nodes during the execution, streaming tokens from LLM calls and more. See this [conceptual guide](./streaming.md) for more information. diff --git a/docs/docs/concepts/multi_agent.md b/docs/docs/concepts/multi_agent.md index 401fab8be..6f7cc5f43 100644 --- a/docs/docs/concepts/multi_agent.md +++ b/docs/docs/concepts/multi_agent.md @@ -3,7 +3,7 @@ search: boost: 2 --- -# Multi-agent Systems +# Multi-agent systems An [agent](./agentic_concepts.md#agent-architectures) is _a system that uses an LLM to decide the control flow of an application_. As you develop these systems, they might grow more complex over time, making them harder to manage and scale. For example, you might run into the following problems: @@ -33,7 +33,7 @@ There are several ways to connect agents in a multi-agent system: ### Handoffs -In multi-agent architectures, agents can be represented as graph nodes. Each agent node executes its step(s) and decides whether to finish execution or route to another agent, including potentially routing to itself (e.g., running in a loop). A common pattern in multi-agent interactions is handoffs, where one agent hands off control to another. Handoffs allow you to specify: +In multi-agent architectures, agents can be represented as graph nodes. Each agent node executes its step(s) and decides whether to finish execution or route to another agent, including potentially routing to itself (e.g., running in a loop). A common pattern in multi-agent interactions is **handoffs**, where one agent *hands off* control to another. Handoffs allow you to specify: - __destination__: target agent to navigate to (e.g., name of the node to go to) - __payload__: [information to pass to that agent](#communication-between-agents) (e.g., state update) @@ -82,14 +82,20 @@ def some_node_inside_alice(state): #### Handoffs as tools -One of the most common agent types is a ReAct-style tool-calling agents. For those types of agents, a common pattern is wrapping a handoff in a tool call, e.g.: +One of the most common agent types is a [tool-calling agent](../agents/overview.md). For those types of agents, a common pattern is wrapping a handoff in a tool call, e.g.: ```python -def transfer_to_bob(state): +from langchain_core.tools import tool + +def transfer_to_bob(): """Transfer to bob.""" return Command( + # name of the agent (node) to go to goto="bob", + # data to send to the agent update={"my_state_key": "my_state_value"}, + # indicate to LangGraph that we need to navigate to + # agent node in a parent graph graph=Command.PARENT, ) ``` @@ -342,45 +348,70 @@ builder.add_edge(START, "agent_1") builder.add_edge("agent_1", "agent_2") ``` -## Communication between agents +## Communication and state management -The most important thing when building multi-agent systems is figuring out how the agents communicate. There are a few different considerations: +The most important thing when building multi-agent systems is figuring out how the agents communicate. -- Do agents communicate [**via graph state or via tool calls**](#graph-state-vs-tool-calls)? -- What if two agents have [**different state schemas**](#different-state-schemas)? -- How to communicate over a [**shared message list**](#shared-message-list)? +A common, generic way for agents to communicate is via a list of messages. This opens up the following questions: -### Graph state vs tool calls +- Do agents communicate [**via handoffs or via tool calls**](#handoffs-vs-tool-calls)? +- What messages are [**passed from one agent to the next**](#message-passing-between-agents)? +- How are [**handoffs represented in the list of messages**](#representing-handoffs-in-message-history)? +- How do you [**manage state for subagents**](#state-management-for-subagents)? -What is the "payload" that is being passed around between agents? In most of the architectures discussed above the agents communicate via the [graph state](./low_level.md#state). In the case of the [supervisor with tool-calling](#supervisor-tool-calling), the payloads are tool call arguments. +Additionally, if you are dealing with more complex agents or wish to keep individual agent state separate from the multi-agent system state, you may need to use [**different state schemas**](#using-different-state-schemas). + +### Handoffs vs tool calls + +What is the "payload" that is being passed around between agents? In most of the architectures discussed above, the agents communicate via [handoffs](#handoffs) and pass the [graph state](./low_level.md#state) as part of the handoff payload. Specifically, agents pass around lists of messages as part of the graph state. In the case of the [supervisor with tool-calling](#supervisor-tool-calling), the payloads are tool call arguments. ![](./img/multi_agent/request.png) -#### Graph state +### Message passing between agents -To communicate via graph state, individual agents need to be defined as [graph nodes](./low_level.md#nodes). These can be added as functions or as entire [subgraphs](./low_level.md#subgraphs). At each step of the graph execution, agent node receives the current state of the graph, executes the agent code and then passes the updated state to the next nodes. - -Typically agent nodes share a single [state schema](./low_level.md#schema). However, you might want to design agent nodes with [different state schemas](#different-state-schemas). - -### Different state schemas - -An agent might need to have a different state schema from the rest of the agents. For example, a search agent might only need to keep track of queries and retrieved documents. There are two ways to achieve this in LangGraph: - -- Define [subgraph](./low_level.md#subgraphs) agents with a separate state schema. If there are no shared state keys (channels) between the subgraph and the parent graph, it’s important to [add input / output transformations](https://langchain-ai.github.io/langgraph/how-tos/subgraph-transform-state/) so that the parent graph knows how to communicate with the subgraphs. -- Define agent node functions with a [private input state schema](https://langchain-ai.github.io/langgraph/how-tos/pass_private_state/) that is distinct from the overall graph state schema. This allows passing information that is only needed for executing that particular agent. - -### Shared message list - -The most common way for the agents to communicate is via a shared state channel, typically a list of messages. This assumes that there is always at least a single channel (key) in the state that is shared by the agents. When communicating via a shared message list there is an additional consideration: should the agents [share the full history](#share-full-history) of their thought process or only [the final result](#share-final-result)? +The most common way for agents to communicate is via a shared state channel, typically a list of messages. This assumes that there is always at least a single channel (key) in the state that is shared by the agents (e.g., `messages`). When communicating via a shared message list, there is an additional consideration: should the agents [share the full history](#sharing-full-thought-process) of their thought process or only [the final result](#sharing-only-final-results)? ![](./img/multi_agent/response.png) -#### Share full history +#### Sharing full thought process -Agents can **share the full history** of their thought process (i.e. "scratchpad") with all other agents. This "scratchpad" would typically look like a [list of messages](./low_level.md#why-use-messages). The benefit of sharing full thought process is that it might help other agents make better decisions and improve reasoning ability for the system as a whole. The downside is that as the number of agents and their complexity grows, the "scratchpad" will grow quickly and might require additional strategies for [memory management](./memory.md/#managing-long-conversation-history). +Agents can **share the full history** of their thought process (i.e., "scratchpad") with all other agents. This "scratchpad" would typically look like a [list of messages](./low_level.md#why-use-messages). The benefit of sharing the full thought process is that it might help other agents make better decisions and improve reasoning ability for the system as a whole. The downside is that as the number of agents and their complexity grows, the "scratchpad" will grow quickly and might require additional strategies for [memory management](./memory.md/#managing-long-conversation-history). -#### Share final result +#### Sharing only final results -Agents can have their own private "scratchpad" and only **share the final result** with the rest of the agents. This approach might work better for systems with many agents or agents that are more complex. In this case, you would need to define agents with [different state schemas](#different-state-schemas) +Agents can have their own private "scratchpad" and only **share the final result** with the rest of the agents. This approach might work better for systems with many agents or agents that are more complex. In this case, you would need to define agents with [different state schemas](#using-different-state-schemas). -For agents called as tools, the supervisor determines the inputs based on the tool schema. Additionally, LangGraph allows [passing state](https://langchain-ai.github.io/langgraph/how-tos/pass-run-time-values-to-tools/#pass-graph-state-to-tools) to individual tools at runtime, so subordinate agents can access parent state, if needed. +For agents called as tools, the supervisor determines the inputs based on the tool schema. Additionally, LangGraph allows [passing state](../how-tos/tool-calling.ipynb#read-state) to individual tools at runtime, so subordinate agents can access parent state, if needed. + +#### Indicating agent name in messages + +It can be helpful to indicate which agent a particular AI message is from, especially for long message histories. Some LLM providers (like OpenAI) support adding a `name` parameter to messages — you can use that to attach the agent name to the message. If that is not supported, you can consider manually injecting the agent name into the message content, e.g., `alicemessage from alice`. + +### Representing handoffs in message history + +Handoffs are typically done via the LLM calling a dedicated [handoff tool](#handoffs-as-tools). This is represented as an [AI message](https://python.langchain.com/docs/concepts/messages/#aimessage) with tool calls that is passed to the next agent (LLM). Most LLM providers don't support receiving AI messages with tool calls **without** corresponding tool messages. + +You therefore have two options: + +1. Add an extra [tool message](https://python.langchain.com/docs/concepts/messages/#toolmessage) to the message list, e.g., "Successfully transferred to agent X" +2. Remove the AI message with the tool calls + +In practice, we see that most developers opt for option (1). + +### State management for subagents + +A common practice is to have multiple agents communicating on a shared message list, but only [adding their final messages to the list](#sharing-only-final-results). This means that any intermediate messages (e.g., tool calls) are not saved in this list. + +What if you __do__ want to save these messages so that if this particular subagent is invoked in the future you can pass those back in? + +There are two high-level approaches to achieve that: + +1. Store these messages in the shared message list, but filter the list before passing it to the subagent LLM. For example, you can choose to filter out all tool calls from **other** agents. +2. Store a separate message list for each agent (e.g., `alice_messages`) in the subagent's graph state. This would be their "view" of what the message history looks like. + +### Using different state schemas + +An agent might need to have a different state schema from the rest of the agents. For example, a search agent might only need to keep track of queries and retrieved documents. There are two ways to achieve this in LangGraph: + +- Define [subgraph](./low_level.md#subgraphs) agents with a separate state schema. If there are no shared state keys (channels) between the subgraph and the parent graph, it’s important to [add input / output transformations](../how-tos/subgraph.ipynb#different-state-schemas) so that the parent graph knows how to communicate with the subgraphs. +- Define agent node functions with a [private input state schema](../how-tos/graph-api.ipynb/#pass-private-state-between-nodes) that is distinct from the overall graph state schema. This allows passing information that is only needed for executing that particular agent. \ No newline at end of file diff --git a/docs/docs/concepts/persistence.md b/docs/docs/concepts/persistence.md index 28ef4a96b..d1381b5c5 100644 --- a/docs/docs/concepts/persistence.md +++ b/docs/docs/concepts/persistence.md @@ -232,7 +232,7 @@ But, what if we want to retain some information *across threads*? Consider the c With checkpointers alone, we cannot share information across threads. This motivates the need for the [`Store`](../reference/store.md#langgraph.store.base.BaseStore) interface. As an illustration, we can define an `InMemoryStore` to store information about a user across threads. We simply compile our graph with a checkpointer, as before, and with our new `in_memory_store` variable. -!!! info "LangGraph API handles stores automatically" +!!! info "LangGraph API handles stores automatically" When using the LangGraph API, you don't need to implement or configure stores manually. The API handles all storage infrastructure for you behind the scenes. diff --git a/docs/docs/concepts/plans.md b/docs/docs/concepts/plans.md index 883477155..2831fd5df 100644 --- a/docs/docs/concepts/plans.md +++ b/docs/docs/concepts/plans.md @@ -10,9 +10,9 @@ search: LangGraph Platform is a commercial solution for deploying agentic applications in production. There are three different plans for using it. -- **Developer**: All [LangSmith](https://smith.langchain.com/) users have access to this plan. You can sign up for this plan simply by creating a LangSmith account. This gives you access to the [Self-Hosted Lite](./deployment_options.md#self-hosted-lite) deployment option. +- **Developer**: All [LangSmith](https://smith.langchain.com/) users have access to this plan. You can sign up for this plan simply by creating a LangSmith account. This gives you access to the [Self-Hosted Lite](./deployment_options.md) deployment option. - **Plus**: All [LangSmith](https://smith.langchain.com/) users with a [Plus account](https://docs.smith.langchain.com/administration/pricing) have access to this plan. You can sign up for this plan simply by upgrading your LangSmith account to the Plus plan type. This gives you access to the [Cloud](./deployment_options.md#cloud-saas) deployment option. -- **Enterprise**: This is separate from LangSmith plans. You can sign up for this plan by contacting sales@langchain.dev. This gives you access to all deployment options: [Cloud](./deployment_options.md#cloud-saas), [Bring-Your-Own-Cloud](./deployment_options.md#bring-your-own-cloud), and [Self Hosted Enterprise](./deployment_options.md#self-hosted-enterprise) +- **Enterprise**: This is separate from LangSmith plans. You can sign up for this plan by contacting sales@langchain.dev. This gives you access to all [deployment options](./deployment_options.md). ## Plan Details @@ -20,7 +20,7 @@ There are three different plans for using it. | | Developer | Plus | Enterprise | |------------------------------------------------------------------|---------------------------------------------|-------------------------------------------------------|-----------------------------------------------------| | Deployment Options | Self-Hosted Lite | Cloud | Self-Hosted Enterprise, Cloud, Bring-Your-Own-Cloud | -| Usage | Free, limited to 1M nodes executed per year | Free while in Beta, will be charged per node executed | Custom | +| Usage | Free, limited to 1M nodes executed per year | Free while in Beta, will be charged per node executed | Custom | | APIs for retrieving and updating state and conversational history | ✅ | ✅ | ✅ | | APIs for retrieving and updating long-term memory | ✅ | ✅ | ✅ | | Horizontally scalable task queues and servers | ✅ | ✅ | ✅ | diff --git a/docs/docs/concepts/platform_architecture.md b/docs/docs/concepts/platform_architecture.md deleted file mode 100644 index 3b7e9f95d..000000000 --- a/docs/docs/concepts/platform_architecture.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -search: - boost: 2 ---- - -# LangGraph Platform Architecture - -![](img/langgraph_platform_deployment_architecture.png) - -## How we use Postgres - -Postgres is the persistence layer for all user, run, and long-term memory data in LGP. This stores both checkpoints (see more info [here](./persistence.md)), server resources (threads, runs, assistants and crons), as well as items saved in the long-term memory store (see more info [here](./persistence.md#memory-store)). - -## How we use Redis - -Redis is used in each LGP deployment as a way for server and queue workers to communicate, and to store ephemeral metadata, more details on both below. No user/run data is stored in Redis. - -### Communication - -All runs in LGP are executed by the pool of background workers that are part of each deployment. In order to enable some features for those runs (such as cancellation and output streaming) we need a channel for two-way communication between the server and the worker handling a particular run. We use Redis to organize that communication. - -1. A Redis list is used as a mechanism to wake up a worker as soon as a new run is created. Only a sentinel value is stored in this list, no actual run info. The run information is then retrieved from Postgres by the worker. -2. A combination of a Redis string and Redis PubSub channel is used for the server to communicate a run cancellation request to the appropriate worker. -3. A Redis PubSub channel is used by the worker to broadcast streaming output from an agent while the run is being handled. Any open `/stream` request in the server will subscribe to that channel and forward any events to the response as they arrive. No events are stored in Redis at any time. - -### Ephemeral metadata - -Runs in an LGP deployment may be retried for specific failures (currently only for transient Postgres errors encountered during the run). In order to limit the number of retries (currently limited to 3 attempts per run) we record the attempt number in a Redis string when is picked up. This contains no run-specific info other than its ID, and expires after a short delay. diff --git a/docs/docs/concepts/pregel.md b/docs/docs/concepts/pregel.md index 039ba1226..9ff2a855e 100644 --- a/docs/docs/concepts/pregel.md +++ b/docs/docs/concepts/pregel.md @@ -33,14 +33,8 @@ An **actor** is a `PregelNode`. It subscribes to channels, reads data from them, Channels are used to communicate between actors (PregelNodes). Each channel has a value type, an update type, and an update function – which takes a sequence of updates and modifies the stored value. Channels can be used to send data from one chain to another, or to send data from a chain to itself in a future step. LangGraph provides a number of built-in channels: -### Basic channels: LastValue and Topic - - [LastValue][langgraph.channels.LastValue]: The default channel, stores the last value sent to the channel, useful for input and output values, or for sending data from one step to the next. - [Topic][langgraph.channels.Topic]: A configurable PubSub Topic, useful for sending multiple values between **actors**, or for accumulating output. Can be configured to deduplicate values or to accumulate values over the course of multiple steps. - -### Advanced channels: Context and BinaryOperatorAggregate - -- `Context`: exposes the value of a context manager, managing its lifecycle. Useful for accessing external resources that require setup and/or teardown; e.g., `client = Context(httpx.Client)`. - [BinaryOperatorAggregate][langgraph.channels.BinaryOperatorAggregate]: stores a persistent value, updated by applying a binary operator to the current value and each update sent to the channel, useful for computing aggregates over multiple steps; e.g.,`total = BinaryOperatorAggregate(int, operator.add)` ## Examples diff --git a/docs/docs/concepts/scalability_and_resilience.md b/docs/docs/concepts/scalability_and_resilience.md index 089f63e34..76a035bb8 100644 --- a/docs/docs/concepts/scalability_and_resilience.md +++ b/docs/docs/concepts/scalability_and_resilience.md @@ -3,7 +3,7 @@ search: boost: 2 --- -# LangGraph Platform: Scalability & Resilience +# Scalability & Resilience LangGraph Platform is designed to scale horizontally with your workload. Each instance of the service is stateless, and keeps no resources in memory. The service is designed to gracefully handle new instances being added or removed, including hard shutdown cases. @@ -25,16 +25,16 @@ When a graceful shutdown request is received (SIGINT) an instance enters shutdow - gives any in-progress runs a limited number of seconds to finish (if not finished it will be put back in the queue) - stops the instance from picking up more runs from the queue -If a hard shutdown occurs, eg. due to a server crash, or an infra failure, any runs that were in progress will be picked up by a periodic sweeper task that looks for in-progress runs that have breached their heartbeat window, which will put them back in the queue for another instance to pick them up. +If a hard shutdown occurs due to a server crash or an infrastructure failure, any runs that were in progress will be picked up by a internal sweeper task that looks for in-progress runs that have breached their heartbeat window. The sweeper runs every 2 minutes and will put the runs back in the queue for another instance to pick them up. ## Postgres resilience -For deployment modalities where we manage the Postgres database we have periodic backups, continuously replicated standby replicas for automatic failover. Optionally, on request, we can also setup read replicas as well as other advanced failover capabilities. +For deployment modalities where we manage the Postgres database, we have periodic backups and continuously replicated standby replicas for automatic failover. This Postgres configuration is available in the [Cloud SaaS deployment option](../concepts/langgraph_cloud.md) for [`Production` deployment types](../concepts/langgraph_control_plane.md#deployment-types) only. -All communication with Postgres implements retries for retry-able errors. If Postgres is momentarily unavailable, such as during a database restart, most/all traffic should continue to succeed. Prolonged failure of the Postgres instance will switch traffic to the failover replica. If the failover replica also fails before the primary is brought back online the service would become unavailable. +All communication with Postgres implements retries for retry-able errors. If Postgres is momentarily unavailable, such as during a database restart, most/all traffic should continue to succeed. Prolonged failure of Postgres will render the LangGraph Server unavailable. ## Redis resilience -All data that requires durable storage is stored in Postgres, not Redis. Redis is used only for ephemeral metadata, and communication between instances. Refer to the [architecture](./platform_architecture.md) page for more details on how we use Redis. Therefore we place no durability requirements on Redis. +All data that requires durable storage is stored in Postgres, not Redis. Redis is used only for ephemeral metadata, and communication between instances. Therefore we place no durability requirements on Redis. -All communication with Redis implements retries for retry-able errors. If Redis is momentarily unavailable, such as during a database restart, most/all traffic should continue to succeed. Prolonged failure of Redis will render the LGP service unavailable. +All communication with Redis implements retries for retry-able errors. If Redis is momentarily unavailable, such as during a database restart, most/all traffic should continue to succeed. Prolonged failure of Redis will render the LangGraph Server unavailable. diff --git a/docs/docs/concepts/sdk.md b/docs/docs/concepts/sdk.md index f97699bb7..221fcccde 100644 --- a/docs/docs/concepts/sdk.md +++ b/docs/docs/concepts/sdk.md @@ -5,15 +5,15 @@ search: # LangGraph SDK -!!! info "Prerequisites" - - [LangGraph Platform](./langgraph_platform.md) - - [LangGraph Server](./langgraph_server.md) +LangGraph Platform provides both a Python SDK for interacting with [LangGraph Server](./langgraph_server.md). -The LangGraph Platform provides both a Python and JS SDK for interacting with the [LangGraph Server API](./langgraph_server.md). +!!! tip "Python SDK reference" + + For detailed information about the Python SDK, see [Python SDK reference docs](../cloud/reference/sdk/python_sdk_ref.md). ## Installation -You can install the packages using the appropriate package manager for your language. +You can install the packages using the appropriate package manager for your language: === "Python" ```bash @@ -25,25 +25,9 @@ You can install the packages using the appropriate package manager for your lang yarn add @langchain/langgraph-sdk ``` +## Python sync vs. async -## API Reference - -You can find the API reference for the SDKs here: - -- [Python SDK Reference](../cloud/reference/sdk/python_sdk_ref.md) -- [JS/TS SDK Reference](../cloud/reference/sdk/js_ts_sdk_ref.md) - -## Python Sync vs. Async - -The Python SDK provides both synchronous (`get_sync_client`) and asynchronous (`get_client`) clients for interacting with the LangGraph Server API. - -=== "Async" - ```python - from langgraph_sdk import get_client - - client = get_client(url=..., api_key=...) - await client.assistants.search() - ``` +The Python SDK provides both synchronous (`get_sync_client`) and asynchronous (`get_client`) clients for interacting with LangGraph Server: === "Sync" @@ -54,8 +38,17 @@ The Python SDK provides both synchronous (`get_sync_client`) and asynchronous (` client.assistants.search() ``` -## Related +=== "Async" + ```python + from langgraph_sdk import get_client + + client = get_client(url=..., api_key=...) + await client.assistants.search() + ``` + + +## Learn more -- [LangGraph CLI API Reference](../cloud/reference/cli.md) - [Python SDK Reference](../cloud/reference/sdk/python_sdk_ref.md) +- [LangGraph CLI API Reference](../cloud/reference/cli.md) - [JS/TS SDK Reference](../cloud/reference/sdk/js_ts_sdk_ref.md) \ No newline at end of file diff --git a/docs/docs/concepts/self_hosted.md b/docs/docs/concepts/self_hosted.md deleted file mode 100644 index e6338e267..000000000 --- a/docs/docs/concepts/self_hosted.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -search: - boost: 2 ---- - -# Self-Hosted - -!!! note Prerequisites - - - [LangGraph Platform](./langgraph_platform.md) - - [Deployment Options](./deployment_options.md) - -## Versions - -There are two versions of the self-hosted deployment: [Self-Hosted Data Plane](./deployment_options.md#self-hosted-data-plane) and [Self-Hosted Control Plane](./deployment_options.md#self-hosted-control-plane). - -### Self-Hosted Data Plane - -The [Self-Hosted Data Plane](./langgraph_self_hosted_data_plane.md) deployment option is a "hybrid" model for deployment where we manage the [control plane](./langgraph_control_plane.md) in our cloud and you manage the [data plane](./langgraph_data_plane.md) in your cloud. This option provides a way to securely manage your data plane infrastructure, while offloading control plane management to us. - -When using the Self-Hosted Data Plane version, you authenticate with a [LangSmith](https://smith.langchain.com/) API key. - -### Self-Hosted Control Plane - -The [Self-Hosted Control Plane](./langgraph_self_hosted_control_plane.md) deployment option is a fully self-hosted model for deployment where you manage the [control plane](./langgraph_control_plane.md) and [data plane](./langgraph_data_plane.md) in your cloud. This option give you full control and responsibility of the control plane and data plane infrastructure. - -## Requirements - -- You use `langgraph-cli` and/or [LangGraph Studio](./langgraph_studio.md) app to test graph locally. -- You use `langgraph build` command to build image. - -## How it works - -- Deploy Redis and Postgres instances on your own infrastructure. -- Build the docker image for [LangGraph Server](./langgraph_server.md) using the [LangGraph CLI](./langgraph_cli.md). -- Deploy a web server that will run the docker image and pass in the necessary environment variables. - -!!! warning "Note" - - The LangGraph Platform Deployments view is optionally available for Self-Hosted LangGraph deployments. With one click, self-hosted LangGraph deployments can be deployed in the same Kubernetes cluster where a self-hosted LangSmith instance is deployed. - -For step-by-step instructions, see [How to set up a self-hosted deployment of LangGraph](../how-tos/deploy-self-hosted.md). - -## Helm Chart - -If you would like to deploy LangGraph Cloud on Kubernetes, you can use this [Helm chart](https://github.com/langchain-ai/helm/blob/main/charts/langgraph-cloud/README.md). - -## Related - -- [How to set up a self-hosted deployment of LangGraph](../how-tos/deploy-self-hosted.md). diff --git a/docs/docs/concepts/streaming.md b/docs/docs/concepts/streaming.md index be1a0eeb6..71bcf4f0a 100644 --- a/docs/docs/concepts/streaming.md +++ b/docs/docs/concepts/streaming.md @@ -1,66 +1,23 @@ --- search: - boost: 2 +boost: 2 --- # Streaming -Building a responsive app for end-users? Real-time updates are key to keeping users engaged as your app progresses. +LangGraph implements a streaming system to surface real-time updates, allowing for responsive and transparent user experiences. -There are three main types of data you’ll want to stream: +LangGraph’s streaming system lets you surface live feedback from graph runs to your app. +There are three main categories of data you can stream: -1. Workflow progress (e.g., get state updates after each graph node is executed). -2. LLM tokens as they’re generated. -3. Custom updates (e.g., "Fetched 10/100 records"). +1. **Workflow progress** — get state updates after each graph node is executed. +2. **LLM tokens** — stream language model tokens as they’re generated. +3. **Custom updates** — emit user-defined signals (e.g., “Fetched 10/100 records”). -## Streaming graph outputs (`.stream` and `.astream`) +## What’s possible with LangGraph streaming -`.stream` and `.astream` are sync and async methods for streaming back outputs from a graph run. -There are several different modes you can specify when calling these methods (e.g. `graph.stream(..., mode="...")): - -- [`"values"`](../how-tos/streaming.ipynb#values): This streams the full value of the state after each step of the graph. -- [`"updates"`](../how-tos/streaming.ipynb#updates): This streams the updates to the state after each step of the graph. If multiple updates are made in the same step (e.g. multiple nodes are run) then those updates are streamed separately. -- [`"custom"`](../how-tos/streaming.ipynb#custom): This streams custom data from inside your graph nodes. -- [`"messages"`](../how-tos/streaming-tokens.ipynb): This streams LLM tokens and metadata for the graph node where LLM is invoked. -- [`"debug"`](../how-tos/streaming.ipynb#debug): This streams as much information as possible throughout the execution of the graph. - -You can also specify multiple streaming modes at the same time by passing them as a list. When you do this, the streamed outputs will be tuples `(stream_mode, data)`. For example: - -```python -graph.stream(..., stream_mode=["updates", "messages"]) -``` - -``` -... -('messages', (AIMessageChunk(content='Hi'), {'langgraph_step': 3, 'langgraph_node': 'agent', ...})) -... -('updates', {'agent': {'messages': [AIMessage(content="Hi, how can I help you?")]}}) -``` - -The below visualization shows the difference between the `values` and `updates` modes: - -![values vs updates](../static/values_vs_updates.png) - - -## LangGraph Platform - -Streaming is critical for making LLM applications feel responsive to end users. When creating a streaming run, the streaming mode determines what data is streamed back to the API client. LangGraph Platform supports five streaming modes: - -- `values`: Stream the full state of the graph after each [super-step](https://langchain-ai.github.io/langgraph/concepts/low_level/#graphs) is executed. See the [how-to guide](../cloud/how-tos/stream_values.md) for streaming values. -- `messages-tuple`: Stream LLM tokens for any messages generated inside a node. This mode is primarily meant for powering chat applications. See the [how-to guide](../cloud/how-tos/stream_messages.md) for streaming messages. -- `updates`: Streams updates to the state of the graph after each node is executed. See the [how-to guide](../cloud/how-tos/stream_updates.md) for streaming updates. -- `debug`: Stream debug events throughout graph execution. See the [how-to guide](../cloud/how-tos/stream_debug.md) for streaming debug events. -- `events`: Stream all events (including the state of the graph) that occur during graph execution. See the [how-to guide](../cloud/how-tos/stream_events.md) for streaming events. This mode is only useful for users migrating large LCEL applications to LangGraph. Generally, this mode is not necessary for most applications. - -You can also specify multiple streaming modes at the same time. See the [how-to guide](../cloud/how-tos/stream_multiple.md) for configuring multiple streaming modes at the same time. - -See the [API reference](../cloud/reference/api/api_ref.html#tag/threads-runs/POST/threads/{thread_id}/runs/stream) for how to create streaming runs. - -Streaming modes `values`, `updates`, `messages-tuple` and `debug` are very similar to modes available in the LangGraph library - for a deeper conceptual explanation of those, you can see the [previous section](#streaming-graph-outputs-stream-and-astream). - -Streaming mode `events` is the same as using `.astream_events` in the LangGraph library - for a deeper conceptual explanation of this, you can see the [previous section](#streaming-graph-outputs-stream-and-astream). - -All events emitted have two attributes: - -- `event`: This is the name of the event -- `data`: This is data associated with the event \ No newline at end of file +- [**Stream LLM tokens**](../how-tos/streaming.md#llm-tokens-messages) — capture token streams from anywhere: inside nodes, subgraphs, or tools. +- [**Emit progress notifications from tools**](../how-tos/streaming.md#stream-custom-data) — send custom updates or progress signals directly from tool functions. +- [**Stream from subgraphs**](../how-tos/streaming.md#subgraphs) — include outputs from both the parent graph and any nested subgraphs. +- [**Use any LLM**](../how-tos/streaming.md#use-with-any-llm) — stream tokens from any LLM, even if it's not a LangChain model using the `custom` streaming mode. +- [**Use multiple streaming modes**](../how-tos/streaming.md#stream-multiple-modes) — choose from `values` (full state), `updates` (state deltas), `messages` (LLM tokens + metadata), `custom` (arbitrary user data), or `debug` (detailed traces). \ No newline at end of file diff --git a/docs/docs/concepts/subgraphs.md b/docs/docs/concepts/subgraphs.md new file mode 100644 index 000000000..092cb9bb0 --- /dev/null +++ b/docs/docs/concepts/subgraphs.md @@ -0,0 +1,81 @@ +# Subgraphs + +A subgraph is a [graph](./low_level.md#graphs) that is used as a [node](./low_level.md#nodes) in another graph — this is the concept of encapsulation applied to LangGraph. Subgraphs allow you to build complex systems with multiple components that are themselves graphs. + +![Subgraph](./img/subgraph.png) + +Some reasons for using subgraphs are: + +- building [multi-agent systems](./multi_agent.md) +- when you want to reuse a set of nodes in multiple graphs +- when you want different teams to work on different parts of the graph independently, you can define each part as a subgraph, and as long as the subgraph interface (the input and output schemas) is respected, the parent graph can be built without knowing any details of the subgraph + +The main question when adding subgraphs is how the parent graph and subgraph communicate, i.e. how they pass the [state](./low_level.md#state) between each other during the graph execution. There are two scenarios: + +* parent and subgraph have **shared state keys** in their state [schemas](./low_level.md#state). In this case, you can [include the subgraph as a node in the parent graph](../how-tos/subgraph.ipynb#shared-state-schemas) + + ```python + from langgraph.graph import StateGraph, MessagesState, START + + # Subgraph + + def call_model(state: MessagesState): + response = model.invoke(state["messages"]) + return {"messages": response} + + subgraph_builder = StateGraph(State) + subgraph_builder.add_node(call_model) + ... + # highlight-next-line + subgraph = subgraph_builder.compile() + + # Parent graph + + builder = StateGraph(State) + # highlight-next-line + builder.add_node("subgraph_node", subgraph) + builder.add_edge(START, "subgraph_node") + graph = builder.compile() + ... + graph.invoke({"messages": [{"role": "user", "content": "hi!"}]}) + ``` + +* parent graph and subgraph have **different schemas** (no shared state keys in their state [schemas](./low_level.md#state)). In this case, you have to [call the subgraph from inside a node in the parent graph](../how-tos/subgraph.ipynb#different-state-schemas): this is useful when the parent graph and the subgraph have different state schemas and you need to transform state before or after calling the subgraph + + ```python + from typing_extensions import TypedDict, Annotated + from langchain_core.messages import AnyMessage + from langgraph.graph import StateGraph, MessagesState, START + from langgraph.graph.message import add_messages + + class SubgraphMessagesState(TypedDict): + # highlight-next-line + subgraph_messages: Annotated[list[AnyMessage], add_messages] + + # Subgraph + + # highlight-next-line + def call_model(state: SubgraphMessagesState): + response = model.invoke(state["subgraph_messages"]) + return {"subgraph_messages": response} + + subgraph_builder = StateGraph(State) + subgraph_builder.add_node(call_model) + ... + # highlight-next-line + subgraph = subgraph_builder.compile() + + # Parent graph + + def call_subgraph(state: MessagesState): + response = subgraph.invoke({"subgraph_messages": state["messages"]}) + return {"messages": response["subgraph_messages"]} + + builder = StateGraph(State) + # highlight-next-line + builder.add_node("subgraph_node", call_subgraph) + builder.add_edge(START, "subgraph_node") + graph = builder.compile() + ... + graph.invoke({"messages": [{"role": "user", "content": "hi!"}]}) + ``` diff --git a/docs/docs/concepts/template_applications.md b/docs/docs/concepts/template_applications.md index c0518912d..1f6ede360 100644 --- a/docs/docs/concepts/template_applications.md +++ b/docs/docs/concepts/template_applications.md @@ -16,9 +16,23 @@ You can create an application from a template using the LangGraph CLI. ## Install the LangGraph CLI -```bash -pip install "langgraph-cli[inmem]" --upgrade -``` +=== "Python" + + ```bash + pip install "langgraph-cli[inmem]" --upgrade + ``` + + Or via [`uv`](https://docs.astral.sh/uv/getting-started/installation/) (recommended): + + ```bash + uvx --from "langgraph-cli[inmem]" langgraph dev --help + ``` + +=== "JS" + + ```bash + npx @langchain/langgraph-cli --help + ``` ## Available Templates @@ -35,9 +49,23 @@ pip install "langgraph-cli[inmem]" --upgrade To create a new app from a template, use the `langgraph new` command. -```bash -langgraph new -``` +=== "Python" + + ```bash + langgraph new + ``` + + Or via [`uv`](https://docs.astral.sh/uv/getting-started/installation/) (recommended): + + ```bash + uvx --from "langgraph-cli[inmem]" langgraph new + ``` + +=== "JS" + + ```bash + npx @langchain/langgraph-cli new + ``` ## Next Steps @@ -45,23 +73,28 @@ Review the `README.md` file in the root of your new LangGraph app for more infor After configuring the app properly and adding your API keys, you can start the app using the LangGraph CLI: -```bash -langgraph dev -``` +=== "Python" + + ```bash + langgraph dev + ``` + + Or via [`uv`](https://docs.astral.sh/uv/getting-started/installation/) (recommended): + + ```bash + uvx --from "langgraph-cli[inmem]" --with-editable . langgraph dev + ``` + + ??? info "Missing Local Package?" + If you are not using `uv` and run into a "`ModuleNotFoundError`" or "`ImportError`", even after installing the local package (`pip install -e .`), it is likely the case that you need to install the CLI into your local virtual environment to make the CLI "aware" of the local package. You can do this by running `python -m pip install "langgraph-cli[inmem]"` and re-activating your virtual environment before running `langgraph dev`. + +=== "JS" + + ```bash + npx @langchain/langgraph-cli dev + ``` See the following guides for more information on how to deploy your app: - **[Launch Local LangGraph Server](../tutorials/langgraph-platform/local-server.md)**: This quick start guide shows how to start a LangGraph Server locally for the **ReAct Agent** template. The steps are similar for other templates. - **[Deploy to LangGraph Cloud](../cloud/quick_start.md)**: Deploy your LangGraph app using LangGraph Cloud. - -### LangGraph Framework - -- **[LangGraph Concepts](../concepts/index.md)**: Learn the foundational concepts of LangGraph. -- **[LangGraph How-to Guides](../how-tos/index.md)**: Guides for common tasks with LangGraph. - -### 📚 Learn More about LangGraph Platform - -Expand your knowledge with these resources: - -- **[LangGraph Platform Concepts](../concepts/index.md#langgraph-platform)**: Understand the foundational concepts of the LangGraph Platform. -- **[LangGraph Platform How-to Guides](../how-tos/index.md#langgraph-platform)**: Discover step-by-step guides to build and deploy applications. diff --git a/docs/docs/concepts/time-travel.md b/docs/docs/concepts/time-travel.md index f58023eca..04867f8a5 100644 --- a/docs/docs/concepts/time-travel.md +++ b/docs/docs/concepts/time-travel.md @@ -5,65 +5,11 @@ search: # Time Travel ⏱️ -!!! note "Prerequisites" - - This guide assumes that you are familiar with LangGraph's checkpoints and states. If not, please review the [persistence](./persistence.md) concept first. - - When working with non-deterministic systems that make model-based decisions (e.g., agents powered by LLMs), it can be useful to examine their decision-making process in detail: 1. 🤔 **Understand Reasoning**: Analyze the steps that led to a successful result. 2. 🐞 **Debug Mistakes**: Identify where and why errors occurred. 3. 🔍 **Explore Alternatives**: Test different paths to uncover better solutions. -We call these debugging techniques **Time Travel**, composed of two key actions: [**Replaying**](#replaying) 🔁 and [**Forking**](#forking) 🔀 . -## Replaying - -![](./img/human_in_the_loop/replay.png) - -Replaying allows us to revisit and reproduce an agent's past actions, up to and including a specific step (checkpoint). - -To replay actions before a specific checkpoint, start by retrieving all checkpoints for the thread: - -```python -all_checkpoints = [] -for state in graph.get_state_history(thread): - all_checkpoints.append(state) -``` - -Each checkpoint has a unique ID. After identifying the desired checkpoint, for instance, `xyz`, include its ID in the configuration: - -```python -config = {'configurable': {'thread_id': '1', 'checkpoint_id': 'xyz'}} -for event in graph.stream(None, config, stream_mode="values"): - print(event) -``` - -The graph replays previously executed steps _before_ the provided `checkpoint_id` and executes the steps _after_ `checkpoint_id` (i.e., a new fork), even if they have been executed previously. - -## Forking - -![](./img/human_in_the_loop/forking.png) - -Forking allows you to revisit an agent's past actions and explore alternative paths within the graph. - -To edit a specific checkpoint, such as `xyz`, provide its `checkpoint_id` when updating the graph's state: - -```python -config = {"configurable": {"thread_id": "1", "checkpoint_id": "xyz"}} -graph.update_state(config, {"state": "updated state"}) -``` - -This creates a new forked checkpoint, xyz-fork, from which you can continue running the graph: - -```python -config = {'configurable': {'thread_id': '1', 'checkpoint_id': 'xyz-fork'}} -for event in graph.stream(None, config, stream_mode="values"): - print(event) -``` - -## Additional Resources 📚 - -- [**Conceptual Guide: Persistence**](https://langchain-ai.github.io/langgraph/concepts/persistence/#replay): Read the persistence guide for more context on replaying. -- [**How to View and Update Past Graph State**](../how-tos/human_in_the_loop/time-travel.ipynb): Step-by-step instructions for working with graph state that demonstrate the **replay** and **fork** actions. +LangGraph provides **time travel** functionality to support these use cases. Specifically, you can **resume execution from a prior checkpoint** — either replaying the same state or modifying it to explore alternatives. In all cases, resuming past execution produces a **new fork** in the history. diff --git a/docs/docs/concepts/tools.md b/docs/docs/concepts/tools.md new file mode 100644 index 000000000..311c505ba --- /dev/null +++ b/docs/docs/concepts/tools.md @@ -0,0 +1,62 @@ +# Tools + +Many AI applications interact directly with humans. In these cases, it is appropriate for models to respond in natural language. +But what about cases where we want a model to also interact *directly* with systems, such as databases or an API? +These systems often have a particular input schema; for example, APIs frequently have a required payload structure. You can use [tool calling](https://platform.openai.com/docs/guides/function-calling/example-use-cases) to request model responses that match a particular schema. + +[Tools](https://python.langchain.com/docs/concepts/tools/) are a way to encapsulate a function and its input schema in a way that can be passed to a chat model that supports tool calling. This allows the model to request the execution of this function with specific inputs. + +**Tools** can be passed to [chat models](https://python.langchain.com/docs/concepts/chat_models) that support [tool calling](https://python.langchain.com/docs/concepts/tool_calling) allowing the model to request the execution of a specific function with specific inputs. + +You can [create custom tools](https://python.langchain.com/docs/how_to/custom_tools/) or use [prebuilt](#prebuilt-tools) tools. + +## Tool calling + +![Diagram of a tool call by a model](./img/tool_call.png) + +A key principle of tool calling is that the model decides when to use a tool based on the input's relevance. The model doesn't always need to call a tool. +For example, given an input that is *irrelevant to the tool*, the model would not call the tool: + +```python +result = llm_with_tools.invoke("Hello world!") +``` + +The result would be an `AIMessage` containing the model's response in natural language (e.g., "Hello!"). +However, if we pass an input *relevant to the tool*, the model should choose to call it: + +```python +result = llm_with_tools.invoke("What is 2 multiplied by 3?") +``` + +As before, the output `result` will be an `AIMessage`. +But, if the tool was called, `result` will have a `tool_calls` attribute. +This attribute includes everything needed to execute the tool, including the tool name and input arguments: + +``` +result.tool_calls +{'name': 'multiply', 'args': {'a': 2, 'b': 3}, 'id': 'xxx', 'type': 'tool_call'} +``` + +For more details on usage, see the [how-to guide](../how-tos/tool-calling.ipynb). + +## Execute tools + +LangGraph offers pre-built components — [`ToolNode`][langgraph.prebuilt.tool_node.ToolNode] and [`create_react_agent`][langgraph.prebuilt.chat_agent_executor.create_react_agent] — that invoke the tools on behalf of the user. + +See this [how-to guide](../how-tos/tool-calling.ipynb#use-prebuilt-toolnode) on tool calling. + +## Prebuilt tools + +LangChain supports a wide range of prebuilt tool integrations for interacting with APIs, databases, file systems, web data, and more. These tools extend the functionality of agents and enable rapid development. + +You can browse the full list of available integrations in the [LangChain integrations directory](https://python.langchain.com/docs/integrations/tools/). + +Some commonly used tool categories include: + +- **Search**: Bing, SerpAPI, Tavily +- **Code interpreters**: Python REPL, Node.js REPL +- **Databases**: SQL, MongoDB, Redis +- **Web data**: Web scraping and browsing +- **APIs**: OpenWeatherMap, NewsAPI, and others + +These integrations can be configured and added to your agents using the same `tools` parameter shown in the examples above. \ No newline at end of file diff --git a/docs/docs/concepts/v0-human-in-the-loop.md b/docs/docs/concepts/v0-human-in-the-loop.md deleted file mode 100644 index 801d94be8..000000000 --- a/docs/docs/concepts/v0-human-in-the-loop.md +++ /dev/null @@ -1,334 +0,0 @@ ---- -search: - exclude: true ---- - -# Human-in-the-loop - -!!! note "Use the `interrupt` function instead." - - As of LangGraph 0.2.57, the recommended way to set breakpoints is using the [`interrupt` function][langgraph.types.interrupt] as it simplifies **human-in-the-loop** patterns. - - Please see the revised [human-in-the-loop guide](./human_in_the_loop.md) for the latest version that uses the `interrupt` function. - - -Human-in-the-loop (or "on-the-loop") enhances agent capabilities through several common user interaction patterns. - -Common interaction patterns include: - -(1) `Approval` - We can interrupt our agent, surface the current state to a user, and allow the user to accept an action. - -(2) `Editing` - We can interrupt our agent, surface the current state to a user, and allow the user to edit the agent state. - -(3) `Input` - We can explicitly create a graph node to collect human input and pass that input directly to the agent state. - -Use-cases for these interaction patterns include: - -(1) `Reviewing tool calls` - We can interrupt an agent to review and edit the results of tool calls. - -(2) `Time Travel` - We can manually re-play and / or fork past actions of an agent. - -## Persistence - -All of these interaction patterns are enabled by LangGraph's built-in [persistence](./persistence.md) layer, which will write a checkpoint of the graph state at each step. Persistence allows the graph to stop so that a human can review and / or edit the current state of the graph and then resume with the human's input. - -### Breakpoints - -Adding a [breakpoint](./breakpoints.md) a specific location in the graph flow is one way to enable human-in-the-loop. In this case, the developer knows *where* in the workflow human input is needed and simply places a breakpoint prior to or following that particular graph node. - -Here, we compile our graph with a checkpointer and a breakpoint at the node we want to interrupt before, `step_for_human_in_the_loop`. We then perform one of the above interaction patterns, which will create a new checkpoint if a human edits the graph state. The new checkpoint is saved to the `thread` and we can resume the graph execution from there by passing in `None` as the input. - -```python -# Compile our graph with a checkpointer and a breakpoint before "step_for_human_in_the_loop" -graph = builder.compile(checkpointer=checkpointer, interrupt_before=["step_for_human_in_the_loop"]) - -# Run the graph up to the breakpoint -thread_config = {"configurable": {"thread_id": "1"}} -for event in graph.stream(inputs, thread_config, stream_mode="values"): - print(event) - -# Perform some action that requires human in the loop - -# Continue the graph execution from the current checkpoint -for event in graph.stream(None, thread_config, stream_mode="values"): - print(event) -``` - -### Dynamic Breakpoints - -Alternatively, the developer can define some *condition* that must be met for a breakpoint to be triggered. This concept of [dynamic breakpoints](./breakpoints.md) is useful when the developer wants to halt the graph under *a particular condition*. This uses a `NodeInterrupt`, which is a special type of exception that can be raised from within a node based upon some condition. As an example, we can define a dynamic breakpoint that triggers when the `input` is longer than 5 characters. - -```python -def my_node(state: State) -> State: - if len(state['input']) > 5: - raise NodeInterrupt(f"Received input that is longer than 5 characters: {state['input']}") - return state -``` - -Let's assume we run the graph with an input that triggers the dynamic breakpoint and then attempt to resume the graph execution simply by passing in `None` for the input. - -```python -# Attempt to continue the graph execution with no change to state after we hit the dynamic breakpoint -for event in graph.stream(None, thread_config, stream_mode="values"): - print(event) -``` - -The graph will *interrupt* again because this node will be *re-run* with the same graph state. We need to change the graph state such that the condition that triggers the dynamic breakpoint is no longer met. So, we can simply edit the graph state to an input that meets the condition of our dynamic breakpoint (< 5 characters) and re-run the node. - -```python -# Update the state to pass the dynamic breakpoint -graph.update_state(config=thread_config, values={"input": "foo"}) -for event in graph.stream(None, thread_config, stream_mode="values"): - print(event) -``` - -Alternatively, what if we want to keep our current input and skip the node (`my_node`) that performs the check? To do this, we can simply perform the graph update with `as_node="my_node"` and pass in `None` for the values. This will make no update the graph state, but run the update as `my_node`, effectively skipping the node and bypassing the dynamic breakpoint. - -```python -# This update will skip the node `my_node` altogether -graph.update_state(config=thread_config, values=None, as_node="my_node") -for event in graph.stream(None, thread_config, stream_mode="values"): - print(event) -``` - -See [our guide](../how-tos/human_in_the_loop/dynamic_breakpoints.ipynb) for a detailed how-to on doing this! - -## Interaction Patterns - -### Approval - -![](./img/human_in_the_loop/approval.png) - -Sometimes we want to approve certain steps in our agent's execution. - -We can interrupt our agent at a [breakpoint](./breakpoints.md) prior to the step that we want to approve. - -This is generally recommend for sensitive actions (e.g., using external APIs or writing to a database). - -With persistence, we can surface the current agent state as well as the next step to a user for review and approval. - -If approved, the graph resumes execution from the last saved checkpoint, which is saved to the `thread`: - -```python -# Compile our graph with a checkpointer and a breakpoint before the step to approve -graph = builder.compile(checkpointer=checkpointer, interrupt_before=["node_2"]) - -# Run the graph up to the breakpoint -for event in graph.stream(inputs, thread, stream_mode="values"): - print(event) - -# ... Get human approval ... - -# If approved, continue the graph execution from the last saved checkpoint -for event in graph.stream(None, thread, stream_mode="values"): - print(event) -``` - -See [our guide](../how-tos/human_in_the_loop/breakpoints.ipynb) for a detailed how-to on doing this! - -### Editing - -![](./img/human_in_the_loop/edit_graph_state.png) - -Sometimes we want to review and edit the agent's state. - -As with approval, we can interrupt our agent at a [breakpoint](./breakpoints.md) prior to the step we want to check. - -We can surface the current state to a user and allow the user to edit the agent state. - -This can, for example, be used to correct the agent if it made a mistake (e.g., see the section on tool calling below). - -We can edit the graph state by forking the current checkpoint, which is saved to the `thread`. - -We can then proceed with the graph from our forked checkpoint as done before. - -```python -# Compile our graph with a checkpointer and a breakpoint before the step to review -graph = builder.compile(checkpointer=checkpointer, interrupt_before=["node_2"]) - -# Run the graph up to the breakpoint -for event in graph.stream(inputs, thread, stream_mode="values"): - print(event) - -# Review the state, decide to edit it, and create a forked checkpoint with the new state -graph.update_state(thread, {"state": "new state"}) - -# Continue the graph execution from the forked checkpoint -for event in graph.stream(None, thread, stream_mode="values"): - print(event) -``` - -See [this guide](../how-tos/human_in_the_loop/edit-graph-state.ipynb) for a detailed how-to on doing this! - -### Input - -![](./img/human_in_the_loop/wait_for_input.png) - -Sometimes we want to explicitly get human input at a particular step in the graph. - -We can create a graph node designated for this (e.g., `human_input` in our example diagram). - -As with approval and editing, we can interrupt our agent at a [breakpoint](./breakpoints.md) prior to this node. - -We can then perform a state update that includes the human input, just as we did with editing state. - -But, we add one thing: - -We can use `as_node=human_input` with the state update to specify that the state update *should be treated as a node*. - -The is subtle, but important: - -With editing, the user makes a decision about whether or not to edit the graph state. - -With input, we explicitly define a node in our graph for collecting human input! - -The state update with the human input then runs *as this node*. - -```python -# Compile our graph with a checkpointer and a breakpoint before the step to to collect human input -graph = builder.compile(checkpointer=checkpointer, interrupt_before=["human_input"]) - -# Run the graph up to the breakpoint -for event in graph.stream(inputs, thread, stream_mode="values"): - print(event) - -# Update the state with the user input as if it was the human_input node -graph.update_state(thread, {"user_input": user_input}, as_node="human_input") - -# Continue the graph execution from the checkpoint created by the human_input node -for event in graph.stream(None, thread, stream_mode="values"): - print(event) -``` - -See [this guide](../how-tos/human_in_the_loop/wait-user-input.ipynb) for a detailed how-to on doing this! - -## Use-cases - -### Reviewing Tool Calls - -Some user interaction patterns combine the above ideas. - -For example, many agents use [tool calling](https://python.langchain.com/docs/how_to/tool_calling/) to make decisions. - -Tool calling presents a challenge because the agent must get two things right: - -(1) The name of the tool to call - -(2) The arguments to pass to the tool - -Even if the tool call is correct, we may also want to apply discretion: - -(3) The tool call may be a sensitive operation that we want to approve - -With these points in mind, we can combine the above ideas to create a human-in-the-loop review of a tool call. - -```python -# Compile our graph with a checkpointer and a breakpoint before the step to to review the tool call from the LLM -graph = builder.compile(checkpointer=checkpointer, interrupt_before=["human_review"]) - -# Run the graph up to the breakpoint -for event in graph.stream(inputs, thread, stream_mode="values"): - print(event) - -# Review the tool call and update it, if needed, as the human_review node -graph.update_state(thread, {"tool_call": "updated tool call"}, as_node="human_review") - -# Otherwise, approve the tool call and proceed with the graph execution with no edits - -# Continue the graph execution from either: -# (1) the forked checkpoint created by human_review or -# (2) the checkpoint saved when the tool call was originally made (no edits in human_review) -for event in graph.stream(None, thread, stream_mode="values"): - print(event) -``` - -See [this guide](../how-tos/human_in_the_loop/review-tool-calls.ipynb) for a detailed how-to on doing this! - -### Time Travel - -When working with agents, we often want closely examine their decision making process: - -(1) Even when they arrive a desired final result, the reasoning that led to that result is often important to examine. - -(2) When agents make mistakes, it is often valuable to understand why. - -(3) In either of the above cases, it is useful to manually explore alternative decision making paths. - -Collectively, we call these debugging concepts `time-travel` and they are composed of `replaying` and `forking`. - -#### Replaying - -![](./img/human_in_the_loop/replay.png) - -Sometimes we want to simply replay past actions of an agent. - -Above, we showed the case of executing an agent from the current state (or checkpoint) of the graph. - -We by simply passing in `None` for the input with a `thread`. - -``` -thread = {"configurable": {"thread_id": "1"}} -for event in graph.stream(None, thread, stream_mode="values"): - print(event) -``` - -Now, we can modify this to replay past actions from a *specific* checkpoint by passing in the checkpoint ID. - -To get a specific checkpoint ID, we can easily get all of the checkpoints in the thread and filter to the one we want. - -```python -all_checkpoints = [] -for state in app.get_state_history(thread): - all_checkpoints.append(state) -``` - -Each checkpoint has a unique ID, which we can use to replay from a specific checkpoint. - -Assume from reviewing the checkpoints that we want to replay from one, `xxx`. - -We just pass in the checkpoint ID when we run the graph. - -```python -config = {'configurable': {'thread_id': '1', 'checkpoint_id': 'xxx'}} -for event in graph.stream(None, config, stream_mode="values"): - print(event) -``` - -Importantly, the graph knows which checkpoints have been previously executed. - -So, it will re-play any previously executed nodes rather than re-executing them. - -See [this additional conceptual guide](https://langchain-ai.github.io/langgraph/concepts/persistence/#replay) for related context on replaying. - -See see [this guide](../how-tos/human_in_the_loop/time-travel.ipynb) for a detailed how-to on doing time-travel! - -#### Forking - -![](./img/human_in_the_loop/forking.png) - -Sometimes we want to fork past actions of an agent, and explore different paths through the graph. - -`Editing`, as discussed above, is *exactly* how we do this for the *current* state of the graph! - -But, what if we want to fork *past* states of the graph? - -For example, let's say we want to edit a particular checkpoint, `xxx`. - -We pass this `checkpoint_id` when we update the state of the graph. - -```python -config = {"configurable": {"thread_id": "1", "checkpoint_id": "xxx"}} -graph.update_state(config, {"state": "updated state"}, ) -``` - -This creates a new forked checkpoint, `xxx-fork`, which we can then run the graph from. - -```python -config = {'configurable': {'thread_id': '1', 'checkpoint_id': 'xxx-fork'}} -for event in graph.stream(None, config, stream_mode="values"): - print(event) -``` - -See [this additional conceptual guide](https://langchain-ai.github.io/langgraph/concepts/persistence/#update-state) for related context on forking. - -See [this guide](../how-tos/human_in_the_loop/time-travel.ipynb) for a detailed how-to on doing time-travel! diff --git a/docs/docs/concepts/why-langgraph.md b/docs/docs/concepts/why-langgraph.md new file mode 100644 index 000000000..1d27c28a1 --- /dev/null +++ b/docs/docs/concepts/why-langgraph.md @@ -0,0 +1,26 @@ +# Overview + +LangGraph is built for developers who want to build powerful, adaptable AI agents. Developers choose LangGraph for: + +- **Reliability and controllability.** Steer agent actions with moderation checks and human-in-the-loop approvals. LangGraph persists context for long-running workflows, keeping your agents on course. +- **Low-level and extensible.** Build custom agents with fully descriptive, low-level primitives free from rigid abstractions that limit customization. Design scalable multi-agent systems, with each agent serving a specific role tailored to your use case. +- **First-class streaming support.** With token-by-token streaming and streaming of intermediate steps, LangGraph gives users clear visibility into agent reasoning and actions as they unfold in real time. + +## Learn LangGraph basics + +To get acquainted with LangGraph's key concepts and features, complete the following LangGraph basics tutorials series: + +1. [Build a basic chatbot](../tutorials/get-started/1-build-basic-chatbot.md) +2. [Add tools](../tutorials/get-started/2-add-tools.md) +3. [Add memory](../tutorials/get-started/3-add-memory.md) +4. [Add human-in-the-loop controls](../tutorials/get-started/4-human-in-the-loop.md) +5. [Customize state](../tutorials/get-started/5-customize-state.md) +6. [Time travel](../tutorials/get-started/6-time-travel.md) + +In completing this series of tutorials, you will build a support chatbot in LangGraph that can: + +✅ **Answer common questions** by searching the web +✅ **Maintain conversation state** across calls +✅ **Route complex queries** to a human for review +✅ **Use custom state** to control its behavior +✅ **Rewind and explore** alternative conversation paths diff --git a/docs/docs/how-tos/agent-handoffs.ipynb b/docs/docs/how-tos/agent-handoffs.ipynb deleted file mode 100644 index 039dc6ec0..000000000 --- a/docs/docs/how-tos/agent-handoffs.ipynb +++ /dev/null @@ -1,1033 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "34d3d54e-9a2b-481e-bccd-74aca7a53f9a", - "metadata": {}, - "source": [ - "# How to implement handoffs between agents" - ] - }, - { - "cell_type": "markdown", - "id": "ef16392a-56de-4cda-9ae8-dff078b2ed87", - "metadata": {}, - "source": [ - "!!! info \"Prerequisites\"\n", - " This guide assumes familiarity with the following:\n", - "\n", - " - [Multi-agent systems](../../concepts/multi_agent)\n", - " - [Command](../../concepts/low_level/#command)\n", - " - [LangGraph Glossary](../../concepts/low_level/)\n", - " \n", - "\n", - "In multi-agent architectures, agents can be represented as graph nodes. Each agent node executes its step(s) and decides whether to finish execution or route to another agent, including potentially routing to itself (e.g., running in a loop). A natural pattern in multi-agent interactions is [handoffs](../../concepts/multi_agent#handoffs), where one agent hands off control to another. Handoffs allow you to specify:\n", - "\n", - "- **destination**: target agent to navigate to - node name in LangGraph\n", - "- **payload**: information to pass to that agent - state update in LangGraph\n", - "\n", - "To implement handoffs in LangGraph, agent nodes can return `Command` object that allows you to [combine both control flow and state updates](../command):\n", - "\n", - "```python\n", - "def agent(state) -> Command[Literal[\"agent\", \"another_agent\"]]:\n", - " # the condition for routing/halting can be anything, e.g. LLM tool call / structured output, etc.\n", - " goto = get_next_agent(...) # 'agent' / 'another_agent'\n", - " return Command(\n", - " # Specify which agent to call next\n", - " goto=goto,\n", - " # Update the graph state\n", - " update={\"my_state_key\": \"my_state_value\"}\n", - " )\n", - "```\n", - "\n", - "One of the most common agent types is a tool-calling agent. For those types of agents, one pattern is wrapping a handoff in a tool call, e.g.:\n", - "\n", - "```python\n", - "@tool\n", - "def transfer_to_bob(state):\n", - " \"\"\"Transfer to bob.\"\"\"\n", - " return Command(\n", - " goto=\"bob\",\n", - " update={\"my_state_key\": \"my_state_value\"},\n", - " # Each tool-calling agent is implemented as a subgraph.\n", - " # As a result, to navigate to another agent (a sibling sub-graph), \n", - " # we need to specify that navigation is w/ respect to the parent graph.\n", - " graph=Command.PARENT,\n", - " )\n", - "```\n", - "\n", - "This guide shows how you can:\n", - "\n", - "- implement handoffs using `Command`: agent node makes a decision on who to hand off to (usually LLM-based), and explicitly returns a handoff via `Command`. These are useful when you need fine-grained control over how an agent routes to another agent. It could be well suited for implementing a supervisor agent in a supervisor architecture.\n", - "- implement handoffs using tools: a tool-calling agent has access to tools that can return a handoff via `Command`. The tool-executing node in the agent recognizes `Command` objects returned by the tools and routes accordingly. Handoff tool a general-purpose primitive that is useful in any multi-agent systems that contain tool-calling agents." - ] - }, - { - "cell_type": "markdown", - "id": "7a4274c8-204f-41e4-b7ef-c8d1bb8de02e", - "metadata": {}, - "source": [ - "## Setup" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "e060e7a2-e339-49a6-bfd0-071dba8a3131", - "metadata": {}, - "outputs": [], - "source": [ - "%%capture --no-stderr\n", - "%pip install -U langgraph langchain-anthropic" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "b4864843-00a1-4c88-9a7c-c34e6c31c548", - "metadata": {}, - "outputs": [], - "source": [ - "import getpass\n", - "import os\n", - "\n", - "\n", - "def _set_env(var: str):\n", - " if not os.environ.get(var):\n", - " os.environ[var] = getpass.getpass(f\"{var}: \")\n", - "\n", - "\n", - "_set_env(\"ANTHROPIC_API_KEY\")" - ] - }, - { - "cell_type": "markdown", - "id": "230aec8a-ed82-4b97-a52e-2131f6c295ed", - "metadata": {}, - "source": [ - "
    \n", - "

    Set up LangSmith for LangGraph development

    \n", - "

    \n", - " Sign up for LangSmith to quickly spot issues and improve the performance of your LangGraph projects. LangSmith lets you use trace data to debug, test, and monitor your LLM apps built with LangGraph — read more about how to get started here. \n", - "

    \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "id": "4157f016-ccce-4f3a-877c-d3b3cfd77ffe", - "metadata": {}, - "source": [ - "## Implement handoffs using `Command`" - ] - }, - { - "cell_type": "markdown", - "id": "43a75f43-cf79-4e5d-b2b2-fc8982bc84a8", - "metadata": {}, - "source": [ - "Let's implement a system with two agents:\n", - "\n", - "- an addition expert (can only add numbers)\n", - "- a multiplication expert (can only multiply numbers).\n", - "\n", - "In this example the agents will be relying on the LLM for doing math. In a more realistic [follow-up example](#using-with-a-custom-agent), we will give the agents tools for doing math.\n", - "\n", - "When the addition expert needs help with multiplication, it hands off to the multiplication expert and vice-versa. This is an example of a simple multi-agent network.\n", - "\n", - "Each agent will have a corresponding node function that can conditionally return a `Command` object (e.g. our handoff). The node function will use an LLM with a system prompt and a tool that lets it signal when it needs to hand off to another agent. If the LLM responds with the tool calls, we will return a `Command(goto=)`.\n", - "\n", - "> **Note**: while we're using tools for the LLM to signal that it needs a handoff, the condition for the handoff can be anything: a specific response text from the LLM, structured output from the LLM, any other custom logic, etc." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "4e184beb-b9b2-4bd0-ac35-0356a8da46bc", - "metadata": {}, - "outputs": [], - "source": [ - "from typing_extensions import Literal\n", - "from langchain_core.messages import ToolMessage\n", - "from langchain_core.tools import tool\n", - "from langchain_anthropic import ChatAnthropic\n", - "from langgraph.graph import MessagesState, StateGraph, START\n", - "from langgraph.types import Command\n", - "\n", - "model = ChatAnthropic(model=\"claude-3-5-sonnet-latest\")\n", - "\n", - "\n", - "@tool\n", - "def transfer_to_multiplication_expert():\n", - " \"\"\"Ask multiplication agent for help.\"\"\"\n", - " # This tool is not returning anything: we're just using it\n", - " # as a way for LLM to signal that it needs to hand off to another agent\n", - " # (See the paragraph above)\n", - " return\n", - "\n", - "\n", - "@tool\n", - "def transfer_to_addition_expert():\n", - " \"\"\"Ask addition agent for help.\"\"\"\n", - " return\n", - "\n", - "\n", - "def addition_expert(\n", - " state: MessagesState,\n", - ") -> Command[Literal[\"multiplication_expert\", \"__end__\"]]:\n", - " system_prompt = (\n", - " \"You are an addition expert, you can ask the multiplication expert for help with multiplication. \"\n", - " \"Always do your portion of calculation before the handoff.\"\n", - " )\n", - " messages = [{\"role\": \"system\", \"content\": system_prompt}] + state[\"messages\"]\n", - " ai_msg = model.bind_tools([transfer_to_multiplication_expert]).invoke(messages)\n", - " # If there are tool calls, the LLM needs to hand off to another agent\n", - " if len(ai_msg.tool_calls) > 0:\n", - " tool_call_id = ai_msg.tool_calls[-1][\"id\"]\n", - " # NOTE: it's important to insert a tool message here because LLM providers are expecting\n", - " # all AI messages to be followed by a corresponding tool result message\n", - " tool_msg = {\n", - " \"role\": \"tool\",\n", - " \"content\": \"Successfully transferred\",\n", - " \"tool_call_id\": tool_call_id,\n", - " }\n", - " return Command(\n", - " goto=\"multiplication_expert\", update={\"messages\": [ai_msg, tool_msg]}\n", - " )\n", - "\n", - " # If the expert has an answer, return it directly to the user\n", - " return {\"messages\": [ai_msg]}\n", - "\n", - "\n", - "def multiplication_expert(\n", - " state: MessagesState,\n", - ") -> Command[Literal[\"addition_expert\", \"__end__\"]]:\n", - " system_prompt = (\n", - " \"You are a multiplication expert, you can ask an addition expert for help with addition. \"\n", - " \"Always do your portion of calculation before the handoff.\"\n", - " )\n", - " messages = [{\"role\": \"system\", \"content\": system_prompt}] + state[\"messages\"]\n", - " ai_msg = model.bind_tools([transfer_to_addition_expert]).invoke(messages)\n", - " if len(ai_msg.tool_calls) > 0:\n", - " tool_call_id = ai_msg.tool_calls[-1][\"id\"]\n", - " tool_msg = {\n", - " \"role\": \"tool\",\n", - " \"content\": \"Successfully transferred\",\n", - " \"tool_call_id\": tool_call_id,\n", - " }\n", - " return Command(goto=\"addition_expert\", update={\"messages\": [ai_msg, tool_msg]})\n", - "\n", - " return {\"messages\": [ai_msg]}" - ] - }, - { - "cell_type": "markdown", - "id": "921dc7bb-0c5b-410e-b143-601a549d529d", - "metadata": {}, - "source": [ - "Let's now combine both of these nodes into a single graph. Note that there are no edges between the agents! If the expert has an answer, it will return it directly to the user, otherwise it will route to the other expert for help." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "f56b6617-4226-4a7f-8234-59ebeaf53447", - "metadata": {}, - "outputs": [], - "source": [ - "builder = StateGraph(MessagesState)\n", - "builder.add_node(\"addition_expert\", addition_expert)\n", - "builder.add_node(\"multiplication_expert\", multiplication_expert)\n", - "# we'll always start with the addition expert\n", - "builder.add_edge(START, \"addition_expert\")\n", - "graph = builder.compile()" - ] - }, - { - "cell_type": "markdown", - "id": "d36574f3-7990-4ef2-b556-3bbd3625ec17", - "metadata": {}, - "source": [ - "Finally, let's define a helper function to render the streamed outputs nicely:" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "3f8e4b2b-c761-445c-909b-3d206ac475c7", - "metadata": {}, - "outputs": [], - "source": [ - "from langchain_core.messages import convert_to_messages\n", - "\n", - "\n", - "def pretty_print_messages(update):\n", - " if isinstance(update, tuple):\n", - " ns, update = update\n", - " # skip parent graph updates in the printouts\n", - " if len(ns) == 0:\n", - " return\n", - "\n", - " graph_id = ns[-1].split(\":\")[0]\n", - " print(f\"Update from subgraph {graph_id}:\")\n", - " print(\"\\n\")\n", - "\n", - " for node_name, node_update in update.items():\n", - " print(f\"Update from node {node_name}:\")\n", - " print(\"\\n\")\n", - "\n", - " for m in convert_to_messages(node_update[\"messages\"]):\n", - " m.pretty_print()\n", - " print(\"\\n\")" - ] - }, - { - "cell_type": "markdown", - "id": "01ff98c2-81ea-4679-8569-fed4750d5954", - "metadata": {}, - "source": [ - "Let's run the graph with an expression that requires both addition and multiplication:" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "62ba5113-e972-41e6-8392-cc970d4eea72", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Update from node addition_expert:\n", - "\n", - "\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "[{'text': \"Let me help break this down:\\n\\nFirst, I'll handle the addition part since I'm the addition expert:\\n3 + 5 = 8\\n\\nNow, for the multiplication of 8 * 12, I'll need to ask the multiplication expert for help.\", 'type': 'text'}, {'id': 'toolu_015LCrsomHbeoQPtCzuff78Y', 'input': {}, 'name': 'transfer_to_multiplication_expert', 'type': 'tool_use'}]\n", - "Tool Calls:\n", - " transfer_to_multiplication_expert (toolu_015LCrsomHbeoQPtCzuff78Y)\n", - " Call ID: toolu_015LCrsomHbeoQPtCzuff78Y\n", - " Args:\n", - "=================================\u001b[1m Tool Message \u001b[0m=================================\n", - "\n", - "Successfully transferred\n", - "\n", - "\n", - "Update from node multiplication_expert:\n", - "\n", - "\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "[{'text': 'I see there was an error in my approach. I am actually the multiplication expert, and I need to ask the addition expert for help with (3 + 5) first.', 'type': 'text'}, {'id': 'toolu_01HFcB8WesPfDyrdgxoXApZk', 'input': {}, 'name': 'transfer_to_addition_expert', 'type': 'tool_use'}]\n", - "Tool Calls:\n", - " transfer_to_addition_expert (toolu_01HFcB8WesPfDyrdgxoXApZk)\n", - " Call ID: toolu_01HFcB8WesPfDyrdgxoXApZk\n", - " Args:\n", - "=================================\u001b[1m Tool Message \u001b[0m=================================\n", - "\n", - "Successfully transferred\n", - "\n", - "\n", - "Update from node addition_expert:\n", - "\n", - "\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "Now that I have the result of 3 + 5 = 8 from the addition expert, I can multiply 8 * 12:\n", - "\n", - "8 * 12 = 96\n", - "\n", - "So, (3 + 5) * 12 = 96\n", - "\n", - "\n" - ] - } - ], - "source": [ - "for chunk in graph.stream(\n", - " {\"messages\": [(\"user\", \"what's (3 + 5) * 12\")]},\n", - "):\n", - " pretty_print_messages(chunk)" - ] - }, - { - "cell_type": "markdown", - "id": "0088d791-1e03-49fb-b640-0ea01a7ef61d", - "metadata": {}, - "source": [ - "You can see that the addition expert first handled the expression in the parentheses, and then handed off to the multiplication expert to finish the calculation.\n", - "\n", - "Now let's see how we can implement this same system using special handoff tools and give our agents actual math tools." - ] - }, - { - "cell_type": "markdown", - "id": "c7a5d161-9f74-47a2-83ce-0cbe6073edcc", - "metadata": {}, - "source": [ - "## Implement handoffs using tools" - ] - }, - { - "cell_type": "markdown", - "id": "6ccfbd12-0a27-4e34-b6f7-701c2e7a6ffb", - "metadata": {}, - "source": [ - "### Implement a handoff tool" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "acaed37a-ddd3-4bf9-ac30-a9c5cc1ea3fe", - "metadata": {}, - "source": [ - "In the previous example we explicitly defined custom handoffs in each of the agent nodes. Another pattern is to create special **handoff tools** that directly return `Command` objects. When an agent calls a tool like this, it hands the control off to a different agent. Specifically, the tool-executing node in the agent recognizes the `Command` objects returned by the tools and routes control flow accordingly. **Note**: unlike the previous example, a tool-calling agent is not a single node but another graph that can be added to the multi-agent graph as a subgraph node.\n", - "\n", - "There are a few important considerations when implementing handoff tools:\n", - "\n", - "- since each agent is a __subgraph__ node in another graph, and the tools will be called in one of the agent subgraph nodes (e.g. tool executor), we need to specify `graph=Command.PARENT` in the `Command`, so that LangGraph knows to navigate outside of the agent subgraph\n", - "- we can optionally specify a state update that will be applied to the parent graph state before the next agent is called\n", - " - these state updates can be used to control [how much of the chat message history](../../concepts/multi_agent#shared-message-list) the target agent sees. For example, you might choose to just share the last AI messages from the current agent, or its full internal chat history, etc. In the examples below we'll be sharing the full internal chat history.\n", - "\n", - "- we can optionally provide the following to the tool (in the tool function signature):\n", - " - graph state (using [`InjectedState`][langgraph.prebuilt.tool_node.InjectedState])\n", - " - graph long-term memory (using [`InjectedStore`][langgraph.prebuilt.tool_node.InjectedStore])\n", - " - the current tool call ID (using [`InjectedToolCallId`](https://python.langchain.com/api_reference/core/tools/langchain_core.tools.base.InjectedToolCallId.html))\n", - " \n", - " These are not necessary but are useful for creating the state update passed to the next agent." - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "d022072b-39bf-4133-aa62-e20f22bb4b17", - "metadata": {}, - "outputs": [], - "source": [ - "from typing import Annotated\n", - "\n", - "from langchain_core.tools import tool\n", - "from langchain_core.tools.base import InjectedToolCallId\n", - "from langgraph.prebuilt import InjectedState\n", - "\n", - "\n", - "def make_handoff_tool(*, agent_name: str):\n", - " \"\"\"Create a tool that can return handoff via a Command\"\"\"\n", - " tool_name = f\"transfer_to_{agent_name}\"\n", - "\n", - " @tool(tool_name)\n", - " def handoff_to_agent(\n", - " # # optionally pass current graph state to the tool (will be ignored by the LLM)\n", - " state: Annotated[dict, InjectedState],\n", - " # optionally pass the current tool call ID (will be ignored by the LLM)\n", - " tool_call_id: Annotated[str, InjectedToolCallId],\n", - " ):\n", - " \"\"\"Ask another agent for help.\"\"\"\n", - " tool_message = {\n", - " \"role\": \"tool\",\n", - " \"content\": f\"Successfully transferred to {agent_name}\",\n", - " \"name\": tool_name,\n", - " \"tool_call_id\": tool_call_id,\n", - " }\n", - " return Command(\n", - " # navigate to another agent node in the PARENT graph\n", - " goto=agent_name,\n", - " graph=Command.PARENT,\n", - " # This is the state update that the agent `agent_name` will see when it is invoked.\n", - " # We're passing agent's FULL internal message history AND adding a tool message to make sure\n", - " # the resulting chat history is valid. See the paragraph above for more information.\n", - " update={\"messages\": state[\"messages\"] + [tool_message]},\n", - " )\n", - "\n", - " return handoff_to_agent" - ] - }, - { - "cell_type": "markdown", - "id": "ba83e85a-576a-4e3f-8086-ce5e2c149c60", - "metadata": {}, - "source": [ - "### Using with a custom agent" - ] - }, - { - "cell_type": "markdown", - "id": "4d263776-3b2d-4ab0-9cc8-c7cbef22e2d5", - "metadata": {}, - "source": [ - "To demonstrate how to use handoff tools, let's first implement a simple version of the prebuilt [create_react_agent][langgraph.prebuilt.chat_agent_executor.create_react_agent]. This is useful in case you want to have a custom tool-calling agent implementation and want to leverage handoff tools." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "e5cd13c5-7dac-4dd7-9ffc-9f3467e28a44", - "metadata": {}, - "outputs": [], - "source": [ - "from typing_extensions import Literal\n", - "from langchain_core.messages import ToolMessage\n", - "from langchain_core.tools import tool\n", - "from langgraph.graph import MessagesState, StateGraph, START\n", - "from langgraph.types import Command\n", - "\n", - "\n", - "def make_agent(model, tools, system_prompt=None):\n", - " model_with_tools = model.bind_tools(tools)\n", - " tools_by_name = {tool.name: tool for tool in tools}\n", - "\n", - " def call_model(state: MessagesState) -> Command[Literal[\"call_tools\", \"__end__\"]]:\n", - " messages = state[\"messages\"]\n", - " if system_prompt:\n", - " messages = [{\"role\": \"system\", \"content\": system_prompt}] + messages\n", - "\n", - " response = model_with_tools.invoke(messages)\n", - " if len(response.tool_calls) > 0:\n", - " return Command(goto=\"call_tools\", update={\"messages\": [response]})\n", - "\n", - " return {\"messages\": [response]}\n", - "\n", - " # NOTE: this is a simplified version of the prebuilt ToolNode\n", - " # If you want to have a tool node that has full feature parity, please refer to the source code\n", - " def call_tools(state: MessagesState) -> Command[Literal[\"call_model\"]]:\n", - " tool_calls = state[\"messages\"][-1].tool_calls\n", - " results = []\n", - " for tool_call in tool_calls:\n", - " tool_ = tools_by_name[tool_call[\"name\"]]\n", - " tool_input_fields = tool_.get_input_schema().model_json_schema()[\n", - " \"properties\"\n", - " ]\n", - "\n", - " # this is simplified for demonstration purposes and\n", - " # is different from the ToolNode implementation\n", - " if \"state\" in tool_input_fields:\n", - " # inject state\n", - " tool_call = {**tool_call, \"args\": {**tool_call[\"args\"], \"state\": state}}\n", - "\n", - " tool_response = tool_.invoke(tool_call)\n", - " if isinstance(tool_response, ToolMessage):\n", - " results.append(Command(update={\"messages\": [tool_response]}))\n", - "\n", - " # handle tools that return Command directly\n", - " elif isinstance(tool_response, Command):\n", - " results.append(tool_response)\n", - "\n", - " # NOTE: nodes in LangGraph allow you to return list of updates, including Command objects\n", - " return results\n", - "\n", - " graph = StateGraph(MessagesState)\n", - " graph.add_node(call_model)\n", - " graph.add_node(call_tools)\n", - " graph.add_edge(START, \"call_model\")\n", - " graph.add_edge(\"call_tools\", \"call_model\")\n", - "\n", - " return graph.compile()" - ] - }, - { - "cell_type": "markdown", - "id": "8b7231d5-1e01-41a7-b260-d0495323d552", - "metadata": {}, - "source": [ - "Let's also define math tools that we'll give our agents:" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "b9f8e553-8894-4d59-a069-1baa05d23289", - "metadata": {}, - "outputs": [], - "source": [ - "@tool\n", - "def add(a: int, b: int) -> int:\n", - " \"\"\"Adds two numbers.\"\"\"\n", - " return a + b\n", - "\n", - "\n", - "@tool\n", - "def multiply(a: int, b: int) -> int:\n", - " \"\"\"Multiplies two numbers.\"\"\"\n", - " return a * b" - ] - }, - { - "cell_type": "markdown", - "id": "e3f76999-2364-4e08-90be-62d4d138a8f4", - "metadata": {}, - "source": [ - "Let's test the agent implementation out to make sure it's working as expected:" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "f39f99b0-95c7-422f-96a6-e612fde186df", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Update from node call_model:\n", - "\n", - "\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "[{'text': \"I'll help break this down into two steps:\\n1. First calculate 3 + 5\\n2. Then multiply that result by 12\\n\\nLet me make these calculations:\\n\\n1. Adding 3 and 5:\", 'type': 'text'}, {'id': 'toolu_01DUAzgWFqq6XZtj1hzHTka9', 'input': {'a': 3, 'b': 5}, 'name': 'add', 'type': 'tool_use'}]\n", - "Tool Calls:\n", - " add (toolu_01DUAzgWFqq6XZtj1hzHTka9)\n", - " Call ID: toolu_01DUAzgWFqq6XZtj1hzHTka9\n", - " Args:\n", - " a: 3\n", - " b: 5\n", - "\n", - "\n", - "Update from node call_tools:\n", - "\n", - "\n", - "=================================\u001b[1m Tool Message \u001b[0m=================================\n", - "Name: add\n", - "\n", - "8\n", - "\n", - "\n", - "Update from node call_model:\n", - "\n", - "\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "[{'text': '2. Multiplying the result (8) by 12:', 'type': 'text'}, {'id': 'toolu_01QXi1prSN4etgJ1QCuFJsgN', 'input': {'a': 8, 'b': 12}, 'name': 'multiply', 'type': 'tool_use'}]\n", - "Tool Calls:\n", - " multiply (toolu_01QXi1prSN4etgJ1QCuFJsgN)\n", - " Call ID: toolu_01QXi1prSN4etgJ1QCuFJsgN\n", - " Args:\n", - " a: 8\n", - " b: 12\n", - "\n", - "\n", - "Update from node call_tools:\n", - "\n", - "\n", - "=================================\u001b[1m Tool Message \u001b[0m=================================\n", - "Name: multiply\n", - "\n", - "96\n", - "\n", - "\n", - "Update from node call_model:\n", - "\n", - "\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "The result of (3 + 5) * 12 = 96\n", - "\n", - "\n" - ] - } - ], - "source": [ - "agent = make_agent(model, [add, multiply])\n", - "\n", - "for chunk in agent.stream({\"messages\": [(\"user\", \"what's (3 + 5) * 12\")]}):\n", - " pretty_print_messages(chunk)" - ] - }, - { - "cell_type": "markdown", - "id": "09689fde-7a54-4725-859f-b9e7d2725434", - "metadata": {}, - "source": [ - "Now, we can implement our multi-agent system with the multiplication and addition expert agents. This time we'll give them the tools for doing math, as well as our special handoff tools:" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "af9e540a-e847-4ee3-b896-2b4dd93ecb34", - "metadata": {}, - "outputs": [], - "source": [ - "addition_expert = make_agent(\n", - " model,\n", - " [add, make_handoff_tool(agent_name=\"multiplication_expert\")],\n", - " system_prompt=\"You are an addition expert, you can ask the multiplication expert for help with multiplication.\",\n", - ")\n", - "multiplication_expert = make_agent(\n", - " model,\n", - " [multiply, make_handoff_tool(agent_name=\"addition_expert\")],\n", - " system_prompt=\"You are a multiplication expert, you can ask an addition expert for help with addition.\",\n", - ")\n", - "\n", - "builder = StateGraph(MessagesState)\n", - "builder.add_node(\"addition_expert\", addition_expert)\n", - "builder.add_node(\"multiplication_expert\", multiplication_expert)\n", - "builder.add_edge(START, \"addition_expert\")\n", - "graph = builder.compile()" - ] - }, - { - "cell_type": "markdown", - "id": "039ff31e-6559-437b-a500-f739b29c003b", - "metadata": {}, - "source": [ - "Let's run the graph with the same multi-step calculation input as before:" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "c4ccd402-a90d-4c94-906d-6d364c274192", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Update from subgraph addition_expert:\n", - "\n", - "\n", - "Update from node call_model:\n", - "\n", - "\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "[{'text': \"I can help with the addition part (3 + 5), but I'll need to ask the multiplication expert for help with multiplying the result by 12. Let me break this down:\\n\\n1. First, let me calculate 3 + 5:\", 'type': 'text'}, {'id': 'toolu_01McaW4XWczLGKaetg88fxQ5', 'input': {'a': 3, 'b': 5}, 'name': 'add', 'type': 'tool_use'}]\n", - "Tool Calls:\n", - " add (toolu_01McaW4XWczLGKaetg88fxQ5)\n", - " Call ID: toolu_01McaW4XWczLGKaetg88fxQ5\n", - " Args:\n", - " a: 3\n", - " b: 5\n", - "\n", - "\n", - "Update from subgraph addition_expert:\n", - "\n", - "\n", - "Update from node call_tools:\n", - "\n", - "\n", - "=================================\u001b[1m Tool Message \u001b[0m=================================\n", - "Name: add\n", - "\n", - "8\n", - "\n", - "\n", - "Update from subgraph addition_expert:\n", - "\n", - "\n", - "Update from node call_model:\n", - "\n", - "\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "[{'text': \"Now that we have 8, we need to multiply it by 12. I'll ask the multiplication expert for help with this:\", 'type': 'text'}, {'id': 'toolu_01KpdUhHuyrmha62z5SduKRc', 'input': {}, 'name': 'transfer_to_multiplication_expert', 'type': 'tool_use'}]\n", - "Tool Calls:\n", - " transfer_to_multiplication_expert (toolu_01KpdUhHuyrmha62z5SduKRc)\n", - " Call ID: toolu_01KpdUhHuyrmha62z5SduKRc\n", - " Args:\n", - "\n", - "\n", - "Update from subgraph multiplication_expert:\n", - "\n", - "\n", - "Update from node call_model:\n", - "\n", - "\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "[{'text': 'Now that we have 8 as the result of the addition, I can help with the multiplication by 12:', 'type': 'text'}, {'id': 'toolu_01Vnp4k3TE87siad3BNJgRKb', 'input': {'a': 8, 'b': 12}, 'name': 'multiply', 'type': 'tool_use'}]\n", - "Tool Calls:\n", - " multiply (toolu_01Vnp4k3TE87siad3BNJgRKb)\n", - " Call ID: toolu_01Vnp4k3TE87siad3BNJgRKb\n", - " Args:\n", - " a: 8\n", - " b: 12\n", - "\n", - "\n", - "Update from subgraph multiplication_expert:\n", - "\n", - "\n", - "Update from node call_tools:\n", - "\n", - "\n", - "=================================\u001b[1m Tool Message \u001b[0m=================================\n", - "Name: multiply\n", - "\n", - "96\n", - "\n", - "\n", - "Update from subgraph multiplication_expert:\n", - "\n", - "\n", - "Update from node call_model:\n", - "\n", - "\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "The final result is 96.\n", - "\n", - "To break down the steps:\n", - "1. 3 + 5 = 8\n", - "2. 8 * 12 = 96\n", - "\n", - "\n" - ] - } - ], - "source": [ - "for chunk in graph.stream(\n", - " {\"messages\": [(\"user\", \"what's (3 + 5) * 12\")]}, subgraphs=True\n", - "):\n", - " pretty_print_messages(chunk)" - ] - }, - { - "cell_type": "markdown", - "id": "dd98eeae-5abd-45d9-aae7-4e714b7999dc", - "metadata": {}, - "source": [ - "We can see that after the addition expert is done with the first part of the calculation (after calling the `add` tool), it decides to hand off to the multiplication expert, which computes the final result." - ] - }, - { - "cell_type": "markdown", - "id": "102b116d-62f1-4570-afba-be9a96ce721f", - "metadata": {}, - "source": [ - "## Using with a prebuilt ReAct agent" - ] - }, - { - "cell_type": "markdown", - "id": "c46194ad-768d-4f29-85ce-91869a220107", - "metadata": {}, - "source": [ - "If you don't need extra customization, you can use the prebuilt [`create_react_agent`][langgraph.prebuilt.chat_agent_executor.create_react_agent], which includes built-in support for handoff tools through [`ToolNode`][langgraph.prebuilt.tool_node.ToolNode]." - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "fe91541c-4c6f-42ef-858a-336bbbb96728", - "metadata": {}, - "outputs": [], - "source": [ - "from langgraph.prebuilt import create_react_agent\n", - "\n", - "addition_expert = create_react_agent(\n", - " model,\n", - " [add, make_handoff_tool(agent_name=\"multiplication_expert\")],\n", - " prompt=\"You are an addition expert, you can ask the multiplication expert for help with multiplication.\",\n", - ")\n", - "\n", - "multiplication_expert = create_react_agent(\n", - " model,\n", - " [multiply, make_handoff_tool(agent_name=\"addition_expert\")],\n", - " prompt=\"You are a multiplication expert, you can ask an addition expert for help with addition.\",\n", - ")\n", - "\n", - "builder = StateGraph(MessagesState)\n", - "builder.add_node(\"addition_expert\", addition_expert)\n", - "builder.add_node(\"multiplication_expert\", multiplication_expert)\n", - "builder.add_edge(START, \"addition_expert\")\n", - "graph = builder.compile()" - ] - }, - { - "cell_type": "markdown", - "id": "762fbd94-0e54-45cd-84fb-05a241bae679", - "metadata": {}, - "source": [ - "We can now verify that the prebuilt ReAct agent works exactly the same as the custom agent above:" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "637d188c-e0d0-4c05-bb41-f007b4e17fb7", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Update from subgraph addition_expert:\n", - "\n", - "\n", - "Update from node agent:\n", - "\n", - "\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "[{'text': \"I can help with the addition part of this calculation (3 + 5), and then I'll need to ask the multiplication expert for help with multiplying the result by 12.\\n\\nLet me first calculate 3 + 5:\", 'type': 'text'}, {'id': 'toolu_01GUasumGGJVXDV7TJEqEfmY', 'input': {'a': 3, 'b': 5}, 'name': 'add', 'type': 'tool_use'}]\n", - "Tool Calls:\n", - " add (toolu_01GUasumGGJVXDV7TJEqEfmY)\n", - " Call ID: toolu_01GUasumGGJVXDV7TJEqEfmY\n", - " Args:\n", - " a: 3\n", - " b: 5\n", - "\n", - "\n", - "Update from subgraph addition_expert:\n", - "\n", - "\n", - "Update from node tools:\n", - "\n", - "\n", - "=================================\u001b[1m Tool Message \u001b[0m=================================\n", - "Name: add\n", - "\n", - "8\n", - "\n", - "\n", - "Update from subgraph addition_expert:\n", - "\n", - "\n", - "Update from node agent:\n", - "\n", - "\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "[{'text': \"Now that we have 8, we need to multiply it by 12. Since I'm an addition expert, I'll transfer this to the multiplication expert to complete the calculation:\", 'type': 'text'}, {'id': 'toolu_014HEbwiH2jVno8r1Pc6t9Qh', 'input': {}, 'name': 'transfer_to_multiplication_expert', 'type': 'tool_use'}]\n", - "Tool Calls:\n", - " transfer_to_multiplication_expert (toolu_014HEbwiH2jVno8r1Pc6t9Qh)\n", - " Call ID: toolu_014HEbwiH2jVno8r1Pc6t9Qh\n", - " Args:\n", - "\n", - "\n", - "Update from subgraph multiplication_expert:\n", - "\n", - "\n", - "Update from node agent:\n", - "\n", - "\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "[{'text': 'I notice I made a mistake - I actually don\\'t have access to the \"add\" function or \"transfer_to_multiplication_expert\". Instead, I am the multiplication expert and I should ask the addition expert for help with the first part. Let me correct this:', 'type': 'text'}, {'id': 'toolu_01VAGpmr4ysHjvvuZp3q5Dzj', 'input': {}, 'name': 'transfer_to_addition_expert', 'type': 'tool_use'}]\n", - "Tool Calls:\n", - " transfer_to_addition_expert (toolu_01VAGpmr4ysHjvvuZp3q5Dzj)\n", - " Call ID: toolu_01VAGpmr4ysHjvvuZp3q5Dzj\n", - " Args:\n", - "\n", - "\n", - "Update from subgraph addition_expert:\n", - "\n", - "\n", - "Update from node agent:\n", - "\n", - "\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "[{'text': \"I'll help you with the addition part of (3 + 5) * 12. First, let me calculate 3 + 5:\", 'type': 'text'}, {'id': 'toolu_01RE16cRGVo4CC4wwHFB6gaE', 'input': {'a': 3, 'b': 5}, 'name': 'add', 'type': 'tool_use'}]\n", - "Tool Calls:\n", - " add (toolu_01RE16cRGVo4CC4wwHFB6gaE)\n", - " Call ID: toolu_01RE16cRGVo4CC4wwHFB6gaE\n", - " Args:\n", - " a: 3\n", - " b: 5\n", - "\n", - "\n", - "Update from subgraph addition_expert:\n", - "\n", - "\n", - "Update from node tools:\n", - "\n", - "\n", - "=================================\u001b[1m Tool Message \u001b[0m=================================\n", - "Name: add\n", - "\n", - "8\n", - "\n", - "\n", - "Update from subgraph addition_expert:\n", - "\n", - "\n", - "Update from node agent:\n", - "\n", - "\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "[{'text': \"Now that we have 8, we need to multiply it by 12. Since I'm an addition expert, I'll need to transfer this to the multiplication expert to complete the calculation:\", 'type': 'text'}, {'id': 'toolu_01HBDRh64SzGcCp7EX1u3MFa', 'input': {}, 'name': 'transfer_to_multiplication_expert', 'type': 'tool_use'}]\n", - "Tool Calls:\n", - " transfer_to_multiplication_expert (toolu_01HBDRh64SzGcCp7EX1u3MFa)\n", - " Call ID: toolu_01HBDRh64SzGcCp7EX1u3MFa\n", - " Args:\n", - "\n", - "\n", - "Update from subgraph multiplication_expert:\n", - "\n", - "\n", - "Update from node agent:\n", - "\n", - "\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "[{'text': 'Now that I have the result of 3 + 5 = 8, I can help with multiplying by 12:', 'type': 'text'}, {'id': 'toolu_014Ay95rsKvvbWWJV4CcZSPY', 'input': {'a': 8, 'b': 12}, 'name': 'multiply', 'type': 'tool_use'}]\n", - "Tool Calls:\n", - " multiply (toolu_014Ay95rsKvvbWWJV4CcZSPY)\n", - " Call ID: toolu_014Ay95rsKvvbWWJV4CcZSPY\n", - " Args:\n", - " a: 8\n", - " b: 12\n", - "\n", - "\n", - "Update from subgraph multiplication_expert:\n", - "\n", - "\n", - "Update from node tools:\n", - "\n", - "\n", - "=================================\u001b[1m Tool Message \u001b[0m=================================\n", - "Name: multiply\n", - "\n", - "96\n", - "\n", - "\n", - "Update from subgraph multiplication_expert:\n", - "\n", - "\n", - "Update from node agent:\n", - "\n", - "\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "The final result is 96. Here's the complete calculation:\n", - "(3 + 5) * 12 = 8 * 12 = 96\n", - "\n", - "\n" - ] - } - ], - "source": [ - "for chunk in graph.stream(\n", - " {\"messages\": [(\"user\", \"what's (3 + 5) * 12\")]}, subgraphs=True\n", - "):\n", - " pretty_print_messages(chunk)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.3" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/docs/docs/how-tos/auth/custom_auth.md b/docs/docs/how-tos/auth/custom_auth.md index 826383887..0bf19307d 100644 --- a/docs/docs/how-tos/auth/custom_auth.md +++ b/docs/docs/how-tos/auth/custom_auth.md @@ -5,7 +5,7 @@ This guide assumes familiarity with the following concepts: * [**Authentication & Access Control**](../../concepts/auth.md) - * [**LangGraph Platform**](../../concepts/index.md#langgraph-platform) + * [**LangGraph Platform**](../../concepts/langgraph_platform.md) For a more guided walkthrough, see [**setting up custom authentication**](../../tutorials/auth/getting_started.md) tutorial. @@ -13,7 +13,7 @@ Custom auth is supported for all deployments in the **managed LangGraph Cloud**, as well as **Enterprise** self-hosted plans. It is not supported for **Lite** self-hosted plans. -This guide shows how to add custom authentication to your LangGraph Platform application. This guide applies to both LangGraph Cloud, BYOC, and self-hosted deployments. It does not apply to isolated usage of the LangGraph open source library in your own custom server. +This guide shows how to add custom authentication to your LangGraph Platform application. This guide applies to both LangGraph Cloud and self-hosted deployments. It does not apply to isolated usage of the LangGraph open source library in your own custom server. ## 1. Implement authentication diff --git a/docs/docs/how-tos/auth/openapi_security.md b/docs/docs/how-tos/auth/openapi_security.md index 87e1e0229..d74afbc76 100644 --- a/docs/docs/how-tos/auth/openapi_security.md +++ b/docs/docs/how-tos/auth/openapi_security.md @@ -5,7 +5,7 @@ This guide shows how to customize the OpenAPI security schema for your LangGraph !!! note "Implementation vs Documentation" This guide only covers how to document your security requirements in OpenAPI. To implement the actual authentication logic, see [How to add custom authentication](./custom_auth.md). -This guide applies to all LangGraph Platform deployments (Cloud, BYOC, and self-hosted). It does not apply to usage of the LangGraph open source library if you are not using LangGraph Platform. +This guide applies to all LangGraph Platform deployments (Cloud and self-hosted). It does not apply to usage of the LangGraph open source library if you are not using LangGraph Platform. ## Default Schema diff --git a/docs/docs/how-tos/branching.ipynb b/docs/docs/how-tos/branching.ipynb deleted file mode 100644 index d1d6dd494..000000000 --- a/docs/docs/how-tos/branching.ipynb +++ /dev/null @@ -1,541 +0,0 @@ -{ - "cells": [ - { - "attachments": { - "51f122de-b2ce-4c21-a5a7-c3be70c28a91.png": { - "image/png": "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LyI+CiAgICAgICAgIDxleGlmOlBpeGVsWURpbWVuc2lvbj41NDI8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+OTA0PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6VXNlckNvbW1lbnQ+U2NyZWVuc2hvdDwvZXhpZjpVc2VyQ29tbWVudD4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+ClCweXwAAAAcaURPVAAAAAIAAAAAAAABDwAAACgAAAEPAAABDwAARV8dcCWfAABAAElEQVR4AezdB3wURfvA8UcgdAgdqaElNAEVFBSk96agf1REFJSiooAFRXxtiAooShHEBkhRULEjRTpIB0MTCC0JJEBooZcA/5mJt97mLqSQS+4uv30/8XZnd2dnvjcvnzyZ2ZmbrqlN2BBAAAEEEEAAAQQQQAABBDK9wE0EiJm+DQCAAAIIIIAAAggggAACCBgBAkQaAgIIIIAAAggggAACCCCAgBEgQKQhIIAAAggggAACCCCAAAIIGAECRBoCAggggAACCCCAAAIIIICAESBApCEggAACCCCAAAIIIIAAAggYAQJEGgICCCCAAAIIIIAAAggggIARIECkISCAAAIIIIAAAggggAACCBgBAkQaAgIIIIAAAggggAACCCCAgBEgQKQhIIAAAggggAACCCCAAAIIGAECRBoCAggggAACCCCAAAIIIICAESBApCEggAACCCCAAAIIIIAAAggYAQJEGgICCCCAAAIIIIAAAggggIARIECkISCAAAIIIIAAAggggAACCBgBAkQaAgIIIIAAAggggAACCCCAgBEgQKQhIIAAAggggAACCCCAAAIIGAECRBoCAggggAACCCCAAAIIIICAESBApCEggAACCCCAAAIIIIAAAggYAQJEGgICCCCAAAIIIIAAAggggIARIECkISCAAAIIIIAAAggggAACCBgBAkQaAgIIIIAAAggggAACCCCAgBEgQKQhIIAAAggggAACCCCAAAIIGAECRBoCAggggAACCCCAAAIIIICAESBApCEggAACCCCAAAIIIIAAAggYAQJEGgICCCCAAAIIIIAAAggggIARIECkISCAAAIIIIAAAggggAACCBgBAkQaAgIIIIAAAggggAACCCCAgBEgQKQhIIAAAggggAACCCCAAAIIGAECRBoCAggggAACCCCAAAIIIICAESBApCEggAACCCCAAAIIIIAAAggYAQJEGgICCCCAAAIIIIAAAggggIARIECkISCAAAIIIIAAAggggAACCBgBAkQaAgIIIIAAAggggAACCCCAgBEgQKQhIIAAAggggAACCCCAAAIIGAECRBoCAggggAACCCCAAAIIIICAESBApCEggAACCCCAAAIIIIAAAggYAQJEGgICCCCAAAIIIIAAAggggIARIECkISCAAAIIIIAAAggggAACCBgBAkQaAgIIIIAAAggggAACCCCAgBEgQKQhIIAAAggggAACCCCAAAIIGAECRBoCAggggAACCCCAAAIIIICAESBApCEggAACCCCAAAIIIIAAAggYAQJEGgICCCCAAAIIIIAAAggggIARIECkISCAAAIIIIAAAggggAACCBgBAkQaAgIIIIAAAggggAACCCCAgBEgQKQhIIAAAggggAACCCCAAAIIGAECRBoCAggggAACCCCAAAIIIICAESBApCEggAACCCCAAAIIIIAAAggYAQJEGgICCCCAAAIIIIAAAggggIARIECkISCAAAIIIIAAAggggAACCBgBAkQaAgIIIIAAAggggAACCCCAgBEgQKQhIIAAAggggAACCCCAAAIIGAECRBoCAggggAACCCCAAAIIIICAESBApCEggAACCCCAAAIIIIAAAggYAQJEGgICCCCAAAIIIIAAAggggIARIECkISCAAAIIIIAAAggggAACCBgBAkQaAgIIIIAAAggggAACCCCAgBEgQKQhIIAAAggggAACCCCAAAIIGAECRBoCAggggAACCCCAAAIIIICAESBApCEggAACCCCAAAIIIIAAAggYAQJEGgICCCCAAAIIIIAAAggggIARIECkISCAAAIIIIAAAggggAACCBgBAkQaAgIIIIAAAggggAACCCCAgBEgQKQhIIAAAggggAACCCCAAAIIGAECRBoCAggggAACCCCAAAIIIICAESBApCEggAACCCCAAAIIIIAAAggYAQJEGgICCCCAAAIIIIAAAggggIARIECkISCAAAIIIIAAAggggAACCBgBAkQaAgIIIIAAAggggAACCCCAgBEgQKQhIIAAAggggAACCCCAAAIIGAECRBoCAggggAACCCCAAAIIIICAESBApCEggAACCCCAAAIIIIAAAggYAQJEGgICCCCAAAIIIIAAAggggIARIECkISCAAAIIIIAAAggggAACCBgBAkQaAgIIIIAAAggggAACCCCAgBEgQKQhIIAAAggggAACCCCAAAIIGAECRBoCAggggAACCCCAAAIIIICAESBApCEggAACCCCAAAIIIIAAAggYAQJEGgICCCCAAAIIIIAAAggggIARIECkISCAAAIIIIAAAggggAACCBgBAkQaAgIIIIAAAggggAACCCCAgBEgQKQhIIAAAggggAACCCCAAAIIGAECRBoCAggggAACCCCAAAIIIICAESBApCEggAACCCCAAAIIIIAAAggYAQJEGgICCCCAAAIIIIAAAggggIARIECkISCAAAIIIIAAAggggAACCBgBAkQaAgIIIIAAAggggAACCCCAgBEgQKQhIIAAAggggAACCCCAAAIIGAECRBoCAggggAACCCCAAAIIIICAESBApCEggAACCCCAAAIIIIAAAggYAQJEGgICCCCAAAIIIIAAAggggIARIECkISCAAAIIIIAAAggggAACCBgBAkQaAgIIIIAAAggggAACCCCAgBEgQKQhIIAAAggggAACCCCAAAIIGAECRBoCAggggAACCCCAAAIIIICAESBApCEggAACCCCAAAIIIIAAAggYAQJEGgICCCCAAAIIIIAAAggggIARIECkISCAAAIIIIAAAggggAACCBgBAkQaAgIIIIAAAggggAACCCCAgBEgQKQhIIAAAggggAACCCCAAAIIGAECRBoCAggggAACCCCAAAIIIICAESBApCEggAACCCCAAAIIIIAAAggYAQJEGgICCCCAAAIIIIAAAggggIARIECkISCAAAIIIIAAAggggAACCBgBAkQaAgIIIIAAAggggAACCCCAgBEgQKQhIIAAAggggAACCCCAAAIIGAECRBoCAggggAACCCCAAAIIIICAESBApCEggAACCCCAAAIIIIAAAggYAQJEGgICCCCAAAIIIIAAAggggIARIECkISCAAAIIIIAAAggggAACCBgBAkQaAgIIIICARwXOnDkjW7ZssT2jWrVqEhgYaEvjAAEEEEAAAQQyXoAAMeO/A0qAAAII+LVA+/btXQJEXeHy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Ujl++pycOH1eTkSfl7PnzsvFC+cl5qL5MZ8XL56TwsUjpFSZslK2TBkpXz5C8uUQyZczixTKncV82llyggACCCCAAAIuCxAgugxOcQgggAACCCCAAAIIIICAVwUIEL36ZqgXAggggAACCCCAAAIIIOCyAAGiy+AUhwACCCCAAAIIIIAAAgh4VYAA0atvhnohgAACCCCAAAIIIIAAAi4LECC6DE5xCCCAAAIIIIAAAggggIBXBQgQvfpmqBcCCCCAAAIIIIAAAggg4LIAAaLL4BSHAAIIIIAAAggggAACCHhVgADRq2+GeiGAAAIIIIAAAggggAACLgsQILoMTnEIIIAAAggggAACCCCAgFcFCBC9+maoFwIIIIAAAggggAACCCDgsgABosvgFIcAAggggAACCCCAAAIIeFWAANGrb4Z6IYAAAggggAACCCCAAAIuCxAgugxOcQgggAACCCCAAAIIIICAVwUIEL36ZqgXAggggAACCCCAAAIIIOCyAAGiy+AUhwACCCCAAAIIIIAAAgh4VYAA0atvhnohgAACCCCAAAIIIIAAAi4LECC6DE5xCCCAAAIIIIAAAggggIBXBQgQvfpmqBcCCCCAAAIIIIAAAggg4LIAAaLL4BSHAAIIIIAAAggggAACCHhVgADRq2+GeiGAAAIIIIAAAggggAACLgsQILoMTnEIIIAAAggggAACCCCAgFcFCBC9+maoFwIIIIAAAggggAACCCDgsgABosvgFIcAAggggAACCCCAAAIIeFWAANGrb4Z6IYAAAggggAACCCCAAAIuCxAgugxOcQgggAACCCCAAAIIIICAVwUIEL36ZqgXAggggAACCCCAAAIIIOCyAAGiy+AUhwACCCCAAAIIIIAAAgh4VYAA0atvhnohgAACCCCAAAIIIIAAAi4LECC6DE5xCCCAAAIIIIAAAggggIBXBQgQvfpmqBcCCCCAAAIIIIAAAggg4LIAAaLL4BSHAAIIIIAAAggggAACCHhVgADRq2+GeiGAAAIIIIAAAggggAACLgsQILoMTnEIIIAAAggggAACCCCAgFcFCBC9+maoFwIIIIAAAggggAACCCDgsgABosvgFIcAAggggAACCCCAAAIIeFWAANGrb4Z6IYAAAggggAACCCCAAAIuCxAgugxOcQgggAACCCCAAAIIIICAVwUIEL36ZqgXAggggAACCCCAAAIIIOCyAAGiy+AUhwACCCCAAAIIIIAAAgh4VYAA0atvhnohgAACCCCAAAIIIIAAAi4LECC6DE5xCCCAAAIIIIAAAggggIBXBQgQvfpmqBcCCCCAAAIIIIAAAggg4LIAAaLL4BSHAAIIIIAAAggggAACCHhVgADRq2+GeiGAAAIIIIAAAggggAACLgsQILoMTnEIIIAAAggggAACCCCAgFcFCBC9+maoFwIIIIAAApaKqg4AAAVzSURBVAgggAACCCDgsgABosvgFIcAAggggAACCCCAAAIIeFWAANGrb4Z6IYAAAggggAACCCCAAAIuCxAgugxOcQgggAACCCCAAAIIIICAVwUIEL36ZqgXAggggAACCCCAAAIIIOCyAAGiy+AUhwACCCCAAAIIIIAAAgh4VYAA0atvhnohgAACCCCAAAIIIIAAAi4LECC6DE5xCCCAAAIIIIAAAggggIBXBQgQvfpmqBcCCCCAAAIIIIAAAggg4LIAAaLL4BSHAAIIIIAAAggggAACCHhVgADRq2+GeiGAAAIIIIAAAggggAACLgsQILoMTnEIIIAAAggggAACCCCAgFcFCBC9+maoFwIIIIAAAggggAACCCDgsgABosvgFIcAAggggAACCCCAAAIIeFWAANGrb4Z6IYAAAggggAACCCCAAAIuCxAgugxOcQgggAACCCCAAAIIIICAVwUIEL36ZqgXAggggAACCCCAAAIIIOCyAAGiy+AUhwACCCCAAAIIIIAAAgh4VYAA0atvhnohgAACCCCAAAIIIIAAAi4LECC6DE5xCCCAAAIIIIAAAggggIBXBQgQvfpmqBcCCCCAAAIIIIAAAggg4LIAAaLL4BSHAAIIIIAAAggggAACCHhVgADRq2+GeiGAAAIIIIAAAggggAACLgsQILoMTnEIIIAAAggggAACCCCAgFcFCBC9+maoFwIIIIAAAggggAACCCDgsgABosvgFIcAAggggAACCCCAAAIIeFWAANGrb4Z6IYAAAggggAACCCCAAAIuCxAgugxOcQgggAACCCCAAAIIIICAVwUIEL36ZqgXAggggAACCCCAAAIIIOCyAAGiy+AUhwACCCCAAAIIIIAAAgh4VYAA0atvhnohgAACCCCAAAIIIIAAAi4LECC6DE5xCCCAAAIIIIAAAggggIBXBQgQvfpmqBcCCCCAAAIIIIAAAggg4LIAAaLL4BSHAAIIIIAAAggggAACCHhVgADRq2+GeiGAAAIIIIAAAggggAACLgsQILoMTnEIIIAAAggggAACCCCAgFcFCBC9+maoFwIIIIAAAggggAACCCDgsgABosvgFIcAAggggAACCCCAAAIIeFWAANGrb4Z6IYAAAggggAACCCCAAAIuCxAgugxOcQgggAACCCCAAAIIIICAVwUIEL36ZqgXAggggAACCCCAAAIIIOCyAAGiy+AUhwACCCCAAAIIIIAAAgh4VYAA0atvhnohgAACCCCAAAIIIIAAAi4LECC6DE5xCCCAAAIIIIAAAggggIBXBQgQvfpmqBcCCCCAAAIIIIAAAggg4LIAAaLL4BSHAAIIIIAAAggggAACCHhVgADRq2+GeiGAAAIIIIAAAggggAACLgsQILoMTnEIIIAAAggggAACCCCAgFcFCBC9+maoFwIIIIAAAggggAACCCDgsgABosvgFIcAAggggAACCCCAAAIIeFWAANGrb4Z6IYAAAggggAACCCCAAAIuCxAgugxOcQgggAACCCCAAAIIIICAVwUIEL36ZqgXAggggAACCCCAAAIIIOCyAAGiy+AUhwACCCCAAAIIIIAAAgh4VYAA0atvhnohgAACCCCAAAIIIIAAAi4LECC6DE5xCCCAAAIIIIAAAggggIBXBQgQvfpmqBcCCCCAAAIIIIAAAggg4LIAAaLL4BSHAAIIIIAAAggggAACCHhVgADRq2+GeiGAAAIIIIAAAggggAACLgsQILoMTnEIIIAAAggggAACCCCAgFcFCBC9+maoFwIIIIAAAggggAACCCDgsgABosvgFIcAAggggAACCCCAAAIIeFWAANGrb4Z6IYAAAggggAACCCCAAAIuC/w/OsDdHSiHP+MAAAAASUVORK5CYII=" - } - }, - "cell_type": "markdown", - "id": "710dc4f0-1c88-4386-9e9d-fec3de6bb774", - "metadata": {}, - "source": [ - "# How to create branches for parallel node execution\n", - "\n", - "
    \n", - "

    Prerequisites

    \n", - "

    \n", - " This guide assumes familiarity with the following:\n", - "

    \n", - "

    \n", - "
    \n", - "\n", - "Parallel execution of nodes is essential to speed up overall graph operation. LangGraph offers native support for parallel execution of nodes, which can significantly enhance the performance of graph-based workflows. This parallelization is achieved through fan-out and fan-in mechanisms, utilizing both standard edges and [conditional_edges](https://langchain-ai.github.io/langgraph/reference/graphs/#langgraph.graph.MessageGraph.add_conditional_edges). Below are some examples showing how to add create branching dataflows that work for you. \n", - "\n", - "![Screenshot 2024-07-09 at 2.55.56 PM.png](attachment:51f122de-b2ce-4c21-a5a7-c3be70c28a91.png)" - ] - }, - { - "cell_type": "markdown", - "id": "66b6b42d", - "metadata": {}, - "source": [ - "## Setup\n", - "\n", - "First, let's install the required packages" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "bb54e2d0", - "metadata": {}, - "outputs": [], - "source": [ - "%%capture --no-stderr\n", - "%pip install -U langgraph" - ] - }, - { - "cell_type": "markdown", - "id": "73bac559", - "metadata": {}, - "source": [ - "
    \n", - "

    Set up LangSmith for LangGraph development

    \n", - "

    \n", - " Sign up for LangSmith to quickly spot issues and improve the performance of your LangGraph projects. LangSmith lets you use trace data to debug, test, and monitor your LLM apps built with LangGraph — read more about how to get started here. \n", - "

    \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "id": "d6c05fc4-ecd8-483f-a9fd-b1a055f922d9", - "metadata": {}, - "source": [ - "## How to run graph nodes in parallel\n", - "\n", - "In this example, we fan out from `Node A` to `B and C` and then fan in to `D`. With our state, [we specify the reducer add operation](https://langchain-ai.github.io/langgraph/concepts/low_level/#reducers). This will combine or accumulate values for the specific key in the State, rather than simply overwriting the existing value. For lists, this means concatenating the new list with the existing list. See [this guide](../../how-tos/state-reducers) for more detail on updating state with reducers." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "09372b8b-edea-4b9d-9ec3-3d93ce1ba819", - "metadata": {}, - "outputs": [], - "source": [ - "import operator\n", - "from typing import Annotated, Any\n", - "\n", - "from typing_extensions import TypedDict\n", - "\n", - "from langgraph.graph import StateGraph, START, END\n", - "\n", - "\n", - "class State(TypedDict):\n", - " # The operator.add reducer fn makes this append-only\n", - " aggregate: Annotated[list, operator.add]\n", - "\n", - "\n", - "def a(state: State):\n", - " print(f'Adding \"A\" to {state[\"aggregate\"]}')\n", - " return {\"aggregate\": [\"A\"]}\n", - "\n", - "\n", - "def b(state: State):\n", - " print(f'Adding \"B\" to {state[\"aggregate\"]}')\n", - " return {\"aggregate\": [\"B\"]}\n", - "\n", - "\n", - "def c(state: State):\n", - " print(f'Adding \"C\" to {state[\"aggregate\"]}')\n", - " return {\"aggregate\": [\"C\"]}\n", - "\n", - "\n", - "def d(state: State):\n", - " print(f'Adding \"D\" to {state[\"aggregate\"]}')\n", - " return {\"aggregate\": [\"D\"]}\n", - "\n", - "\n", - "builder = StateGraph(State)\n", - "builder.add_node(a)\n", - "builder.add_node(b)\n", - "builder.add_node(c)\n", - "builder.add_node(d)\n", - "builder.add_edge(START, \"a\")\n", - "builder.add_edge(\"a\", \"b\")\n", - "builder.add_edge(\"a\", \"c\")\n", - "builder.add_edge(\"b\", \"d\")\n", - "builder.add_edge(\"c\", \"d\")\n", - "builder.add_edge(\"d\", END)\n", - "graph = builder.compile()" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "66f52a20", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from IPython.display import Image, display\n", - "\n", - "display(Image(graph.get_graph().draw_mermaid_png()))" - ] - }, - { - "cell_type": "markdown", - "id": "74dd577b-0474-44c4-b4bc-9113090e3121", - "metadata": {}, - "source": [ - "With the reducer, you can see that the values added in each node are accumulated." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "81646784-5e7d-4096-980d-9fdfafd6e7a3", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Adding \"A\" to []\n", - "Adding \"B\" to ['A']\n", - "Adding \"C\" to ['A']\n", - "Adding \"D\" to ['A', 'B', 'C']\n" - ] - }, - { - "data": { - "text/plain": [ - "{'aggregate': ['A', 'B', 'C', 'D']}" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "graph.invoke({\"aggregate\": []}, {\"configurable\": {\"thread_id\": \"foo\"}})" - ] - }, - { - "cell_type": "markdown", - "id": "ea5495cf-9564-40c6-bc2d-0b2a8f72a5df", - "metadata": {}, - "source": [ - "!!! note\n", - "\n", - " In the above example, nodes `\"b\"` and `\"c\"` are executed concurrently in the same [superstep](../../concepts/low_level/#graphs). Because they are in the same step, node `\"d\"` executes after both `\"b\"` and `\"c\"` are finished.\n", - "\n", - " Importantly, updates from a parallel superstep may not be ordered consistently. If you need a consistent, predetermined ordering of updates from a parallel superstep, you should write the outputs to a separate field in the state together with a value with which to order them." - ] - }, - { - "cell_type": "markdown", - "id": "c392b3d2", - "metadata": {}, - "source": [ - "
    Exception handling?\n", - "

    LangGraph executes nodes within \"supersteps\", meaning that while parallel branches are executed in parallel, the entire superstep is transactional. If any of these branches raises an exception, none of the updates are applied to the state (the entire superstep errors).

    \n", - "

    Importantly, when using a checkpointer, results from successful nodes within a superstep are saved, and don't repeat when resumed.

    \n", - " If you have error-prone (perhaps want to handle flakey API calls), LangGraph provides two ways to address this:
    \n", - "
      \n", - "
    1. You can write regular python code within your node to catch and handle exceptions.
    2. \n", - "
    3. You can set a retry_policy to direct the graph to retry nodes that raise certain types of exceptions. Only failing branches are retried, so you needn't worry about performing redundant work.
    4. \n", - "

    \n", - "Together, these let you perform parallel execution and fully control exception handling.\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "id": "08d8162e-1785-4ae1-993f-6d2ed48c22ae", - "metadata": {}, - "source": [ - "## Parallel node fan-out and fan-in with extra steps\n", - "\n", - "The above example showed how to fan-out and fan-in when each path was only one step. But what if one path had more than one step? Let's add a node `b_2` in the \"b\" branch:" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "259a7704-5aa0-4e4c-aeef-cca04e8be0ff", - "metadata": {}, - "outputs": [], - "source": [ - "def b_2(state: State):\n", - " print(f'Adding \"B_2\" to {state[\"aggregate\"]}')\n", - " return {\"aggregate\": [\"B_2\"]}\n", - "\n", - "\n", - "builder = StateGraph(State)\n", - "builder.add_node(a)\n", - "builder.add_node(b)\n", - "builder.add_node(b_2)\n", - "builder.add_node(c)\n", - "builder.add_node(d)\n", - "builder.add_edge(START, \"a\")\n", - "builder.add_edge(\"a\", \"b\")\n", - "builder.add_edge(\"a\", \"c\")\n", - "builder.add_edge(\"b\", \"b_2\")\n", - "# highlight-next-line\n", - "builder.add_edge([\"b_2\", \"c\"], \"d\")\n", - "builder.add_edge(\"d\", END)\n", - "graph = builder.compile()" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "83320227-8ab3-44c0-b6cf-064a7a425b9f", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from IPython.display import Image, display\n", - "\n", - "display(Image(graph.get_graph().draw_mermaid_png()))" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "2b8659a9-bacd-4620-a160-8a08d10f7192", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Adding \"A\" to []\n", - "Adding \"B\" to ['A']\n", - "Adding \"C\" to ['A']\n", - "Adding \"B_2\" to ['A', 'B', 'C']\n", - "Adding \"D\" to ['A', 'B', 'C', 'B_2']\n" - ] - }, - { - "data": { - "text/plain": [ - "{'aggregate': ['A', 'B', 'C', 'B_2', 'D']}" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "graph.invoke({\"aggregate\": []})" - ] - }, - { - "cell_type": "markdown", - "id": "00d33cb0-5a47-4057-bc55-0fc14c6034fc", - "metadata": {}, - "source": [ - "!!! note\n", - "\n", - "

    In the above example, nodes `\"b\"` and `\"c\"` are executed concurrently in the same [superstep](../../concepts/low_level/#graphs). What happens in the next step?

    \n", - "

    We use `add_edge([\"b_2\", \"c\"], \"d\")` here to force node `\"d\"` to only run when both nodes `\"b_2\"` and `\"c\"` have finished execution. If we added two separate edges,\n", - " node `\"d\"` would run twice: after node `b2` finishes and once again after node `c` (in whichever order those nodes finish).

    " - ] - }, - { - "cell_type": "markdown", - "id": "d45f4477", - "metadata": {}, - "source": [ - "## Conditional Branching\n", - "\n", - "If your fan-out is not deterministic, you can use [add_conditional_edges](https://langchain-ai.github.io/langgraph/reference/graphs/#langgraph.graph.StateGraph.add_conditional_edges) directly." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "95f5e026", - "metadata": {}, - "outputs": [], - "source": [ - "import operator\n", - "from typing import Annotated, Sequence\n", - "\n", - "from typing_extensions import TypedDict\n", - "\n", - "from langgraph.graph import StateGraph, START, END\n", - "\n", - "\n", - "class State(TypedDict):\n", - " aggregate: Annotated[list, operator.add]\n", - " # Add a key to the state. We will set this key to determine\n", - " # how we branch.\n", - " which: str\n", - "\n", - "\n", - "def a(state: State):\n", - " print(f'Adding \"A\" to {state[\"aggregate\"]}')\n", - " return {\"aggregate\": [\"A\"]}\n", - "\n", - "\n", - "def b(state: State):\n", - " print(f'Adding \"B\" to {state[\"aggregate\"]}')\n", - " return {\"aggregate\": [\"B\"]}\n", - "\n", - "\n", - "def c(state: State):\n", - " print(f'Adding \"C\" to {state[\"aggregate\"]}')\n", - " return {\"aggregate\": [\"C\"]}\n", - "\n", - "\n", - "def d(state: State):\n", - " print(f'Adding \"D\" to {state[\"aggregate\"]}')\n", - " return {\"aggregate\": [\"D\"]}\n", - "\n", - "\n", - "def e(state: State):\n", - " print(f'Adding \"E\" to {state[\"aggregate\"]}')\n", - " return {\"aggregate\": [\"E\"]}\n", - "\n", - "\n", - "builder = StateGraph(State)\n", - "builder.add_node(a)\n", - "builder.add_node(b)\n", - "builder.add_node(c)\n", - "builder.add_node(d)\n", - "builder.add_node(e)\n", - "builder.add_edge(START, \"a\")\n", - "\n", - "\n", - "def route_bc_or_cd(state: State) -> Sequence[str]:\n", - " if state[\"which\"] == \"cd\":\n", - " return [\"c\", \"d\"]\n", - " return [\"b\", \"c\"]\n", - "\n", - "\n", - "intermediates = [\"b\", \"c\", \"d\"]\n", - "builder.add_conditional_edges(\n", - " \"a\",\n", - " route_bc_or_cd,\n", - " intermediates,\n", - ")\n", - "for node in intermediates:\n", - " builder.add_edge(node, \"e\")\n", - "\n", - "builder.add_edge(\"e\", END)\n", - "graph = builder.compile()" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "264da3f8-f5de-499b-8287-73797c1e3511", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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Uv3www8zZ850Op1UbhcJP7nke/LkyQ0bNlB/eZ/qM+QKhSIvL++pp55i/IUJf7jku2vXrm+//XbZsmXUbxrBpZ2AgICioqLXX3/92LFj1G8dI8uaNWtOnz793XffIdk6smuS+fn527Zt++GHH1AVABuz7/J9++23eTzeu+++i6oAlBfTP//88+rqagqusiDB1Lv02FTFAAARpElEQVR8jUbj3Llz+/TpM2PGDIRlIJ4FMm/evPT09OHDh9fVUbf6OfbQjhw5MmLEiFdffRX52SH0j3fJyspKTU3Nzc196aWXsrKyUJdDGubNDluxYsXt27d/++031IUA9D2uR3h4+O7du4uKit577z3UtZCGSbPDrFbr1KlTQ0NDfWe+lE8E12Pp0qVdunSZO3duWVkZ6lpIEBQUxIyDs3379r322mtvvfVWTk4O6lr+gn6ocKfRo0f36NHjtddeGzRoENqx/6NrbGxkwMHZggUL2Gz26tWrURdyNx/qcT0iIyO3bt3qcDhycnJofcQmk8m4XN/qFx7I8ePHn3zyyQEDBrz//vuoa2mFj+7Z2bNn9+vXLzc3d9q0adRMkyOd0Wik75Xt5cuX19fXHz161GevWvtcj9uiQ4cOu3fvrqysfO211+jY9UokEjpOazx58uScOXM6duy4cuVKn02t7/a4Ld58880LFy7k5uaOHz9++vTpqMt5AGazmXbTGhcvXqzVapctWxYQEIC6ljb4bo/bIiUlZffu3WazecKECTR6wIRKpRIKYT1+kXS//PJLWlpaenr6qlWrfD+1NOhxW7zyyivDhg1btGhRWlravHnzUJfTNo1GExsbi7qKthkMhoULF8pkstOnT9PoBk9vnyzpOzZt2vTrr79OmzatT58+qGtpxdixYysrK1vu8iUIgiCITp06UTzP2ksbNmw4c+ZMdnb2U089hbqWB0ODocJdpkyZ8vHHH//000/z5s1rbKTuYd5e6tu3L4vFaum6WCyWUql8/vnnUdd1t3Pnzo0dO1an061cuZJ2qaVlj9uisLBw2bJl2dnZubm5qGv5S319/UsvveTpdD26d+/+1VdfIS3qfzgcjvfee6+2tnbhwoW0GMy0in49bovMzMz9+/fbbLYRI0acPXsWdTl/Cg0NvXMpY4VC8cwzzyCt6H/s2rWrd+/e6enp33zzDX1TS+/gerz00ktfffXV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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from IPython.display import Image, display\n", - "\n", - "display(Image(graph.get_graph().draw_mermaid_png()))" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "ffe8e4aa-55c1-43b4-ba64-74583359a35b", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Adding \"A\" to []\n", - "Adding \"B\" to ['A']\n", - "Adding \"C\" to ['A']\n", - "Adding \"E\" to ['A', 'B', 'C']\n" - ] - }, - { - "data": { - "text/plain": [ - "{'aggregate': ['A', 'B', 'C', 'E'], 'which': 'bc'}" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "graph.invoke({\"aggregate\": [], \"which\": \"bc\"})" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "3bc6b3b4-a0c8-471a-9029-ddf2472c385c", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Adding \"A\" to []\n", - "Adding \"C\" to ['A']\n", - "Adding \"D\" to ['A']\n", - "Adding \"E\" to ['A', 'C', 'D']\n" - ] - }, - { - "data": { - "text/plain": [ - "{'aggregate': ['A', 'C', 'D', 'E'], 'which': 'cd'}" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "graph.invoke({\"aggregate\": [], \"which\": \"cd\"})" - ] - }, - { - "cell_type": "markdown", - "id": "639a3653-0fa3-4b6d-bf53-63479c6b00fe", - "metadata": {}, - "source": [ - "## Next steps\n", - "\n", - "- Continue with the [Graph API Basics](../../how-tos/#graph-api-basics) guides.\n", - "- Learn how to create [map-reduce](../../how-tos/map-reduce/) branches in which different states can be distributed to multiple instances of a node." - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.4" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/docs/docs/how-tos/command.ipynb b/docs/docs/how-tos/command.ipynb deleted file mode 100644 index cf0b01ae9..000000000 --- a/docs/docs/how-tos/command.ipynb +++ /dev/null @@ -1,397 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "d33ecddc-6818-41a3-9d0d-b1b1cbcd286d", - "metadata": {}, - "source": [ - "# How to combine control flow and state updates with Command" - ] - }, - { - "cell_type": "markdown", - "id": "7c0a8d03-80b4-47fd-9b17-e26aa9b081f3", - "metadata": {}, - "source": [ - "!!! info \"Prerequisites\"\n", - " This guide assumes familiarity with the following:\n", - " \n", - " - [State](../../concepts/low_level#state)\n", - " - [Nodes](../../concepts/low_level#nodes)\n", - " - [Edges](../../concepts/low_level#edges)\n", - " - [Command](../../concepts/low_level#command)\n", - "\n", - "It can be useful to combine control flow (edges) and state updates (nodes). For example, you might want to BOTH perform state updates AND decide which node to go to next in the SAME node. LangGraph provides a way to do so by returning a `Command` object from node functions:\n", - "\n", - "```python\n", - "def my_node(state: State) -> Command[Literal[\"my_other_node\"]]:\n", - " return Command(\n", - " # state update\n", - " update={\"foo\": \"bar\"},\n", - " # control flow\n", - " goto=\"my_other_node\"\n", - " )\n", - "```\n", - "\n", - "If you are using [subgraphs](#subgraphs), you might want to navigate from a node within a subgraph to a different subgraph (i.e. a different node in the parent graph). To do so, you can specify `graph=Command.PARENT` in `Command`:\n", - "\n", - "```python\n", - "def my_node(state: State) -> Command[Literal[\"my_other_node\"]]:\n", - " return Command(\n", - " update={\"foo\": \"bar\"},\n", - " goto=\"other_subgraph\", # where `other_subgraph` is a node in the parent graph\n", - " graph=Command.PARENT\n", - " )\n", - "```\n", - "\n", - "!!! important \"State updates with `Command.PARENT`\"\n", - "\n", - " When you send updates from a subgraph node to a parent graph node for a key that's shared by both parent and subgraph [state schemas](../../concepts/low_level#schema), you **must** define a [reducer](../../concepts/low_level#reducers) for the key you're updating in the parent graph state. See this [example](#navigating-to-a-node-in-a-parent-graph) below.\n", - "\n", - "This guide shows how you can do use `Command` to add dynamic control flow in your LangGraph app." - ] - }, - { - "cell_type": "markdown", - "id": "d1c3f866-8c20-40c7-a201-35f6c9f4b680", - "metadata": {}, - "source": [ - "## Setup\n", - "\n", - "First, let's install the required packages" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "6999c7fe-31bb-4c19-946a-85c2edc57da7", - "metadata": {}, - "outputs": [], - "source": [ - "%%capture --no-stderr\n", - "%pip install -U langgraph" - ] - }, - { - "cell_type": "markdown", - "id": "0f131c92-4744-431c-a89c-7c382a15b79f", - "metadata": {}, - "source": [ - "
    \n", - "

    Set up LangSmith for LangGraph development

    \n", - "

    \n", - " Sign up for LangSmith to quickly spot issues and improve the performance of your LangGraph projects. LangSmith lets you use trace data to debug, test, and monitor your LLM apps built with LangGraph — read more about how to get started here. \n", - "

    \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "id": "f22c228f-6882-4757-8e7e-1ca51328af4a", - "metadata": {}, - "source": [ - "Let's create a simple graph with 3 nodes: A, B and C. We will first execute node A, and then decide whether to go to Node B or Node C next based on the output of node A." - ] - }, - { - "cell_type": "markdown", - "id": "6a08d957-b3d2-4538-bf4a-68ef90a51b98", - "metadata": {}, - "source": [ - "## Basic usage" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "4539b81b-09e9-4660-ac55-1b1775e13892", - "metadata": {}, - "outputs": [], - "source": [ - "import random\n", - "from typing_extensions import TypedDict, Literal\n", - "\n", - "from langgraph.graph import StateGraph, START\n", - "from langgraph.types import Command\n", - "\n", - "\n", - "# Define graph state\n", - "class State(TypedDict):\n", - " foo: str\n", - "\n", - "\n", - "# Define the nodes\n", - "\n", - "\n", - "def node_a(state: State) -> Command[Literal[\"node_b\", \"node_c\"]]:\n", - " print(\"Called A\")\n", - " value = random.choice([\"a\", \"b\"])\n", - " # this is a replacement for a conditional edge function\n", - " if value == \"a\":\n", - " goto = \"node_b\"\n", - " else:\n", - " goto = \"node_c\"\n", - "\n", - " # note how Command allows you to BOTH update the graph state AND route to the next node\n", - " return Command(\n", - " # this is the state update\n", - " update={\"foo\": value},\n", - " # this is a replacement for an edge\n", - " goto=goto,\n", - " )\n", - "\n", - "\n", - "def node_b(state: State):\n", - " print(\"Called B\")\n", - " return {\"foo\": state[\"foo\"] + \"b\"}\n", - "\n", - "\n", - "def node_c(state: State):\n", - " print(\"Called C\")\n", - " return {\"foo\": state[\"foo\"] + \"c\"}" - ] - }, - { - "cell_type": "markdown", - "id": "badc25eb-4876-482e-bb10-d763023cdaad", - "metadata": {}, - "source": [ - "We can now create the `StateGraph` with the above nodes. Notice that the graph doesn't have [conditional edges](../../concepts/low_level#conditional-edges) for routing! This is because control flow is defined with `Command` inside `node_a`." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "d6711650-4380-4551-a007-2805f49ab2d8", - "metadata": {}, - "outputs": [], - "source": [ - "builder = StateGraph(State)\n", - "builder.add_edge(START, \"node_a\")\n", - "builder.add_node(node_a)\n", - "builder.add_node(node_b)\n", - "builder.add_node(node_c)\n", - "# NOTE: there are no edges between nodes A, B and C!\n", - "\n", - "graph = builder.compile()" - ] - }, - { - "cell_type": "markdown", - "id": "0ab344c5-d634-4d7d-b3b4-edf4fa875311", - "metadata": {}, - "source": [ - "!!! important\n", - "\n", - " You might have noticed that we used `Command` as a return type annotation, e.g. `Command[Literal[\"node_b\", \"node_c\"]]`. This is necessary for the graph rendering and tells LangGraph that `node_a` can navigate to `node_b` and `node_c`." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "eeb810e5-8822-4c09-8d53-c55cd0f5d42e", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAOYAAAD5CAIAAAC8iN6iAAAAAXNSR0IArs4c6QAAHq1JREFUeJzt3XlAE2feB/And0IuCOGQWw4F5VSwWNHWs5XiAWK9BasV671qrbXW7m7V1bq21Jt64au4Kms9Cipe9QAFRBDEAwEpIjckIeQg9/vHdFmKAbGbYTKT5/MXTDIzvyTfPHnmeoZkMBgABOEHGesCIOjtwMhCOAMjC+EMjCyEMzCyEM7AyEI4Q8W6AMzUv2xTtOqUrTqNWq9S6rEup0cYTDKVTrLiUllcsqM7C+tysEGytP2yLx7JXjySVxTL3XytNCo9i0sRONA1Kny8CXQmWVSvVrRqqTRS5VNFX3+2pz/HO5iDdV29yoIiW/ZQlvVLk5MXy8Wb1defzbSiYF3R/0Tdpq8olr8skb8qVb4bJewfysW6ol5iEZFVynVXU+ppdNKwCUKeLQ3rckxMJtHeTWtqFWs+mNOHY038nh7xI/uqVHE5uW7yEmehEwPrWlAkqled31cz8mN7jwFsrGtBF8Ej21SjunO2KXqJM9aF9JJffqoJGydw9GBiXQiKiBzZskJZ0R1JzFIXrAvpVReSanxCOH5DeFgXghbC7pcVN6iz05stLa8AgIkJTkW3WxpetWFdCFoIG9mbpxtmfuGGdRXYmLbGNfN8k06Dj53Nb4uYkb2b1uTmyyZTSFgXghnvQE7mhWasq0AFASOrUuqKs6SDx9hgXQiWAodbv3gkk0m0WBdiegSMbMGvkvdihVhXgb0RMXaFtyRYV2F6BIxs8d0Wt/69tG9SJpM9e/YMq9m75+5rVZTVgtLCMUS0yNb+prQW0lmcXjoYO3369PPnz2M1e/eodLJTX+bLEgVKy8cK0SL76rmyf2jvnSaiVqv/3IzI7vA/PXsP9RvMqS6FkTVvja9UVjxUjrNnZmZOmzZt2LBhU6dOPXXqFAAgKipKJBKlpqaGhoZGRUUhT7tw4cLs2bPDw8NHjRr11VdficViZPq2bdvGjRt3+/bt6Ojo0NDQ+/fvG53dtNh8WkOVCo0lY4hoZ1EoWnVWXNP3ChQKxRdffOHp6blhw4aysrLGxkYAwHfffbd06dLBgwfPmjWLTqcjz3z06JGHh0dkZKRIJDp58qRcLk9MTEQekslke/fuXbdunVKpDAsLMzq7abF5FLlUh8aSMUS4yEq1aLSyIpFIpVKNGjVq/Pjx7RMHDBhApVKFQmFwcHD7xPXr15NIv+8PplKphw8fVqlUDAYD6QZs2LDB39+/m9lNi82jyqVE289FtMjSGGQq1fRHEJydnQMDAw8dOsRisWJiYrppFDUazcmTJy9evFhXV8dkMvV6vVgsdnR0BAAwmcz2vPYOMpXEYBKt70e010OhkmQtpm9XSCTSzp07o6KiEhMTY2Ji8vPzjT7NYDCsXLny8OHDEydO3L17d2RkJABAr//9wKmVlZXJC+uevEVLvEOARIusFY+iQKf3xuFw1q1bd+bMGQ6Hs2rVKoXi9y3xjqfC5efn5+bmrlu3bubMmf7+/t7e3m9cLKpn0imkOjY6G6MYIlpk7ZwZKiUqkVWpVEgPYfr06TKZrKamBgDAYrGampranyORSAAAvr6+Hf9tb2Vf12l2k1PKtfZuRDuxnWhfwT59WQU3xb5hJj5bVKPRTJkyZezYsV5eXqmpqRwOx8XFBQAQEhJy+fLl5ORkHo8XGBgYEBBAp9N3794dHR1dWlp65MgRAEBZWRny5Nd1mr0nrfJbKc2X+Qwi2jVhRGtl3XytqsuUOq2Jf22R3VKXLl3aunUrjUZLTExkMpkAgOXLl4eGhh48ePDIkSNVVVX29vabN29+9uzZ2rVrc3JykpKSIiIiTp482dViO81u2poBAC+K5Z7+RLuuhoBXJdw52+jiw+rrb1mXSr+uqlRRViAb+bE91oWYGNE6BgAA/3f56Ydru4nsgQMHUlJSXp/u5+f39OlTo7McOXKkb9++Ji2zM5lM1tUxMBsbm/ajaB3t3LkzMDCwqwXe/aV5ZKydSWs0CwRsZQEA107UO3uzurr+SSqVymSy16eTSF2+G/b29lQqul9vvV5fV1dn9CGNRkOjGbmWXSgUdrWHuKxQVprfOn5eH1OXiT1iRlYh1V4/1TDhUyesC8HMpSO1QyfYWgtROQ6MLaJtfiGseNSAYfxffqrBuhBsXD5a5x3MIWReCRtZAIDHALaTJ+vGyQasC+ltt39u5AtpPiFE27fVjpgdg3alBa1Vz5WjphFtq7krd8422jrRB7zDx7oQFBG2lUX4hHCFTvSfd7/S6Yj8zURcSKqx4lGJnVfit7KI6jLlzdQGn0HcIR8IsK4FFQ+uix/daRk5zc7dj2gHDl5nEZEFABj0htwMUcGvktCxNm6+VvauRBi1qrFa9fKZ4sE1sf+7vPCPbMlkop20ZZSlRBahUeuL7kjKHsrlUq1vGJcESGw+hSug4eU9oJBJLSK1vEVnMBieP5AxrcheQZzA4XwGC99j5b4Vy4psO3mLtrpMKRVr5C06Egm0ik18im1tba1er3d2NvGIi1wBzaAzsPkUroDq5Mni2hBtrNyesNDIou3QoUMqlWrx4sVYF0JABN9jABEPjCyEMwQ8k8scsNlslK7zhmBkUSGXy5ELbyCTg5FFBY1G6+aSL+h/AfuyqNBoNBqNBusqiAm2sqhgMpntY8ZApgUji4q2tjbYl0UJjCwqOBwOMg4XZHIwsqiQyWSwlUUJ3PyCcAa2sqiAxxHQA1tZVKjVatgxQAlsZVFBp9PhKXIoga0sKtRqNdq37rBYMLIQzsCOASpYLBbaAyJZLPi2okKpVMLNL5TAjgGEM7CVRQU8xRs9MLKogKd4owd2DCCcga0sKmDHAD0wsqiAHQP0wI4BhDOwlUUF7BigB0YWFbBjgB7YMYBwBrayqIDjGKAHtrKogOMYoAe2sqiwsrKCZ3KhBL6tqFAoFHDzCyWwYwDhDGxlUUGn0+EARyiBkUUFvMIWPTCyqIADHKEHRhYVcIAj9MDIogKeY4AeGFlUwHMM0AMjiwomk0mhWNAdD3sTvFWdKUVFRZHJZL1er1Ao9Ho9j8fT6/UGgyE9PR3r0ogDtrKm5OXllZWV1f6vTCYDAAwZMgTToogGHv0ypfj4eFtb245T+Hz+rFmzsKuIgGBkTSkkJMTPz6+9r2UwGLy8vIYNG4Z1XYQCI2tic+fObW9ora2t582bh3VFRAMja2KDBg0KCAhA/vb29h46dCjWFRENjKzpzZkzRyAQ8Hi8uLg4rGshIEvZY6DTGkR1aplE2wu79HhUn8F+kUql0pEX9KJYjvbqSACw+RSBA51Kt4gGyCL2yz64Li7JawUkIHBgqNuIdkkWlU5qadJo1fp+g7nvfCjAuhzUET+y2enNcql+SKQd1oWg7sHVJjIFjIgWYl0Iugj+U5J3VSRvtYi8AgAGjxUCQLr7SzPWhaCLyJFVyrUvHsuHjLeIvCJCRtnWVba1iol8cS+RIytp0ACDxV3NQiIBcT2MLD7JJDqBo8VdGmDjwJTCVhan9HoD8fYPvJFGpQeEftFEjixESDCyEM7AyEI4AyML4QyMLIQzMLIQzsDIQjgDIwvhDIwshDMwshDOwMhCOAMja2KvqqtGjg69fiMD60IIC0YWwhkYWQhnLOUK2x7asHG1q4s7lUpNSz+r1WjCwyNWLF/H4XAAAFqt9kjy/owraS0tEnf3vvFxCRHD3kfmkkjEe/buyLp7i05nhASHdlxgbV3N3r3fP8jPodMZ/Xx8P/lksW//Ad0U0NBQf+jI3pycLLlc5urqPnPGvDGjP0T5ReMMbGU7O516vK6uZsvmxKVL1ty8de14yiFk+j93bDp1+ljUR9Ffrd/k6Oj09cY1RUUFyG0R1qxdnJl1c2rsrISFy2trq9sX1dzctGz5J9LWlqVL1iQsXK7RaFasXFBRUd7N2rU67bNnjydNjP0sYSWPx9+8ZcPTZ4/Rf9F4AlvZzlxc3NZ/+S2JRPLzHXg788b9vHuLEla8fPlbxpW0uXMWxMclAADeGzF69tzo5KNJ3+/Yf+786fLy0u3f7Qkd/A4AYOCAwLh5sciijh0/aGMt2LF9H3LburFjImfPnZx28eyyJWu6WrtTH+fkw6nI3WzGj58UPWVMVtZNP9+BvfgGmDsY2c6YDGb7/Y8cHPoUFxcCAAqL8gEAEREjkekkEiksNPzqtYsAgDuZv3p6eiN5BQCQO4yEnJOT1dBYHxk1vH2KRqNpbKjvvoCy8ufJR5NKSp4AAHQ6nUhE8Ctm3xaMbHdoVJperwMAyOUyAICN9X8HtuDx+AqFQi6XNzTU+fj4Gp1dJG4eOnT4wgXLOk5kszndrDG/4P4X65aFBIeu/fwbthV7418/1xsIfVnM24OR7RGh0B4AIJW2CIW/X2IuEjVTqVQmk2nNtxGLRUbn4nJ5LS0SNzePnq/o2LGDTk4uWzYnIn0JFpNloldAHHDzq0f8/PxJJFJ2Tibyr1qtzs7JHDgwkEKh+Pj4lpQ8qaqqfH2uQYOGFBcXljx/2j5FqVR2v6IWqcTbqx+SV7VarVAq9HrYyv4BbGV7xNnJ5YNxUclHk3Q6nZOTS3r6WZGoef2X3wIAZsyIv3I1fcVfPo2dMtNWILx+43L7XHFzF2ZnZ36+dsnHU2fb2Ahyc+/q9LpNf9/RzYqCg0MzMn65eOk8j8tPPZPS2ir9raLcYDDA24u2g5HtqZUr1rHZnLPnTrW2Svt6eG3Z9MOgkDAkzdu27tq/PzH5aJK9nUNExMj7ednILM5OLrt3Ht6XlJhy4jCJRPLx8Y2ePK37tXwS/5mouWnX7u1cLi/qo5iPY2d/n7il4GEesi6I4MPIlTxoLS9SDI9xwLqQXpWd1tjHg+4/jI91IWiBrWxvk8lkM2ZFGX0oYeGKqI+ie70inIGR7W1WVlY/JZ0w+hCPS9im0YRgZHsbmUzu4+iEdRU4BndyQTgDIwvhDIwshDMwshDOwMhCOAMjC+EMjCyEMzCyEM7AyEI4AyML4QyRI0ujk5gcSg+eSCh0FpnGJPLHSuTXJnCkvypB/Ubd5qa6TC5woGNdBYqIHFlrOzrfliZrIfJ92zpRKXUMFsXOhcg36CNyZAEAI2KEN07UYl1F77l2rGb4ZILfKZzIVyUgpCLN/22qHDrBjiegcwU0QMCXa5BJtNJmde6lpmmrXW0I3SuwiMgCAAx6Q/YlUe2LNrVa3ybTqdVqCoVCoeB7y0yn02m1WgaDwWCRaQyykyczbJyAxiD4z6alRLajkpKSmzdvJiQkYF2ICRw9ejQoKCg4OBjrQnqVBUU2Pz9fIBAIhUJkJENiaG1tVSqV5eXlQ4cOxbqWXkL83xFEUVHRvn37PDw8iJRXAACXy7W3t09JScnJycG6ll5iEa2sTCYrLy8PCgrCuhAUPXz4cODAgVQqlfCDdBC8lW1qaho6dCiTySR2XgEAwcHBVCo1LCystpbgO/UIHtn8/Pxbt24hQ1wRHolEysvLKygowLoQdBE2sps2bQIAjBs3jk4n+H7KTiIjI9tfPiERM7KrVq0aNWoU1lVgKSoqav78+VhXgQqibX4VFhYGBQVJpVIej4d1LRhTKpUsFqugoCAkJATrWkyJUK1sampqXl4eAADmFQDAYrGQQyfJyclY12JKhIosiUQi6q/hnzZ9+nSCfYEJEtlDhw4BAGJjY7EuxBzFxMQgR3e1Wi3WtZgAESI7fPjwyZMnY12FuZsyZcqwYcOwrsIE8L35VVdX5+joqNPp8H5aVq/R6XT19fVOTjgeehHHrWxWVlZmZiYAAOa15ygUSmFhYUYGjm9kjuPIpqWlwc7rnzB+/Phbt25hXcWfh++OAWSB8NfKnjlzZsuWLVhXQQSJiYnHjh3Duoq3hrNWtry8XCKRDB48GOtCCKKwsJDJZPbv3x/rQt4CniKr1Wq1Wi2TycS6EEJpa2ujUCg0Gg3rQnoKNx2D/Pz8zz77DObV5JhM5urVq7OysrAupKfwEVm5XF5ZWXngwAGsCyGmnTt3ikQiiUSCdSE9go+OgVqttrTTXnsfXt5kHLSyW7duzc3NxboK4isqKvrb3/6GdRVvZu6t7MOHDysrKydNmoR1IRbh0qVLAoHgnXfewbqQ7ph7ZCGoE7PuGJw7d66wsBDrKizL06dPT506hXUV3THfyL548SIlJYXwF3ObGz8/v4sXLxYXF2NdSJfMt2PQ2trKYDBwsQ1LMBqNRqlUmu21DGbaymq1WqVSCfOKCRqNplarNRozHUraTCN74MCBCxcuYF2F5crIyNi1axfWVRhnppF99OgRvDYGQ5MmTXr8+DHWVRhnvn1ZCDLKHFvZly9fVlRUYF2FpauqqiovL8e6CiPMMbI//vhjZWUl1lVYurq6uu3bt2NdhRHmGFk2m02wMXnwKCAgwNraGusqjIB9WQhnzK6Vlclk8LwtM/HgwQMzPInW7CL79OnTw4cPY10FBAAAKSkpZniOh9lFlkajhYeHY10FBAAAYWFhyPCJZgX2ZSGcMZebCMyZM4dEImm1WrVaDQCwsrJCTjM4e/Ys1qVZnOnTp5PJZIPBoNVqyWQyhUIxGAwGg+HkyZNYlwbMKLJ8Pv/evXudbgCE69HO8MtgMDx//rzTFPO5h6O59GXnz59va2vbaSK8fgYTU6ZMYTAYHafw+fx58+ZhV9EfmEtkQ0JCAgMDO05xdnaePn06dhVZrpiYGDc3t45T+vXrFxERgV1Ff2AukUW6swKBoP3fiRMnstlsTCuyUFQqdfLkye0nK3O53Pj4eKyL+i8zimxQUJC/vz+yB8Pd3R02sRiKiYlxdXVF/vbz8zOr3Y5mFFkAQHx8vK2tLZlMhk0stmg02tSpU+l0Oo/HmzNnDtbl/EGP9hhoNXqlTI9+MaCv64Bg/6GVlZUfjoluFffGvSgoFGDFM5fdJj0kFWl64d7KY0dOPHPqooODg79vWG98FgbAFfTog3jDoYSnudKiOy2iOjWLQ8zB3Xm2NEmj2i+MNzSq8/4Kc9NUrbp/VVTxSO7kZSVpVGNdjonZOjNqShXewdxhE22Z7O7C1l1kc6+Immo0we8JuALcjOT4Jyhata+eyysetcYscyaTzfTO8LUVyusnG0fEOvBt6WSKmRb5P9Ko9KJ61Y0TNTPXuXH4XUauy8jmXBZJm7XhUfZoFmlGXj6TPc2WxK5wwboQI+p+a7t+qmHiIrcePJcIUjaXz/+2L41hfEPL+FRxg7qpWmU5eQUAuPlyHPtaPcltwboQI/KuiUbN6IN1Fb1n5HTHrAtNXT1qPLJN1SqDgZi/Pt2w4lJry9uwrqIzdZu+ukzZzQ8l8fDtGC+K5V09ajyyshadnavFjZct6EPXaszuvDZxg9rNz7L297F5VIE9o02uM/qo8d0KGpVeY3bNDeoMOiBtMr8hUgxmWRXKGqrbSF1sCpvXoQQIeiMYWQhnYGQhnIGRhXAGRhbCGRhZCGdgZCGcgZGFcAZGFsIZGFkIZ2BkIZwxo8imXzw3cnRoc3OXZ511b8PG1QmLZpu6KAv1qrpq5OjQ6zcysC7ECDOKLAT1BIwshDMmu7h0wqT3V674MjPz1+ycTDabMyFqStzcT5GHmpub9u3/ISc3S6vVBvgHL0pY6enpjTxUWlaya/f2kpIntgKhq6t7xwUWPMw7cHB3eflzGxtBSHDYgvlLbG2F3dcgV8i/+eva/IJcOp0xetSH8z9Z3GmgHguxYeNqVxd3KpWaln5Wq9GEh0esWL6Ow+Eg9wA8krw/40paS4vE3b1vfFxCxLD3kbkkEvGevTuy7t6i0xkhwaEdF1hbV7N37/cP8nPodEY/H99PPlns239A9zW0tbUdO37w11+vNDY1ODj0GTf2ozmz55vkwmBTtrJbt33j7d0/8YcDY8dEJh9Nys7OREpftWbRg/zchZ8uX7VyfVNz46o1i1plrQCAly9/+8uqhc1NjZ8uWDp16uznpc/aF/UgP3ftF0s93D3XrP7649jZRUX5q9Ysamt7wzm89fW19vaOSxavDg4anPrvlL9v+tKErw5fTqcer6ur2bI5cemSNTdvXTuecgiZ/s8dm06dPhb1UfRX6zc5Ojp9vXFNUVEBAECtVq9Zuzgz6+bU2FkJC5fX1la3L6q5uWnZ8k+krS1Ll6xJWLhco9GsWLmgoqK7m9XodLr1X608nXp8+PBRa9dsfG/E6KpXlaa6kN2Ul/BHjp80a+Y8AIC3V7/0i+dy8+6Fh0dcvXbx5cvfdvxz36CQMABAQEDIzNkTf/75ZNzcT/f/9COZRN6zO9na2gYAQCaTE3/ciixq1+7tE6Jili9bi/wbGhoeNy/2ft694REjuynAs6/3ksWrAAAffjBBKLQ/nXq8sDA/KGiQCV8jXri4uK3/8lsSieTnO/B25o37efcWJax4+fK3jCtpc+csiI9LAAC8N2L07LnRyUeTvt+x/9z50+Xlpdu/2xM6+B0AwMABgXHzYpFFHTt+0MZasGP7PiqVCgAYOyZy9tzJaRfPLluypqu137p9veBh3udrvo4cb/qBAE0ZWSbz9xGfKRSKnZ19c1MjAKCw8AGHzUHyCgBwdOzj5uZR8vxJW1vb/fv3Jk6MRfKKDAWF/FFXV1tZWVFdXZWW/ofBZRsa6nteTPTkaadTjxc8zLPMyDIZzPZWzcGhT3FxIQCgsCgfABDxn689iUQKCw2/eu0iAOBO5q+ent5IXgEAZMp/RxLIyclqaKyPjBrePkWj0TR2+1nk3r/LYDA+GBeFxktDa6AUKoWq0+sAADK5jP+fUCJ4PH5zU2OzqEmr1fZxNDKCrFjcDACIm7twxPBRHacLBG/oy3YkFNoBAORy2f/wIgiCRqXp9br2d8PG+r9j9fF4fIVCIZfLGxrqfHx8jc4uEjcPHTp84YJlHSey2Zxu1igWNQtt7SgUVIZrQX1sHzuh/ZMnjzpOEYmaHewdrfk2AACxWPT6LBwOFwCgUrW5uXn86fVKJGIAgI2NoAfPtRRCoT0AQCptQb7PyGdBpVKZTKY138boZwEA4HJ5LS2St/osOByuSNxsoqo7Q30n18CBga2t0qdPi5F/y8tLq6urAgKC2Wy2s7PrzVvXXr+JuouLm4OD46XLF5RKJTJFq9W+7b3Wb926BgAYNGiIiV4HEfj5+ZNIpOycTORftVqdnZM5cGAghULx8fEtKXlSVWXkppaDBg0pLi4sef60fUr759KVkJAwpVLZ8UiEVmuyUb1Qb2XHjB6fcuLIX//+xZzZC8hk8rFjB62tbSZNnIr89G/5x9dLl8378MOJZDL5zM//QmYhkUhLFq/e+M3nS5bFT5wQq9fpMq6kjR0bGTtlZvfrKn9Rumfv915ePiUlT35J+/m9EaPfuC/Gojg7uXwwLir5aJJOp3NycklPPysSNa//8lsAwIwZ8Veupq/4y6exU2baCoTXb1xunytu7sLs7MzP1y75eOpsGxtBbu5dnV636e87ulnR2DGR586f3rrtm2fPHnt79XtRUfYgP+dA0gmT7DRAPbJUKnX7tj17932/b/8Per0+MCBkyeLVyO/12DHjZbLW06ePJf30o4e754ABAe3f8uERI/+xOfFI8v49e3ew2ZzAgJDAwDdvRc2YHldcXJiW/jObzZkaO2te/CK0Xx3urFyxjs3mnD13qrVV2tfDa8umH5AtY2cnl21bd+3fn5h8NMneziEiYuT9vGxkFmcnl907D+9LSkw5cZhEIvn4+EZPntb9WhgMxo5/7j9wYNfVaxfT0n92dHQa+f44g8FgksgaH5MrN0OkbgNB71tWR7DpVVteRuPUVa5YF/IH9ZVtN//dGLnAvKpC27+2vYj72oPBMtJxxdPQqjKZbMYs4/tNEhauiPooutcrsmjLVy6oqCh7ffq777735Rd/Q2+9eIqslZXVT0knjD7E4/J7vRxLt3HDPzRaI9vELCa6N2TEU2TJZLLR/bgQJtr3lPUyeCYXhDMwshDOwMhCOAMjC+EMjCyEMzCyEM7AyEI4AyML4QyMLIQzMLIQzhg/YEtnkvTA4u77Bcgkvj0d6yJeQwJ8O/OrCmX2rsyu7vtpvJXl2tAaK99w5jnxNNe00ehm90UVONIrii3rCjaZRCNpUDOtjF86Zjyy9q4M9O+ebnYUUq2zF7pnIf0JNDrZ3Y8tbSbarcG7Ia5XeQZ2eXe+LltZZ2/m7TN1aBZmXkryWsT1qn6DuVgXYkT4eMG1lBqsq+gler3+xr/qRkR3eZpYdze3f3yvpfShLOg9WxsHOoVK2A01cb2qplzeXKP6aL753tpYVK86u6d6RKwj35bO4uDplNGek0k0kgbV9RN1C//hSWd2mbfuIgsAqHgsf3hLUlfRRqESs6NgbUfXavS+odxBo2168HQsySTanMvNvz1W8O3ooloV1uWYmL0bQ9Kg8QpkD++6fUW8IbLtVEq9iWozL1QaCXffxjaFnnhbGgaDoavtrU56GlkIMhOE7aFCRAUjC+EMjCyEMzCyEM7AyEI4AyML4cz/A+biGzBa0KJbAAAAAElFTkSuQmCC", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from IPython.display import display, Image\n", - "\n", - "display(Image(graph.get_graph().draw_mermaid_png()))" - ] - }, - { - "cell_type": "markdown", - "id": "58fb6c32-e6fb-4c94-8182-e351ed52a45d", - "metadata": {}, - "source": [ - "If we run the graph multiple times, we'd see it take different paths (A -> B or A -> C) based on the random choice in node A." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "d88a5d9b-ee08-4ed4-9c65-6e868210bfac", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Called A\n", - "Called C\n" - ] - }, - { - "data": { - "text/plain": [ - "{'foo': 'bc'}" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "graph.invoke({\"foo\": \"\"})" - ] - }, - { - "cell_type": "markdown", - "id": "68986cc4-97ec-43a1-b95d-5273d7ffc25a", - "metadata": {}, - "source": [ - "## Navigating to a node in a parent graph" - ] - }, - { - "cell_type": "markdown", - "id": "02ccddf2-978c-41bf-b2eb-2d0c4b3f5d81", - "metadata": {}, - "source": [ - "Now let's demonstrate how you can navigate from inside a subgraph to a different node in a parent graph. We'll do so by changing `node_a` in the above example into a single-node graph that we'll add as a subgraph to our parent graph." - ] - }, - { - "cell_type": "markdown", - "id": "6be0aeb9-e138-4adc-a1df-5d743a8eb348", - "metadata": {}, - "source": [ - "!!! important \"State updates with `Command.PARENT`\"\n", - "\n", - " When you send updates from a subgraph node to a parent graph node for a key that's shared by both parent and subgraph [state schemas](../../concepts/low_level#schema), you **must** define a [reducer](../../concepts/low_level#reducers) for the key you're updating in the parent graph state." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "91351541-67af-4c73-9437-426599dcf81e", - "metadata": {}, - "outputs": [], - "source": [ - "import operator\n", - "from typing_extensions import Annotated\n", - "\n", - "\n", - "class State(TypedDict):\n", - " # NOTE: we define a reducer here\n", - " # highlight-next-line\n", - " foo: Annotated[str, operator.add]\n", - "\n", - "\n", - "def node_a(state: State):\n", - " print(\"Called A\")\n", - " value = random.choice([\"a\", \"b\"])\n", - " # this is a replacement for a conditional edge function\n", - " if value == \"a\":\n", - " goto = \"node_b\"\n", - " else:\n", - " goto = \"node_c\"\n", - "\n", - " # note how Command allows you to BOTH update the graph state AND route to the next node\n", - " return Command(\n", - " update={\"foo\": value},\n", - " goto=goto,\n", - " # this tells LangGraph to navigate to node_b or node_c in the parent graph\n", - " # NOTE: this will navigate to the closest parent graph relative to the subgraph\n", - " # highlight-next-line\n", - " graph=Command.PARENT,\n", - " )\n", - "\n", - "\n", - "subgraph = StateGraph(State).add_node(node_a).add_edge(START, \"node_a\").compile()\n", - "\n", - "\n", - "def node_b(state: State):\n", - " print(\"Called B\")\n", - " # NOTE: since we've defined a reducer, we don't need to manually append\n", - " # new characters to existing 'foo' value. instead, reducer will append these\n", - " # automatically (via operator.add)\n", - " # highlight-next-line\n", - " return {\"foo\": \"b\"}\n", - "\n", - "\n", - "def node_c(state: State):\n", - " print(\"Called C\")\n", - " # highlight-next-line\n", - " return {\"foo\": \"c\"}" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "beb61d02-c868-4c2b-b83f-1dfd280f1c8e", - "metadata": {}, - "outputs": [], - "source": [ - "builder = StateGraph(State)\n", - "builder.add_edge(START, \"subgraph\")\n", - "builder.add_node(\"subgraph\", subgraph)\n", - "builder.add_node(node_b)\n", - "builder.add_node(node_c)\n", - "\n", - "graph = builder.compile()" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "3f07b704-1fe2-48a3-ad40-c9bc7698cb1c", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Called A\n", - "Called C\n" - ] - }, - { - "data": { - "text/plain": [ - "{'foo': 'bc'}" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "graph.invoke({\"foo\": \"\"})" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.3" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/docs/docs/how-tos/configuration.ipynb b/docs/docs/how-tos/configuration.ipynb deleted file mode 100644 index 589131b95..000000000 --- a/docs/docs/how-tos/configuration.ipynb +++ /dev/null @@ -1,353 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "6e6a0a39-9a4c-47ae-a238-1a3a847eea5b", - "metadata": {}, - "source": [ - "# How to add runtime configuration to your graph\n", - "\n", - "Sometimes you want to be able to configure your agent when calling it. \n", - "Examples of this include configuring which LLM to use.\n", - "Below we walk through an example of doing so.\n", - "\n", - "
    \n", - "

    Prerequisites

    \n", - "

    \n", - " This guide assumes familiarity with the following:\n", - "

    \n", - "

    \n", - "
    \n", - "\n", - "\n", - "## Setup\n", - "\n", - "First, let's install the required packages and set our API keys" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "03df6e04", - "metadata": {}, - "outputs": [], - "source": [ - "%%capture --no-stderr\n", - "%pip install -U langgraph langchain_anthropic" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "a00c45e0", - "metadata": {}, - "outputs": [], - "source": [ - "import getpass\n", - "import os\n", - "\n", - "\n", - "def _set_env(var: str):\n", - " if not os.environ.get(var):\n", - " os.environ[var] = getpass.getpass(f\"{var}: \")\n", - "\n", - "\n", - "_set_env(\"ANTHROPIC_API_KEY\")" - ] - }, - { - "cell_type": "markdown", - "id": "55e8be3b", - "metadata": {}, - "source": [ - "
    \n", - "

    Set up LangSmith for LangGraph development

    \n", - "

    \n", - " Sign up for LangSmith to quickly spot issues and improve the performance of your LangGraph projects. LangSmith lets you use trace data to debug, test, and monitor your LLM apps built with LangGraph — read more about how to get started here. \n", - "

    \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "id": "df1ff9cf-f8d2-4109-adf9-2adec83f5a95", - "metadata": {}, - "source": [ - "## Define graph\n", - "\n", - "First, let's create a very simple graph" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "816523d0-0b59-47cf-9f4c-4838024efe22", - "metadata": {}, - "outputs": [], - "source": [ - "import operator\n", - "from typing import Annotated, Sequence\n", - "from typing_extensions import TypedDict\n", - "\n", - "from langchain_anthropic import ChatAnthropic\n", - "from langchain_core.messages import BaseMessage, HumanMessage\n", - "\n", - "from langgraph.graph import END, StateGraph, START\n", - "\n", - "model = ChatAnthropic(model_name=\"claude-2.1\")\n", - "\n", - "\n", - "class AgentState(TypedDict):\n", - " messages: Annotated[Sequence[BaseMessage], operator.add]\n", - "\n", - "\n", - "def _call_model(state):\n", - " state[\"messages\"]\n", - " response = model.invoke(state[\"messages\"])\n", - " return {\"messages\": [response]}\n", - "\n", - "\n", - "# Define a new graph\n", - "builder = StateGraph(AgentState)\n", - "builder.add_node(\"model\", _call_model)\n", - "builder.add_edge(START, \"model\")\n", - "builder.add_edge(\"model\", END)\n", - "\n", - "graph = builder.compile()" - ] - }, - { - "cell_type": "markdown", - "id": "69a1dd47-c5b3-4e04-af56-45682f74d61f", - "metadata": {}, - "source": [ - "## Configure the graph\n", - "\n", - "Great! Now let's suppose that we want to extend this example so the user is able to choose from multiple llms.\n", - "We can easily do that by passing in a config. Any configuration information needs to be passed inside `configurable` key as shown below.\n", - "This config is meant to contain things are not part of the input (and therefore that we don't want to track as part of the state)." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "c01f1e7c-8e8b-4e26-98f7-56ac225077b4", - "metadata": {}, - "outputs": [], - "source": [ - "from langchain_openai import ChatOpenAI\n", - "from typing import Optional\n", - "from langchain_core.runnables.config import RunnableConfig\n", - "\n", - "openai_model = ChatOpenAI()\n", - "\n", - "models = {\n", - " \"anthropic\": model,\n", - " \"openai\": openai_model,\n", - "}\n", - "\n", - "\n", - "def _call_model(state: AgentState, config: RunnableConfig):\n", - " # Access the config through the configurable key\n", - " model_name = config[\"configurable\"].get(\"model\", \"anthropic\")\n", - " model = models[model_name]\n", - " response = model.invoke(state[\"messages\"])\n", - " return {\"messages\": [response]}\n", - "\n", - "\n", - "# Define a new graph\n", - "builder = StateGraph(AgentState)\n", - "builder.add_node(\"model\", _call_model)\n", - "builder.add_edge(START, \"model\")\n", - "builder.add_edge(\"model\", END)\n", - "\n", - "graph = builder.compile()" - ] - }, - { - "cell_type": "markdown", - "id": "7741b75c-55ba-4c78-bbb1-5dc20a210f11", - "metadata": {}, - "source": [ - "If we call it with no configuration, it will use the default as we defined it (Anthropic)." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "ef50f048-fc43-40c0-b713-346408fcf052", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'messages': [HumanMessage(content='hi', additional_kwargs={}, response_metadata={}),\n", - " AIMessage(content='Hello!', additional_kwargs={}, response_metadata={'id': 'msg_01WFXkfgK8AvSckLvYYrHshi', 'model': 'claude-2.1', 'stop_reason': 'end_turn', 'stop_sequence': None, 'usage': {'input_tokens': 10, 'output_tokens': 6}}, id='run-ece54b16-f8fc-4201-8405-b97122edf8d8-0', usage_metadata={'input_tokens': 10, 'output_tokens': 6, 'total_tokens': 16})]}" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "graph.invoke({\"messages\": [HumanMessage(content=\"hi\")]})" - ] - }, - { - "cell_type": "markdown", - "id": "f6896b32-9b25-4342-bfd0-29a3d329a06a", - "metadata": {}, - "source": [ - "We can also call it with a config to get it to use a different model." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "f2f7c74b-9fb0-41c6-9728-dcf9d8a3c397", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'messages': [HumanMessage(content='hi', additional_kwargs={}, response_metadata={}),\n", - " AIMessage(content='Hello! How can I assist you today?', additional_kwargs={'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 9, 'prompt_tokens': 8, 'total_tokens': 17, 'completion_tokens_details': {'reasoning_tokens': 0}}, 'model_name': 'gpt-3.5-turbo-0125', 'system_fingerprint': None, 'finish_reason': 'stop', 'logprobs': None}, id='run-f8331964-d811-4b44-afb8-56c30ade7c15-0', usage_metadata={'input_tokens': 8, 'output_tokens': 9, 'total_tokens': 17})]}" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "config = {\"configurable\": {\"model\": \"openai\"}}\n", - "graph.invoke({\"messages\": [HumanMessage(content=\"hi\")]}, config=config)" - ] - }, - { - "cell_type": "markdown", - "id": "b4c7eaf1-4ee0-42b3-971d-273a108f205f", - "metadata": {}, - "source": [ - "We can also adapt our graph to take in more configuration! Like a system message for example." - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "f0393a43-9fbe-4056-972f-3e91ea329041", - "metadata": {}, - "outputs": [], - "source": [ - "from langchain_core.messages import SystemMessage\n", - "\n", - "\n", - "# We can define a config schema to specify the configuration options for the graph\n", - "# A config schema is useful for indicating which fields are available in the configurable dict inside the config\n", - "class ConfigSchema(TypedDict):\n", - " model: Optional[str]\n", - " system_message: Optional[str]\n", - "\n", - "\n", - "def _call_model(state: AgentState, config: RunnableConfig):\n", - " # Access the config through the configurable key\n", - " model_name = config[\"configurable\"].get(\"model\", \"anthropic\")\n", - " model = models[model_name]\n", - " messages = state[\"messages\"]\n", - " if \"system_message\" in config[\"configurable\"]:\n", - " messages = [\n", - " SystemMessage(content=config[\"configurable\"][\"system_message\"])\n", - " ] + messages\n", - " response = model.invoke(messages)\n", - " return {\"messages\": [response]}\n", - "\n", - "\n", - "# Define a new graph - note that we pass in the configuration schema here, but it is not necessary\n", - "workflow = StateGraph(AgentState, ConfigSchema)\n", - "workflow.add_node(\"model\", _call_model)\n", - "workflow.add_edge(START, \"model\")\n", - "workflow.add_edge(\"model\", END)\n", - "\n", - "graph = workflow.compile()" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "718685f7-4cdd-4181-9fc8-e7762d584727", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'messages': [HumanMessage(content='hi', additional_kwargs={}, response_metadata={}),\n", - " AIMessage(content='Hello!', additional_kwargs={}, response_metadata={'id': 'msg_01VgCANVHr14PsHJSXyKkLVh', 'model': 'claude-2.1', 'stop_reason': 'end_turn', 'stop_sequence': None, 'usage': {'input_tokens': 10, 'output_tokens': 6}}, id='run-f8c5f18c-be58-4e44-9a4e-d43692d7eed1-0', usage_metadata={'input_tokens': 10, 'output_tokens': 6, 'total_tokens': 16})]}" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "graph.invoke({\"messages\": [HumanMessage(content=\"hi\")]})" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "e043a719-f197-46ef-9d45-84740a39aeb0", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'messages': [HumanMessage(content='hi', additional_kwargs={}, response_metadata={}),\n", - " AIMessage(content='Ciao!', additional_kwargs={}, response_metadata={'id': 'msg_011YuCYQk1Rzc8PEhVCpQGr6', 'model': 'claude-2.1', 'stop_reason': 'end_turn', 'stop_sequence': None, 'usage': {'input_tokens': 14, 'output_tokens': 7}}, id='run-a583341e-5868-4e8c-a536-881338f21252-0', usage_metadata={'input_tokens': 14, 'output_tokens': 7, 'total_tokens': 21})]}" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "config = {\"configurable\": {\"system_message\": \"respond in italian\"}}\n", - "graph.invoke({\"messages\": [HumanMessage(content=\"hi\")]}, config=config)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.1" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/docs/docs/how-tos/cross-thread-persistence.ipynb b/docs/docs/how-tos/cross-thread-persistence.ipynb deleted file mode 100644 index f1c2b33fd..000000000 --- a/docs/docs/how-tos/cross-thread-persistence.ipynb +++ /dev/null @@ -1,357 +0,0 @@ -{ - "cells": [ - { - "attachments": {}, - "cell_type": "markdown", - "id": "d2eecb96-cf0e-47ed-8116-88a7eaa4236d", - "metadata": {}, - "source": [ - "# How to add cross-thread persistence to your graph\n", - "\n", - "
    \n", - "

    Prerequisites

    \n", - "

    \n", - " This guide assumes familiarity with the following:\n", - "

    \n", - "

    \n", - "
    \n", - "\n", - "In the [previous guide](https://langchain-ai.github.io/langgraph/how-tos/persistence/) you learned how to persist graph state across multiple interactions on a single [thread](). LangGraph also allows you to persist data across **multiple threads**. For instance, you can store information about users (their names or preferences) in a shared memory and reuse them in the new conversational threads.\n", - "\n", - "In this guide, we will show how to construct and use a graph that has a shared memory implemented using the [Store](https://langchain-ai.github.io/langgraph/reference/store/#langgraph.store.base.BaseStore) interface.\n", - "\n", - "
    \n", - "

    Note

    \n", - "

    \n", - " Support for the Store API that is used in this guide was added in LangGraph v0.2.32.\n", - "

    \n", - "

    \n", - " Support for index and query arguments of the Store API that is used in this guide was added in LangGraph v0.2.54.\n", - "

    \n", - "
    \n", - "\n", - "## Setup\n", - "\n", - "First, let's install the required packages and set our API keys" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "3457aadf", - "metadata": {}, - "outputs": [], - "source": [ - "%%capture --no-stderr\n", - "%pip install -U langchain_openai langgraph" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "aa2c64a7", - "metadata": {}, - "outputs": [], - "source": [ - "import getpass\n", - "import os\n", - "\n", - "\n", - "def _set_env(var: str):\n", - " if not os.environ.get(var):\n", - " os.environ[var] = getpass.getpass(f\"{var}: \")\n", - "\n", - "\n", - "_set_env(\"ANTHROPIC_API_KEY\")\n", - "_set_env(\"OPENAI_API_KEY\")" - ] - }, - { - "cell_type": "markdown", - "id": "51b6817d", - "metadata": {}, - "source": [ - "!!! tip \"Set up [LangSmith](https://smith.langchain.com) for LangGraph development\"\n", - "\n", - " Sign up for LangSmith to quickly spot issues and improve the performance of your LangGraph projects. LangSmith lets you use trace data to debug, test, and monitor your LLM apps built with LangGraph — read more about how to get started [here](https://docs.smith.langchain.com)" - ] - }, - { - "cell_type": "markdown", - "id": "c4c550b5-1954-496b-8b9d-800361af17dc", - "metadata": {}, - "source": [ - "## Define store\n", - "\n", - "In this example we will create a graph that will be able to retrieve information about a user's preferences. We will do so by defining an `InMemoryStore` - an object that can store data in memory and query that data. We will then pass the store object when compiling the graph. This allows each node in the graph to access the store: when you define node functions, you can define `store` keyword argument, and LangGraph will automatically pass the store object you compiled the graph with.\n", - "\n", - "When storing objects using the `Store` interface you define two things:\n", - "\n", - "* the namespace for the object, a tuple (similar to directories)\n", - "* the object key (similar to filenames)\n", - "\n", - "In our example, we'll be using `(\"memories\", )` as namespace and random UUID as key for each new memory.\n", - "\n", - "Importantly, to determine the user, we will be passing `user_id` via the config keyword argument of the node function.\n", - "\n", - "Let's first define an `InMemoryStore` already populated with some memories about the users." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "a7f303d6-612e-4e34-bf36-29d4ed25d802", - "metadata": {}, - "outputs": [], - "source": [ - "from langgraph.store.memory import InMemoryStore\n", - "from langchain_openai import OpenAIEmbeddings\n", - "\n", - "in_memory_store = InMemoryStore(\n", - " index={\n", - " \"embed\": OpenAIEmbeddings(model=\"text-embedding-3-small\"),\n", - " \"dims\": 1536,\n", - " }\n", - ")" - ] - }, - { - "cell_type": "markdown", - "id": "3389c9f4-226d-40c7-8bfc-ee8aac24f79d", - "metadata": {}, - "source": [ - "## Create graph" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "2a30a362-528c-45ee-9df6-630d2d843588", - "metadata": {}, - "outputs": [], - "source": [ - "import uuid\n", - "from typing import Annotated\n", - "from typing_extensions import TypedDict\n", - "\n", - "from langchain_anthropic import ChatAnthropic\n", - "from langchain_core.runnables import RunnableConfig\n", - "from langgraph.graph import StateGraph, MessagesState, START\n", - "from langgraph.checkpoint.memory import MemorySaver\n", - "from langgraph.store.base import BaseStore\n", - "\n", - "\n", - "model = ChatAnthropic(model=\"claude-3-5-sonnet-20240620\")\n", - "\n", - "\n", - "# NOTE: we're passing the Store param to the node --\n", - "# this is the Store we compile the graph with\n", - "def call_model(state: MessagesState, config: RunnableConfig, *, store: BaseStore):\n", - " user_id = config[\"configurable\"][\"user_id\"]\n", - " namespace = (\"memories\", user_id)\n", - " memories = store.search(namespace, query=str(state[\"messages\"][-1].content))\n", - " info = \"\\n\".join([d.value[\"data\"] for d in memories])\n", - " system_msg = f\"You are a helpful assistant talking to the user. User info: {info}\"\n", - "\n", - " # Store new memories if the user asks the model to remember\n", - " last_message = state[\"messages\"][-1]\n", - " if \"remember\" in last_message.content.lower():\n", - " memory = \"User name is Bob\"\n", - " store.put(namespace, str(uuid.uuid4()), {\"data\": memory})\n", - "\n", - " response = model.invoke(\n", - " [{\"role\": \"system\", \"content\": system_msg}] + state[\"messages\"]\n", - " )\n", - " return {\"messages\": response}\n", - "\n", - "\n", - "builder = StateGraph(MessagesState)\n", - "builder.add_node(\"call_model\", call_model)\n", - "builder.add_edge(START, \"call_model\")\n", - "\n", - "# NOTE: we're passing the store object here when compiling the graph\n", - "graph = builder.compile(checkpointer=MemorySaver(), store=in_memory_store)\n", - "# If you're using LangGraph Cloud or LangGraph Studio, you don't need to pass the store or checkpointer when compiling the graph, since it's done automatically." - ] - }, - { - "cell_type": "markdown", - "id": "f22a4a18-67e4-4f0b-b655-a29bbe202e1c", - "metadata": {}, - "source": [ - "
    \n", - "

    Note

    \n", - "

    \n", - " If you're using LangGraph Cloud or LangGraph Studio, you don't need to pass store when compiling the graph, since it's done automatically.\n", - "

    \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "id": "552d4e33-556d-4fa5-8094-2a076bc21529", - "metadata": {}, - "source": [ - "## Run the graph!" - ] - }, - { - "cell_type": "markdown", - "id": "1842c626-6cd9-4f58-b549-58978e478098", - "metadata": {}, - "source": [ - "Now let's specify a user ID in the config and tell the model our name:" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "c871a073-a466-46ad-aafe-2b870831057e", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "================================\u001b[1m Human Message \u001b[0m=================================\n", - "\n", - "Hi! Remember: my name is Bob\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "Hello Bob! It's nice to meet you. I'll remember that your name is Bob. How can I assist you today?\n" - ] - } - ], - "source": [ - "config = {\"configurable\": {\"thread_id\": \"1\", \"user_id\": \"1\"}}\n", - "input_message = {\"role\": \"user\", \"content\": \"Hi! Remember: my name is Bob\"}\n", - "for chunk in graph.stream({\"messages\": [input_message]}, config, stream_mode=\"values\"):\n", - " chunk[\"messages\"][-1].pretty_print()" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "d862be40-1f8a-4057-81c4-b7bf073dc4c1", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "================================\u001b[1m Human Message \u001b[0m=================================\n", - "\n", - "what is my name?\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "Your name is Bob.\n" - ] - } - ], - "source": [ - "config = {\"configurable\": {\"thread_id\": \"2\", \"user_id\": \"1\"}}\n", - "input_message = {\"role\": \"user\", \"content\": \"what is my name?\"}\n", - "for chunk in graph.stream({\"messages\": [input_message]}, config, stream_mode=\"values\"):\n", - " chunk[\"messages\"][-1].pretty_print()" - ] - }, - { - "cell_type": "markdown", - "id": "80fd01ec-f135-4811-8743-daff8daea422", - "metadata": {}, - "source": [ - "We can now inspect our in-memory store and verify that we have in fact saved the memories for the user:" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "76cde493-89cf-4709-a339-207d2b7e9ea7", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'data': 'User name is Bob'}\n" - ] - } - ], - "source": [ - "for memory in in_memory_store.search((\"memories\", \"1\")):\n", - " print(memory.value)" - ] - }, - { - "cell_type": "markdown", - "id": "23f5d7eb-af23-4131-b8fd-2a69e74e6e55", - "metadata": {}, - "source": [ - "Let's now run the graph for another user to verify that the memories about the first user are self contained:" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "d362350b-d730-48bd-9652-983812fd7811", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "================================\u001b[1m Human Message \u001b[0m=================================\n", - "\n", - "what is my name?\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "I apologize, but I don't have any information about your name. As an AI assistant, I don't have access to personal information about users unless it has been specifically shared in our conversation. If you'd like, you can tell me your name and I'll be happy to use it in our discussion.\n" - ] - } - ], - "source": [ - "config = {\"configurable\": {\"thread_id\": \"3\", \"user_id\": \"2\"}}\n", - "input_message = {\"role\": \"user\", \"content\": \"what is my name?\"}\n", - "for chunk in graph.stream({\"messages\": [input_message]}, config, stream_mode=\"values\"):\n", - " chunk[\"messages\"][-1].pretty_print()" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.3" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/docs/docs/how-tos/deploy-self-hosted.md b/docs/docs/how-tos/deploy-self-hosted.md deleted file mode 100644 index 29a6b9e7b..000000000 --- a/docs/docs/how-tos/deploy-self-hosted.md +++ /dev/null @@ -1,154 +0,0 @@ -# How to do a Self-hosted deployment of LangGraph - -!!! info "Prerequisites" - - - [Application Structure](../concepts/application_structure.md) - - [Deployment Options](../concepts/deployment_options.md) - -This how-to guide will walk you through how to create a docker image from an existing LangGraph application, so you can deploy it on your own infrastructure. - -## How it works - -With the self-hosted deployment option, you are responsible for managing the infrastructure, including setting up and maintaining necessary databases, Redis instances, and other services. - -You will need to do the following: - -1. Deploy Redis and Postgres instances on your own infrastructure. -2. Build a docker image with the [LangGraph Server](../concepts/langgraph_server.md) using the [LangGraph CLI](../concepts/langgraph_cli.md). -3. Deploy a web server that will run the docker image and pass in the necessary environment variables. - -## Helm Chart - -If you would like to deploy LangGraph Cloud on Kubernetes, you can use this [Helm chart](https://github.com/langchain-ai/helm/blob/main/charts/langgraph-cloud/README.md). - -## Environment Variables - -You will eventually need to pass in the following environment variables to the LangGraph Deploy server: - -- `REDIS_URI`: Connection details to a Redis instance. Redis will be used as a pub-sub broker to enable streaming real time output from background runs. The value of `REDIS_URI` must be a valid [Redis connection URI](https://redis-py.readthedocs.io/en/stable/connections.html#redis.Redis.from_url). - - !!! Note "Shared Redis Instance" - Multiple self-hosted deployments can share the same Redis instance. For example, for `Deployment A`, `REDIS_URI` can be set to `redis://:/1` and for `Deployment B`, `REDIS_URI` can be set to `redis://:/2`. - - `1` and `2` are different database numbers within the same instance, but `` is shared. **The same database number cannot be used for separate deployments**. - -- `DATABASE_URI`: Postgres connection details. Postgres will be used to store assistants, threads, runs, persist thread state and long term memory, and to manage the state of the background task queue with 'exactly once' semantics. The value of `DATABASE_URI` must be a valid [Postgres connection URI](https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNSTRING-URIS). - - !!! Note "Shared Postgres Instance" - Multiple self-hosted deployments can share the same Postgres instance. For example, for `Deployment A`, `DATABASE_URI` can be set to `postgres://:@/?host=` and for `Deployment B`, `DATABASE_URI` can be set to `postgres://:@/?host=`. - - `` and `database_name_2` are different databases within the same instance, but `` is shared. **The same database cannot be used for separate deployments**. - -- `LANGSMITH_API_KEY`: (If using [Self-Hosted Data Plane](../concepts/deployment_options.md#self-hosted-data-plane)) LangSmith API key. This will be used to authenticate ONCE at server start up. -- `LANGGRAPH_CLOUD_LICENSE_KEY`: (If using [Self-Hosted Enterprise](../concepts/deployment_options.md#self-hosted-enterprise)) LangGraph Platform license key. This will be used to authenticate ONCE at server start up. -- `LANGCHAIN_ENDPOINT`: To send traces to a [self-hosted LangSmith](https://docs.smith.langchain.com/self_hosting) instance, set `LANGCHAIN_ENDPOINT` to the hostname of the self-hosted LangSmith instance. - - -## Build the Docker Image - -Please read the [Application Structure](../concepts/application_structure.md) guide to understand how to structure your LangGraph application. - -If the application is structured correctly, you can build a docker image with the LangGraph Deploy server. - -To build the docker image, you first need to install the CLI: - -```shell -pip install -U langgraph-cli -``` - -You can then use: - -``` -langgraph build -t my-image -``` - -This will build a docker image with the LangGraph Deploy server. The `-t my-image` is used to tag the image with a name. - -When running this server, you need to pass three environment variables: - -## Running the application locally - -### Using Docker - -```shell -docker run \ - --env-file .env \ - -p 8123:8000 \ - -e REDIS_URI="foo" \ - -e DATABASE_URI="bar" \ - -e LANGSMITH_API_KEY="baz" \ - my-image -``` - -If you want to run this quickly without setting up a separate Redis and Postgres instance, you can use this docker compose file. - -!!! note - - * You need to replace `my-image` with the name of the image you built in the previous step (from `langgraph build`). - and you should provide appropriate values for `REDIS_URI`, `DATABASE_URI`, and `LANGSMITH_API_KEY`. - * If your application requires additional environment variables, you can pass them in a similar way. - * If using [Self-Hosted Enterprise](../concepts/deployment_options.md#self-hosted-enterprise), you must provide `LANGGRAPH_CLOUD_LICENSE_KEY` as an additional environment variable. - - -### Using Docker Compose - -```yml -volumes: - langgraph-data: - driver: local -services: - langgraph-redis: - image: redis:6 - healthcheck: - test: redis-cli ping - interval: 5s - timeout: 1s - retries: 5 - langgraph-postgres: - image: postgres:16 - ports: - - "5433:5432" - environment: - POSTGRES_DB: postgres - POSTGRES_USER: postgres - POSTGRES_PASSWORD: postgres - volumes: - - langgraph-data:/var/lib/postgresql/data - healthcheck: - test: pg_isready -U postgres - start_period: 10s - timeout: 1s - retries: 5 - interval: 5s - langgraph-api: - image: ${IMAGE_NAME} - ports: - - "8123:8000" - depends_on: - langgraph-redis: - condition: service_healthy - langgraph-postgres: - condition: service_healthy - env_file: - - .env - environment: - REDIS_URI: redis://langgraph-redis:6379 - LANGSMITH_API_KEY: ${LANGSMITH_API_KEY} - POSTGRES_URI: postgres://postgres:postgres@langgraph-postgres:5432/postgres?sslmode=disable -``` - -You can then run `docker compose up` with this Docker compose file in the same folder. - -This will spin up LangGraph Deploy on port `8123` (if you want to change this, you can change this by changing the ports in the `langgraph-api` volume). - -You can test that the application is up by checking: - -```shell -curl --request GET --url 0.0.0.0:8123/ok -``` -Assuming everything is running correctly, you should see a response like: - -```shell -{"ok":true} -``` - diff --git a/docs/docs/how-tos/graph-api.ipynb b/docs/docs/how-tos/graph-api.ipynb new file mode 100644 index 000000000..740ef4453 --- /dev/null +++ b/docs/docs/how-tos/graph-api.ipynb @@ -0,0 +1,3385 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "9c19faa1-795c-451e-95e4-7aa40a19aa20", + "metadata": {}, + "source": [ + "# How to use the graph API\n", + "\n", + "This guide demonstrates the basics of LangGraph's Graph API. It walks through [state](#define-and-update-state), as well as composing common graph structures such as [sequences](#create-a-sequence-of-steps), [branches](#create-branches), and [loops](#create-and-control-loops). It also covers LangGraph's control features, including the [Send API](#map-reduce-and-the-send-api) for map-reduce workflows and the [Command API](#combine-control-flow-and-state-updates-with-command) for combining state updates with \"hops\" across nodes." + ] + }, + { + "cell_type": "markdown", + "id": "f6fcda61-9c21-43de-af0d-0d9efb063c40", + "metadata": {}, + "source": [ + "## Setup\n", + "\n", + "Install `langgraph`:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f031bc56-26f5-4ece-b27e-3c87b3b34f0a", + "metadata": {}, + "outputs": [], + "source": [ + "%pip install -qU langgraph" + ] + }, + { + "cell_type": "markdown", + "id": "55c22136-74cc-495a-94ab-82ccac247cef", + "metadata": {}, + "source": [ + "
    \n", + "

    Set up LangSmith for better debugging

    \n", + "

    \n", + " Sign up for LangSmith to quickly spot issues and improve the performance of your LangGraph projects. LangSmith lets you use trace data to debug, test, and monitor your LLM aps built with LangGraph — read more about how to get started in the docs. \n", + "

    \n", + "
    " + ] + }, + { + "cell_type": "markdown", + "id": "b462f26d-8795-4dc2-9420-722d3e21656c", + "metadata": {}, + "source": [ + "## Define and update state\n", + "\n", + "Here we show how to define and update [state](../../concepts/low_level/#state) in LangGraph. We will demonstrate:\n", + "\n", + "1. How to use state to define a graph's [schema](../../concepts/low_level/#schema)\n", + "2. How to use [reducers](../../concepts/low_level/#reducers) to control how state updates are processed." + ] + }, + { + "cell_type": "markdown", + "id": "ca7ac66a-a3ae-43c6-bb9d-7ee2bd0030f0", + "metadata": {}, + "source": [ + "### Define state\n", + "\n", + "[State](../../concepts/low_level/#state) in LangGraph can be a `TypedDict`, `Pydantic` model, or dataclass. Below we will use `TypedDict`. See [this section](#use-pydantic-models-for-graph-state) for detail on using Pydantic.\n", + "\n", + "By default, graphs will have the same input and output schema, and the state determines that schema. See [this section](#define-input-and-output-schemas) for how to define distinct input and output schemas.\n", + "\n", + "Let's consider a simple example using [messages](../../concepts/low_level/#messagesstate). This represents a versatile formulation of state for many LLM applications. See our [concepts page](../../concepts/low_level/#working-with-messages-in-graph-state) for more detail." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "e7c3b392-50fb-4af3-bf2d-7b769f47efc6", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain_core.messages import AnyMessage\n", + "from typing_extensions import TypedDict\n", + "\n", + "\n", + "class State(TypedDict):\n", + " messages: list[AnyMessage]\n", + " extra_field: int" + ] + }, + { + "cell_type": "markdown", + "id": "c3555791-9dc9-4593-923e-9aa599d4c547", + "metadata": {}, + "source": [ + "This state tracks a list of [message](https://python.langchain.com/docs/concepts/messages/) objects, as well as an extra integer field.\n", + "\n", + "### Update state\n", + "\n", + "Let's build an example graph with a single node. Our [node](../../concepts/low_level/#nodes) is just a Python function that reads our graph's state and makes updates to it. The first argument to this function will always be the state:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "f5db493b-c977-4f15-a06f-27b460cd7e4c", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain_core.messages import AIMessage\n", + "\n", + "\n", + "def node(state: State):\n", + " messages = state[\"messages\"]\n", + " new_message = AIMessage(\"Hello!\")\n", + "\n", + " return {\"messages\": messages + [new_message], \"extra_field\": 10}" + ] + }, + { + "cell_type": "markdown", + "id": "9f6cef5d-2635-45bc-a415-b422bb571685", + "metadata": {}, + "source": [ + "This node simply appends a message to our message list, and populates an extra field.\n", + "\n", + "!!! important\n", + "\n", + " Nodes should return updates to the state directly, instead of mutating the state.\n", + "\n", + "Let's next define a simple graph containing this node. We use [StateGraph](../../concepts/low_level/#stategraph) to define a graph that operates on this state. We then use [add_node](../../concepts/low_level/#nodes) populate our graph." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "92402ca2-9e46-4ad9-8378-83f98f597c00", + "metadata": {}, + "outputs": [], + "source": [ + "from langgraph.graph import StateGraph\n", + "\n", + "builder = StateGraph(State)\n", + "builder.add_node(node)\n", + "builder.set_entry_point(\"node\")\n", + "graph = builder.compile()" + ] + }, + { + "cell_type": "markdown", + "id": "f765d37d-3793-4ac9-90e5-fe28c6142202", + "metadata": {}, + "source": [ + "LangGraph provides built-in utilities for visualizing your graph. Let's inspect our graph. See [this section](#visualize-your-graph) for detail on visualization." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "263470d0-a9fa-48bc-86b1-c5a28b242aec", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from IPython.display import Image, display\n", + "\n", + "display(Image(graph.get_graph().draw_mermaid_png()))" + ] + }, + { + "cell_type": "markdown", + "id": "ca3cd1a1-38b1-4cbb-9301-5aec62659e70", + "metadata": {}, + "source": [ + "In this case, our graph just executes a single node. Let's proceed with a simple invocation:" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "7d932703-932f-48cb-842c-c372f82510f9", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'messages': [HumanMessage(content='Hi', additional_kwargs={}, response_metadata={}),\n", + " AIMessage(content='Hello!', additional_kwargs={}, response_metadata={})],\n", + " 'extra_field': 10}" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from langchain_core.messages import HumanMessage\n", + "\n", + "result = graph.invoke({\"messages\": [HumanMessage(\"Hi\")]})\n", + "result" + ] + }, + { + "cell_type": "markdown", + "id": "e5918e84-49ac-4ab1-80bb-863a2e5461e2", + "metadata": {}, + "source": [ + "Note that:\n", + "\n", + "- We kicked off invocation by updating a single key of the state.\n", + "- We receive the entire state in the invocation result.\n", + "\n", + "For convenience, we frequently inspect the content of [message objects](https://python.langchain.com/docs/concepts/messages/) via pretty-print:" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "5009dbb2-77c3-47de-9d9d-3fc6e5b649b9", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "================================\u001b[1m Human Message \u001b[0m=================================\n", + "\n", + "Hi\n", + "==================================\u001b[1m Ai Message \u001b[0m==================================\n", + "\n", + "Hello!\n" + ] + } + ], + "source": [ + "for message in result[\"messages\"]:\n", + " message.pretty_print()" + ] + }, + { + "cell_type": "markdown", + "id": "4c4da6ff-a677-41bf-b51e-f2826fc51926", + "metadata": {}, + "source": [ + "### Process state updates with reducers\n", + "\n", + "Each key in the state can have its own independent [reducer](../../concepts/low_level/#reducers) function, which controls how updates from nodes are applied. If no reducer function is explicitly specified then it is assumed that all updates to the key should override it.\n", + "\n", + "For `TypedDict` state schemas, we can define reducers by annotating the corresponding field of the state with a reducer function.\n", + "\n", + "In the earlier example, our node updated the `\"messages\"` key in the state by appending a message to it. Below, we add a reducer to this key, such that updates are automatically appended:" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "35db8bfc-8747-423f-858a-b4f069d6199f", + "metadata": {}, + "outputs": [], + "source": [ + "from typing_extensions import Annotated\n", + "\n", + "\n", + "def add(left, right):\n", + " \"\"\"Can also import `add` from the `operator` built-in.\"\"\"\n", + " return left + right\n", + "\n", + "\n", + "class State(TypedDict):\n", + " # highlight-next-line\n", + " messages: Annotated[list[AnyMessage], add]\n", + " extra_field: int" + ] + }, + { + "cell_type": "markdown", + "id": "4979a906-fff3-48de-9215-8a12b9bc4acf", + "metadata": {}, + "source": [ + "Now our node can be simplified:" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "f24f8d3f-973f-468e-8895-8c4cf01951dd", + "metadata": {}, + "outputs": [], + "source": [ + "def node(state: State):\n", + " new_message = AIMessage(\"Hello!\")\n", + " # highlight-next-line\n", + " return {\"messages\": [new_message], \"extra_field\": 10}" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "6ef429ed-a0fa-4c00-a88c-bb61df59f578", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "================================\u001b[1m Human Message \u001b[0m=================================\n", + "\n", + "Hi\n", + "==================================\u001b[1m Ai Message \u001b[0m==================================\n", + "\n", + "Hello!\n" + ] + } + ], + "source": [ + "from langgraph.graph import START\n", + "\n", + "\n", + "graph = StateGraph(State).add_node(node).add_edge(START, \"node\").compile()\n", + "\n", + "result = graph.invoke({\"messages\": [HumanMessage(\"Hi\")]})\n", + "\n", + "for message in result[\"messages\"]:\n", + " message.pretty_print()" + ] + }, + { + "cell_type": "markdown", + "id": "7827723b-64aa-4d8b-b17a-5a3bcd8206f7", + "metadata": {}, + "source": [ + "#### MessagesState\n", + "\n", + "In practice, there are additional considerations for updating lists of messages:\n", + "\n", + "- We may wish to update an existing message in the state.\n", + "- We may want to accept short-hands for [message formats](../../concepts/low_level/#using-messages-in-your-graph), such as [OpenAI format](https://python.langchain.com/docs/concepts/messages/#openai-format).\n", + "\n", + "LangGraph includes a built-in reducer `add_messages` that handles these considerations:" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "89880b92-5d00-421f-83c3-46382c1d1c17", + "metadata": {}, + "outputs": [], + "source": [ + "from langgraph.graph.message import add_messages\n", + "\n", + "\n", + "class State(TypedDict):\n", + " # highlight-next-line\n", + " messages: Annotated[list[AnyMessage], add_messages]\n", + " extra_field: int\n", + "\n", + "\n", + "def node(state: State):\n", + " new_message = AIMessage(\"Hello!\")\n", + " return {\"messages\": [new_message], \"extra_field\": 10}\n", + "\n", + "\n", + "graph = StateGraph(State).add_node(node).set_entry_point(\"node\").compile()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "51aeb731-e7f0-4d28-a096-436ef7fe004a", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "================================\u001b[1m Human Message \u001b[0m=================================\n", + "\n", + "Hi\n", + "==================================\u001b[1m Ai Message \u001b[0m==================================\n", + "\n", + "Hello!\n" + ] + } + ], + "source": [ + "# highlight-next-line\n", + "input_message = {\"role\": \"user\", \"content\": \"Hi\"}\n", + "\n", + "result = graph.invoke({\"messages\": [input_message]})\n", + "\n", + "for message in result[\"messages\"]:\n", + " message.pretty_print()" + ] + }, + { + "cell_type": "markdown", + "id": "17583dde-2520-464c-a962-eae511d0928e", + "metadata": {}, + "source": [ + "This is a versatile representation of state for applications involving [chat models](https://python.langchain.com/docs/concepts/chat_models/). LangGraph includes a pre-built `MessagesState` for convenience, so that we can have:" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "05956122-5ba0-4b4c-8b66-6362982227f2", + "metadata": {}, + "outputs": [], + "source": [ + "from langgraph.graph import MessagesState\n", + "\n", + "\n", + "class State(MessagesState):\n", + " extra_field: int" + ] + }, + { + "cell_type": "markdown", + "id": "f262985e-e973-4a27-9c9e-dbb3a06a35b7", + "metadata": {}, + "source": [ + "### Define input and output schemas\n", + "\n", + "By default, `StateGraph` operates with a single schema, and all nodes are expected to communicate using that schema. However, it's also possible to define distinct input and output schemas for a graph.\n", + "\n", + "When distinct schemas are specified, an internal schema will still be used for communication between nodes. The input schema ensures that the provided input matches the expected structure, while the output schema filters the internal data to return only the relevant information according to the defined output schema.\n", + "\n", + "Below, we'll see how to define distinct input and output schema." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "6ec0eb77-874e-443e-8c73-93125b515106", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'answer': 'bye'}\n" + ] + } + ], + "source": [ + "from langgraph.graph import StateGraph, START, END\n", + "from typing_extensions import TypedDict\n", + "\n", + "\n", + "# Define the schema for the input\n", + "class InputState(TypedDict):\n", + " question: str\n", + "\n", + "\n", + "# Define the schema for the output\n", + "class OutputState(TypedDict):\n", + " answer: str\n", + "\n", + "\n", + "# Define the overall schema, combining both input and output\n", + "class OverallState(InputState, OutputState):\n", + " pass\n", + "\n", + "\n", + "# Define the node that processes the input and generates an answer\n", + "def answer_node(state: InputState):\n", + " # Example answer and an extra key\n", + " return {\"answer\": \"bye\", \"question\": state[\"question\"]}\n", + "\n", + "\n", + "# Build the graph with input and output schemas specified\n", + "builder = StateGraph(OverallState, input=InputState, output=OutputState)\n", + "builder.add_node(answer_node) # Add the answer node\n", + "builder.add_edge(START, \"answer_node\") # Define the starting edge\n", + "builder.add_edge(\"answer_node\", END) # Define the ending edge\n", + "graph = builder.compile() # Compile the graph\n", + "\n", + "# Invoke the graph with an input and print the result\n", + "print(graph.invoke({\"question\": \"hi\"}))" + ] + }, + { + "cell_type": "markdown", + "id": "6a68836f-98e1-4684-a8a6-c1473c73460c", + "metadata": {}, + "source": [ + "Notice that the output of invoke only includes the output schema." + ] + }, + { + "cell_type": "markdown", + "id": "47ed5db3-bda5-49e1-bf75-23e08c9a3af0", + "metadata": {}, + "source": [ + "### Pass private state between nodes\n", + "\n", + "In some cases, you may want nodes to exchange information that is crucial for intermediate logic but doesn’t need to be part of the main schema of the graph. This private data is not relevant to the overall input/output of the graph and should only be shared between certain nodes.\n", + "\n", + "Below, we'll create an example sequential graph consisting of three nodes (node_1, node_2 and node_3), where private data is passed between the first two steps (node_1 and node_2), while the third step (node_3) only has access to the public overall state." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "ce5b944d-4597-4af9-a7b5-15a00325f3e0", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Entered node `node_1`:\n", + "\tInput: {'a': 'set at start'}.\n", + "\tReturned: {'private_data': 'set by node_1'}\n", + "Entered node `node_2`:\n", + "\tInput: {'private_data': 'set by node_1'}.\n", + "\tReturned: {'a': 'set by node_2'}\n", + "Entered node `node_3`:\n", + "\tInput: {'a': 'set by node_2'}.\n", + "\tReturned: {'a': 'set by node_3'}\n", + "\n", + "Output of graph invocation: {'a': 'set by node_3'}\n" + ] + } + ], + "source": [ + "from langgraph.graph import StateGraph, START, END\n", + "from typing_extensions import TypedDict\n", + "\n", + "\n", + "# The overall state of the graph (this is the public state shared across nodes)\n", + "class OverallState(TypedDict):\n", + " a: str\n", + "\n", + "\n", + "# Output from node_1 contains private data that is not part of the overall state\n", + "class Node1Output(TypedDict):\n", + " private_data: str\n", + "\n", + "\n", + "# The private data is only shared between node_1 and node_2\n", + "def node_1(state: OverallState) -> Node1Output:\n", + " output = {\"private_data\": \"set by node_1\"}\n", + " print(f\"Entered node `node_1`:\\n\\tInput: {state}.\\n\\tReturned: {output}\")\n", + " return output\n", + "\n", + "\n", + "# Node 2 input only requests the private data available after node_1\n", + "class Node2Input(TypedDict):\n", + " private_data: str\n", + "\n", + "\n", + "def node_2(state: Node2Input) -> OverallState:\n", + " output = {\"a\": \"set by node_2\"}\n", + " print(f\"Entered node `node_2`:\\n\\tInput: {state}.\\n\\tReturned: {output}\")\n", + " return output\n", + "\n", + "\n", + "# Node 3 only has access to the overall state (no access to private data from node_1)\n", + "def node_3(state: OverallState) -> OverallState:\n", + " output = {\"a\": \"set by node_3\"}\n", + " print(f\"Entered node `node_3`:\\n\\tInput: {state}.\\n\\tReturned: {output}\")\n", + " return output\n", + "\n", + "\n", + "# Connect nodes in a sequence\n", + "# node_2 accepts private data from node_1, whereas\n", + "# node_3 does not see the private data.\n", + "builder = StateGraph(OverallState).add_sequence([node_1, node_2, node_3])\n", + "builder.add_edge(START, \"node_1\")\n", + "graph = builder.compile()\n", + "\n", + "# Invoke the graph with the initial state\n", + "response = graph.invoke(\n", + " {\n", + " \"a\": \"set at start\",\n", + " }\n", + ")\n", + "\n", + "print()\n", + "print(f\"Output of graph invocation: {response}\")" + ] + }, + { + "cell_type": "markdown", + "id": "51466c8d-8ce4-4b3d-be4e-18fdbeda5f53", + "metadata": {}, + "source": [ + "### Use Pydantic models for graph state\n", + "\n", + "A [StateGraph](https://langchain-ai.github.io/langgraph/reference/graphs/#langgraph.graph.StateGraph) accepts a `state_schema` argument on initialization that specifies the \"shape\" of the state that the nodes in the graph can access and update.\n", + "\n", + "In our examples, we typically use a python-native `TypedDict` for `state_schema`, but `state_schema` can be any [type](https://docs.python.org/3/library/stdtypes.html#type-objects).\n", + "\n", + "Here, we'll see how a [Pydantic BaseModel](https://docs.pydantic.dev/latest/api/base_model/). can be used for `state_schema` to add run time validation on **inputs**.\n", + "\n", + "\n", + "
    \n", + "

    Known Limitations

    \n", + "

    \n", + "

      \n", + "
    • \n", + " Currently, the output of the graph will NOT be an instance of a pydantic model.\n", + "
    • \n", + "
    • \n", + " Run-time validation only occurs on inputs into nodes, not on the outputs.\n", + "
    • \n", + "
    • \n", + " The validation error trace from pydantic does not show which node the error arises in.\n", + "
    • \n", + "
    \n", + "

    \n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "efc46b36-425c-49c3-9f9e-d9785c70b034", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'a': 'goodbye'}" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from langgraph.graph import StateGraph, START, END\n", + "from typing_extensions import TypedDict\n", + "\n", + "from pydantic import BaseModel\n", + "\n", + "\n", + "# The overall state of the graph (this is the public state shared across nodes)\n", + "class OverallState(BaseModel):\n", + " a: str\n", + "\n", + "\n", + "def node(state: OverallState):\n", + " return {\"a\": \"goodbye\"}\n", + "\n", + "\n", + "# Build the state graph\n", + "builder = StateGraph(OverallState)\n", + "builder.add_node(node) # node_1 is the first node\n", + "builder.add_edge(START, \"node\") # Start the graph with node_1\n", + "builder.add_edge(\"node\", END) # End the graph after node_1\n", + "graph = builder.compile()\n", + "\n", + "# Test the graph with a valid input\n", + "graph.invoke({\"a\": \"hello\"})" + ] + }, + { + "cell_type": "markdown", + "id": "25b594c2-8198-4f76-9606-ea47151ff9d1", + "metadata": {}, + "source": [ + "Invoke the graph with an **invalid** input" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "05d7d43b-0b71-4e25-af6f-61d1560a46cb", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "An exception was raised because `a` is an integer rather than a string.\n", + "1 validation error for OverallState\n", + "a\n", + " Input should be a valid string [type=string_type, input_value=123, input_type=int]\n", + " For further information visit https://errors.pydantic.dev/2.9/v/string_type\n" + ] + } + ], + "source": [ + "try:\n", + " graph.invoke({\"a\": 123}) # Should be a string\n", + "except Exception as e:\n", + " print(\"An exception was raised because `a` is an integer rather than a string.\")\n", + " print(e)" + ] + }, + { + "cell_type": "markdown", + "id": "572ee9f1-45d2-428e-9b70-e7befaf2da80", + "metadata": {}, + "source": [ + "See below for additional features of Pydantic model state:\n", + "\n", + "
    \n", + "Serialization Behavior\n", + "\n", + "When using Pydantic models as state schemas, it's important to understand how serialization works, especially when:\n", + "
      \n", + "
    • Passing Pydantic objects as inputs
    • \n", + "
    • Receiving outputs from the graph
    • \n", + "
    • Working with nested Pydantic models
    • \n", + "
    \n", + "Let's see these behaviors in action.\n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0e919cdc", + "metadata": {}, + "outputs": [], + "source": [ + "from langgraph.graph import StateGraph, START, END\n", + "from pydantic import BaseModel\n", + "\n", + "\n", + "class NestedModel(BaseModel):\n", + " value: str\n", + "\n", + "\n", + "class ComplexState(BaseModel):\n", + " text: str\n", + " count: int\n", + " nested: NestedModel\n", + "\n", + "\n", + "def process_node(state: ComplexState):\n", + " # Node receives a validated Pydantic object\n", + " print(f\"Input state type: {type(state)}\")\n", + " print(f\"Nested type: {type(state.nested)}\")\n", + "\n", + " # Return a dictionary update\n", + " return {\"text\": state.text + \" processed\", \"count\": state.count + 1}\n", + "\n", + "\n", + "# Build the graph\n", + "builder = StateGraph(ComplexState)\n", + "builder.add_node(\"process\", process_node)\n", + "builder.add_edge(START, \"process\")\n", + "builder.add_edge(\"process\", END)\n", + "graph = builder.compile()\n", + "\n", + "# Create a Pydantic instance for input\n", + "input_state = ComplexState(text=\"hello\", count=0, nested=NestedModel(value=\"test\"))\n", + "print(f\"Input object type: {type(input_state)}\")\n", + "\n", + "# Invoke graph with a Pydantic instance\n", + "result = graph.invoke(input_state)\n", + "print(f\"Output type: {type(result)}\")\n", + "print(f\"Output content: {result}\")\n", + "\n", + "# Convert back to Pydantic model if needed\n", + "output_model = ComplexState(**result)\n", + "print(f\"Converted back to Pydantic: {type(output_model)}\")" + ] + }, + { + "cell_type": "markdown", + "id": "f13f28ce", + "metadata": {}, + "source": [ + "
    \n", + "\n", + "
    Runtime Type Coercion\n", + "\n", + "Pydantic performs runtime type coercion for certain data types. This can be helpful but also lead to unexpected behavior if you're not aware of it.\n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "faf59316", + "metadata": {}, + "outputs": [], + "source": [ + "from langgraph.graph import StateGraph, START, END\n", + "from pydantic import BaseModel\n", + "\n", + "\n", + "class CoercionExample(BaseModel):\n", + " # Pydantic will coerce string numbers to integers\n", + " number: int\n", + " # Pydantic will parse string booleans to bool\n", + " flag: bool\n", + "\n", + "\n", + "def inspect_node(state: CoercionExample):\n", + " print(f\"number: {state.number} (type: {type(state.number)})\")\n", + " print(f\"flag: {state.flag} (type: {type(state.flag)})\")\n", + " return {}\n", + "\n", + "\n", + "builder = StateGraph(CoercionExample)\n", + "builder.add_node(\"inspect\", inspect_node)\n", + "builder.add_edge(START, \"inspect\")\n", + "builder.add_edge(\"inspect\", END)\n", + "graph = builder.compile()\n", + "\n", + "# Demonstrate coercion with string inputs that will be converted\n", + "result = graph.invoke({\"number\": \"42\", \"flag\": \"true\"})\n", + "\n", + "# This would fail with a validation error\n", + "try:\n", + " graph.invoke({\"number\": \"not-a-number\", \"flag\": \"true\"})\n", + "except Exception as e:\n", + " print(f\"\\nExpected validation error: {e}\")" + ] + }, + { + "cell_type": "markdown", + "id": "2844475b", + "metadata": {}, + "source": [ + "
    \n", + "\n", + "
    Working with Message Models\n", + "\n", + "When working with LangChain message types in your state schema, there are important considerations for serialization. You should use AnyMessage (rather than BaseMessage) for proper serialization/deserialization when using message objects over the wire.\n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "bd0734b0", + "metadata": {}, + "outputs": [], + "source": [ + "from langgraph.graph import StateGraph, START, END\n", + "from pydantic import BaseModel\n", + "from langchain_core.messages import HumanMessage, AIMessage, AnyMessage\n", + "from typing import List\n", + "\n", + "\n", + "class ChatState(BaseModel):\n", + " messages: List[AnyMessage]\n", + " context: str\n", + "\n", + "\n", + "def add_message(state: ChatState):\n", + " return {\"messages\": state.messages + [AIMessage(content=\"Hello there!\")]}\n", + "\n", + "\n", + "builder = StateGraph(ChatState)\n", + "builder.add_node(\"add_message\", add_message)\n", + "builder.add_edge(START, \"add_message\")\n", + "builder.add_edge(\"add_message\", END)\n", + "graph = builder.compile()\n", + "\n", + "# Create input with a message\n", + "initial_state = ChatState(\n", + " messages=[HumanMessage(content=\"Hi\")], context=\"Customer support chat\"\n", + ")\n", + "\n", + "result = graph.invoke(initial_state)\n", + "print(f\"Output: {result}\")\n", + "\n", + "# Convert back to Pydantic model to see message types\n", + "output_model = ChatState(**result)\n", + "for i, msg in enumerate(output_model.messages):\n", + " print(f\"Message {i}: {type(msg).__name__} - {msg.content}\")" + ] + }, + { + "cell_type": "markdown", + "id": "c2e52e1f-c07a-4ebf-b28e-c370c8f50550", + "metadata": {}, + "source": [ + "
    " + ] + }, + { + "cell_type": "markdown", + "id": "6e6a0a39-9a4c-47ae-a238-1a3a847eea5b", + "metadata": {}, + "source": [ + "## Add runtime configuration\n", + "\n", + "Sometimes you want to be able to configure your graph when calling it. For example, you might want to be able to specify what LLM or system prompt to use at runtime, *without polluting the graph state with these parameters*.\n", + "\n", + "To add runtime configuration:\n", + "\n", + "1. Specify a schema for your configuration\n", + "2. Add the configuration to the function signature for nodes or conditional edges\n", + "3. Pass the configuration into the graph.\n", + "\n", + "See below for a simple example:" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "97fc508b-1011-402e-8769-573ac3acb53a", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'my_state_value': 1}\n", + "{'my_state_value': 2}\n" + ] + } + ], + "source": [ + "from langchain_core.runnables import RunnableConfig\n", + "from langgraph.graph import END, StateGraph, START\n", + "from typing_extensions import TypedDict\n", + "\n", + "\n", + "# 1. Specify config schema\n", + "class ConfigSchema(TypedDict):\n", + " my_runtime_value: str\n", + "\n", + "\n", + "# 2. Define a graph that accesses the config in a node\n", + "class State(TypedDict):\n", + " my_state_value: str\n", + "\n", + "\n", + "# highlight-next-line\n", + "def node(state: State, config: RunnableConfig):\n", + " # highlight-next-line\n", + " if config[\"configurable\"][\"my_runtime_value\"] == \"a\":\n", + " return {\"my_state_value\": 1}\n", + " # highlight-next-line\n", + " elif config[\"configurable\"][\"my_runtime_value\"] == \"b\":\n", + " return {\"my_state_value\": 2}\n", + " else:\n", + " raise ValueError(\"Unknown values.\")\n", + "\n", + "\n", + "# highlight-next-line\n", + "builder = StateGraph(State, config_schema=ConfigSchema)\n", + "builder.add_node(node)\n", + "builder.add_edge(START, \"node\")\n", + "builder.add_edge(\"node\", END)\n", + "\n", + "graph = builder.compile()\n", + "\n", + "# 3. Pass in configuration at runtime:\n", + "# highlight-next-line\n", + "print(graph.invoke({}, {\"configurable\": {\"my_runtime_value\": \"a\"}}))\n", + "# highlight-next-line\n", + "print(graph.invoke({}, {\"configurable\": {\"my_runtime_value\": \"b\"}}))" + ] + }, + { + "cell_type": "markdown", + "id": "f080f50b-cec1-4dba-81e0-63cf40c990ee", + "metadata": {}, + "source": [ + "
    Extended example: specifying LLM at runtime\n", + "\n", + "Below we demonstrate a practical example in which we configure what LLM to use at runtime. We will use both OpenAI and Anthropic models.\n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ff4c1453-8cff-4679-9574-8602c530144e", + "metadata": {}, + "outputs": [], + "source": [ + "%%capture --no-stderr\n", + "%pip install -U langgraph \"langchain[anthropic,openai]\"" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "c031a059-7279-4e75-9164-58325d76242f", + "metadata": {}, + "outputs": [], + "source": [ + "import getpass\n", + "import os\n", + "\n", + "\n", + "def _set_env(var: str):\n", + " if not os.environ.get(var):\n", + " os.environ[var] = getpass.getpass(f\"{var}: \")\n", + "\n", + "\n", + "_set_env(\"ANTHROPIC_API_KEY\")\n", + "_set_env(\"OPENAI_API_KEY\")" + ] + }, + { + "cell_type": "markdown", + "id": "75ebea6f-e75f-42d4-9d32-68b37150bdde", + "metadata": {}, + "source": [ + "Build the graph:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "a6033c2a-3b56-46f5-9c3f-79310e31e545", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "claude-3-5-haiku-20241022\n", + "gpt-4.1-mini-2025-04-14\n" + ] + } + ], + "source": [ + "from langchain.chat_models import init_chat_model\n", + "from langchain_core.runnables import RunnableConfig\n", + "from langgraph.graph import MessagesState\n", + "from langgraph.graph import END, StateGraph, START\n", + "from typing_extensions import TypedDict\n", + "\n", + "\n", + "class ConfigSchema(TypedDict):\n", + " model: str\n", + "\n", + "\n", + "MODELS = {\n", + " \"anthropic\": init_chat_model(\"anthropic:claude-3-5-haiku-latest\"),\n", + " \"openai\": init_chat_model(\"openai:gpt-4.1-mini\"),\n", + "}\n", + "\n", + "\n", + "def call_model(state: MessagesState, config: RunnableConfig):\n", + " model = config[\"configurable\"].get(\"model\", \"anthropic\")\n", + " model = MODELS[model]\n", + " response = model.invoke(state[\"messages\"])\n", + " return {\"messages\": [response]}\n", + "\n", + "\n", + "builder = StateGraph(MessagesState, config_schema=ConfigSchema)\n", + "builder.add_node(\"model\", call_model)\n", + "builder.add_edge(START, \"model\")\n", + "builder.add_edge(\"model\", END)\n", + "\n", + "graph = builder.compile()\n", + "\n", + "# Usage\n", + "input_message = {\"role\": \"user\", \"content\": \"hi\"}\n", + "# With no configuration, uses default (Anthropic)\n", + "response_1 = graph.invoke({\"messages\": [input_message]})[\"messages\"][-1]\n", + "# Or, can set OpenAI\n", + "config = {\"configurable\": {\"model\": \"openai\"}}\n", + "response_2 = graph.invoke({\"messages\": [input_message]}, config=config)[\"messages\"][-1]\n", + "\n", + "print(response_1.response_metadata[\"model_name\"])\n", + "print(response_2.response_metadata[\"model_name\"])" + ] + }, + { + "cell_type": "markdown", + "id": "bd1ac2bc-9e3e-42c4-a68f-238c841e58d1", + "metadata": {}, + "source": [ + "
    \n", + "\n", + "
    Extended example: specifying model and system message at runtime\n", + "\n", + "Below we demonstrate a practical example in which we configure two parameters: the LLM and system message to use at runtime.\n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "367bcedd-047c-4150-a059-0a7630ab2663", + "metadata": {}, + "outputs": [], + "source": [ + "%%capture --no-stderr\n", + "%pip install -U langgraph \"langchain[anthropic,openai]\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e5d0dd7d-9564-4a5f-aa2e-2f7be20e1647", + "metadata": {}, + "outputs": [], + "source": [ + "import getpass\n", + "import os\n", + "\n", + "\n", + "def _set_env(var: str):\n", + " if not os.environ.get(var):\n", + " os.environ[var] = getpass.getpass(f\"{var}: \")\n", + "\n", + "\n", + "_set_env(\"ANTHROPIC_API_KEY\")\n", + "_set_env(\"OPENAI_API_KEY\")" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "04924627-9326-438b-aa52-91cea76f4477", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "================================\u001b[1m Human Message \u001b[0m=================================\n", + "\n", + "hi\n", + "==================================\u001b[1m Ai Message \u001b[0m==================================\n", + "\n", + "Ciao! Come posso aiutarti oggi?\n" + ] + } + ], + "source": [ + "from typing import Optional\n", + "\n", + "from langchain.chat_models import init_chat_model\n", + "from langchain_core.messages import SystemMessage\n", + "from langchain_core.runnables import RunnableConfig\n", + "from langgraph.graph import END, MessagesState, StateGraph, START\n", + "from typing_extensions import TypedDict\n", + "\n", + "\n", + "class ConfigSchema(TypedDict):\n", + " model: Optional[str]\n", + " system_message: Optional[str]\n", + "\n", + "\n", + "MODELS = {\n", + " \"anthropic\": init_chat_model(\"anthropic:claude-3-5-haiku-latest\"),\n", + " \"openai\": init_chat_model(\"openai:gpt-4.1-mini\"),\n", + "}\n", + "\n", + "\n", + "def call_model(state: MessagesState, config: RunnableConfig):\n", + " model = config[\"configurable\"].get(\"model\", \"anthropic\")\n", + " model = MODELS[model]\n", + " messages = state[\"messages\"]\n", + " if system_message := config[\"configurable\"].get(\"system_message\"):\n", + " messages = [SystemMessage(system_message)] + messages\n", + " response = model.invoke(messages)\n", + " return {\"messages\": [response]}\n", + "\n", + "\n", + "builder = StateGraph(MessagesState, config_schema=ConfigSchema)\n", + "builder.add_node(\"model\", call_model)\n", + "builder.add_edge(START, \"model\")\n", + "builder.add_edge(\"model\", END)\n", + "\n", + "graph = builder.compile()\n", + "\n", + "# Usage\n", + "input_message = {\"role\": \"user\", \"content\": \"hi\"}\n", + "config = {\"configurable\": {\"model\": \"openai\", \"system_message\": \"Respond in Italian.\"}}\n", + "response = graph.invoke({\"messages\": [input_message]}, config)\n", + "for message in response[\"messages\"]:\n", + " message.pretty_print()" + ] + }, + { + "cell_type": "markdown", + "id": "03eac38a-fca6-4baf-9ccf-94bf16321235", + "metadata": {}, + "source": [ + "
    " + ] + }, + { + "cell_type": "markdown", + "id": "94715e3d-e98b-4be0-ae5f-1169cb795ce5", + "metadata": {}, + "source": [ + "## Add retry policies\n", + "\n", + "There are many use cases where you may wish for your node to have a custom retry policy, for example if you are calling an API, querying a database, or calling an LLM, etc. LangGraph lets you add retry policies to nodes.\n", + "\n", + "To configure a retry policy, pass the `retry` parameter to the [add_node](https://langchain-ai.github.io/langgraph/reference/graphs/#langgraph.graph.state.StateGraph.add_node). The `retry` parameter takes in a `RetryPolicy` named tuple object. Below we instantiate a `RetryPolicy` object with the default parameters and associate it with a node:\n", + "\n", + "```python\n", + "from langgraph.pregel import RetryPolicy\n", + "\n", + "builder.add_node(\n", + " \"node_name\",\n", + " node_function,\n", + " retry=RetryPolicy(),\n", + ")\n", + "```" + ] + }, + { + "cell_type": "markdown", + "id": "af144b8f-761a-4456-a356-ce0812e92577", + "metadata": {}, + "source": [ + "By default, the `retry_on` parameter uses the `default_retry_on` function, which retries on any exception except for the following:\n", + "\n", + "* `ValueError`\n", + "* `TypeError`\n", + "* `ArithmeticError`\n", + "* `ImportError`\n", + "* `LookupError`\n", + "* `NameError`\n", + "* `SyntaxError`\n", + "* `RuntimeError`\n", + "* `ReferenceError`\n", + "* `StopIteration`\n", + "* `StopAsyncIteration`\n", + "* `OSError`\n", + "\n", + "In addition, for exceptions from popular http request libraries such as `requests` and `httpx` it only retries on 5xx status codes.\n", + "\n", + "
    Extended example: customizing retry policies\n", + "\n", + "Consider an example in which we are reading from a SQL database. Below we pass two different retry policies to nodes:\n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "ad92598c-b688-42fa-aae0-9de36273d584", + "metadata": {}, + "outputs": [], + "source": [ + "import sqlite3\n", + "from typing_extensions import TypedDict\n", + "\n", + "from langchain.chat_models import init_chat_model\n", + "\n", + "from langgraph.graph import END, MessagesState, StateGraph, START\n", + "from langgraph.pregel import RetryPolicy\n", + "from langchain_community.utilities import SQLDatabase\n", + "from langchain_core.messages import AIMessage\n", + "\n", + "db = SQLDatabase.from_uri(\"sqlite:///:memory:\")\n", + "\n", + "model = init_chat_model(\"anthropic:claude-3-5-haiku-latest\")\n", + "\n", + "\n", + "def query_database(state: MessagesState):\n", + " query_result = db.run(\"SELECT * FROM Artist LIMIT 10;\")\n", + " return {\"messages\": [AIMessage(content=query_result)]}\n", + "\n", + "\n", + "def call_model(state: MessagesState):\n", + " response = model.invoke(state[\"messages\"])\n", + " return {\"messages\": [response]}\n", + "\n", + "\n", + "# Define a new graph\n", + "builder = StateGraph(MessagesState)\n", + "builder.add_node(\n", + " \"query_database\",\n", + " query_database,\n", + " retry=RetryPolicy(retry_on=sqlite3.OperationalError),\n", + ")\n", + "builder.add_node(\"model\", call_model, retry=RetryPolicy(max_attempts=5))\n", + "builder.add_edge(START, \"model\")\n", + "builder.add_edge(\"model\", \"query_database\")\n", + "builder.add_edge(\"query_database\", END)\n", + "\n", + "graph = builder.compile()" + ] + }, + { + "cell_type": "markdown", + "id": "4eeb895c-adca-40ab-b289-93ee56e18661", + "metadata": {}, + "source": [ + "
    " + ] + }, + { + "cell_type": "markdown", + "id": "e1a0213e-282f-4fad-b048-5f7465edfccb", + "metadata": {}, + "source": [ + "## Create a sequence of steps\n", + "\n", + "!!! info \"Prerequisites\"\n", + " This guide assumes familiarity with the above section on [state](#define-and-update-state).\n", + "\n", + "Here we demonstrate how to construct a simple sequence of steps. We will show:\n", + "\n", + "1. How to build a sequential graph\n", + "2. Built-in short-hand for constructing similar graphs.\n", + "\n", + "\n", + "To add a sequence of nodes, we use the `.add_node` and `.add_edge` methods of our [graph](../../concepts/low_level/#stategraph):\n", + "```python\n", + "from langgraph.graph import START, StateGraph\n", + "\n", + "builder = StateGraph(State)\n", + "\n", + "# Add nodes\n", + "builder.add_node(step_1)\n", + "builder.add_node(step_2)\n", + "builder.add_node(step_3)\n", + "\n", + "# Add edges\n", + "builder.add_edge(START, \"step_1\")\n", + "builder.add_edge(\"step_1\", \"step_2\")\n", + "builder.add_edge(\"step_2\", \"step_3\")\n", + "```\n", + "\n", + "We can also use the built-in shorthand `.add_sequence`:\n", + "```python\n", + "builder = StateGraph(State).add_sequence([step_1, step_2, step_3])\n", + "builder.add_edge(START, \"step_1\")\n", + "```\n", + "\n", + "\n", + "
    \n", + "Why split application steps into a sequence with LangGraph?\n", + "\n", + "LangGraph makes it easy to add an underlying persistence layer to your application.\n", + "This allows state to be checkpointed in between the execution of nodes, so your LangGraph nodes govern:\n", + "\n", + "
      \n", + "
    • How state updates are [checkpointed](../../concepts/persistence/)
    • \n", + "
    • How interruptions are resumed in [human-in-the-loop](../../concepts/human_in_the_loop/) workflows
    • \n", + "
    • How we can \"rewind\" and branch-off executions using LangGraph's [time travel](../../concepts/time-travel/) features
    • \n", + "
    \n", + "\n", + "They also determine how execution steps are [streamed](../../concepts/streaming/), and how your application is visualized\n", + "and debugged using [LangGraph Studio](../../concepts/langgraph_studio/).\n", + "\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "id": "518cb5d1-c60f-44d7-b348-e03b6e487098", + "metadata": {}, + "source": [ + "Let's demonstrate an end-to-end example. We will create a sequence of three steps:\n", + "\n", + "1. Populate a value in a key of the state\n", + "2. Update the same value\n", + "3. Populate a different value\n", + "\n", + "Let's first define our [state](../../concepts/low_level/#state). This governs the [schema of the graph](../../concepts/low_level/#schema), and can also specify how to apply updates. See [this section](#process-state-updates-with-reducers) for more detail.\n", + "\n", + "In our case, we will just keep track of two values:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "aa1b04c6-2653-4ad4-a720-facc1f2906a7", + "metadata": {}, + "outputs": [], + "source": [ + "from typing_extensions import TypedDict\n", + "\n", + "\n", + "class State(TypedDict):\n", + " value_1: str\n", + " value_2: int" + ] + }, + { + "cell_type": "markdown", + "id": "6d4a8554-bc19-4bbe-a8c2-20adcfca8273", + "metadata": {}, + "source": [ + "Our [nodes](../../concepts/low_level/#nodes) are just Python functions that read our graph's state and make updates to it. The first argument to this function will always be the state:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "c7db921a-dbfb-4039-a93b-8b2264143a3f", + "metadata": {}, + "outputs": [], + "source": [ + "def step_1(state: State):\n", + " return {\"value_1\": \"a\"}\n", + "\n", + "\n", + "def step_2(state: State):\n", + " current_value_1 = state[\"value_1\"]\n", + " return {\"value_1\": f\"{current_value_1} b\"}\n", + "\n", + "\n", + "def step_3(state: State):\n", + " return {\"value_2\": 10}" + ] + }, + { + "cell_type": "markdown", + "id": "2b454eb0-19c1-418e-a912-dc44c0c045e2", + "metadata": {}, + "source": [ + "!!! note\n", + "\n", + " Note that when issuing updates to the state, each node can just specify the value of the key it wishes to update.\n", + "\n", + "By default, this will **overwrite** the value of the corresponding key. You can also use [reducers](../../concepts/low_level/#reducers) to control how updates are processed— for example, you can append successive updates to a key instead. See [this section](#process-state-updates-with-reducers) for more detail.\n", + "\n", + "Finally, we define the graph. We use [StateGraph](../../concepts/low_level/#stategraph) to define a graph that operates on this state.\n", + "\n", + "We will then use [add_node](../../concepts/low_level/#messagesstate) and [add_edge](../../concepts/low_level/#edges) to populate our graph and define its control flow." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b02bdbcf-2bbb-4f08-b177-1a45b2a8bc6d", + "metadata": {}, + "outputs": [], + "source": [ + "from langgraph.graph import START, StateGraph\n", + "\n", + "builder = StateGraph(State)\n", + "\n", + "# Add nodes\n", + "builder.add_node(step_1)\n", + "builder.add_node(step_2)\n", + "builder.add_node(step_3)\n", + "\n", + "# Add edges\n", + "builder.add_edge(START, \"step_1\")\n", + "builder.add_edge(\"step_1\", \"step_2\")\n", + "builder.add_edge(\"step_2\", \"step_3\")" + ] + }, + { + "cell_type": "markdown", + "id": "79a696b2-ef9b-4f8d-ae83-ea674a16bab0", + "metadata": {}, + "source": [ + "!!! tip \"Specifying custom names\"\n", + "\n", + " You can specify custom names for nodes using `.add_node`:\n", + "\n", + " ```python\n", + " builder.add_node(\"my_node\", step_1)\n", + " ```" + ] + }, + { + "cell_type": "markdown", + "id": "7452c5ea-cf1b-47a5-8da0-32479c142dce", + "metadata": {}, + "source": [ + "Note that:\n", + "\n", + "- `.add_edge` takes the names of nodes, which for functions defaults to `node.__name__`.\n", + "- We must specify the entry point of the graph. For this we add an edge with the [START node](../../concepts/low_level/#start-node).\n", + "- The graph halts when there are no more nodes to execute.\n", + "\n", + "We next [compile](../../concepts/low_level/#compiling-your-graph) our graph. This provides a few basic checks on the structure of the graph (e.g., identifying orphaned nodes). If we were adding persistence to our application via a [checkpointer](../../concepts/persistence/), it would also be passed in here." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7aa2828c-0903-4775-b4ea-d62647f3bf0a", + "metadata": {}, + "outputs": [], + "source": [ + "graph = builder.compile()" + ] + }, + { + "cell_type": "markdown", + "id": "4c85772e-788c-49df-9327-11cb92f02c6a", + "metadata": {}, + "source": [ + "LangGraph provides built-in utilities for visualizing your graph. Let's inspect our sequence. See [this guide](../../how-tos/visualization) for detail on visualization." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "4162bc81-cbfd-49e3-b79f-8a97b9f417c2", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from IPython.display import Image, display\n", + "\n", + "display(Image(graph.get_graph().draw_mermaid_png()))" + ] + }, + { + "cell_type": "markdown", + "id": "9406b427-c28c-4cd0-9f01-e5bc1f089f4c", + "metadata": {}, + "source": [ + "Let's proceed with a simple invocation:" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "3f7012ae-4f8f-4dd3-9f99-ebd179ff5fe9", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'value_1': 'a b', 'value_2': 10}" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "graph.invoke({\"value_1\": \"c\"})" + ] + }, + { + "cell_type": "markdown", + "id": "648421de-e43a-4242-8e62-afd84bc91b7e", + "metadata": {}, + "source": [ + "Note that:\n", + "\n", + "- We kicked off invocation by providing a value for a single state key. We must always provide a value for at least one key.\n", + "- The value we passed in was overwritten by the first node.\n", + "- The second node updated the value.\n", + "- The third node populated a different value." + ] + }, + { + "cell_type": "markdown", + "id": "1acdf7f1-d2f8-4863-a7f3-d5de4cc0ef28", + "metadata": {}, + "source": [ + "!!! tip \"Built-in shorthand\"\n", + "\n", + " `langgraph>=0.2.46` includes a built-in short-hand `add_sequence` for adding node sequences. You can compile the same graph as follows:\n", + "\n", + " ```python\n", + " # highlight-next-line\n", + " builder = StateGraph(State).add_sequence([step_1, step_2, step_3])\n", + " builder.add_edge(START, \"step_1\")\n", + " \n", + " graph = builder.compile()\n", + " \n", + " graph.invoke({\"value_1\": \"c\"}) \n", + " ```" + ] + }, + { + "attachments": { + "51f122de-b2ce-4c21-a5a7-c3be70c28a91.png": { + "image/png": "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LyI+CiAgICAgICAgIDxleGlmOlBpeGVsWURpbWVuc2lvbj41NDI8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+OTA0PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6VXNlckNvbW1lbnQ+U2NyZWVuc2hvdDwvZXhpZjpVc2VyQ29tbWVudD4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+ClCweXwAAAAcaURPVAAAAAIAAAAAAAABDwAAACgAAAEPAAABDwAARV8dcCWfAABAAElEQVR4AezdB3wURfvA8UcgdAgdqaElNAEVFBSk96agf1REFJSiooAFRXxtiAooShHEBkhRULEjRTpIB0MTCC0JJEBooZcA/5mJt97mLqSQS+4uv30/8XZnd2dnvjcvnzyZ2ZmbrqlN2BBAAAEEEEAAAQQQQAABBDK9wE0EiJm+DQCAAAIIIIAAAggggAACCBgBAkQaAgIIIIAAAggggAACCCCAgBEgQKQhIIAAAggggAACCCCAAAIIGAECRBoCAggggAACCCCAAAIIIICAESBApCEggAACCCCAAAIIIIAAAggYAQJEGgICCCCAAAIIIIAAAggggIARIECkISCAAAIIIIAAAggggAACCBgBAkQaAgIIIIAAAggggAACCCCAgBEgQKQhIIAAAggggAACCCCAAAIIGAECRBoCAggggAACCCCAAAIIIICAESBApCEggAACCCCAAAIIIIAAAggYAQJEGgICCCCAAAIIIIAAAggggIARIECkISCAAAIIIIAAAggggAACCBgBAkQaAgIIIIAAAggggAACCCCAgBEgQKQhIIAAAggggAACCCCAAAIIGAECRBoCAggggAACCCCAAAIIIICAESBApCEggAACCCCAAAIIIIAAAggYAQJEGgICCCCAAAIIIIAAAggggIARIECkISCAAAIIIIAAAggggAACCBgBAkQaAgIIIIAAAggggAACCCCAgBEgQKQhIIAAAggggAACCCCAAAIIGAECRBoCAggggAACCCCAAAIIIICAESBApCEggAACCCCAAAIIIIAAAggYAQJEGgICCCCAAAIIIIAAAggggIARIECkISCAAAIIIIAAAggggAACCBgBAkQaAgIIIIAAAggggAACCCCAgBEgQKQhIIAAAggggAACCCCAAAIIGAECRBoCAggggAACCCCAAAIIIICAESBApCEggAACCCCAAAIIIIAAAggYAQJEGgICCCCAAAIIIIAAAggggIARIECkISCAAAIIIIAAAggggAACCBgBAkQaAgIIIIAAAggggAACCCCAgBEgQKQhIIAAAggggAACCCCAAAIIGAECRBoCAggggAACCCCAAAIIIICAESBApCEggAACCCCAAAIIIIAAAggYAQJEGgICCCCAAAIIIIAAAggggIARIECkISCAAAIIIIAAAggggAACCBgBAkQaAgIIIIAAAggggAACCCCAgBEgQKQhIIAAAggggAACCCCAAAIIGAECRBoCAggggAACCCCAAAIIIICAESBApCEggAACCCCAAAIIIIAAAggYAQJEGgICCCCAAAIIIIAAAggggIARIECkISCAAAIIIIAAAggggAACCBgBAkQaAgIIIIAAAggggAACCCCAgBEgQKQhIIAAAggggAACCCCAAAIIGAECRBoCAggggAACCCCAAAIIIICAESBApCEggAACCCCAAAIIIIAAAggYAQJEGgICCCCAAAIIIIAAAggggIARIECkISCAAAIIIIAAAggggAACCBgBAkQaAgIIIIAAAggggAACCCCAgBEgQKQhIIAAAggggAACCCCAAAIIGAECRBoCAggggAACCCCAAAIIIICAESBApCEggAACCCCAAAIIIIAAAggYAQJEGgICCCCAAAIIIIAAAggggIARIECkISCAAAIIIIAAAggggAACCBgBAkQaAgIIIIAAAggggAACCCCAgBEgQKQhIIAAAggggAACCCCAAAIIGAECRBoCAggggAACCCCAAAIIIICAESBApCEggAACCCCAAAIIIIAAAggYAQJEGgICCCCAAAIIIIAAAggggIARIECkISCAAAIIIIAAAggggAACCBgBAkQaAgIIIIAAAggggAACCCCAgBEgQKQhIIAAAggggAACCCCAAAIIGAECRBoCAggggAACCCCAAAIIIICAESBApCEggAACCCCAAAIIIIAAAggYAQJEGgICCCCAAAIIIIAAAggggIARIECkISCAAAIIIIAAAggggAACCBgBAkQaAgIIIIAAAggggAACCCCAgBEgQKQhIIAAAggggAACCCCAAAIIGAECRBoCAggggAACCCCAAAIIIICAESBApCEggAACCCCAAAIIIIAAAggYAQJEGgICCCCAAAIIIIAAAggggIARIECkISCAAAIIIIAAAggggAACCBgBAkQaAgIIIIAAAggggAACCCCAgBEgQKQhIIAAAggggAACCCCAAAIIGAECRBoCAggggAACCCCAAAIIIICAESBApCEggAACCCCAAAIIIIAAAggYAQJEGgICCCCAAAIIIIAAAggggIARIECkISCAAAIIIIAAAggggAACCBgBAkQaAgIIIIAAAggggAACCCCAgBEgQKQhIIAAAggggAACCCCAAAIIGAECRBoCAggggAACCCCAAAIIIICAESBApCEggAACCCCAAAIIIIAAAggYAQJEGgICCCCAAAIIIIAAAggggIARIECkISCAAAIIIIAAAggggAACCBgBAkQaAgIIIIAAAggggAACCCCAgBEgQKQhIIAAAggggAACCCCAAAIIGAECRBoCAggggAACCCCAAAIIIICAESBApCEggAACCCCAAAIIIIAAAggYAQJEGgICCCCAAAIIIIAAAggggIARIECkISCAAAIIIIAAAggggAACCBgBAkQaAgIIIIAAAggggAACCCCAgBEgQKQhIIAAAggggAACCCCAAAIIGAECRBoCAggggAACCCCAAAIIIICAESBApCEggAACCCCAAAIIIIAAAggYAQJEGgICCCCAAAIIIIAAAggggIARIECkISCAAAIIIIAAAggggAACCBgBAkQaAgIIIIAAAggggAACCCCAgBEgQKQhIIAAAggggAACCCCAAAIIGAECRBoCAggggAACCCCAAAIIIICAESBApCEggAACCCCAAAIIIIAAAggYAQJEGgICCCCAAAIIIIAAAggggIARIECkISCAAAIIIIAAAggggAACCBgBAkQaAgIIIIAAAggggAACCCCAgBEgQKQhIIAAAggggAACCCCAAAIIGAECRBoCAggggAACCCCAAAIIIICAESBApCEggAACCCCAAAIIIIAAAggYAQJEGgICCCCAAAIIIIAAAggggIARIECkISCAAAIIIIAAAggggAACCBgBAkQaAgIIIICARwXOnDkjW7ZssT2jWrVqEhgYaEvjAAEEEEAAAQQyXoAAMeO/A0qAAAII+LVA+/btXQJEXeHy5ctL9erVJTg4WJo1ayY1atTwawcqhwACCCCAgC8IECD6wrdEGRFAAAEfFnjooYdk1apVSdbgrrvuMoFi8+bNTfCY5A1cgAACCCCAAAJpLkCAmOakZIgAAggg4Cxw8uRJmTRpknz88ccmOTw83HwGBQU5X2bb79q1q9x7772mVzFPnjy2cxwggAACCCCAgOcECBA9Z0vOCCCAQKYRuBAncuLsJQnbFykHDx2Wc+cvyN6wXbJ31zY5Gn1AjkRHysljMSn2qF27tjz99NOiexXZEEAAAQQQQMDzAgSInjfmCQgggIBfCcTFxcmmTZtk2fKVsnNvhOyPiJDDB1UAePSQx+rZqEkz6fZIV2nZgkDRY8hkjAACCCCAgBIgQKQZIIAAAggkKbB06VIJDQ2VjRs3yoqVK+XypUtJ3qMvuClLFilYtKQULFbC+syTr6DkzhsoOfPmV5/xP7nUca5/94+q3sZdm/6S3VvWyPpFP9ue065rHxnw/IsSUjS7LZ0DBBBAAAEEEEgbAQLEtHEkFwQQQMDvBJYsWSKLFy8W/bl///7r1k8HdyWCguXmoBApG3yLlChf2QSEBYoUv+591zs5dlBXCQtdI2WCq0tk2Dbr0oo17pBXBr0kLRvWtdLYQQABBBBAAIG0ESBATBtHckEAAQT8RuCnn36SyZMnm2Gk16tUtTsaSdU6jaWSCthKVax6vUtTde6PaWNk9+bV0qRzLzV8NVp+/uJ9uXj+rMkrW7YAeemlF6Vv376pypubEEAAAQQQQMC9AAGiexdSEUAAgUwnEBUVJYMHDzY9holVvlDx0ipge0J0cFi0VOKzkCZ2/42knzp+VOZ9M06W/zLVyqZpq3Yy6bPx1jE7CCCAAAIIIHBjAgSIN+bH3QgggIDfCOilJVaq9wsT2+q2vF9ad+svhYuXSuySdEn/e/k8+XrEQIm7dNE8r0HztjL9ywnp8mweggACCCCAgL8LECD6+zdM/RBAAIFkCLz66qsyffp0t1fqXsM2KjCs27Kz2/MZkbhn63r54q2+cvbUCfP4O5u0lZmTJkiWmzKiNDwTAQQQQAAB/xEgQPSf75KaIIAAAqkSGD9+vAwfPtztvd7Sa+iucDEHw2Xc4EflxOGD5vRtDdvK5M/HS4GcRInuvEhDAAEEEEAgOQIEiMlR4hoEEEDATwV+/vlnee6559zW7pEXRnpVr6G7Ql44d1ZGDbhfDoWHmdM6SPxpKsNN3VmRhgACCCCAQHIECBCTo8Q1CCCAgB8K6AXvO3bsKNu2/beEhKOaDw94T+5q08Vx6PWfHzzXSSJ2bjblvLtZW/nmK4JEr//SKCACCCCAgFcKECB65ddCoRBAAAHPC+ilLN544w2XB3V84mVp3qW3S7q3Jwx/qp0c3LvDFPPlt4bL048/5O1FpnwIIIAAAgh4nQABotd9JRQIAQQQ8LzA2bNnpUOHDrJnzx7bw5o/2Ec69hxkS/OVg9MnjsnHL3SRmIP7TZG///1PueOWYF8pPuVEAAEEEEDAKwQIEL3ia6AQCCCAQPoKTJw4Ud59913bQ+u37yoPPjvUluZrBxuXzpHJ7z5ril2hai1ZPPcXX6sC5UUAAQQQQCBDBQgQM5SfhyOAAALpL3D8+HHTe3jgwAHr4bc3bi+PDx5tHfvyzsyxr8vK3+KX7OjS7QkZOex1X64OZUcAAQQQQCBdBQgQ05WbhyGAAAIZLzBmzBj58MMPrYLkypNPBn70vdwcVMlK8+WdQxF7ZMKrj8uJmChTjdeHvidPdO/qy1Wi7AgggAACCKSbAAFiulHzIAQQQCDjBa5evSqNGzeW8PBwqzBtuw+Q1o/ED8u0En18Z9nPU+X78W+aWhS7uZQsXjhf8ubN6+O1ovgIIIAAAgh4XoAA0fPGPAEBBBDwGoEFCxbIk08+aZWnZPnKMvDjHyRHzlxWmr/sfDL4Mdm5cYWpzptD35Ue3R/xl6pRDwQQQAABBDwmQIDoMVoyRgABBLxPYPDgwTJjxgyrYN1eHCl3tuhsHfvTzsalv6sJa54zVapxe1357cdZ/lQ96oKAzwksWrRIPv/8c8mXL59UqFBBGjRoIMHBwVK0aFHJkiWLz9WHAiPgrwIEiP76zVIvBBBAIIGAXtqicZMmcuTwYXOmer2m0uetzxNc5T+HV+Li5N1eLSUmKn447cSvpkrrZg39p4LUBAEfE3jzzTdl0qRJbkutA8Vq1apJ1apVJSQkRCpVqiSlS5eWrFmzur2eRAQQ8JwAAaLnbMkZAQQQ8CqBX3/9Vfr162eV6dkR0yW4Vj3r2B93fv7ifVn4XXwQ3LLD/fL5uFH+WE3q5CUCG/edlDnrD8nCjYfl/IU4l1LVCikkbW4vLu3rlJBsWW9yOe/vCe+//75MmDAh2dXMkyePdOnSRe6991657bbbkn0fFyKAwI0JECDemB93I4AAAj4jMGDAAPnxxx9Nee9odp88Oui/mUx9phIpLOi+7Rvlo4H/Z+7Kmi1AFv65QMqXL5/CXLgcgZQJRJ+4IHM2HJJ5KlCMiD7jcnOxwrmkVe3i0qV+aSmaP4fLeX9N0KMYpkyZImFhYXLp0iVZvHix6LTkbE2bNpVXXnlFKleunJzLuSadBc6dOydjx46VXbt2ycsvv2x6gdO5CDwuDQUIENMQk6wQQAABbxbQs5fu27fPFPHxwWPk9sbtvLm4aVa2sYMekbDQ1Sa/Pv0GyKsvDUyzvMkIgaQElmw9Kku2xshf24/KqdOXXC5vUKuYNKtZTBrfUlRyZc9c7+F1795dli5dKvXq1ZPhw4dLTEyM7N69WzZv3iyrV6+WvXv3unjpZXp0jyKb9wicP39eHnzwQQkNDTWF+uKLL6RFixbeU0BKkmIBAsQUk3EDAggg4HsCx44dk9tvv90q+MiftkqOXP43c6lVQaedpT99LT9MeMuk3NOsrUz7KvlD3JyyYReBGxI4c+GKLNpyRJZtOyqrVbAYd/mqLb/cuQOkYc2i0rBaEWlUvYhkzeL/Q1CbqHeidRB4yy23yO+//27z0Af63Pjx4+W7776znRs3bpx06NDBlpZZDy5cuGB6Vhs2bCidO2fMhGMDBw6U2bNnW18BAaJF4bM7BIg++9VRcAQQQCD5AqtWrZKHHnrI3HDrPW2k52vjkn+zj1958uhhGfZkC7l4/qyUDKokq5Yt9PEaUXxfF4hSQ1CXql7FFf8ckw3qJ+FWtFAuubt6YWlcvajcVblQwtN+cxwUFGTqUqJECdNjmFjFdM9Ujx49RP+hy7Hpnsdy5co5DjPtp/Mf/zLC5KuvvpK33or/A5zjSyBAdEj47icBou9+d5QcAQQQSLbA119/Lf/73//M9U+8/qnUqp+5hv98OfRpCV0xz9R/ydotUr54/mTbcSECnhTYpd5R1O8rLlDvKx5TgWPCrVypfNKgWmFpUqOoVC/jP+326tWr1vvAejKa7du3J6y67VgPPe3YsaP1zuJjjz0mb7/9tu2azHjgHCB+/PHH0qlTp3Rj2LRpk9x3330uzyNAdCHxuQQCRJ/7yigwAgggkHKB1157TaZOnWpuHP1HmNyUydYcmzt9nMz5+qP4+k/6Tu5remfKEbkDAQ8KnFaznupAceHmI7J51wm3T6pRqaA0vKWIeWexZMGcbq/xlUQ9SY1e2sKxhYeHO3YT/Zw1a5a89NJL5rx+b3HmzJmJXptZTsTGxkrNmjVNdZ988knrD4Gerr+elKZVq1YSERHh8igCRBcSn0sgQPS5r4wCI4AAAikX6KImEFijJn0oERQsgz+bm/IMfPyObWsWy8TXnzS1eOqVYfLKU918skYvTt4iJ89eTnbZs6o5T3IEZJXs2bKYn4BsN5njALXEQo6ALGqpBc9NiqLfoQtQ+eu/RehPvayDTnN8mjR1UhdBl0OXzXFt/HX6nM7DcZ/K499rdXr8uf/uvybqf9dE/VwT1TklV9X+Vb3vSLM+49N0D5bzNfoefa/Ow3Gf/ow/Vmnmen2vc9p/+ZvrVIbxeTqu/7c8Jk9H2eLzcJTLyl/tXFGJugwHjp2XXQfPyL7os3L6jOvENlmVSdkSeaV+1cLSo1k5yZPD99YK1AGGXvPQse3Zs0eyZcvmOHT7+ccff0jfvn3NucTeW3R7ox8nOjvec889Mm3atHSp7aJFi0QP+3W3ESC6U/GtNAJE3/q+KC0CCPi4gPo9UXYcPC071c9SNbvhOvX+UfHCOeWHV+7yaM26PNRV1qxaKUFVbpUXRv/g0Wd5Y+b6PcTXH7nbFK1F5+7yxUdDvbGY1y3Tk59slK273fcsXfdGTvq1QFDJvFJb9Sx2vqukVLo5r8/UVc98WaVKFau8eoipHmqa2Hb8+HF59NFHZevWreYSPZOpntE04abzXbFihezYsUNOnjwpgYGBot9xrFOnjjWkNeE93nwcFxd33cDZeahuhQoVzNIh6VUfPdtsVFSU6cHs1auX9d0QIKbXN+C55xAges6WnBFAIJMLxJ6LU8HgKfVzRvUGnJawqDMSoX7cbas/auYuOc3SnujVV/6c/4eUKBcigyf+kWb5+lJG/3ukvsQePSQhterKgl9m+VLRTVnX7j4un83bp4LEkz5XdgqcPgLvP1FLLZdRJH0edoNPuXz5slSqVMnKRQcbOphLuOkAacGCBTJkyBDbJDV6cpRmzez/buqA8IEHHjDrLCbMRx/rtRSHDRsmJUuWdHfao2nr1683ywzlz59fWrZsKTfddFOiz9PrROqZW7///nurznpIrV4H8rbbbnO5r1q1ata7mckZquuSQRok6N5Lx3BTAsQ0AM3gLAgQM/gL4PEIIOD7AucvXZE9h8/KbhX87VWfew+dkT3R5+TESdcJJ9zVNleubPLAPaXlmTYV3Z1Ok7SBLwyS2d/PlMI3l5E3pixJkzx9LZPRLz4ke7ask7KVa8qcX3+RfDkS/wXNW+sWHnNOnv9ysxw8clayqF8w9e+Y+hdN50+TroZg6nT1YX3qOunrsphz6tPpPufrblIHtuME+djvj3+2zkvfo8+pgZT/PlOn/Vc2x3lH3uqUOe84dpx3l27qooaXOp6T2C/XOv3KlasSp4d6qh89ZDN+X9S+Sr8SPwTUpKvr9PDOOPWpLou/1kr7dxioGnaq71PJZuhn/P067/hhqFd0fvpZegip+o++Vn+aYaM6/d+f9GpPL3SpIv93V6n0etwNPce550tn9OKLL4oeLlmoUCEpUKCACTZ0L+CGDRusIMnxwDZt2sinn37qODSfZ8+elYcffthai892MsGBXtBdT3iTcNOTruj3HCMjI+XUqVNSsGBBKVKkiFSvXt30XgYEBCS8xXase9O+/PJL0T15Xbp0Ecf1CWf67Nevn/UupS0DdfDjjz/KgAEDEiZbx7reuv7Om17CyDHD6759+9T/D9X/WdJ5cw5Sp0yZIo0bN07nEvC4tBQgQExLTfJCAAG/F9gWecr0BDoCwf2Hz8vR4+eTrLf+xTlXzmxy9lzi7499PaiuhKj3ijyx9Xuuv/z680+Sr0ARGTZzjSce4fV5jux3r0SGbZXsOXPJ+s3/SKAPBohej0wBUy1wOe6qXIy7Jhcux6kfta9+Lqg/Pl1S6TGxl0T3IG9SvccH1R+hnLfc6g9MpYvnMcNM+7fz3B+ZnJ+ZVvuOZS5Skp/uSdMBSM6c9kl69NqII0eOtGVVtmxZ0T120dHRVgDluEBP6KIn79J/VNAT5gwaNMgEZ47zCT/1tXoY5fU2PYvoRx/FT4blmFF03rx50rt3b5fbdCBat25dW/pnn31mejhtiW4ONm7cKIULF7bOaBNdR73t3LnTZrNavXuuXXTgqK975513TBBu3ZxGO87fpZ48SD+LzXcFCBB997uj5Agg4GEB3Su4NTxWtkWeln9UYLg74pTpGUjqsTlzZpUg9S5QJfVuUME8AebeDTuOJ3qb7kHs0qisPNWqfKLX3OiJHj17yqKFC1VwlFs++HnLjWbnk/cPe7KlHI7cI7ny5Jft27aYHi+frAiFzjQCi7bEyKyVB+Tvna7/ftRVQ0n10hdNaxST/OrfEF/cnIOK5JZ/+vTp0qBBA9vlehjqnXfeaQWB+l3GX375xRrCqif+2bZtm4wfP15+//13617dQ6l7Mvv06SPLly+30h07OsDUPZOO3rl27drJJ598YoJKxzXOnxMnTpR3333XJA0ePFhatGghHTp0sIZ/Ol+b8B1KHVTpINV50xPx6OGo69ats5Vv1KhRcv/991uXNmnSRPbu3WuOnYfqfvPNN2ZYqnWh2tGBmzZMakIg53uS2tf+FSv+98eJX3/91ZpZNal7Oe+dAgSI3vm9UCoEEEhHAT3EbGfUWTVxzCnZpYaJ7lYzB+5SweAl9df7pLZihXNJsFqnLKRUXqmsPiurzxIFcprhapMXhcuMxRHX7TVsX7+UdGtYVsoVy53Uo27o/INqFlP9l2S9jZm354by8tWbX+92j5yMiZJipcrJur+W+mo1KLcfC8TEXpQ5G9WaiH8fMX+QSljVkHKB6h3DoiowLCLliyU+oUvC+7z12HlYYkrKqAOfu++On3RK37ds2TIzBNSRh37PsFs39zMV62Gkq1atMkNIn376aXNdaGio41Z59tlnpXPnzqKDQx1EJewBdPfuo+Nm5/VmdQCoJ8txBJf6Gj1ZjqOnTx/rdw2zZ89uevcSDsnUdXjooYesQE73Xs6fP1/fJkOHDpXu3bubff0fHbg6Ju/RwWTRokVNT+Tnn39uXeO8M3z4cJO3c9qN7OvhuDVq1LCy+PPPP21LmFgn2PEZAQJEn/mqKCgCCKSFwLmLV+To6UsqCDwj8zYdNu8NJhyyldhzyqngL7hkPqlSOj4QrKICwrxq2GjCbb765W7qknAJCz+V8JR1rAPL1x+uKnUqFrTSPLnj/MtF36FfSrU7G3vycV6Z9+D/qy1nT52U4Oq3yZ9zfvLKMlKozCewbPtRWa5+1qm1Dw+pd0wTbiVVIHhX1ULSpGZRqVMhff69SFgGTx07D43UvWU6qNNDQnVQdeTIEfMeog42dC9ews15IpTJkyfLG2+8YS7R7//pSW2S00Ome+yc11LUa8U2bNjQ9qg333xTJk2aZKXppTnmzJnj9j0/5yGm1g3/7ug8dB3vuOMO69TcuXPNUh/6ncgPPvjAStf7//d//2cd6x3nRelnz54ttWvXts7ra9euXWuOdU+oDmKdy2xd+O9OWs92evjwYdOD63jOX3/9JaVK+ca7sI4y82kXIEC0e3CEAAJ+LPDJH3tk6vz9SdYwm1psraIOAtVPFRUUVi0TKFXVZ1LbTtX7qHsNF6vFrq+3lVC9hd+8UFdyZk+/iQT0X5L1uyd6a9DhUenS702zn5n+83yHahJ36aLc0aCZfD/9q8xUderqRQLH1B+oVu86pn5OyDo19PzkqYsupSukRiE0UENI29UpLrWCCric95cEPVGMo/cusUXe9RBQ/V6d7p2bMWOGVXU9jFT3lunPESNGmKGf+qTuidPvKCa17d+/Xxo1amRdlrBXTp/QS2bUr1/f1guo0/VQVd1rl3B7/fXX3T5bT1zTvHlzc7l+H1H3SurNEZA69wB27dpV3nvvPXM+4X90oJw1a1bbO4b6Gt2buHRp/KgIXf8lS5ZYt+qeTB086xlRHcNf9Undi5pWs7nqmVOdA2sdrBYvXtwqAzu+J0CA6HvfGSVGAIFUCjz5yQaXJQKKFMol5YrnkgrqnUE9RLSqCgorqAkfUrLpWUwnqcDwWzWcNKlhqXnyZJeh3arJ3VX+m2AgJc9K7bX6lzDHrH2FipeWN7/OXEMsz8SekFe71DF8be/rIhNG2yezSK0r9yGQHIHtB07Lml3HZYNaxzJU/VxWE9Ak3LJnzyr1qqv3CvUQUhUc5lTH/r498cQTonsI9ZbwnTx3dXfuRdPnHUGdXgLDsUC8fmcvsaGVznnqSWJeeuklk6SXxvjwww+dT5t9PRRTB4MJNz1UVAdhCSfK6du3r/zxh30ZIT07qx626tich6E6egqdZyFNbIZVx/3uPp17EJ3P63Uj3377bdPbmXDdSXezoTrfm5J9HcBrd8emZ57Vs7+y+a4AAaLvfneUHAEEUiiwZGuMbFeTzZRUQaGeQKaiCgRz3eAvYb+tj5apKjAMT2R9Q90bmUM9wzF7ad+OleTxJkEpLHnaXO78S0j/D2dKxVviA6a0yd27c/lrzrfy7eghppC9eveV14YM9u4CUzqfF1itAsKl22JkQ9hJiVBD2hPbbq1cSBrpwFBNOHOz6jnMTJueyMXRK6gXsv/hhx+SrL6eTVT3vOnNEVQOHDhQ9LBLveleQR2EJbXpwE8HgHp7+eWXRb+P6LzpXkjdI5jYppei0M913u677z4zFNSRpt+T1IGr7vVzbCtXrhTdS6i3xx57zARwzmsI6sl29LNz507+e+mtW7eWf/75x/EI8+luMhrnVw0S67G1ZZLMAz0xjp6Mx7HpP0jqpUrYfFeAANF3vztKjgACGSiwWc1u+rUKDFeEHkm0FG3VemT71Uyo2/eeNNe0rldS3nywaqLXe/qE8y8HrR7pJ+2623+58fTzMzL/CUN6yD/rl5kiOL+7lJFl4tkIZHYB53fv9LINevmGpDbnYamO4Zg6uHPMTprc9+uc31vUw1R1UBYcHCx6ZlMdPDqGbOry6PcOda+k7iF0TAaj05966ikz86hj3cGEk+7oSWrKlCmjL7U25/f19PN0D6ruCdX/Ljk2HSy///77yZ7oxfmPfzoPXZ/Fixe7DPPUs5e++uqr5jHJdXKU6XqfusdQT+zj2PSMsXnzJv1ahuN6Pr1PgADR+74TSoQAAl4sEHsuTg0n3S+zVHCoF8F2t+np5x9pVEbmbDgsc1dHmUtqhRSUcb1ulQDVo5hRm/MU7KUrVpPnPvhWcuZO2XDajCr7jTz3RMwheaNbfZNF8RKlZO3qv24kO+5FAIFUCMTGxpoeQr0cQ0hIiJlkZc+ePbbhl7t27ZIcOXK4zV3PlKnfNXT0HuqLHLNxOv/xS6frIC9Xrlx6N9FNzyaanLX6dI+efodQT55z6NAhadu2re2dRP3+oH5nMDAwUJyX7dC9i4kteO88Oc+aNWvkwoULJt+Ek/Hcdttt0qxZM7nrrruMmS5Dwk271qxZ05asg139LmLCTU/+o4NJx5ZW7wrq4ba6N9SxJVyL0ZHOp+8IECD6zndFSRFAIIMFflwTJVMXRUjUEdcZ9XTRQoLyy8NqyYo2txeXMb/vlhl/hpsSl1ST0ozufauUUTOXZuS2fv1629pZzR/sIx172tfdysjyeerZK36bIbPG/s9k/9TT/eSVl+PfO/LU88gXAQRcBZzfE3Sc1b2GzstAjBkzxizRoIPEK1euyIkTJ+TgwYOi/+3SQYhzAKV7rPR6gHqh+4Tv/iV3Aha9gPy4ceMcxXH5bNWqlegyOb9rqAPc9u3b28qie+x0D+Zvv/1mZiPVxzr4SqwXbfTo0abs+oGOCW90UKt7RJ09EhZIv/uog0sd5OllJfSsqMePH7fNIKqHqzrex0x4vz52ntAn4XIh7q5PTprze5X6eh34J2cW2eTkzTUZI0CAmDHuPBUBBHxIYP2eEzJFTUKzbvsxt6XWMw52bVxGuqnF7vX21cJw+ey33WY/R46sMvLJWnJnJe+Ynl7/9VsP/3Fs/YZPk5Bb73Ic+uXnxNd7ybY1i0zd3A358stKUykEvEygR48esmhR/P8Pb7RoOkjSPYl6DUG96fUBdS+i3lIydPLatWvy3XffWZPVmAzUf/SQ0ueee070u32O4aOOc/pTv++n6+NY01AHhHotRj0xi14Co0qVKqYczvc471+8eNHMghoVFSV6qQu95qLedEA8YcIE0aM9krPpOut3Mh3vZepyOOfnLg/d46h7JHWwrZfl6NSpk7vLUpTmvFakLsP27dtTdD8Xe58AAaL3fSeUCAEEvETgSOwFmaKGkv6wNDLREj3cLEgebVxWCuWN/0Xl2xUH5OMfdlrXD3mkmnSoU8I6zuidhH/p1cGhDhL9dftn3VKZ8FpPU732He+VT8aO8deqUi8EvFrAudcstQXVgVvPnj3NhCgJh5DqWUl1sKcnnNHv8KVku3z5suhlLy5duiTlypUz7/Aldb8eFqp7NU+fPm2Gc+rF6VOy6SBR97I5T2DjuD8mJsa8m6jfydS9p7rX0t3mPPuqDlp1D2NyJodZuHChWWpDv7up63ujm7bQS2joXlPdC6qX3WDzbQECRN/+/ig9Agh4SODbFZEyfXGkxBw/7/YJreqWNO8ZhpT470X8+X8fkdenbLGu79WukjzRPGNmLLUKkWDH8ZfrsLAw64weZqqHm/rbdjQ6Qj5/s49E799lqqYXjm7atKm/VZP6IOATAnrIqJ74RS9VceDAATM0UvdmnTlzxvzodwx1r5bugdJr6OneOB106WGo+li/C6h/MuOmnfTIDx0E6qGoERERZohp//79JV++fJmRhDp7WIAA0cPAZI8AAr4lsGrncbXY/X4JVYtYu9vuqFZYBYZlpV5IIdvp3YfOyqMj1ogesqS3DvVLyZAHqtiu8ZYDPRvfO++8YxUnZ+68asKab0RPXONP26gBD8j+fzaZKr300iDp1+8Zf6oedUEAAQQQQMAjAgSIHmElUwQQ8DWBA6qncIqagObXlQfcFr1cqbzSTQ0lbe9muOgVNZtp89eWyfnzcebeO9WaZmPUe4feuukhUfpdRP1XaMd2c1Cw9Bn6pRQuXsqR5NOfM8e+Lit/m27qUKFSZVm8cL5P14fCI4AAAgggkF4CBIjpJc1zEEDAawW+XhIhM5ZEykn1zmHCLU/uAOmuhonqCWiyZrkp4Wlz3ObNFXIi9qLZL186n4zpVUuK5nc/VbvbDDIgUc/cp2fwc950kPjqZ3Odk3xyf9oHg2Ttgv8W3E5synefrByFRgABBBBAwMMCBIgeBiZ7BBDwXoEl247K1MXhsm1P/EL2CUvapUlZMwHN9YK9x8eslx37Ys2t+dRENaN61ZQaZQMTZuV1x0ePHjWz6Ol1vZw3Xw4ST8REyxdv9ZXIsK1WlR5++GGz4LSVwA4CCCCAAAIIXFeAAPG6PJxEAAF/FNin1jGcpJaimL822m31WtxZQh5R6xlWUcNKr7e9q2Yr/UXNWurYhj5eQ1rUKuY49PrPX375xbZItaPAFarXlgGjZjkOfeJzy6qFMmlYP4m7fMkqr546fvbs2WaiCyuRHQQQQAABBBC4rgAB4nV5OIkAAv4koN8VnKzWM5yhlq44e+6yS9VqBheUx5oESf2qhV3OJUz4ZnmkjJ4dPzumPvdsp2ATVCa8ztuP9bTwL774oksxi5UqLy+M/Uly5bl+kOxyYzonXLt6VebOGCd/TB1te3JAQICMHTtW2rRpY0vnAAEEEEAAAQSuL0CAeH0fziKAgJ8I6CUopi4Jl7DwUy41urlobunZIkg63lHS5Zy7hB/XRMnwb/+xTj3YNEgGdqhkHfvazrRp02TIkCEuxc4WkEOeHTlDyle91eWcNyTs2LBc5qngcM/W9bbi5A8MlLFjxpi1yWwnOEAAAQQQQACBJAUIEJMk4gIEEPBlgZ1RZ0yv4eIN9nftdJ2yBWSRJ1pXkG4Ny0hAtizJquYfGw/LW1P/e8etae2b5d1u1ZN1rzdf9OWXX8rbb7/ttoiPPD9C6ra63+25jEi8eP6c6jUcKwtnfeby+JtLlJQxoz+WunXrupwjAQEEEEAAAQSSFiBATNqIKxBAwAcFzl+6IpPVUNJv1JDSS2o/4fZA4zJqApogKR6Y/NlGtx84Lf0n/i2nz8S/51ajUkH5/JnbE2bts8effPKJjBgxwm35G3fqIa269pM8+Qu4PZ9eiZv/+lP1Go61TUTjeHb5ChVNcFizZk1HEp8IIIAAAgggkEIBAsQUgnE5Agh4v8Bv66PV7KQREq56DxNuDW8rLo+rIaHV1HIUKdkux12Vp1RwuHX3CXObHpY6uX8dKZAnICXZeP21n3/+uYxQy19cuhi/bIdzgUuUC1FB4rNye6O2zsnpsr9p6RxZPf87+Wf9MrfPa9ailbzxvyESFBTk9jyJCCCAAAIIIJA8AQLE5DlxFQII+IDA5vBY+VoFhitCj7iUNqRcoDzZopw0rFbE5VxyEoZ9v0N+XXnQXJo9exb5vP8dUrmkd0/gkpx6ubtm/fr18s57I2XT+tXuTstdbR+S1ipQLFj0Zrfn0zJxzfzZKjCcJXu2rEs02wEDBsrAgQMSPc8JBBBAAAEEEEi+AAFi8q24EgEEvFQg9lycTFq0X2ap4PCqmqnUeSuohpD2blNBOtVN3gQ0zvc69mevPigjZu5wHMqIXrVSHWhamXj5TlxcnAxVQeLkLz51W9IiJcpK485PyK33tJb8BVMXdLvNWCXu3rxWdmxaoXoLl0rkrv/e90x4fekyQfK66jVs1apVwlMcI4AAAggggEAqBQgQUwnHbQgg4B0CekbRqYsiJEqtbZhw69WuonRrVFZyqMloUrvtPnRGnpnwt8Seih9y+WKXKvLAXaVSm53P3Td37lzVmzhcIvfvdVv23PkKSC0VJN5av5VUrdPQ7TXJSQwLXSOhK+fJzo0r5HDkniRvadmqtbw25FWGlCYpxQUIIIAAAgikTIAAMWVeXI0AAl4isH7PCTOcdO22oy4l6lC/lPRoVk5KFszpci6lCQO+DJXVW+Of0b1VeXlazXqa2bZDhw7JmHHjZf6CBRJzKCrR6petXFP0e4rFSpaXYmUqSsnyIVK0pP2dwHOnT8mJmCg5GRMtx49ESXR4mGxWgeGp467Dgt09qGXrdvLIw11YwsIdDmkIIIAAAgikgQABYhogkgUCCKSfwFHVkzdJzUz6w9JIl4feUa2w9FZBXI2ygS7nUptw//ur5eDhs9KgVjH54PEaqc3GL+47f/68fP/bfJk3b4GsWf6nXLpwPsl65ciVW4qrYPHShQsmMLx43rWnN8lM1AUd7rtfuqnAsF69esm5nGsQQAABBBBAIJUCBIiphOM2BBBIf4FvV0TK9MWREnPcHpgElcwnT6n3DBvfkrbvwuka6iGmx9WyFndWKpT+FfbiJ+6PiJLZc+bL+vUbZPeObckaFprS6pSrGCL1GzSQLp3vlVtvvTWlt3M9AggggAACCKRCgAAxFWjcggAC6Suwaudxtdj9fgndFb/EhOPpuXMHyDPtK8r9meidQEfdvenzxPlrsnNfpGzZslU2h/4t20PXy+6tG1JVxKAKwdK2XXtp0eQeqV27dqry4CYEEEAAAQQQSL0AAWLq7bgTAQQ8LHBA9RROURPQ/LrygMuTHm1ZTno0LSe5c2R1OUdCxgtcuiISFh4lUdHRcuiQ+lGfh9XnEfU+4xn1HmKhQoWlcOFCUqRIYSmmfooXLSwVK5SX4ODgjC88JUAAAQQQQCATCxAgZuIvn6oj4M0CXy+JUMNJI6zZQx1lbXFnCendsryUKZzLkcQnAggggAACCCCAQBoJECCmESTZIIBA2ggs3hoj01RwuG3PSVuGNYMLyjNtK0otteA9GwIIIIAAAggggIBnBAgQPeNKrgggkEKBfWodw0kLw2X+2mjbncWL5JL+HYOlaY2itnQOEEAAAQQQQAABBNJegAAx7U3JEQEEUiBw5eo1NQFNuMxQw0nPnrts3Zk1603ytAoMH2lYxkpjBwEEEEAAAQQQQMCzAgSInvUldwQQuI7A/L+PyNQl4Woyk1O2qx5oXEb6tKwg+XJls6VzgAACCCCAAAIIIOBZAQJEz/qSOwIIuBHYGXXG9Bou3nDIdlYvRv+cWraibJHctnQOEEAAAQQQQAABBNJHgAAxfZx5CgIIKIHzau2DSWo46bdqOOklvQ7Cv1tIUKB6z7Ci1K5Q0JHEJwIIIIAAAggggEAGCBAgZgA6j0QgMwr8tj5apqrAMFz1Hjq2AoE5pJ/qMWxfp4QjiU8EEEAAAQQQQACBDBQgQMxAfB6NQGYQ2BweK1+rwHBF6BFbdXu1qyRPNA+ypXGAAAIIIIAAAgggkLECBIgZ68/TEfBbgdhzcWo46X6ZpYLDq2qmUsfWvn4peVatZxiYO8CRxCcCCCCAAAIIIICAlwgQIHrJF0ExEPAngdmrD8q0xZESpdY2dGx3VCssA9WyFRWK53Ek8YkAAggggAACCCDgZQIEiF72hVAcBHxZYPWuY2rZikjZ8M8xqxplS+RVE9BUkvpVCltp7CCAAAIIIIAAAgh4pwABond+L5QKAZ8SiDh6XqYsDpff/zpolTtXzqzyjOoxfOCuUlYaOwgggAACCCCAAALeLUCA6N3fD6VDwCcECBB94muikAgggAACCCCAQJICBIhJEnEBAggkJhB35ZrpOfx2aaScPnPJuqxbi3LST01Ew4YAAggggAACCCDgWwIEiL71fVFaBLxG4I+Nh2XaknDZE3naKlOzOjfLC/cGS6G82a00dhBAAAEEEEAAAQR8R4AA0Xe+K0qKgFcIhO6PX9dw5eb/1jW8pWIBGagCw+pl8ntFGSkEAggggAACCCCAQOoECBBT58ZdCGQ6gagTF1SPYYTMXhZp1b14kdzybPuK0rxWMSuNHQQQQAABBBBAAAHfFSBA9N3vjpIjkC4Cl+OuytSlETJTvWcYe/q/9wx7t68kPZsFpUsZeAgCCCCAAAIIIIBA+ggQIKaPM09BwCcFflkXLTNUYLj/oP09w5c7V5b8ubL5ZJ0oNAIIIIAAAggggEDiAgSIidtwBoFMK/DXjmMyfVmEWvD+uGVQoXQ+ebFziNxevoCVxg4CCCCAAAIIIICAfwkQIPrX90ltELghgZ1RZ1RgGCnz10RZ+eTIoRe8ryRd7i5tpbGDAAIIIIAAAggg4J8CBIj++b1SKwRSJHDizGX1nmG4fKeGk16+fNW6994GpUUPJ81yk5XEDgIIIIAAAggggIAfCxAg+vGXS9UQSI7ADNVjOHP5ATl89Jx1ec3ggvJipxAJKZHXSmMHAQQQQAABBBBAwP8FCBD9/zumhgi4FZj/9xGZod4z3LEv1jpfsEBO6d8xWFrfxrIVFgo7CCCAAAIIIIBAJhIgQMxEXzZVRUALbNx3UqYviRTnhe51+qMty8kzbSrqXTYEEEAAAQQQQACBTCpAgJhJv3iqnfkEIo+dl6lqoftfVhywVf7umkVlkBpOerPqPWRDAAEEEEAAAQQQyNwCBIiZ+/un9plA4PylKyYwnKXeNTxz9rJV4zI35zHDSRtULWylsYMAAggggAACCCCQuQUIEDP390/t/VzgR7VcxTdqZtKI6DNWTbNnzyI9W1eQx5sEWWnsIIAAAggggAACCCCgBQgQaQcI+KHAsu1HZfrSCAnddcJWu5Z1S8qg+0Ikb86stnQOEEAAAQQQQAABBBDQAgSItAME/Ehg+4HTKjCMlIXro221qlo+UAaoxe5rlStgS+cAAQQQQAABBBBAAAFnAQJEZw32EfBRgZhTF9VC9xHygwoOr1y5ZtWiYGAO6dW6vHSuV8pKYwcBBBBAAAEEEEAAgcQECBATkyEdAR8QuKZiQR0Yzlx2QI6dOG8r8f2NyshLajgpGwIIIIAAAggggAACyRUgQEyuFNch4GUCf2w8bBa6Dws/ZSvZndWLyIAOlaRC8Ty2dA4QQAABBBBAAAEEEEhKgAAxKSHOI+BlAmt3HzfvGa7ZetRWstJq2YrerSpIy1uL2dI5QAABBBBAAAEEEEAguQIEiMmV4joEMlhg/5FzZjjp738dtJUkICCLdG1WTp5qVd6WzgECCCCAAAIIIIAAAikVIEBMqRjXI5DOAqcvxJmF7r9ffkDOnftvoXtdjGZ1SsiA9hWlqJqMhg0BBBBAAAEEEEAAgRsVIEC8UUHuR8CDAt+p3sJvl0XKwcNnbU+pWqGA9FE9hvVCCtnSOUAAAQQQQAABBBBA4EYECBBvRI97EfCQwOKtMTJDzU66ZfdJ2xMKBuaUR5qUkW6NytrSOUAAAQQQQAABBBBAIC0ECBDTQpE8EEgjgS0RsWoCmgOyZOMhlxzvvae0DOwQLDnVO4dsCCCAAAIIIIAAAgh4QoAA0ROq5IlACgUOnbxg3jOcrYaT6rUNnbc7qhVWw0kryC1l8zsns48AAggggAACCCCAQJoLECCmOSkZIpB8gbgr12SaCgpnLo2UE7EXbDfqZSu6NS4r99UtaUvnAAEEEEAAAQQQQAABTwkQIHpKlnwRSELg1/XR8o0KDPceOG27Mnv2rPJg4zLyTJuKtnQOEEAAAQQQQAABBBDwtAABoqeFyR+BBAKrdx2TGcsOyNpt9oXu9WVNa98sfVtXkLJFciW4i0MEEEAAAQQQQAABBDwvQIDoeWOegIAR2H3orExTM5POXR3lIlKlfKB0bxIkTWsUdTlHAgIIIIAAAggggAAC6SVAgJhe0jwn0wqcPHtZBYbh8p3qNbx48YrNoYBa4P5htWTFY01YtsIGwwECCCCAAAIIIIBAhggQIGYIOw/NLALfrjhgFro/FHPOpcodG5SWvmqx+0J5s7ucIwEBBBBAAAEEEEAAgYwQIEDMCHWe6fcCf4YeUe8ZRsj2vbEuddXLVjyqegzvrFTI5RwJCCCAAAIIIIAAAghkpAABYkbq82y/EwjdH6uGk0bK8r8Pu9StVHG9bEUZ6VSvlMs5EhBAAAEEEEAAAQQQ8AYBAkRv+BYog88LHDh+XqYtiZCflh9wqUtAQBa1bEVZ6dOyvARky+JyngQEEEAAAQQQQAABBLxFgADRW74JyuGTAhcvXzU9hjPVYvenTl90qUMTtWxFdzWctGqpfC7nSEAAAQQQQAABBBBAwNsECBC97RuhPD4j8NPaKLPQfXjUGZcyVy4XKI+qXsPmtYq5nCMBAQQQQAABBBBAAAFvFSBA9NZvhnJ5rcCew2flw5/CZOOOYy5lLJA/hzyk3jN8XK1pyIYAAggggAACCCCAgK8JECD62jdGeTNc4LkvQmXttqMu5ehQv5Q83rSclCqU0+UcCQgggAACCCCAAAII+IIAAaIvfEuU0WsE/th4WEb9uEtOn7lklalO1ULSXQWGd1YqaKWxgwACCCCAAAIIIICALwoQIPrit0aZM0Rgwrx9MmXuXuvZetmKR9Rw0s4sW2GZsIMAAggggAACCCDg2wIEiL79/VH6dBR4e9Y/MmdVlGRTS1U8qN8zVL2G+XJlS8cS8CgEEEAAAQQQQAABBDwrQIDoWV9y9zOBtbtPqKAwQC1bkdfPakZ1EEAAAQQQQAABBBAQIUCkFSCAAAIIIIAAAggggAACCBgBAkQaAgIIIIAAAggggAACCCCAgBEgQKQhIIAAAggggAACCCCAAAIIGAECRBoCAggggAACCCCAAAIIIICAESBApCEggAACCCCAAAIIIIAAAggYAQJEGgICCCCAAAIIIIAAAggggIARIECkISCAAAIIIIAAAggggAACCBgBAkQagovA5cuXZcuWLbJp0yZZs2aNnDp1yrom5ugxiY6Oljh1Tf78+SV/YKAEBuaXwPyB6jif2tef+aV06dISFBQkZcqUkVKlSkmWLFmsPNhBAAEEEEAAAQQQQAAB7xQgQPTO7yVDSrVixQr56quvZN26dbag8EYLExAQYIJFR8Cog0f9U7t2bSlWrNiNZs/9CCCAAAIIIIAAAgggkEYCBIhpBOmr2cTFxcnatWvlu+++k9mzZydajZy5ckvBoqUkb8FCEhm2TS6cO5Potck9Ubx4cenatasMGDAgubdwHQIIIIAAAggggAACCHhQgADRg7jenHVUVJR8+umn8uNPP8up2JO2ombJklVur3eP1Lq7uRSvWEvyFSkpefIXsF0TvT9MInaGSlT4Lonev1N2bvpLrl29artGH1S+7W5p3+MlyZk7j2xa9ocs/O4zuXj+rO06HSAOHDjQlsYBAggggAACCCCAAAIIpL8AAWL6m2f4E6dMmSLjJ3wqh6KjbGWp27C53N6kk1Sq01QCsme3nUvq4NihA7Jjw3L5R/3oz0sXzrncUqtBK7mtYXu5vVFbmTTsWRUwzjHXECC6UJGAAAIIIIAAAggggECGCBAgZgh7xjx0+fLlMnHiRNGfzltQlVrS+L6eUrtJe+fkVO+fOn7UBIk7Ni6XbWsWy/mz/01yozMtUqKsHI2OsOWvexAZamoj4QABBBBAAAEEEEAAgXQXIEBMd/L0f6BjOKnuOUy4Nbn/CenU+9WEyWl2fPrEMdm6eqFsXaN+Vi+Sa9dch6E6HtawcVP535DBEhIS4kjiEwEEEEAAAQQQQAABBNJRgAAxHbEz4lHh4eHSq1cv2blzp8vjuz4/XOq1esAl3VMJMQfDrWAxLHS128dUrBQioz8eJTVq1HB7nkQEEEAAAQQQQAABBBDwnAABoudsMzznw4cPS+/eveXvv/92Kcvzo2dLOTW0NKO2yLCtqldxkWxft0TCd4S6FEPPbvryyy9LgQL2yXFcLiQBAQQQQAABBBBAAAEE0kyAADHNKL0ro9jYWOnTp4+sWrXKpWAjf94qOXLmcknPqIT9KkD8Z/1SWb/oZ4k5uN8qRs2aNeWdd96RWrUyLpC1CsMOAggggAACCCCAAAKZQIAA0Q+/5AsXLpjgcMmSpRX7IAAABR9JREFUJS61e/Pr5VKoeEmXdG9J+HXyB7LgmwlWcfLkySPvvfee3HvvvVYaOwgggAACCCCAAAIIIOAZAQJEz7hmaK6653Du3LkuZXjqna+k6h2NXNK9LWHWuDdkxa/TbMV64YUX5LnnnrOlcYAAAggggAACCCCAAAJpK0CAmLaeGZ7b1KlT5bXXXnMpx/1PvS6N7nvMJd1bE74e/rwZcupcvgceeEA+/PBD5yT2EUAAAQQQQAABBBBAIA0FCBDTEDOjszp37py069BR9u4OsxWlY89B0vzBPrY0bz+4dPGCTBjyuOzZss5W1BYtWsgXX3xhS+MAAQQQQAABBBBAAAEE0kaAADFtHL0il9GfTJRRI961laV1t+ek7aP9bWm+cqBnOp0wpIeciT1uK/LMmTOlXr16tjQOEEAAAQQQQAABBBBA4MYFCBBv3NArcgg/dEzu69hRjh8+YJUnuGZdeXbkDOvYF3fWLfxZpo543qXo27dvFz2BDRsCCCCAAAIIIIAAAgiknQABYtpZZlhOV6+JPP/WR/LjpI9tZXh2xAwJrlXXluaLB79N/lDmfzPeVvTu3bvL0KFDbWkcIIAAAggggAACCCCAwI0JECDemJ9X3L37+FXp+fB9tgXnfXloqTvUz97oLVtXL7SdGjlypHTp0sWWxgECCCCAAAIIIIAAAgikXoAAMfV2XnHnpSsiX/+5RYb2bm+Vxx+GllqV+Xfnn/XLzPuIzumFCxeW6dOnS9WqVZ2T2UcAAQQQQAABBBBAAIFUChAgphLOW24Lj70m744YJXOnjbGK5C9DS60K/bsz+b3+snHJb7Zk1ke0cXCAAAIIIIAAAggggMANCRAg3hBfxt+8+sAVGfREJ2t4qb8NLXUW1ktejH7xIeckqVOnjvzwww+2NA4QQAABBBBAAAEEEEAgdQIEiKlz84q79PDSGX9FyhvdGpjyZM+ZW179bJ4UKl7SK8rniULM+GiwrJ47y5b1smXLJCgoyJbGAQIIIIAAAggggAACCKRcgAAx5WZec8e+k9dk3MTJ8v34N02ZGnfqIZ37vuY15fNEQfbvCJVR/Tvbsn7jjTekZ8+etjQOEEAAAQQQQAABBBBAIOUCBIgpN/OaO1ZGXJFPhr8mK3+LX+vwlU/nSMnylb2mfJ4qyMfPd5G92zZY2Tdo0MBMVmMlsIMAAggggAACCCCAAAKpEiBATBWbd9w0b/cVGTXoMdmxYblUrdNQnho2yTsK5uFSLPh2gvw66QPbU8LCwiR79uy2NA4QQAABBBBAAAEEEEAgZQIEiCnz8pqrr10T+eS3v2Vkv3tNmRp37imd+wzxmvJ5siBRe3fI+0+1sz3im2++kbvvvtuWxgECCCCAAAIIIIAAAgikTIAAMWVeXnP12csiw8bPlOmjBpkyPdR/mNzd1j7Dp9cU1gMFGdmvo0SGbbNy/uqrr6RZs2bWMTsIIIAAAggggAACCCCQcgECxJSbecUdMeeuyeC33pcF335qytP/g2+lYo07vKJs6VGIeTPGy+9TPrQeNX78eGnXzt6raJ1kBwEEEEAAAQQQQAABBJIlQICYLCbvu0jPYNr/mb4SumKuKdy7s9ZL3sCC3ldQD5XoUMQeebdXSyv3UaNGyf33328ds4MAAggggAACCCCAAAIpFyBATLmZV9yx8+hVefyB1hK1b6cpz5h5e7yiXOlZiEGdasmFc2fMI4cNGybdunVLz8fzLAQQQAABBBBAAAEE/E7g/wEAAP//MpHkVwAAQABJREFU7d0HfBVV2sDhl14DodfQO1IFAYXQREBExALiooC4qOzCig0VWd1dG+IHooCLoEhTWVQEG6h0CyAKSA+9N+mEGsJ33ol3uJNGQu6dTG7+89t4Z87MPeUZF3lzWpbL5hCODCew9Vis3NK4usRcvGDV/a25WzNcG9Ja4ZcfukUO7o5r99ChQ+Whhx5Ka5Z8HwEEEEAAAQQQQACBTC2QhQAxY77/n9bukB6dWtqVz4wB4ujBPSVq1c+WwZNPPikDBgywPThBAAEEEEAAAQQQQACB1AsQIKbezBPf+HLBMvlb7252XTJjgDj59SdkxbzPLYNRo0bJHXfcYXtwggACCCCAAAIIIIAAAqkXIEBMvZknvrFw+Rrpdc9tdl0yY4A4671hMu9/71oGq1evlvDwcNuDEwQQQAABBBBAAAEEEEi9AAFi6s088Y1f1m6Ruzu1tesy7LNVkidfmH2dGU6mjXhGls2dYTV12bJlUrJkyczQbNqIAAIIIIAAAggggEDQBAgQg0Yb3Iy37d4nrZs3swvp96/xcl3TNvZ1Zjh5vX9n2bN1vdXUjz/+WJo1u+KRGdpPGxFAAAEEEEAAAQQQCLQAAWKgRV3K79ixY1K/fn27tLbd+kmXvoPt61A/iT51Qp69u6HdzLVr10pYWObqQbUbzwkCCCCAAAIIIIAAAgESIEAMEKTb2Zw/f16qVatmF1uhZn15/M1P7etQP4la+ZOMfuZ+q5kVK1aUhQsXhnqTaR8CCCCAAAIIIIAAAkEXIEAMOnHwCqhRq7acjT5tF/DSR0ulQOFi9nUon8z/ZIJ8Pv5Vq4mdO3eW0aNHh3JzaRsCCCCAAAIIIIAAAq4IECC6whycQu6+t6f88vMSO/MHnx8j9Vt0sK9D+WTUE/fK1rW/WE0cPHiw9O/fP5SbS9sQQAABBBBAAAEEEHBFgADRFebgFPL68BEyZvQoO/NmHbtLj8desa9D9WTDL4vknecftJs3adIkadWqlX3NCQIIIIAAAggggAACCFybAAHitbl54lvz58+XPn36OOoyYPiHUrVuE0daqF1MfeMpWf7dZ3azVqxYIcWKZY6htXajOUEAAQQQQAABBBBAIAgCBIhBQHUrS13JtGHDhhIbG2sXWa95e+k7dKx9HWonB/dsl9ce7iiXYi5aTbvrrrtkxIgRodZM2oMAAggggAACCCCAQLoIECCmC3vgCu3atav89ttvjgz7Dn1H6jW/xZEWKhdfTxklc6a+ZTdn2rRp0rx5c/uaEwQQQAABBBBAAAEEELh2AQLEa7fzxDcnT54sQ4cOddSlar0mMuD1Dx1poXCx+fdl8vZT99lN0XmHOv+QAwEEEEAAAQQQQAABBAIjQIAYGMd0y0X3Q7z11ltly5Ytjjr0eOxVadaxmyMto1+8/fR9snn1MrsZb7/9ttx+++32NScIIIAAAggggAACCCCQNgECxLT5eeLb48aNk1deca5emjVbdmsuYp1mbT1Rx7RW4hszrPQbM7zUd9StW1e++OIL3yWfCCCAAAIIIIAAAgggEAABAsQAIKZ3FrpYjfYi7tu3z6pKRNXrZPfmtZIrTz556J9jpXrDjD1HL/7QUm3klClTJDIyMr3pKR8BBBBAAAEEEEAAgZASIEAMkdc5cuRIefPNN63WvDV3qzx7TyOJPnlM8ocXMUHiO1Kp9vUZsqVHDuyR8S/2k33bN9n1HzJkiPTr18++5gQBBBBAAAEEEEAAAQQCI0CAGBhHT+Ty5JNPyowZM6y6aJA4sH1l67xQ8TLy1xf+K2Wr1PJEPVNTiRGP3SU7Nqyyv3LnnXeKBsMcCCCAAAIIIIAAAgggEHgBAsTAm6ZbjmfOnBFd2fPgwYNWHfyDxBIRlaXHoFczVE/i6ME9JWrVz7ZnzZo1ZerUqVK0aFE7jRMEEEAAAQQQQAABBBAInAABYuAsPZFTVFSUtGvXzq6Lf5CYI1ce6fLQYIm8/X77vldPJg97XFbMn+WoHvMOHRxcIIAAAggggAACCCAQcAECxICTpn+Gie2N6F+rph26mUDxGckXVtA/2TPns99/Xb6fPs5Rn7Fjx0qnTp0caVwggAACCCCAAAIIIIBAYAUIEAPr6Znc5s6dm+xCLrrSaZe+g6Vagxs9U2etyMSXB8jKxV876kRw6ODgAgEEEEAAAQQQQACBoAkQIAaNNv0zPnnypNzf56+yasXSRCuTJUvWuCGnXXpJ9hw5En3GrcS92zbKhyMGW9tz+JdJcOivwTkCCCCAAAIIIIAAAsEVIEAMrq8nch9hVv0c9ecWGIlVSBewadSmizRqe4cUKVEmsUeClnbuTLQ11/DLiW/ImdMnHOUQHDo4uEAAAQQQQAABBBBAIOgCBIhBJ/ZGAatWrZIx734g3341M8kK5ckXZgWJGixWrNkgyecCcePArq2yYsHnsmLebDl6cI8jy0qVKsngwYOlQ4cOjnQuEEAAAQQQQAABBBBAILgCBIjB9fVc7l9/t0jGvTdRVv28INm61b2pvdRq1FLKV68rZSrXTPbZ1Nzc9NuPJjCcJb/MmyWxl2ISfPWOO+6wgsPSpUsnuEcCAggggAACCCCAAAIIBFeAADG4vp7NfeL0WfLhlEkStebXq9axSMkIKVetrlSs1VCq1m2S4oDx0J7t1pzCvds3yP4dm+XAzs1y5MDuRMvLlSuXFRj27ds30fskIoAAAggggAACCCCAQPAFCBCDb+zpEj746FOZ8+33snzJ93Lp4oUU1TVv/oJSplKNZJ/ds3W9nI0+lewzvpsdO3YUDQwbN27sS+ITAQQQQAABBBBAAAEE0kGAADEd0L1Y5Lotu+TLOd/L4gXfydoVPwW9iiVKlJDbb79dunTpInXq1Al6eRSAAAIIIIAAAggggAACVxcgQLy6UaZ74pdVa+WrOSZQXLdetmxcJ8cO7Q2YQaNGjaygUIPD8PDwgOVLRggggAACCCCAAAIIIJB2AQLEtBuGdA4XLomsidoha9dvkLWrV8n6NavklNlf8fSpk9a2FEkNIw0rEC7lyleQypUqSPlyEVK2bFnrp3nz5iHtReMQQAABBBBAAAEEEMjIAgSIGfnteaDusbGxcuLECTlpgkb9iYmJkfLly0vhwoU9UDuqgAACCCCAAAIIIIAAAqkRIEBMjRbPIoAAAggggAACCCCAAAIhLECAGMIvl6YFTmDrwWgZPjNKbqlfXO5sWiZwGZMTAggggAACCCCAAAIeEiBA9NDLoCreFXh03EpZufGoVcFGNQvLA20qyA1VCnm3wtQMAQQQQAABBBBAAIFrECBAvAY0vpL5BLYcOC2vfRola7ccsxt/e/Oy0qt1OSlTOI+dxgkCCCCAAAIIIIAAAhlZgAAxI7896u6qgAaJPYctc5QZXjCX9GhZzgoUHTe4QAABBBBAAAEEEEAgAwoQIGbAl0aV008g+vwleXjsb7Jl10lHJWpULCgPtC4vbeoUc6RzgQACCCCAAAIIIIBARhIgQMxIb4u6ekZg2eajMui/qyQ29rKjTm0blbQCxeql8zvSuUAAAQQQQAABBBBAICMIECBmhLdEHT0rMOH7HTLhq62O+uXMmU26t4qQ3mYhm3y5sjnucYEAAggggAACCCCAgJcFCBC9/HaoW4YReOz932XpmsOO+kaUzCc9zbDTLjeUcqRzgQACCCCAAAIIIICAVwUIEL36ZqhXhhPYZvZK/Ns7q+TYiXOOuje5rqjc36qcNKrMthgOGC4QQAABBBBAAAEEPCdAgOi5V0KFMrrArOX75NWPNiRoRtdI3RajvJQMz53gHgkIIIAAAggggAACCHhBgADRC2+BOoSkwMufbJQvftzraFthExz+xeyd+JfICEc6FwgggAACCCCAAAIIeEGAANELb4E6hKzAqbMx8sg7v8nW3accbaxdOdwMOy0vrczwUw4EEEAAAQQQQAABBLwiQIDolTdBPUJaYGnUURkyaa1En7noaGe7xqXMthjlpGoptsVwwHCBAAIIIIAAAgggkC4CBIjpwk6hmVVg/Hc75L2vndti5M6t22KUlz5tykvuHFkzKw3tRgABBBBAAAEEEPCAAAGiB14CVch8Av94b7UsW/uHo+EVyoTJX8z+iZ0bsS2GA4YLBBBAAAEEEEAAAdcECBBdo6YgBJwCW822GE9PXCN7zaf/0axOMWvYaYOK4f7JnCOAAAIIIIAAAgggEHQBAsSgE1MAAskLfL5sn4ycGSXnz19yPHhXywjpbYadFiuQy5HOBQIIIIAAAggggAACwRIgQAyWLPkikEqBl2ZslC9/cm6LUbSw2RbDzE/s0aJsKnPjcQQQQAABBBBAAAEEUi9AgJh6M76BQNAEdFuMx99fLWu2HHeUUbdqIenZqpxE1mJbDAcMFwgggAACCCCAAAIBFSBADCgnmSEQGIGfNh6RYZ9ukoN/nHVk2L5JKTPstIJULJ7Xkc4FAggggAACCCCAAAKBECBADIQieSAQJIF3zbYYk+Zul0uXYu0S8ubJLj1al5feZv/EHNnZFsOG4QQBBBBAAAEEEEAgzQIEiGkmJAMEgi/w9OS1snjlQUdBlcqGWcNOb72+pCOdCwQQQAABBBBAAAEErlWAAPFa5fgeAi4LbDkQLf+ZvkE27TjhKLl5veLyQJtyUrdcQUc6FwgggAACCCCAAAIIpFaAADG1YjyPQDoL6LYY4+Zsl2PHz9k1yZJF5B4z5LS3GXpaOH9OO50TBBBAAAEEEEAAAQRSI0CAmBotnkXAQwLDZm6SmYv3OGpUomheua9VhHS/iW0xHDBcIIAAAggggAACCKRIgAAxRUw8hIA3BU6eiZEXPl4vP6857KhgvWqFpFfrCnJjjcKOdC4QQAABBBBAAAEEEEhOgAAxOR3uIZBBBH7ccERGf71Vtu855ahxpxvLyANm/8TyxdgWwwHDBQIIIIAAAggggECiAgSIibKQiEDGFJjw/Q75eOFuOR19wW5AmJmT2MMEib3MHMVsWc1kRQ4EEEAAAQQQQAABBJIQIEBMAoZkBDKywH9mbJSvftrraEKVcgWsbTE6NCjhSOcCAQQQQAABBBBAAAGfAAGiT4JPBEJMYLPZFuPNWVHy68ajjpZFmgCxl1nttHZEmCOdCwQQQAABBBBAAAEECBD5dwCBEBeYuXSvTFu0W/aYgNF3ZMueVbq1jLACxfB8OXzJfCKAAAIIIIAAAghkcgECxEz+LwDNzzwCY+dsk+kLd8n585fsRpcqnlf+YuYn3t2sjJ3GCQIIIIAAAggggEDmFSBAzLzvnpZnQoETZluMNz6Pku9+2e9ofUOzHUavNuWlSVW2xXDAcIEAAggggAACCGQyAQLETPbCaS4CKvCD2RZj8oKd8vvmYw6QzjeZbTHM/MSIInkc6VwggAACCCCAAAIIZA4BAsTM8Z5pJQKJCkz/cY98aLbFOPjHGft+wbBccm+rCOljehQ5EEAAAQQQQAABBDKXAAFi5nrftBaBRAVGfrFZZpiFbGIvXbbvV6tQQB5oVUFurlfMTuMEAQQQQAABBBBAILQFCBBD+/3SOgRSLBC1/7S89/0OWfTbQcd3Wl9f0gw7LSc1y7AthgOGCwQQQAABBBBAIAQFCBBD8KXSJATSIvD96sMyddFO2bj9hJ1NjhxZpbsZdtq7TUXJnzubnc4JAggggAACCCCAQGgJECCG1vukNQgETGCy2RLjIzPs9Njxc3aeZUrkk/tNb+IdTUrbaZwggAACCCCAAAIIhI4AAWLovEtagkDABY5HX5R3v90uny3e7ci7ca0iJlAsLzdUKeRI5wIBBBBAAAEEEEAgYwsQIGbs90ftEXBFYOX24zLFrHb60++HHOV1aVHWDDstL6XCczvSuUAAAQQQQAABBBDImAIEiBnzvVFrBNJF4Ktf98s0Eyhu23PKLr9QwVxyn+lNvL9lhJ3GCQIIIIAAAggggEDGFCBAzJjvjVojkK4Cutrpx2Z+4qnTF+x61KoULj1blZM2ddgWw0bhBAEEEEAAAQQQyGACBIgZ7IVRXQS8IrDrj7MyeeFO+fLHvY4qtW2k22KUl+ql8zvSuUAAAQQQQAABBBDwvgABovffETVEwNMCyzYflSkLdsmKDUfseubKlc1si1FOeptAMa8550AAAQQQQAABBBDIGAIEiBnjPVFLBDwv8PmyfTLNDDvdvf+0XdfyphfxPjM3scsNbItho3CCAAIIIIAAAgh4WIAA0cMvh6ohkNEEos9fMsNOd8nHC3bKeXPuO5qaeYkPtIqQhpXYFsNnwicCCCCAAAIIIOBFAQJEL74V6oRABheIMr2Ik+bvlHkrDjhacrcJEnuZoafFCrIthgOGCwQQQAABBBBAwCMCBIgeeRFUA4FQFFiw9g8zP3GHrN92wm5e0cJ5pGfrcnJv87J2GicIIIAAAggggAAC3hAgQPTGe6AWCIS0wFQzN3GaGXZ67MR5u511qxaS+1uVlxa1ithpnCCAAAIIIIAAAgikrwABYvr6UzoCmUbgwPFzMsmsdjpz8W5Hmzs0LW2tdlqheF5HOhcIIIAAAggggAAC7gsQILpvTokIZGqBFduOWdtiLDPDT31Hvrw5pIcZdvrQzRV8SXwigAACCCCAAAIIpIMAAWI6oFMkAgiIzFputsVYuFt2+W2LUTkiTO43eyd2aFACIgQQQAABBBBAAIF0ECBATAd0ikQAgTgB3RZjkpmbON1sjeG/LUaL+sWllwkUrytXACoEEEAAAQQQQAABFwUIEF3EpigEEEhcIGqf2RbDzE+ct2K//UC2bFnkHrMtxmO3VbXTOEEAAQQQQAABBBAIrgABYnB9yR0BBFIhMH/NYZlqehPXbztuf6tU8XzyFxMo3t2sjJ3GCQIIIIAAAggggEBwBAgQg+NKrgggkAaBKYt2yYdmfuIxs/Kp77i+ZhHp3ba8NK5cyJfEJwIIIIAAAggggECABQgQAwxKdgggEBiB/cd0W4yd8vmSPY4Mb29eVp6+o5pkN0NQORBAAAEEEEAAAQQCK0CAGFhPckMAgQAL/LJVt8XYKcvXHbFzDi+Qy9oWo1ercnYaJwgggAACCCCAAAJpFyBATLshOSCAgAsCny8z22Is2i27/bbFqFGxoBl2WkFa1S7qQg0oAgEEEEAAAQQQCH0BAsTQf8e0EIGQETh9LubPbTF2y4ULl+x2tW1UUgZ3rS4F8ma30wJ1csZsxfHctHVSOH8O+We3moHKlnwQQAABBBBAAAFPChAgevK1UCkEEEhOYNO+UzLZ2hbjgP1YzpxZ5V6zd2L/DpXstECcjJ2zTSbP3W5l1enGMjL0nhqByJY8EEAAAQQQQAABTwoQIHrytVApBBBIicC833VbjJ2yYfsJ+/FypfJLn5srSMeGJey0tJxEmSGtg8avliNm0Rw9HmhfMeBBaFrqx3cRQAABBBBAAIFAChAgBlKTvBBAIF0EJpu9Ez8yP8dOnLfLb3JdUXnu7hpSomAuO+1aTxat+0MGT1htf33Q3dWl+01l7WtOEEAAAQQQQACBUBEgQAyVN0k7EMjkAvvNnokfzN8ps+Jti3FXywh5ymyLkdZj+o97ZOQnm+xsXu5TV9rWLWZfc5I6gTMXRbYciZWCebJIvhwiRfOybUnqBHkaAQQQQACB4AgQIAbHlVwRQCCdBHRbjMkmUPxl/ZVtMYoWziMPtqsgdzYtnaZavfnlFvl43k4rj/z5csr/PVRH6lUIT1OeofLlszEip85flpPm5+KV9YNEt6vMnk0kpznJZdYQyp5VJJc513S9Xrk/VmIvixyOviwlw7JIqfxZpIT54UAAAQQQQACB9BEgQEwfd0pFAIEgC8xctlemLdwtew5E2yXVqRIuz5lFZioWz2enpfbk6clrZfHKg9bXIkrmkxEP1ZOIInlSm02Gf37evHmya9cu2bB1t2zdsUtOnDyZ+jaZwDB3vjDJk6+A5Mkf9zNn6ltSrc710qZNW7mlZVMpUqSIFCtWTPbt2ydHjsQF/U2bNk19WXwDAQQQQAABBFIkQICYIiYeQgCBjChw+twlM+x0h0w38xMvXoy1m9C+SSn517217OvUnByPvigDzaI1UTvjFsapU6WQjOxbV/LnDvwWG6mpl1vPzpw5Uz6YNElWrVzpVpEJyqlTp45MmDBBSpYsmeAeCQgggAACCCCQNgECxLT58W0EEMgAApv2nZZJZtjp/F+vbIuRL28O6XNLBenZslyqW7B+zykZ9O5qOXEqblGc5vWKyxu966Q6n4z0hblz58rkyZPlhx9+SHG1s2bLJoWLl5FCxUvJqWNH5OihfXLh3JkUfz+5B6dPny70JCYnxD0EEEAAAQSuTYAA8drc+BYCCGRAgflrDpv9E3fKRr9tMSpHFDDDTqtLbfOZmuP71Yfl+Q9+t79ym9kj8fkQ3SPxpZdekvHjx9ttTeykZPmqElGltlSo2UDKmk8NDAsWKZ7g0eiTx+WYCRQ1WDx6cI/1c+TPz6MH98rZ0ykbqvrYY49Jjx496EVMIEwCAggggAACaRMgQEybH99GAIEMKKDbYny4YJccP3llW4wW9UvI8F7Xpao1Hy3ZLaM+i7K/c7/pkfxbx8r2dUY/WbhwoXz66acye/ZsR1PymvmCVes3kzKVapqfWlKxVgPJX7Cw45lrvTh7+pQVNB7cs032bt8g+7ZtlN1b1snJI4cSzbJXr14yZMgQyZUr7duZJFoAiQgggAACCGQyAQLETPbCaS4CCMQJ7DMb308yvYn+22JkzZpFerevKP1uqZhiplFmZdOP/lzZVL80sGs1uS8yIsXf9+KDP/30k0wy8wznzJljVy9b9hxSu0kbue7Pn/zhgQkI7QJScPLrwi9l0qv/SPCkDjXVIaccCCCAAAIIIJB2AQLEtBuSAwIIZGCB5VuOyRQTKPpvi1GyWF4Z0r2GNK5cKEUtG/rRevlu+X772Rfuv046NixhX2eUk5Vm4RmdZ/jZZ585qnx3/xes4LBIybKO9PS4iD55Qj6f8Iosm/uJXXylSpVk+PDh0qhRIzuNEwQQQAABBBC4NgECxGtz41sIIBBiAp8v2ydTrW0xTtsta1ijsLz91/qSzfQsJnfEXLosfx+/SlZtOmo9FpY/p4x6uL7UKhuW3Nc8dW/kyJHy5ptvJqjTkAnfSokI7w2bXfLFNJkx+p+O+r788svSs2dPRxoXCCCAAAIIIJA6AQLE1HnxNAIIhLDAqXMx1iI2002geOHCld3ee9xcXv7RqUqyLd979KwMmvC77NofF2DWqhQu7zzSQHLlMDvDe/xIKjh85X8rzNzClPWipkcTf13whUx67TFH0bp4zaBBgxxpXCCAAAIIIIBAygUIEFNuxZMIIJBJBDbuPW0Fiv7bYhQMyynPda8pLWsXTVJh5fbj8oTZI/HM2RjrmU5mZdOhHl/ZNKngsPvAl+SmTj2SbKtXbiw1Q00/HDHYUR2CRAcHFwgggAACCKRKgAAxVVw8jAACmUlg3u+HZcpC57YY1SsUlNH96ktYnuyJUsxZeUhenLzGvjega1X5S2Tq91q0MwjiycSJE+XFF19MUELT9vfIfY+/liDdqwmJDTfVXkQNFDkQQAABBBBAIHUCBIip8+JpBBDIhAKTzLYYH5mf4yeubIvRpUVZefbO6olqTDJbaLwze7N1T1dGHWHmIzat5v6qn4lW7s/Ebdu2yT333CN//PGH47HqDW6Sv7022ZGWES7mf/KefD7+FUdVCRIdHFwggAACCCCQIgECxBQx8RACCGR2AZ1jqIHf7B/22BQ5c2aTZ82w08RWLH1jVpR8YuYy6hFRMp+MeaS+FC+Y2/5uep88/vjj1h6H/vUIL1ZK/j5sqhQvU8E/OcOcz/1wjHw1aYSjvrrwTteuXR1pXCCAAAIIIIBA0gIEiEnbcAcBBBBIILB8y1GzLcYux7YY5Urll9Gml7B4Qedm7U9NWiNLVsVt8N6ifgkZ3uu6BPmlR8KsWbNk4MCBCYru2m+ItL7rwQTpGSlh8utPyIp5n9tVrlKlisyYMUMKF/ZWD65dQU4QQAABBBDwmAABosdeCNVBAIGMITBz6V5rW4y9B6PtCre7oZT8p0ct+/qkWaxmoNn+YuP2E1Zarw6V5NH2Fe376XFy/Phxa2hpVFSUo/gKNRvI429e2VvQcTMDXRzYtVVGPdFdok8es2v90EMPydChQ+1rThBAAAEEEEAgaQECxKRtuIMAAggkK3DKBICTFuyU6WZ+4sWLsfazg++tKV2blLauo8y2F4+9u1qOHj9nXb/6YF1pXaeY/azbJ1OmTJHnn38+QbF9hoyWBpEdE6RnxIQFn74vM9992VF1bXdkZKQjjQsEEEAAAQQQSChAgJjQhBQEEAhhgQdGrZCoHSckX94ckt/8hOXJJmHms0C+HFLQfBbMm92kxX0WzJtTiplho9VL55fs2bIkqbJh7ymzLcYuWfDrAfuZIoXyWPMOKxTPKwvWHpZn3/vduheWP6dMfaKxlAhPn/mIjz76qHz99dd2PfWkQeSt0mfI2460jH4x9rnesvHXJXYzmjZtKtOnT7evOUEAAQQQQACBxAUIEBN3IRUBBEJUoOmgedfUsrJmoZlKZq6hBovVzE+NsmFSrIBzzuH3qw+ZbTF2ySYTgPoO39zDqYt2yejP41Y2rVutkLz7aEPfI659nj59Who2bCjnz19ZjVULH2SGllY0Q0xD6djy+3J56ynnPo6DBw+W/v37h1IzaQsCCCCAAAIBFyBADDgpGSKAgJcFdG/DFVuPyd4jZ2XXoTNy4PCZa66u9gZWMsFilVL5pHoZEzyWKWAFkB+YYacfmxVMj5+8EogN6FpN9pgyZy6OW9n01mal5Z/dal5z2dfyxblz50q/fv0cX63foqM8+PxoR1qoXHwxcbh89/F/7ebkz5/fWrCmVq0r80Ttm5wggAACCCCAgCVAgMi/CAggkKkFLsTEyk4TJG7ZHy1bDpySzftOy7b9Z+QPs63FtR6NahaRWuUKyG6T74LfDtrZ5M2TXSqWDpN1JkDV47G7qsm9zSPs+8E+efrppxMMs+z97FvSsFWnYBedLvmfO3tG3jIL1uzZut4uX4fYPvPMM/Y1Jwgg4I7A/PnzZfz48RIWFiaVKlWS5s2bS9WqVaVYsWKSNWtWdypBKQggkCIBAsQUMfEQAghkNoHT52Jks1lgZtPe0xK175Rs3H1Ktu05lWqGwmauYbasWeSwX8CZK1c2M8zzkmTPnlXefLS+NKpUKNX5XssX6tWrJ7qKqe8oXraSPPfuHMmaLZsvKeQ+F8+eIp+MedFuV8WKFWXhwoX2NScIIOCOwIsvvigTJ05MtDANFLVnv2bNmlKtWjXR7WnKli0r2UL4z6ZEIUhEwCMCBIgeeRFUAwEEMobAehMkrtt1UjbsOZn6oFHXubnsbGfliAIyxuyhGG4WyQnmsXTpUunevbujiHY9HpXOvZ90pIXaxXnTi/h6/85yeN8Ou2njxo2TDh062NecIIBA8AVee+01eeedd1JcUL58+aRbt27SpUsXadAgtOZIpxiBBxFIJwECxHSCp1gEEAgdAQ0a1+8+IRv3aI/jKdlufmJi4kWCyTS3vJnHOP2pJsk8kfZbn332mQwaNMiR0dNjZkvZKrUdaaF4MffDMfLVpBF202677TYZM2aMfc0JAikRWLn9uOhCVAvNPOYjx+K2rYn/vVqVCkrzWsWk5XVFpXKJfPFvZ+rr6OhomTRpkmzevFkuXLggCxYsEE1LydGmTRtraHj16tVT8jjPIIBAGgUIENMIyNcRQACBxAS2HoiO62U0Q1Q3mgBy8+6T1rDSxJ7VtJoVw2XiwOuTup3m9LffflveeOMNO5/aTdvIw/8ab1+H8snxPw5YvYinTxy1mpk9e3ZZt26d5M6dPluNhLJ1ZmjbGTM8fKHZumbZ5mOyIupoksFigxqFJbJWUbm5XvEEKx5nBqertfGBBx6QRYsWiW5BM2zYMDl8+LBs2bJFfv/9d9ERD9u2bUuQxVtvvWX1KCa4QYJnBNauXSv/+9//ZNWqVXLo0CHZv3+/aG9wnTp1pH379tZIFr3m8LYAAaK33w+1QwCBEBLQxXDWmUBxvZnPqEHjxh3H7Z7GFvWLy/BedYLW2ueee06mTZtm59/zyeFyQ7s77etQP/l8/Ksy/5MJdjP1L6T33nuvfc0JAtciEGsGCizddESWbj4qKzYfl23m/9/xjzxmcarIusWlbd1iVsAY/35mvW7durUVBF533XXy1VdfJWDQAHHs2LHWysP+N0ePHi2dO3f2T8q05+fOnbN6ViMjI+XOO9P3z/OjR4+K/nfmm2++SfZ9FClSRN577z2GDSerlP43CRDT/x1QAwQQyMQCGjQuWHNYercpH1SF3r17W0O6fIU8N/5bKVmusu8y5D/374iSYWYuYuylGKutzZo1k48//jjk200D3RVYvfO4/LD+iPy44YgJFhMualXBbIfTpl4JudkEi5Uy+RDU8uXj/swrVaqU1WOY1JtavXq19OnTR44cOWI/oj2PFSpUsK8z64ma6N62eqSnycGDB61fuCXW65vYu9EexDlz5ki5cuUSu02aBwQIED3wEqgCAgggEGyBW265RTZt2mQVkyNXbhk+8/eQXr00Mc/xLz4sa37+3rpVo0YN0X0hORAIlsCv247JEhMs/myCxZ1m+5z4x40mSGxrehbbmSGoOc2KxpnpiI2NFV1RWA8NFtavv7IVTWIOOvT09ttvt+cs9urVS/79738n9mimSvMPEN98803p2rVrurR/4MCBMmvWLEfZuija9ddfLyVKlLCGDf/3v/+1358+2LdvX/nnP//p+A4X3hEgQPTOu6AmCCCAQNAEdBjXqVNxPRqlK1aXZ/77ddDK8mrGs94bJvP+965VPf1Ly/Lly71aVeoVYgLLzBDUJev/MMHiUdl70LkwS7HCeaRdw+Jye+NSUqF45pibpYvU6NYWvmPnzp2+0yQ/dV7bU089Zd3XeYvTp09P8tnMcuPEiRNSt25dq7kPPfSQDB061PWmx8TESOXKztEoGgx27NjRUZd9+/ZZ8w937dplpWvv4ZIlSxzPcOEdAQJE77wLaoIAAggETcA3nEsLqNe8vfQdOjZoZXk146VzZsiHI5+xqpczZ05rNUWv1pV6ha6ADj9dsuEPWbLmDzly/MpqqLov6i2NS0pnEyg2MItWhfJx5swZa89DXxu3bt1q9oXN7rtM9FPntj3yyCPWvaTmLSb6xRBO9Hds0aKFTJ06NV1a65tPqoW3atXKWq02sYro3ENfz29Keo4Ty4M0dwQIEN1xphQEEEAgXQX8A8Sbu/WT2/sOTtf6pEfhu6LWyBsD7rCL1mFtXltNb+ychCs32hXOYCdZs2SR7FmzmM3OzY/51POs+vnndTYzqjJ71qzWfes5fdZ33zwjoj9pPy5fvizmf3Lp0mW5ZE50YZlY8w8rzXxess7j7mma3tM08z/rU2ug1740x3fNFzR/HTLpe966/+d3NM2Xn688k2Slnb8YKwfMdhkHj56TU6cvaDH2USAspxQukFMK5M1hPXubCRrvaFLavp/RT86ePSs6zNt3XO3/i7oAyv333y+6QqYeujeirmga/9B8f/jhB9m4caMcP35cChYsKDrHsVGjRvaQ1vjf8fK19s4lFzj7D9WtVKmSY565m+36+eef5emnnxbtHdQVs3U4cGLH+PHj5aWXXrJu6WI1v/32W2KPkeYBAQJED7wEqoAAAggEW8A/QOzx2KvSrGO3YBfpufwvmb9sDep0ZR+1n376ScqUKeOZeg79aL18t3y/Z+pDRbwlsHRkW29VKA21uXjxolSpUsXOQbe20GAu/qEB0nfffSdDhgxxLFLz/vvvS9u2Tg8NCO++++4kRwboXoovv/yylC7tfqC9YsUK2b59uxQoUEB0PngW88uTpA7dJ3LGjBnyySef2G3WIbXPPPNMoit/1qpVy57bl5KhukmVm9Z03y9KsmXLlmRWOnd04cKF1v30DGiTrCA3bAECRJuCEwQQQCB0BfwDxAHDP5SqdZuEbmOTadlr/drLvp1brCd0aX0dquaV4/Nl++Tt2Vsk+sxFr1SJenhEoEq5AjJ1UGOP1Cbt1fDv+dLcnnzySdHhkoULF5bw8HCrJ0p7AX/99Vc7SPKVqnPbdI6b/xEdHS09evQQXfH0akdSPVwrV6609u/bvXu3nDx5UgoVKiRFixaV2rVrW72XOXLkSDZrnWOnQyg18OnWrZv4ntdg9l//+pf93b///e/2XEo78c+TmTNnymOPPRY/2b5ObG6frmLqW+FVg9Csplfei4f/fEmtn27LMXLkSC9WlToZAQJE/jVAAAEEMoGAf4D44PNjpH6LDpmg1QmbOOzhDrJ3x2brxuzZs6VevXoJH0rHlOVbjsnAMQEYdmU6KHS4pg7p9P1k0+Gcem0P8Ywb0ql/n9R06yfePWt4qMkrbmhotivP6fP67J/l6Hn8YaLaS6JpOqTU+r4p6Mq5SdPvWt+Lq5f/PR1+qveu9dDhnBdjLkvMpVgzNNScm+GlMZcumZ+4oaIxZuynnl80N83oUOtTn03NoT0mFzRfU47mr3ldjImVC3+Wq/ldMNdJZav3T0bHyOmzMXLm7EWTT9LlP353Nel2U0Rqquf5Z/3/TEppZbUnbdKkSZI7d27HV3RvxOHDhzvSdBEU7bHTjdp9AZTvAV3Q5fnnn7d68nTBHB0eqcFZUoc++9e//jWp21a6riLqC3h8K4rqSsn9+vVL8D1dcKdJE+cv6d59912rhzPBw/ESdFimDs/0HWqibdRDV6r2t1m6dKnlooGjPqfDOzUIT49D35v/qqVqld57N6aHQ0YpkwAxo7wp6okAAgikQcD/L2PdB74kN3XqkYbcMu5XB3WqIZdi4nrooqKiJFeuXJ5rzMa9pyT6vJl7ZAVhccGTFdyZeMk/iNLzuMDO94zO6YsLxjSdw3sC+82cwx83mq0vNh6VFZuOyPnzlxKtZBmzR+L1VQvJDVUKSZNqhSUsT/ILuCSaiccT/f9MSmlVp02bJs2bN3c8rsNQb7jhBjsI1HnF+ssf3xBWDeTXrVsnY8eOFR014Du0h1J7Mh9++OFEV9PUAFN7Jn3BZadOnWTMmDFJDg8dN26cvPLKK1b2zz77rLRr1046d+5sD//0lauf8edQ6oqsGqT6Hzq6QYej/vLLL476jRgxQu666y770datW4tv/0H/obofffSRNSzVftCcaJCohsnNa/R/PlDn58+fl5YtW9qBrOa7Zs0aK4APVBnkE1gBAsTAepIbAggg4EkBnZujf9HQ47beT8gtPfp7sp7BrNT+nZvl1X5xPae6xP7338ftiRjMMskbAQ0KF649LD+ZwPDXTUcl1vQ2xj+0h7WuCQgbmYCwcdVwqVc+tFcx1fb7z52L75HctQY+N954o/3I4sWLrSGgvgSdZ9izZ0/fpeNTh5Hqgio6hLR///7Wc/7DUgcMGGD1amlwqEFU/B7AxOY++gqYPHmyvc2EBoC6WI4vuNRndLEcX0+fXutcQ11NWXv3WrVqpUn2oW2499577UBOey+//fZb6/5//vMfeeCBB+xnNXD1Ld6jf8YXK1bM6onUBWESO4YNG2blndi9YKX5L06jZeh2JTrUlsO7AgSI3n031AwBBBAImID/8KXWdz4oXR8eErC8M0pGq5bMlfdfiguMb7vtNqs3IKPUnXpmPIE1u07IrGX7Zd5vB+XsuZgEDSgcnlsamqCwcZVwq5ewpLnOTIf/0EjtLdOgToeEalB16NAhax6i/hJHe/HiHxMmTLB66DT9gw8+kBdeeMF6ROf/6aI2Kekh0x47/70Up0yZIpGRkY6iXnzxRZk4caKdVrNmTfn666/NkOmE8/z8h5jaX/jzRPPQNjZufGUe6Zw5c6ytPnRO5BtvvGF/Rc/vuece+1pPNLC94464FZg/++wzawN63wP6rG9PV91XUINY/zr7nvN9BnNxGF1Fds+ePXL69GnRcx1mruc6pNd36PDYH3/8UfLkyeNL4tODAgSIHnwpVAkBBBAItIAOp2rfvr2VbeObu8r9T135C0mgy/Jqft9PHyez33/dqt4TTzwhAwcO9GpVqVcGFli49g/59Oc98sv6IwlaUbV8AauX8AYdPlq1sDVEOMFDmSRBt0Lw9d4ltcm7DgHVeXXaO/fhhx/aMjqMVHvL9PP111+3f9mjPXE61+1qx44dO6whj77n4vfKaboGODfddJOjF1DTdaiq9trFP3R+XWJl68I1N998s/W4zkfUXkk9fAGpfw/gfffdJ6+++qp1P/4/NFDWFUL95xjqM9qbuGjRIutxbb9vlVBN0J5MDZ51RVTf8FdN117UQK7mevDgQWvbEZ3HmVhAr2X6Dp33rXM6dVgwh3cFCBC9+26oGQIIIBBQAf1Lig5rqnVDK3nkP+8FNG+vZ3bu7BkZ+dhdsn9HlFVV7VH1Bcxerzv1877A8i1H5YcNR2SJCQ73HzrjqHCNigWlRa2i0qxGEalVNsxxLzNf9O3b1x7mHX9OXmIu/r1oet8X1OkWGL4N4nXOXlJDK/3z1EVidJijHjr8/v/+7//8b1vnOhRTg8H4hw4V1SAsfqD2yCOPyDfffON4XFdn1WGrvsN/GKqvp9B/FdKkVlj1fT+xT/8eRP/7um+kbkqvvZ0a7PrvO5nYaqj+303N+YEDB6zeTf/hsyn5foMGDawFdHS4P4f3BAgQvfdOqBECCCAQFIHu3buLrmpXqFhJ+dfUH4NShlcznTNttHw9OW5Jdf3NuQ5d094HDgSuVeCXrcdk3upDsszMK4wfFJYomle6NC0tresUlYrF+fcsMWNdyMXXK6gb2X/66aeJPeZI054n7XnTwxdUDho0SHTYpR66EIoGYVc7NPDTAFCPwYMHW/MR/b8Tf8VN/3t6rltRaLn+hw4B1SDWd+g8SQ1c/fcF1KGV2kuoh+4JqAFcixYtrOG0mqa9alp23rx59TJFR4cOHWTDhg2OZxNbjMZ/HmNSPbaOTFJ4oXM5/Rf/0a/p+zx69Ki9eE5yWekWIL17907uEe6lgwABYjqgUyQCCCCQHgL6lyjfX2oeemGc1L0xbthTetTFzTIP7d1h9R5GnzxuFat/UdK/aHIgkFqBE2aPyjkrD1qB4e+bjyX4evUKBaXzDaXk7mZlEtwjwSngP/dO56Xp9g1XO/yHpfqGY/oHKCmdX+c/b1F/UaRBmfZk6VB8DR59Qza1PjrvUHsltYfQtxiMpj/66KPWyqO++YjxF93RRWoiIpxbk+hQTN/QSt9CWdoTqnMqfYcGV6+99ppVH19acp/+PZD6nLZnwYIFUqJECcfXdPXS5557zkpLqZMjgyQu4rdbFxHSOujqsP69ilqmb7XV+FnpLy91YR7f3pHx73PtvgABovvmlIgAAgiki4AuNa7/Mddl4ctWrikDXv9I8uQP/SFv/xv9gvzwxVTbPP4iD/YNThBAICgCukm69hBqgFCtWjVrkZWtW7c6hl8mt+2Mrjqqcw19vYdaSd9qnP49Y5quQd7VFkDRwEV72a52aDCncwh18RwdSnnrrbc65iTq/EGdM1iwYEHx37ZDfxGX1Ib3/ovzLFu2TM6dO2flG3/ung7BbNu2rTRr1swy0zrEP+JvPq/3NdjVuYjxD138R4NJ36EL28QPIn33UvPpP4cyqe/pAj2zZs2yFq3R+Z/ay6tBuv+hq5r6hv36p3OePgIEiOnjTqkIIIBAugjob5D1N8l6tOraR+58JLR70pbN/USmjRhsW+uiE75hbXYiJwggEFQB/3mCvoK019B/G4i33nrL2qJB9ya9dOmSHDt2TPbu3SsrVqyw5vz5B1C6wbruB6irZMaf+5fSBViGDx8uo0eP9lUnwafOUdY6+c811ABXV0D2r4v2lukQyy+//NJajVSvNfjKnz9/gjw1YdSoUVbd9dy34I0Gtdoj6u+h9/0PnfuowaUGeXXq1LFWRdVhnL4eSX1Wh6v65mP6f9d37r+gT/ztQnzPpPbTfz5nYt/VLUNmzJghJUuWdNzWXxD87W9/s4fHahAZf6iq4wtcuCpAgOgqN4UhgAAC6SsQf8+wUB5qun3DSjO09G4HeHJ7pDke5AIBBAIm0KdPH5k/f35A8tMgSXsSdQ9BPXR/QO1F1CM1QycvX75sBS7xe610SKmucKxz+3zDR63M//yHzvfT9viGT2pAqH+uFi1a1NoCQxeD0XokdehIDu1127dvn+hWFxpA6aEB8TvvvCPjxo1L6quOdN9Qed+8TK2Hf36Oh/+80B5H7ZHUAFe35ejatWtij6U6TYfTjhw50grm/b+siwbpcFn9ZUBih9ZH52Lq3E0NdDWQ5PCGAAGiN94DtUAAAQRcE9D/aOvS8XqUMUNNB4bgUNOz0adkSPcmEnPxvO2qi9Pob/mT+suK/SAnCCAQUAH/XrNrzVgDtwcffFA6d+6cYAip9mJpcKELzugcvtQcFy9eFB32eOHCBalQoUKKFq/SYaG6kumpU6es4Zy6OX1qDg0Sda9G/wVsfN8/fPiwtYiWzsnU3tOk5u35r76qQav2MIaHh/uySfJz3rx51lYbOndT2xvIQwNPDXS1FzgsLMzR+5pUOTp8WNup0x/i9zIm9R3Sgy9AgBh8Y0pAAAEEPCWgy6vrAhG+o0HkrdJnyJVrX3pG/nzpwZvl0N7tjibQe+jg4AIB1wR0yKgu/KI9RbqRug6N1N4j3URdfzRI0OBCe8F0Xpz2xmnQpb/M0WvtXfIfSulaxT1QkDqtW7fOGoqpQ1F37dplDTH9xz/+YQVhHqgiVQhBAQLEEHypNAkBBBBITkB/29yjRw/rN72+50IpSBz1RHfZunaFr2nWpy728P777zvSuEAAAQQQQACBhAIEiAlNSEEAAQRCXkDn8MTf6iEUgsRX+nWQAzs3O96fziP65JNPrJUTHTe4QAABBBBAAIEEAgSICUhIQAABBDKHgP8G074WN2x1m/R+dpTvMsN8nj5xTN56qkeC4FAbMGDAAHnyySczTFuoKAIIIIAAAukpQICYnvqUjQACCKSzQGRkpOzcudNRi9Z39ZWu/eI2VHbc8OjFgZ1bZOLLA2T/zqgENaxdu7a1eIXObeJAAAEEEEAAgasLECBe3YgnEEAAgZAV0AUPdO+s+MeNne6Tewf+J36y566jVv0sn479d6LBYUREhLz77rvW6nieqzgVQgABBBBAwKMCBIgefTFUCwEEEHBLQJeHT2wIZrnqdeXB58dI4eKl3apKqspZPHuqzBz3klyKuZjge7r64fjx45l3mECGBAQQQAABBJIXIEBM3oe7CCCAQKYQSCpIzJotu/QaPFIatLzVMw6XYmLks3Evy5LZkxOtU968eWXChAly0003JXqfRAQQQAABBBBIWoAAMWkb7iCAAAKZSmD9+vXSsWPHRNsc2eUBaXtPPylUrFSi991K3L15rcyaMEyiVv2UZJEaHLZr1y7J+9xAAAEEEEAAgaQFCBCTtuEOAgggkOkEDh06JI8++qisWOHcR1AhChUrbQWJkV3ud91lv9m64ocvp8kPX0yTy5djEy2/cePG8sQTT0izZs0SvU8iAggggAACCFxdgADx6kY8gQACCGQqgdjYWHnmmWdk+vTpiba7esPmcvM9fxX9DPZxeN8u+fHLqbLEBIcXz59Lsrj+/ftbwWH27NmTfIYbCCCAAAIIIHB1AQLEqxvxBAIIIJApBYYPHy6jR49Osu1NbrlbGkbeKjUbt0zymWu9cezwAfnxq7gewzOnTySZTY1a18ngp56QNm3aJPkMNxBAAAEEEEAg5QIEiCm34kkEEEAg0wmsWrVKpk6dau0lmFTjK9ZqKA0iO0nDlrdJgcJFk3osRenrf1kkG1YskpWLv5GTRw8l+Z2IilWl211dpU/vByQsLCzJ57iBAAIIIIAAAqkTIEBMnRdPI4AAAplSYNmyZfLeB1Nl7tezk2x/vgKFzGqnnaRC9fpSpnJNKVOpRpLP+t9Yv3yRrFn6vaz5+ftkg0L9Tt3GN8ldd3aVnt26CsNJ/RU5RwABBBBAIDACBIiBcSQXBBBAIFMILFy0RN55f4osXTj3qu3Nm7+glKpQTXQ/xWxmbuCFc+fkwvmz5vOM+dHPs7J17XKzj2HMVfNq2aGr3GN6DDvfEvjhrFctnAcQQAABBBDIRAIEiJnoZdNUBBBAIFACX3y7UBYs/lFWLPtZdkatCVS2dj6FS5SV2o0jpfENN0irG2+QelXL2Pc4QQABBBBAAIHgCRAgBs+WnBFAAIGQF4i9LLJ07Tb5bsFiWf7jYmt/Qu0ZTO2hAWGRkmWkVuPW0uTGFhLZuLaUypdFsmdLbU48jwACCCCAAAJpESBATIse30UAAQQQsAUuXBI5deGy/PDTUjl++pycOH1eTkSfl7PnzsvFC+cl5qL5MZ8XL56TwsUjpFSZslK2TBkpXz5C8uUQyZczixTKncV82llyggACCCCAAAIuCxAgugxOcQgggAACCCCAAAIIIICAVwUIEL36ZqgXAggggAACCCCAAAIIIOCyAAGiy+AUhwACCCCAAAIIIIAAAgh4VYAA0atvhnohgAACCCCAAAIIIIAAAi4LECC6DE5xCCCAAAIIIIAAAggggIBXBQgQvfpmqBcCCCCAAAIIIIAAAggg4LIAAaLL4BSHAAIIIIAAAggggAACCHhVgADRq2+GeiGAAAIIIIAAAggggAACLgsQILoMTnEIIIAAAggggAACCCCAgFcFCBC9+maoFwIIIIAAAggggAACCCDgsgABosvgFIcAAggggAACCCCAAAIIeFWAANGrb4Z6IYAAAggggAACCCCAAAIuCxAgugxOcQgggAACCCCAAAIIIICAVwUIEL36ZqgXAggggAACCCCAAAIIIOCyAAGiy+AUhwACCCCAAAIIIIAAAgh4VYAA0atvhnohgAACCCCAAAIIIIAAAi4LECC6DE5xCCCAAAIIIIAAAggggIBXBQgQvfpmqBcCCCCAAAIIIIAAAggg4LIAAaLL4BSHAAIIIIAAAggggAACCHhVgADRq2+GeiGAAAIIIIAAAggggAACLgsQILoMTnEIIIAAAggggAACCCCAgFcFCBC9+maoFwIIIIAAAggggAACCCDgsgABosvgFIcAAggggAACCCCAAAIIeFWAANGrb4Z6IYAAAggggAACCCCAAAIuCxAgugxOcQgggAACCCCAAAIIIICAVwUIEL36ZqgXAggggAACCCCAAAIIIOCyAAGiy+AUhwACCCCAAAIIIIAAAgh4VYAA0atvhnohgAACCCCAAAIIIIAAAi4LECC6DE5xCCCAAAIIIIAAAggggIBXBQgQvfpmqBcCCCCAAAIIIIAAAggg4LIAAaLL4BSHAAIIIIAAAggggAACCHhVgADRq2+GeiGAAAIIIIAAAggggAACLgsQILoMTnEIIIAAAggggAACCCCAgFcFCBC9+maoFwIIIIAAAggggAACCCDgsgABosvgFIcAAggggAACCCCAAAIIeFWAANGrb4Z6IYAAAggggAACCCCAAAIuCxAgugxOcQgggAACCCCAAAIIIICAVwUIEL36ZqgXAggggAACCCCAAAIIIOCyAAGiy+AUhwACCCCAAAIIIIAAAgh4VYAA0atvhnohgAACCCCAAAIIIIAAAi4LECC6DE5xCCCAAAIIIIAAAggggIBXBQgQvfpmqBcCCCCAAAIIIIAAAggg4LIAAaLL4BSHAAIIIIAAAggggAACCHhVgADRq2+GeiGAAAIIIIAAAggggAACLgsQILoMTnEIIIAAAggggAACCCCAgFcFCBC9+maoFwIIIIAAApaKqg4AAAVzSURBVAgggAACCCDgsgABosvgFIcAAggggAACCCCAAAIIeFWAANGrb4Z6IYAAAggggAACCCCAAAIuCxAgugxOcQgggAACCCCAAAIIIICAVwUIEL36ZqgXAggggAACCCCAAAIIIOCyAAGiy+AUhwACCCCAAAIIIIAAAgh4VYAA0atvhnohgAACCCCAAAIIIIAAAi4LECC6DE5xCCCAAAIIIIAAAggggIBXBQgQvfpmqBcCCCCAAAIIIIAAAggg4LIAAaLL4BSHAAIIIIAAAggggAACCHhVgADRq2+GeiGAAAIIIIAAAggggAACLgsQILoMTnEIIIAAAggggAACCCCAgFcFCBC9+maoFwIIIIAAAggggAACCCDgsgABosvgFIcAAggggAACCCCAAAIIeFWAANGrb4Z6IYAAAggggAACCCCAAAIuCxAgugxOcQgggAACCCCAAAIIIICAVwUIEL36ZqgXAggggAACCCCAAAIIIOCyAAGiy+AUhwACCCCAAAIIIIAAAgh4VYAA0atvhnohgAACCCCAAAIIIIAAAi4LECC6DE5xCCCAAAIIIIAAAggggIBXBQgQvfpmqBcCCCCAAAIIIIAAAggg4LIAAaLL4BSHAAIIIIAAAggggAACCHhVgADRq2+GeiGAAAIIIIAAAggggAACLgsQILoMTnEIIIAAAggggAACCCCAgFcFCBC9+maoFwIIIIAAAggggAACCCDgsgABosvgFIcAAggggAACCCCAAAIIeFWAANGrb4Z6IYAAAggggAACCCCAAAIuCxAgugxOcQgggAACCCCAAAIIIICAVwUIEL36ZqgXAggggAACCCCAAAIIIOCyAAGiy+AUhwACCCCAAAIIIIAAAgh4VYAA0atvhnohgAACCCCAAAIIIIAAAi4LECC6DE5xCCCAAAIIIIAAAggggIBXBQgQvfpmqBcCCCCAAAIIIIAAAggg4LIAAaLL4BSHAAIIIIAAAggggAACCHhVgADRq2+GeiGAAAIIIIAAAggggAACLgsQILoMTnEIIIAAAggggAACCCCAgFcFCBC9+maoFwIIIIAAAggggAACCCDgsgABosvgFIcAAggggAACCCCAAAIIeFWAANGrb4Z6IYAAAggggAACCCCAAAIuCxAgugxOcQgggAACCCCAAAIIIICAVwUIEL36ZqgXAggggAACCCCAAAIIIOCyAAGiy+AUhwACCCCAAAIIIIAAAgh4VYAA0atvhnohgAACCCCAAAIIIIAAAi4LECC6DE5xCCCAAAIIIIAAAggggIBXBQgQvfpmqBcCCCCAAAIIIIAAAggg4LIAAaLL4BSHAAIIIIAAAggggAACCHhVgADRq2+GeiGAAAIIIIAAAggggAACLgsQILoMTnEIIIAAAggggAACCCCAgFcFCBC9+maoFwIIIIAAAggggAACCCDgsgABosvgFIcAAggggAACCCCAAAIIeFWAANGrb4Z6IYAAAggggAACCCCAAAIuCxAgugxOcQgggAACCCCAAAIIIICAVwUIEL36ZqgXAggggAACCCCAAAIIIOCyAAGiy+AUhwACCCCAAAIIIIAAAgh4VYAA0atvhnohgAACCCCAAAIIIIAAAi4LECC6DE5xCCCAAAIIIIAAAggggIBXBQgQvfpmqBcCCCCAAAIIIIAAAggg4LIAAaLL4BSHAAIIIIAAAggggAACCHhVgADRq2+GeiGAAAIIIIAAAggggAACLgsQILoMTnEIIIAAAggggAACCCCAgFcFCBC9+maoFwIIIIAAAggggAACCCDgsgABosvgFIcAAggggAACCCCAAAIIeFWAANGrb4Z6IYAAAggggAACCCCAAAIuC/w/OsDdHSiHP+MAAAAASUVORK5CYII=" + } + }, + "cell_type": "markdown", + "id": "710dc4f0-1c88-4386-9e9d-fec3de6bb774", + "metadata": {}, + "source": [ + "## Create branches\n", + "\n", + "Parallel execution of nodes is essential to speed up overall graph operation. LangGraph offers native support for parallel execution of nodes, which can significantly enhance the performance of graph-based workflows. This parallelization is achieved through fan-out and fan-in mechanisms, utilizing both standard edges and [conditional_edges](https://langchain-ai.github.io/langgraph/reference/graphs/#langgraph.graph.MessageGraph.add_conditional_edges). Below are some examples showing how to add create branching dataflows that work for you. \n", + "\n", + "![Screenshot 2024-07-09 at 2.55.56 PM.png](attachment:51f122de-b2ce-4c21-a5a7-c3be70c28a91.png)" + ] + }, + { + "cell_type": "markdown", + "id": "d6c05fc4-ecd8-483f-a9fd-b1a055f922d9", + "metadata": {}, + "source": [ + "### Run graph nodes in parallel\n", + "\n", + "In this example, we fan out from `Node A` to `B and C` and then fan in to `D`. With our state, [we specify the reducer add operation](https://langchain-ai.github.io/langgraph/concepts/low_level/#reducers). This will combine or accumulate values for the specific key in the State, rather than simply overwriting the existing value. For lists, this means concatenating the new list with the existing list. See the above section on [state reducers](#process-state-updates-with-reducers) for more detail on updating state with reducers." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "09372b8b-edea-4b9d-9ec3-3d93ce1ba819", + "metadata": {}, + "outputs": [], + "source": [ + "import operator\n", + "from typing import Annotated, Any\n", + "\n", + "from typing_extensions import TypedDict\n", + "\n", + "from langgraph.graph import StateGraph, START, END\n", + "\n", + "\n", + "class State(TypedDict):\n", + " # The operator.add reducer fn makes this append-only\n", + " aggregate: Annotated[list, operator.add]\n", + "\n", + "\n", + "def a(state: State):\n", + " print(f'Adding \"A\" to {state[\"aggregate\"]}')\n", + " return {\"aggregate\": [\"A\"]}\n", + "\n", + "\n", + "def b(state: State):\n", + " print(f'Adding \"B\" to {state[\"aggregate\"]}')\n", + " return {\"aggregate\": [\"B\"]}\n", + "\n", + "\n", + "def c(state: State):\n", + " print(f'Adding \"C\" to {state[\"aggregate\"]}')\n", + " return {\"aggregate\": [\"C\"]}\n", + "\n", + "\n", + "def d(state: State):\n", + " print(f'Adding \"D\" to {state[\"aggregate\"]}')\n", + " return {\"aggregate\": [\"D\"]}\n", + "\n", + "\n", + "builder = StateGraph(State)\n", + "builder.add_node(a)\n", + "builder.add_node(b)\n", + "builder.add_node(c)\n", + "builder.add_node(d)\n", + "builder.add_edge(START, \"a\")\n", + "builder.add_edge(\"a\", \"b\")\n", + "builder.add_edge(\"a\", \"c\")\n", + "builder.add_edge(\"b\", \"d\")\n", + "builder.add_edge(\"c\", \"d\")\n", + "builder.add_edge(\"d\", END)\n", + "graph = builder.compile()" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "66f52a20", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from IPython.display import Image, display\n", + "\n", + "display(Image(graph.get_graph().draw_mermaid_png()))" + ] + }, + { + "cell_type": "markdown", + "id": "74dd577b-0474-44c4-b4bc-9113090e3121", + "metadata": {}, + "source": [ + "With the reducer, you can see that the values added in each node are accumulated." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "81646784-5e7d-4096-980d-9fdfafd6e7a3", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Adding \"A\" to []\n", + "Adding \"B\" to ['A']\n", + "Adding \"C\" to ['A']\n", + "Adding \"D\" to ['A', 'B', 'C']\n" + ] + }, + { + "data": { + "text/plain": [ + "{'aggregate': ['A', 'B', 'C', 'D']}" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "graph.invoke({\"aggregate\": []}, {\"configurable\": {\"thread_id\": \"foo\"}})" + ] + }, + { + "cell_type": "markdown", + "id": "ea5495cf-9564-40c6-bc2d-0b2a8f72a5df", + "metadata": {}, + "source": [ + "!!! note\n", + "\n", + " In the above example, nodes `\"b\"` and `\"c\"` are executed concurrently in the same [superstep](../../concepts/low_level/#graphs). Because they are in the same step, node `\"d\"` executes after both `\"b\"` and `\"c\"` are finished.\n", + "\n", + " Importantly, updates from a parallel superstep may not be ordered consistently. If you need a consistent, predetermined ordering of updates from a parallel superstep, you should write the outputs to a separate field in the state together with a value with which to order them." + ] + }, + { + "cell_type": "markdown", + "id": "c392b3d2", + "metadata": {}, + "source": [ + "
    Exception handling?\n", + "

    LangGraph executes nodes within \"supersteps\", meaning that while parallel branches are executed in parallel, the entire superstep is transactional. If any of these branches raises an exception, none of the updates are applied to the state (the entire superstep errors).

    \n", + "

    Importantly, when using a checkpointer, results from successful nodes within a superstep are saved, and don't repeat when resumed.

    \n", + " If you have error-prone (perhaps want to handle flakey API calls), LangGraph provides two ways to address this:
    \n", + "
      \n", + "
    1. You can write regular python code within your node to catch and handle exceptions.
    2. \n", + "
    3. You can set a retry_policy to direct the graph to retry nodes that raise certain types of exceptions. Only failing branches are retried, so you needn't worry about performing redundant work.
    4. \n", + "

    \n", + "Together, these let you perform parallel execution and fully control exception handling.\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "id": "205ff836-0f97-4ee8-9830-6bd8368e48c9", + "metadata": {}, + "source": [ + "
    Extended example: unequal length branches\n", + "\n", + "The above example showed how to fan-out and fan-in when each path was only one step. But what if one path had more than one step? Let's add a node b_2 in the \"b\" branch:\n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "3890af2f-fb14-4569-b48d-a91db2d3f026", + "metadata": {}, + "outputs": [], + "source": [ + "import operator\n", + "from typing import Annotated, Any\n", + "\n", + "from typing_extensions import TypedDict\n", + "\n", + "from langgraph.graph import StateGraph, START, END\n", + "\n", + "\n", + "class State(TypedDict):\n", + " # The operator.add reducer fn makes this append-only\n", + " aggregate: Annotated[list, operator.add]\n", + "\n", + "\n", + "def a(state: State):\n", + " print(f'Adding \"A\" to {state[\"aggregate\"]}')\n", + " return {\"aggregate\": [\"A\"]}\n", + "\n", + "\n", + "def b(state: State):\n", + " print(f'Adding \"B\" to {state[\"aggregate\"]}')\n", + " return {\"aggregate\": [\"B\"]}\n", + "\n", + "\n", + "def b_2(state: State):\n", + " print(f'Adding \"B_2\" to {state[\"aggregate\"]}')\n", + " return {\"aggregate\": [\"B_2\"]}\n", + "\n", + "\n", + "def c(state: State):\n", + " print(f'Adding \"C\" to {state[\"aggregate\"]}')\n", + " return {\"aggregate\": [\"C\"]}\n", + "\n", + "\n", + "def d(state: State):\n", + " print(f'Adding \"D\" to {state[\"aggregate\"]}')\n", + " return {\"aggregate\": [\"D\"]}\n", + "\n", + "\n", + "builder = StateGraph(State)\n", + "builder.add_node(a)\n", + "builder.add_node(b)\n", + "builder.add_node(b_2)\n", + "builder.add_node(c)\n", + "builder.add_node(d)\n", + "builder.add_edge(START, \"a\")\n", + "builder.add_edge(\"a\", \"b\")\n", + "builder.add_edge(\"a\", \"c\")\n", + "builder.add_edge(\"b\", \"b_2\")\n", + "# highlight-next-line\n", + "builder.add_edge([\"b_2\", \"c\"], \"d\")\n", + "builder.add_edge(\"d\", END)\n", + "graph = builder.compile()" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "1a3508e6-bcaf-448e-bdc8-bf5701589d42", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from IPython.display import Image, display\n", + "\n", + "display(Image(graph.get_graph().draw_mermaid_png()))" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "b510379a-b82a-4658-973e-df56caf5cd01", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Adding \"A\" to []\n", + "Adding \"B\" to ['A']\n", + "Adding \"C\" to ['A']\n", + "Adding \"B_2\" to ['A', 'B', 'C']\n", + "Adding \"D\" to ['A', 'B', 'C', 'B_2']\n" + ] + }, + { + "data": { + "text/plain": [ + "{'aggregate': ['A', 'B', 'C', 'B_2', 'D']}" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "graph.invoke({\"aggregate\": []})" + ] + }, + { + "cell_type": "markdown", + "id": "903f0da5-8c2c-4a7e-96fb-0b16b4756eff", + "metadata": {}, + "source": [ + "
    \n", + "

    Note

    \n", + "

    In the above example, nodes \"b\" and \"c\" are executed concurrently in the same [superstep](../../concepts/low_level/#graphs). What happens in the next step?

    \n", + "

    We use add_edge([\"b_2\", \"c\"], \"d\") here to force node \"d\" to only run when both nodes \"b_2\" and \"c\" have finished execution. If we added two separate edges,\n", + " node \"d\" would run twice: after node b2 finishes and once again after node c (in whichever order those nodes finish).

    \n", + "
    " + ] + }, + { + "cell_type": "markdown", + "id": "c1653341-3215-4ca0-b0e7-9be22f0adaa1", + "metadata": {}, + "source": [ + "
    " + ] + }, + { + "cell_type": "markdown", + "id": "1a940eec-f36f-4236-9cc8-8d5dfd5cc860", + "metadata": {}, + "source": [ + "### Conditional branching\n", + "\n", + "If your fan-out should vary at runtime based on the state, you can use [add_conditional_edges](https://langchain-ai.github.io/langgraph/reference/graphs/#langgraph.graph.StateGraph.add_conditional_edges) to select one or more paths using the graph state. See example below, where node `a` generates a state update that determines the following node." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "8b270199-f07d-4831-9674-f18715fa26de", + "metadata": {}, + "outputs": [], + "source": [ + "import operator\n", + "from typing import Annotated, Literal, Sequence\n", + "\n", + "from typing_extensions import TypedDict\n", + "\n", + "from langgraph.graph import StateGraph, START, END\n", + "\n", + "\n", + "class State(TypedDict):\n", + " aggregate: Annotated[list, operator.add]\n", + " # Add a key to the state. We will set this key to determine\n", + " # how we branch.\n", + " which: str\n", + "\n", + "\n", + "def a(state: State):\n", + " print(f'Adding \"A\" to {state[\"aggregate\"]}')\n", + " # highlight-next-line\n", + " return {\"aggregate\": [\"A\"], \"which\": \"c\"}\n", + "\n", + "\n", + "def b(state: State):\n", + " print(f'Adding \"B\" to {state[\"aggregate\"]}')\n", + " return {\"aggregate\": [\"B\"]}\n", + "\n", + "\n", + "def c(state: State):\n", + " print(f'Adding \"C\" to {state[\"aggregate\"]}')\n", + " return {\"aggregate\": [\"C\"]}\n", + "\n", + "\n", + "builder = StateGraph(State)\n", + "builder.add_node(a)\n", + "builder.add_node(b)\n", + "builder.add_node(c)\n", + "builder.add_edge(START, \"a\")\n", + "builder.add_edge(\"b\", END)\n", + "builder.add_edge(\"c\", END)\n", + "\n", + "\n", + "def conditional_edge(state: State) -> Literal[\"b\", \"c\"]:\n", + " # Fill in arbitrary logic here that uses the state\n", + " # to determine the next node\n", + " return state[\"which\"]\n", + "\n", + "\n", + "# highlight-next-line\n", + "builder.add_conditional_edges(\"a\", conditional_edge)\n", + "\n", + "graph = builder.compile()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "43999312-0198-49e4-86a9-4f71e343ed64", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from IPython.display import Image, display\n", + "\n", + "display(Image(graph.get_graph().draw_mermaid_png()))" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "c6e92bf6-5ee8-4a5a-8693-a0e028b73e3b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Adding \"A\" to []\n", + "Adding \"C\" to ['A']\n", + "{'aggregate': ['A', 'C'], 'which': 'c'}\n" + ] + } + ], + "source": [ + "result = graph.invoke({\"aggregate\": []})\n", + "print(result)" + ] + }, + { + "cell_type": "markdown", + "id": "b1c54e61-393d-4359-88e2-6117a6022ce3", + "metadata": {}, + "source": [ + "!!! tip\n", + "\n", + " Your conditional edges can route to multiple destination nodes. For example:\n", + "\n", + " ```python\n", + " def route_bc_or_cd(state: State) -> Sequence[str]:\n", + " if state[\"which\"] == \"cd\":\n", + " return [\"c\", \"d\"]\n", + " return [\"b\", \"c\"]\n", + " ```" + ] + }, + { + "attachments": { + "f0038a5c-08d9-4eff-a1cb-d1ee4dde4fe5.png": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABXIAAAExCAYAAADRMVpJAAABXWlDQ1BJQ0MgUHJvZmlsZQAAKJF1kD1Lw3AQxp9oS0EDFnUQ6hDoJFQpbcRBCtZaXyBDaC21gkOa1lboy98kIm7i4hcQv4BQ3B3q4ODkLAgKguDqLARBS7x/o6ZVvON4fjzcHccBA6LGWM0HoN6wjMzKorRR2JQCL/BTBillTTdZUlUVasG39od9D4Hr3TTfpa2ehd4ux+ZCN+JTdjd89Le/L4ZKZVMn/aCSdWZYgBAlVvctxvmQeNygo4hPOFdcPudcdPmq27OeSRHfEgf1qlYifiaOFHv8Sg/Xa3v61w38erHcyGVJJ6gmsYQ0FEoJOcQhI4ZZ5JH+Z0buzqTQBMMBDOyggiosmk6Sw1BDmXgNDeiYQYQ4hijfyX/9+4eed0yayBMseJ5SAC6awGjL88JbwMg8cL3MNEP7+axg+8zteMzl4TbgP3WcV9oXmAI6D47z3nacTgsYfKRZ+xN5zGEwOHUGjgAAAFZlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA5KGAAcAAAASAAAARKACAAQAAAABAAAFcqADAAQAAAABAAABMQAAAABBU0NJSQAAAFNjcmVlbnNob3S9u+miAAAB12lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNi4wLjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczpleGlmPSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyI+CiAgICAgICAgIDxleGlmOlBpeGVsWURpbWVuc2lvbj4zMDU8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+MTM5NDwvZXhpZjpQaXhlbFhEaW1lbnNpb24+CiAgICAgICAgIDxleGlmOlVzZXJDb21tZW50PlNjcmVlbnNob3Q8L2V4aWY6VXNlckNvbW1lbnQ+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgqn9EX7AABAAElEQVR4AeydB4BVxfnFz/beCyxLWXqXJihYwB4xdqNGjcYaY0xMYokaW9QY/zExRZMYE02MGrvYS1CkSJPey9J3l+299//55vGWB1IWWHB3OQO77+0tc2d+d+69M+d+831+zUxQEgEREAEREAEREAEREAEREAEREAEREAEREAEREAERaLcE/NttyVQwERABERABERABERABERABERABERABERABERABERABR0BCrhqCCIiACIiACIiACIiACIiACIiACIiACIiACIiACLRzAhJy2/kJUvFEQAREQAREQAREQAREQAREQAREQAREQAREQAREQEKu2oAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAItHMCEnLb+QlS8URABERABERABERABERABERABERABERABERABERAQq7agAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAi0cwISctv5CVLxREAEREAEREAEREAEREAEREAEREAEREAEREAEREBCrtqACIiACIiACIiACIiACIiACIiACIiACIiACIiACLRzAhJy2/kJUvFEQAREQAREQAREQAREQAREQAREQAREQAREQAREQEKu2oAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAItHMCEnLb+QlS8URABERABERABERABERABERABERABERABERABERAQq7agAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAi0cwISctv5CVLxREAEREAEREAEREAEREAEREAEREAEREAEREAEREBCrtqACIiACIiACIiACIiACIiACIiACIiACIiACIiACLRzAhJy2/kJUvFEQAREQAREQAREQAREQAREQAREQAREQAREQAREQEKu2oAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAItHMCEnLb+QlS8URABERABERABERABERABERABERABERABERABERAQq7agAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAi0cwISctv5CVLxREAEREAEREAEREAEREAEREAEREAEREAEREAEREBCrtqACIiACIiACIiACIiACIiACIiACIiACIiACIiACLRzAhJy2/kJUvFEQAREQAREQAREQAREQAREQAREQAREQAREQAREQEKu2oAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAItHMCEnLb+QlS8URABERABERABERABERABERABERABERABERABERAQq7agAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAi0cwISctv5CVLxREAEREAEREAEREAEREAEREAEREAEREAEREAEREBCrtqACIiACIiACIiACIiACIiACIiACIiACIiACIiACLRzAhJy2/kJUvFEQAREQAREQAREQAREQAREQAREQAREQAREQAREQEKu2oAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAItHMCEnLb+QlS8URABERABERABERABERABERABERABERABERABERAQq7agAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAi0cwISctv5CVLxREAEREAEREAEREAEREAEREAEREAEREAEREAEREBCrtqACIiACIiACIiACIiACIiACIiACIiACIiACIiACLRzAhJy2/kJUvFEQAREQAREQAREQAREQAREQAREQAREQAREQAREQEKu2oAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAItHMCEnLb+QlS8URABERABERABERABERABERABERABERABERABERAQq7agAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAi0cwISctv5CVLxREAEREAEREAEREAEREAEREAEREAEREAEREAEREBCrtqACIiACIiACIiACIiACIiACIiACIiACIiACIiACLRzAhJy2/kJUvFEQAREQAREQAREQAREQAREQAREQAREQAREQAREQEKu2oAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAItHMCEnLb+QlS8URABERABERABERABERABERABERABERABERABERAQq7agAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAi0cwISctv5CVLxREAEREAEREAEREAEREAEREAEREAEREAEREAEREBCrtqACIiACIiACIiACIiACIiACIiACIiACIiACIiACLRzAhJy2/kJUvFEQAREQAQOH4H60lKULFqA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iIAIiEDHJCAht2OeN5VaBERABNoPAYq5jbQu3fz0H1G1KR3D//ws/IJswkdrLFbbTzUOa0nIyKyXze1EU00N+QQxIFrQfl0zHNYyKXMREAEREAEREAEREAEREAEREIEORUBCboc6XSqsCIiACLRfAs1NTQxO1kCB0gKYKYmACIiACIiACIhAxyOwOacSm7IrMXZgPKLD5Ymw451BlVgEREAEOjcBzXvt3OdXtRMBERCBI0bAz99fIu4Ro60DiYAIiIAIiIAItDWB+oYm/OXtdXjw74vdZyODliqJgAiIgAiIQHsiICG3PZ0NlUUEREAEREAEREAEREAEREAEROAbIWBCbnpGORobGcw1qwIScr+R06CDioAIiIAI7IOAhNx9wNEqERABERABERABERABERABERCBzk/AbG9NuC0uqYV9r6OoqyQCIiACIiAC7Y2AhNz2dkZUHhEQAREQAREQAREQAREQAREQgSNLgOrt1rxqirkeAbemttFilCqJgAiIgAiIQLsiICG3XZ0OFUYEREAEREAEREAEREAEREAEROBIE2imHe6MFfnOGteOXVldTyFXSu6RPg86ngiIgAiIwL4JSMjdNx+tFQEREAEREAEREAEREAEREAER6OwEqNl+tbqgRbwNCPSHn19nr7TqJwIiIAIi0NEISMjtaGdM5RUBERABERABERABERABERABEWhzArl5VS3uFCLDguDHf0oiIAIiIAIi0J4IBLanwqgsIiACIiACIiACIiACIiACIiACRzcB82hgrg48Mirl1COgp5oThaqaBgfejhcbSSH3CBz36D7Tqr0IiIAIiMCBEpCQe6DEtL0IiIAIiIAIiIAIiIAIiIAIiECbEzABt7a+EQs2lGBrbiWC6d6gb0oEhvaMRkhQwF6FVa/w2+LglgKsWdMeqBDb2OAJdGYV6xoXCn//tlNyD7aMB7tfm58cZSgCIiACItAuCEjIbRenQYUQAREQAREQAREQAREQAREQgaObwLrMctz796XIzqvYBURMdAiuO6cfzhyXgtiIoF3WNVHpXLy+GG/NysTaraVmyothfWJx1tgUTBiasFcxtoaCcRN127DgnQJxU7NHyPWjAty/RzT8dyjBJqbmldQghNvGhB+4pW5VbSP97xbikwXZWLK+CMFB/hjUKwbfP6s3BqftPM4uFeMf9RSWV20pw9tf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" + } + }, + "cell_type": "markdown", + "id": "931a0f15-b8d2-4ff6-8772-fd99f708a099", + "metadata": {}, + "source": [ + "### Map-reduce and the `Send` API\n", + "\n", + "By default, `Nodes` and `Edges` are defined ahead of time and operate on the same shared state. However, there can be cases where the exact edges are not known ahead of time and/or you may want different versions of state to exist at the same time. A common example of this is with map-reduce design patterns. In this design pattern, a first node may generate a list of objects, and you may want to apply some other node to all those objects. The number of objects may be unknown ahead of time (meaning the number of edges may not be known) and the input state to the downstream `Node` should be different (one for each generated object).\n", + "\n", + "To support this design pattern, LangGraph supports returning [Send](/langgraph/reference/types/#langgraph.types.Send) objects from conditional edges. `Send` takes two arguments: first is the name of the node, and second is the state to pass to that node.\n", + "\n", + "```python\n", + "def continue_to_jokes(state: OverallState):\n", + " return [Send(\"generate_joke\", {\"subject\": s}) for s in state['subjects']]\n", + "\n", + "graph.add_conditional_edges(\"node_a\", continue_to_jokes)\n", + "```\n", + "\n", + "Below we implement a simple example, where we simulate using LLMs to (1) generate a list of subjects (the length of which is unknown ahead of time), (2) generate jokes in parallel, and (3) select a \"best\" joke. Importantly, the input state to the fan-out nodes is different than the graph's overall state.\n", + "\n", + "![Screenshot 2025-05-05 at 4.21.35 PM.png](attachment:f0038a5c-08d9-4eff-a1cb-d1ee4dde4fe5.png)" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "8b971a9c-337a-4899-bcf7-080193832935", + "metadata": {}, + "outputs": [], + "source": [ + "import operator\n", + "from typing import Annotated\n", + "from typing_extensions import TypedDict\n", + "\n", + "from langgraph.types import Send\n", + "from langgraph.graph import END, StateGraph, START\n", + "\n", + "\n", + "# This will be the overall state of the main graph.\n", + "# It will contain a topic (which we expect the user to provide)\n", + "# and then will generate a list of subjects, and then a joke for\n", + "# each subject\n", + "class OverallState(TypedDict):\n", + " topic: str\n", + " subjects: list\n", + " # Notice here we use the operator.add\n", + " # This is because we want combine all the jokes we generate\n", + " # from individual nodes back into one list - this is essentially\n", + " # the \"reduce\" part\n", + " jokes: Annotated[list, operator.add]\n", + " best_selected_joke: str\n", + "\n", + "\n", + "# This will be the state of the node that we will \"map\" all\n", + "# subjects to in order to generate a joke\n", + "class JokeState(TypedDict):\n", + " subject: str\n", + "\n", + "\n", + "# This is the function we will use to generate the subjects of the jokes.\n", + "# In general the length of the list generated by this node could vary each run.\n", + "def generate_topics(state: OverallState):\n", + " # Simulate a LLM.\n", + " return {\"subjects\": [\"lions\", \"elephants\", \"penguins\"]}\n", + "\n", + "\n", + "# Here we generate a joke, given a subject\n", + "def generate_joke(state: JokeState):\n", + " # Simulate a LLM.\n", + " joke_map = {\n", + " \"lions\": \"Why don't lions like fast food? Because they can't catch it!\",\n", + " \"elephants\": \"Why don't elephants use computers? They're afraid of the mouse!\",\n", + " \"penguins\": (\n", + " \"Why don’t penguins like talking to strangers at parties? \"\n", + " \"Because they find it hard to break the ice.\"\n", + " ),\n", + " }\n", + " return {\"jokes\": [joke_map[state[\"subject\"]]]}\n", + "\n", + "\n", + "# Here we define the logic to map out over the generated subjects\n", + "# We will use this as an edge in the graph\n", + "def continue_to_jokes(state: OverallState):\n", + " # We will return a list of `Send` objects\n", + " # Each `Send` object consists of the name of a node in the graph\n", + " # as well as the state to send to that node\n", + " return [Send(\"generate_joke\", {\"subject\": s}) for s in state[\"subjects\"]]\n", + "\n", + "\n", + "# Here we will judge the best joke\n", + "def best_joke(state: OverallState):\n", + " return {\"best_selected_joke\": \"penguins\"}\n", + "\n", + "\n", + "# Construct the graph: here we put everything together to construct our graph\n", + "builder = StateGraph(OverallState)\n", + "builder.add_node(\"generate_topics\", generate_topics)\n", + "builder.add_node(\"generate_joke\", generate_joke)\n", + "builder.add_node(\"best_joke\", best_joke)\n", + "builder.add_edge(START, \"generate_topics\")\n", + "builder.add_conditional_edges(\"generate_topics\", continue_to_jokes, [\"generate_joke\"])\n", + "builder.add_edge(\"generate_joke\", \"best_joke\")\n", + "builder.add_edge(\"best_joke\", END)\n", + "graph = builder.compile()" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "2760846f-a297-455c-a07c-155743f5e55f", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from IPython.display import Image, display\n", + "\n", + "display(Image(graph.get_graph().draw_mermaid_png()))" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "cd91131a-b640-4604-9b48-b6cb5207be31", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'generate_topics': {'subjects': ['lions', 'elephants', 'penguins']}}\n", + "{'generate_joke': {'jokes': [\"Why don't lions like fast food? Because they can't catch it!\"]}}\n", + "{'generate_joke': {'jokes': [\"Why don't elephants use computers? They're afraid of the mouse!\"]}}\n", + "{'generate_joke': {'jokes': ['Why don’t penguins like talking to strangers at parties? Because they find it hard to break the ice.']}}\n", + "{'best_joke': {'best_selected_joke': 'penguins'}}\n" + ] + } + ], + "source": [ + "# Call the graph: here we call it to generate a list of jokes\n", + "for step in graph.stream({\"topic\": \"animals\"}):\n", + " print(step)" + ] + }, + { + "cell_type": "markdown", + "id": "4c505843-5449-4e9b-8ad4-27b88a987cc4", + "metadata": {}, + "source": [ + "## Create and control loops\n", + "\n", + "When creating a graph with a loop, we require a mechanism for terminating execution. This is most commonly done by adding a [conditional edge](../../concepts/low_level/#conditional-edges) that routes to the [END](../../concepts/low_level/#end-node) node once we reach some termination condition.\n", + "\n", + "You can also set the graph recursion limit when invoking or streaming the graph. The recursion limit sets the number of [supersteps](../../concepts/low_level/#graphs) that the graph is allowed to execute before it raises an error. Read more about the concept of recursion limits [here](../../concepts/low_level/#recursion-limit). \n", + "\n", + "Let's consider a simple graph with a loop to better understand how these mechanisms work.\n", + "\n", + "!!! tip\n", + "\n", + " To return the last value of your state instead of receiving a recursion limit error, see the [next section](#impose-a-recursion-limit).\n", + "\n", + "When creating a loop, you can include a conditional edge that specifies a termination condition:\n", + "```python\n", + "builder = StateGraph(State)\n", + "builder.add_node(a)\n", + "builder.add_node(b)\n", + "\n", + "def route(state: State) -> Literal[\"b\", END]:\n", + " if termination_condition(state):\n", + " return END\n", + " else:\n", + " return \"a\"\n", + "\n", + "builder.add_edge(START, \"a\")\n", + "builder.add_conditional_edges(\"a\", route)\n", + "builder.add_edge(\"b\", \"a\")\n", + "graph = builder.compile()\n", + "```\n", + "\n", + "To control the recursion limit, specify `\"recursion_limit\"` in the config. This will raise a `GraphRecursionError`, which you can catch and handle:\n", + "```python\n", + "from langgraph.errors import GraphRecursionError\n", + "\n", + "try:\n", + " graph.invoke(inputs, {\"recursion_limit\": 3})\n", + "except GraphRecursionError:\n", + " print(\"Recursion Error\")\n", + "```" + ] + }, + { + "cell_type": "markdown", + "id": "2de7cdff-3811-4d19-b93b-7b8dfbbdb4f1", + "metadata": {}, + "source": [ + "Let's define a graph with a simple loop. Note that we use a conditional edge to implement a termination condition." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "f087c028-b115-42a0-a85d-f53d96223720", + "metadata": {}, + "outputs": [], + "source": [ + "import operator\n", + "from typing import Annotated, Literal\n", + "\n", + "from typing_extensions import TypedDict\n", + "\n", + "from langgraph.graph import StateGraph, START, END\n", + "\n", + "\n", + "class State(TypedDict):\n", + " # The operator.add reducer fn makes this append-only\n", + " aggregate: Annotated[list, operator.add]\n", + "\n", + "\n", + "def a(state: State):\n", + " print(f'Node A sees {state[\"aggregate\"]}')\n", + " return {\"aggregate\": [\"A\"]}\n", + "\n", + "\n", + "def b(state: State):\n", + " print(f'Node B sees {state[\"aggregate\"]}')\n", + " return {\"aggregate\": [\"B\"]}\n", + "\n", + "\n", + "# Define nodes\n", + "builder = StateGraph(State)\n", + "builder.add_node(a)\n", + "builder.add_node(b)\n", + "\n", + "\n", + "# Define edges\n", + "def route(state: State) -> Literal[\"b\", END]:\n", + " if len(state[\"aggregate\"]) < 7:\n", + " return \"b\"\n", + " else:\n", + " return END\n", + "\n", + "\n", + "builder.add_edge(START, \"a\")\n", + "builder.add_conditional_edges(\"a\", route)\n", + "builder.add_edge(\"b\", \"a\")\n", + "graph = builder.compile()" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "c468e5b2-a1dd-4fac-84a9-9eb212a09752", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from IPython.display import Image, display\n", + "\n", + "display(Image(graph.get_graph().draw_mermaid_png()))" + ] + }, + { + "cell_type": "markdown", + "id": "255d288a-6e17-4f34-babe-0c6cf1e09a6f", + "metadata": {}, + "source": [ + "This architecture is similar to a [ReAct agent](../../agents/overview) in which node `\"a\"` is a tool-calling model, and node `\"b\"` represents the tools.\n", + "\n", + "In our `route` conditional edge, we specify that we should end after the `\"aggregate\"` list in the state passes a threshold length.\n", + "\n", + "Invoking the graph, we see that we alternate between nodes `\"a\"` and `\"b\"` before terminating once we reach the termination condition." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "83c759be-9bb7-4f96-8b79-028fe1ebb45f", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Node A sees []\n", + "Node B sees ['A']\n", + "Node A sees ['A', 'B']\n", + "Node B sees ['A', 'B', 'A']\n", + "Node A sees ['A', 'B', 'A', 'B']\n", + "Node B sees ['A', 'B', 'A', 'B', 'A']\n", + "Node A sees ['A', 'B', 'A', 'B', 'A', 'B']\n" + ] + }, + { + "data": { + "text/plain": [ + "{'aggregate': ['A', 'B', 'A', 'B', 'A', 'B', 'A']}" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "graph.invoke({\"aggregate\": []})" + ] + }, + { + "cell_type": "markdown", + "id": "8c596264-9a36-4c52-ba7d-9fa5dcb3467d", + "metadata": {}, + "source": [ + "### Impose a recursion limit\n", + "\n", + "In some applications, we may not have a guarantee that we will reach a given termination condition. In these cases, we can set the graph's [recursion limit](../../concepts/low_level/#recursion-limit). This will raise a `GraphRecursionError` after a given number of [supersteps](../../concepts/low_level/#graphs). We can then catch and handle this exception:" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "f7526e3c-357c-4eba-b101-751418523672", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Node A sees []\n", + "Node B sees ['A']\n", + "Node A sees ['A', 'B']\n", + "Node B sees ['A', 'B', 'A']\n", + "Recursion Error\n" + ] + } + ], + "source": [ + "from langgraph.errors import GraphRecursionError\n", + "\n", + "try:\n", + " graph.invoke({\"aggregate\": []}, {\"recursion_limit\": 4})\n", + "except GraphRecursionError:\n", + " print(\"Recursion Error\")" + ] + }, + { + "cell_type": "markdown", + "id": "0793b71a-fd92-4284-8d58-cc10f49872f6", + "metadata": {}, + "source": [ + "Note that this time we terminate after the fourth step. The default recursion limit is 25.\n", + "\n", + "
    Extended example: return state on hitting recursion limit\n", + "\n", + "Instead of raising GraphRecursionError, we can introduce a new key to the state that keeps track of the number of steps remaining until reaching the recursion limit. We can then use this key to determine if we should end the run.\n", + "\n", + "LangGraph implements a special RemainingSteps annotation. Under the hood, it creates a ManagedValue channel -- a state channel that will exist for the duration of our graph run and no longer.\n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "7fe57f1a-ab55-45ed-b229-8f29fc3da05b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Node A sees []\n", + "Node B sees ['A']\n", + "Node A sees ['A', 'B']\n", + "{'aggregate': ['A', 'B', 'A']}\n" + ] + } + ], + "source": [ + "import operator\n", + "from typing import Annotated, Literal\n", + "\n", + "from typing_extensions import TypedDict\n", + "\n", + "from langgraph.graph import StateGraph, START, END\n", + "\n", + "# highlight-next-line\n", + "from langgraph.managed.is_last_step import RemainingSteps\n", + "\n", + "\n", + "class State(TypedDict):\n", + " # The operator.add reducer fn makes this append-only\n", + " aggregate: Annotated[list, operator.add]\n", + " # highlight-next-line\n", + " remaining_steps: RemainingSteps\n", + "\n", + "\n", + "def a(state: State):\n", + " print(f'Node A sees {state[\"aggregate\"]}')\n", + " return {\"aggregate\": [\"A\"]}\n", + "\n", + "\n", + "def b(state: State):\n", + " print(f'Node B sees {state[\"aggregate\"]}')\n", + " return {\"aggregate\": [\"B\"]}\n", + "\n", + "\n", + "# Define nodes\n", + "builder = StateGraph(State)\n", + "builder.add_node(a)\n", + "builder.add_node(b)\n", + "\n", + "\n", + "# Define edges\n", + "def route(state: State) -> Literal[\"b\", END]:\n", + " # highlight-next-line\n", + " if state[\"remaining_steps\"] <= 2:\n", + " return END\n", + " else:\n", + " return \"b\"\n", + "\n", + "\n", + "builder.add_edge(START, \"a\")\n", + "builder.add_conditional_edges(\"a\", route)\n", + "builder.add_edge(\"b\", \"a\")\n", + "graph = builder.compile()\n", + "\n", + "# Test it out\n", + "result = graph.invoke({\"aggregate\": []}, {\"recursion_limit\": 4})\n", + "print(result)" + ] + }, + { + "cell_type": "markdown", + "id": "6c9e1818-079a-41bb-aed0-2bf993ca943f", + "metadata": {}, + "source": [ + "
    " + ] + }, + { + "cell_type": "markdown", + "id": "308d93f4-6e78-411d-82de-78eac230e44d", + "metadata": {}, + "source": [ + "
    Extended example: loops with branches\n", + "\n", + "To better understand how the recursion limit works, let's consider a more complex example. Below we implement a loop, but one step fans out into two nodes:\n", + "
    " + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "258d8613-8572-407a-941a-2ac50b8f1c3e", + "metadata": {}, + "outputs": [], + "source": [ + "import operator\n", + "from typing import Annotated, Literal\n", + "\n", + "from typing_extensions import TypedDict\n", + "\n", + "from langgraph.graph import StateGraph, START, END\n", + "\n", + "\n", + "class State(TypedDict):\n", + " aggregate: Annotated[list, operator.add]\n", + "\n", + "\n", + "def a(state: State):\n", + " print(f'Node A sees {state[\"aggregate\"]}')\n", + " return {\"aggregate\": [\"A\"]}\n", + "\n", + "\n", + "def b(state: State):\n", + " print(f'Node B sees {state[\"aggregate\"]}')\n", + " return {\"aggregate\": [\"B\"]}\n", + "\n", + "\n", + "def c(state: State):\n", + " print(f'Node C sees {state[\"aggregate\"]}')\n", + " return {\"aggregate\": [\"C\"]}\n", + "\n", + "\n", + "def d(state: State):\n", + " print(f'Node D sees {state[\"aggregate\"]}')\n", + " return {\"aggregate\": [\"D\"]}\n", + "\n", + "\n", + "# Define nodes\n", + "builder = StateGraph(State)\n", + "builder.add_node(a)\n", + "builder.add_node(b)\n", + "builder.add_node(c)\n", + "builder.add_node(d)\n", + "\n", + "\n", + "# Define edges\n", + "def route(state: State) -> Literal[\"b\", END]:\n", + " if len(state[\"aggregate\"]) < 7:\n", + " return \"b\"\n", + " else:\n", + " return END\n", + "\n", + "\n", + "builder.add_edge(START, \"a\")\n", + "builder.add_conditional_edges(\"a\", route)\n", + "builder.add_edge(\"b\", \"c\")\n", + "builder.add_edge(\"b\", \"d\")\n", + "builder.add_edge([\"c\", \"d\"], \"a\")\n", + "graph = builder.compile()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "bdb2a545-3f1f-408b-8aa3-3702d37eedf8", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAASkAAAFcCAIAAAAbFN+nAAAAAXNSR0IArs4c6QAAIABJREFUeJzt3XlcE8f/P/DJBQmEcB9yHyKKgoAgeCAqHlVABCpYL1S01ru1av3ZqrW21lupJ97WDx71REXFW5BKBEFFAQVR5ApyExIIuX5/bL8ULCqE3Z0kzPPx6ONRApl5q7yyu7MzsxS5XA4QBCEdFXYBCNJFoewhCBwoewgCB8oegsCBsocgcKDsIQgcdNgFIB32vrBRyJcK66TiJpmoQQa7nHbRZFHpDIqWDp2lQzOzYcIuRymg7KmM/Of1+ZmCN88F1j21mhpkWhyagYkmUJG7s3IZKHsnEvIFdDq1IFtg20fbwUW7u5sO7LpgoqB768ov72n935crzO1ZFg4suz7aTG0a7Io6pUkke/tc8DZHUPSyYWCQYU8vDuyK4EDZU2qiBumN/5XR6ZSBQUa6RgzY5eBMUCf5+3JlbYV41FRTjoG6/ek+C2VPeRW/bog/WBqywMLYQhN2LQSqfi+6tK90SKixXR9t2LWQCmVPSVWWiu6fLQ9daAm7EJJcOVjiMVzf3J4FuxDyoOwpo/zM+oy7NWGLukrwMJf3l9i7avf20YVdCEnQ/T2lU1spfnCxoqsFDwAQ9LX5i4d1ZQWNsAshCcqe0rl7+v2kFdawq4Aj/Durv+MrxSLVuGnZSSh7yiXlaqVFdxad0XX/XRz7sh9cqoBdBRm67r+xEmoSyZ7er/EaZQC7EJj6DNJ9ly2sqxLDLoRwKHtK5Mndar8vjWFXAd+QUKNnibWwqyAcyp4Sef53nZWTFjl9SaXSJ0+eKPz2+vr6nJwcXCv6l3Uv7WdJNQQ1rjxQ9pRF2btGth5dm0PSDNt169atX79e4bdPnDgxLi4O14r+RaNRLHtoFWQLCGpfSaDsKYvCl0InT/LmFotEIsXeiN0QbmpqwruiVnp4sIvyhIR2AR3KnrKoKGnS0iFkkvSDBw8iIiIGDRo0YcKE06dPAwB+/vnnmzdv5ufne3p6enp6lpSUAAAuXbo0ZcoUHx+f4cOH//jjj9XV1djbb9265enpee/evaioKB8fn3379gUGBlZVVZ05c8bT0zMwMJCImtl69PfviI03dGgNkbIQ1km0CDjhFAqFP/zwg729/U8//ZSXl1deXg4AmDlzZllZWXFx8S+//AIAMDIyAgBkZmba2tqOHTu2qqrq1KlTAoFgx44dze1s3Lhx/vz5c+fOtba29vPzW7BgQb9+/SZPnqyhoYF7zQAAbQ5dUCchomXlgbKnLIR8KRHHvaqqKpFINHz48DFjxjS/aG1traenV1lZ6ebm1vziypUrKRQK9v90Ov3w4cMikUhT859p3BEREc2HOBMTEzqdbmRk1PLt+NLWpQtqUfYQUtA1KDQC/jUsLCxcXV0PHTrEYrFCQ0M/cZgSi8WnTp26evUqj8djMpkymay6utrMzAz7bv/+/fEv7uOoVKDJUu1lip+FrveUBZ1OFdRJcW+WQqH88ccfgYGBO3bsCA0NTU9Pb/PH5HL5t99+e/jw4XHjxu3atWvs2LEAAJns37ldWlok3fzACOqkVDWPHsqe0tDi0IQEZA8AwGazV6xYce7cOTabvWTJEqHwn/HDlktY0tPTHz16tGLFikmTJvXp06d79+6fbZbQFTCCOglpt1tgQdlTFkYWmk3EbHyE3U6wsLCYOHFifX09NqrJYrEqKyubj2w1NTUAgJ49e7b8suVx7wMsFquigsBZl40CqdpvqaTmHy0qpJsd8/Gt6l7eOG9eIhaLw8LCRo4c6eDgcObMGTabbWlpCQDw8PC4dOnS+vXr3dzcOByOi4uLhobGrl27QkJCcnNzjxw5AgDIy8vDfvi/3N3dr1+/fvToUQ6H4+rq2p7jZIe8Sq93cFXzZezouKcsrHpo8QoacV8+09DQ4OXlde3atQ0bNjAYjB07djCZTADA2LFjw8PDb968uXPnzmfPnpmYmPz22285OTnLly/ncrkxMTGDBw8+derUx5pdtGiRp6fnwYMHjxw5UlhYiG/NAIA3zwVqv4UEWreuRB5crDB3YNq7sGEXAllxnvDlY/7wCFPYhRALnXMqkT6DOJf3l34ie4cOHTp+/Ph/X+/Vq1d2dnabbzly5IidnR2uZX6ovr7+Y7Nb9PX1m+fHtLRjx45P3Bv8+0ql73j1X8+BjnvK5c6p96a2mh/bs4TP5/P5/P++TqF89N8Ruw+Od5mtyGQyHo/X5rfEYjGD0cbmf4aGhs137T+Qn1mf/YgfENUN7zKVDsqechHWS27Fvh83xxx2IdBcO1o6YKyhngkhU9WUChprUS5abLqbn17cvmLYhcCRcJzn4MLuCsFD2VNG1j21rJ20bp0sg10I2ZIuluvo0Xv06yoPaUDnnErq9dP6t9kC/4lqPtbX7EFchZ4xo8/ArrI5JzruKS+HvmwTS+bZ6CKpRP0/HK8cKGFqUbtU8NBxT9mVvmm4e+a9gwvbe4wh7FoIkX6n+sn9mmHhJna91fxO+n+h7Ck7uUyeerP68a1qr9H6Vj20TK3VYZZjRYmoIEuYcbe6lzdnQKAhlUqBXREEKHuqQSKWPUuszXtaX18j6dlfhwIo2ro0jgFDpiL/elQapa6ySVArlcnkeRn1GkyqQ19tl8F6LBV/lmBnoOypGEGdpCivgV8lFtRKKQDwa3Be3F1WViYWiz82hVphOgZ0uRRo69LY+nRze1YXfNref6HsIa3873//q6io+Pbbb2EXov7QOCeCwIGyhyBwoOwhrbBYLA4H5/W7SJtQ9pBWGhoa6urqYFfRJaDsIa3QaLQ2V/0guEPZQ1qRSqVisfo/+04ZoOwhrWhoaLBYLNhVdAkoe0grTU1NDQ0NsKvoElD2kFa0tLR0dbvWegJYUPaQVoRCYW2t+j9vWRmg7CEIHCh7SCsMBuNjO4gh+ELZQ1oRi8UKPw4a6RCUPaQVdNwjDcoe0go67pEGZQ9B4EDZQ1phMplsdld/GAs5UPaQVhobG+vr62FX0SWg7CEIHCh7SCto7SxpUPaQVtDaWdKg7CEIHCh7SCtoHQNpUPaQVtA6BtKg7CEIHCh7SCtonJM0KHtIK2ickzQoewgCB8oe0gran5M0KHtIK2h/TtKg7CGtoHUMpEHZQ1pB6xhIg7KHIHCg7CGtMBgMJpMJu4ouAWUPaUUsFjc2NsKuoktA2UNaQXOpSYOyh7SC5lKTBmUPaQUd90iDsoe0go57pEHZQ1rR1NTU0tKCXUWXQJHL5bBrQOALDg6Wy+VyuVwoFMpkMh0dHezLK1euwC5NbdFhF4Aohe7du9+7d49CoWBf8vl8mUzm5eUFuy51hs45EQAAiIyMNDY2bvmKvr7+lClT4FWk/lD2EAAAcHV17dWrV8tXHBwcfH194VWk/lD2kH9Mnz7dwMAA+39dXd1p06bBrkjNoewh/+jbt6+rqys29ubg4DB48GDYFak5lD3kX5GRkYaGhuigRw40zqn+RA3SiuImUaPssz+pTbHv12usQCAw13PPfy747M9raFINzTVY2jScKu1a0P09NZfwJ+9tltDCgSX7fPQ6TINJLXwpsHTUGjnZhK6BzqE6BmVPbUmaZOf+KO7jq2/dk9g9IHhvhanXK8IWWWiy0AGwA1D21NZf2wo9RxsbW5KxEJZfJb71v+Jpq2xJ6EttoPME9ZSbwTeyZJITPACAjgHDvq9OZnINOd2pB5Q99VReJGJqkzqQpsVhlL0TkdmjqkPZU0+iBhnHkNQtbjmGDHEDun7pAJQ99SRqkMkkpPYol4EGgZTULlUcyh6CwIGyhyBwoOwhCBwoewgCB8oegsCBsocgcKDsIQgcKHsIAgfKHoLAgbKHIHCg7CEIHCh7CAIHyh6CwIGyhyBwoH3KEAAAaGpq+vP4gTt3Et6XlxkaGo0aGTA9cg6NhvZfIRDKHgIAADQa7fFj7oCBQ8y7Weblvfxf7GEdHU74BPQ8BgKh7CEAy96e3cean0NUUlqUmHQHZY9QKHvIP6qrq/48fiA1LYXPrwMA6LB1YFek5lD2EAAAqKqq/PqbySyW1swZc83NLQ8f3lNYVAC7KDWHsocAAMCly+eqq6t27zxqamoGADAxMUPZIxq6x4AAAEBdXY2enj4WPABAbV0N2jSZaOi4hwAAgJub54WLfx0+srd3775JSXe43GSZTMav56OrPuKg4x4CAABDfIdPmzrrYtyZ3377USwR79511Nra9ubNq7DrUmfoeQzq6ezu3B59u9m5EPsUlJZ4bxsyE6tCF1qQ1qOqQ8c9tSKTyRobG/39/UtKSmHXgnwGyp6aiImJGTFiRFNTE41GO3fuXI8ePWBXhHwGGmtRYXl5eadPnw4ICHBzc7OxsTlz5gyTyQQA6OnpAcCDUtLly5cBABKJRCqVYsdhmUw2ceJEKMUoOZQ91fPo0SO5XO7t7Z2YmNirV68+ffoAAL744gvYdYE3b96cOPozhfLvIIJcLqdQKJs2bUpPT4ddndJB55wqIy8vDwBw+vTpI0eO6OvrAwBmzpwZGhpKpyvLB6illZWVlRUAgPJ/qFQqhUJBwWsTyp4KePv27ZAhQ5KSkgAAoaGhe/fuVc7LOQadPn/+fCMjo5YvamlpwatIqaHsKSmpVPrLL79MmjQJAMBms69duzZjxgwAAINB6lP1OmrkyJFjx47V0NDAvpTL5VQq9fjx47DrUkYoe8rl5cuXa9asKSgokEgkffv2PXjwIADAyMhIW1sbdmnttWjRIjc3N+yST1NT8/Lly5WVlQMGDDh48CC6mdwSyp5SePDgQWJiIgAgNTXVy8vL2tpaU1MzODhYRU/YNm7caG1tDQD4+++/dXR0vv322/v374vFYi8vr927dzc2NsIuUCmg7MH07t07AEBsbOyZM2fMzc0BAFOmTAkMDGxew6qidHR0Vq9eraPz71xQDQ2NuXPnpqWlsVgsf3//bdu21dbWQq0RPpQ9OJ49ezZo0KCsrCwAQERERHR0dPfu3WEXhSd3d/e7d+/+9/WZM2cmJyebmpqGhISsX7/+/fv3MKpTCih75JFIJD///PP06dMBAAYGBrdv38ZuyinPTQLSTJ48+c6dO05OTt9///3atWuLiopgVwQByh7h0tLS1q5dK5VKxWJxv379YmJiAACWlpbYHJSuLCws7Pjx4+7u7vPnz1+5cuWbN29gV0QqlD2iPHr0iM/nY3fD3d3daTQai8UKCgrS1NQkoXe2Ho1C+r+trpEi9z/GjRsXFxfn5+e3bNmyjRs3YlMIugK0hghnPB7PzMxs9erV5eXl27ZtY7FYUMrIuFdTVSbu/4UxaT1mPqgGMunAIKN2/OxHJSUl7dq1y8bGZs6cOQ4ODvhVp4xQ9nCTnZ397bffLlq0KCAgQCAQwL0jV1kqSr5UNWxiN9J6TDrPc/PjmNvjcFPk9u3bMTExdnZ233zzjZ2dHR7VKSOUvU6RSCR79+4tKCjYsmXL27dv2Wz2BzOqIHpyv6Ykv9E31IyEvlKuvNfRp/mMNcSxzVu3bu3bt8/R0XHevHnYNFE1g7KniNLS0vj4+BkzZvD5/IsXLwYGBipP5Fp68bAuJ41v10fHyIKpwcT/+k8illUUNxbnCkxtmJ4j9HFvHwBw48aN8+fPm5mZLViwQDn/khWGstcBVVVVVCpVT08vKirK09Nz7ty5sCv6qPj4eBMTEy8vr9K3DS8e1tVXS2rKxbj3YmCqwWTTnDzZNj21sTsHU6dOJWI10+XLl3ft2uXv7z9//nwVml73aSh7nyeTyahUanR09JUrV2JjY01MTGBX9BkJCQmpqak//fQTmZ3m5uYuXLgQu3U5ceLEcePG4d7F6dOnd+/ePWHChAULFqj61B+Uvc/Iyck5fPjwmDFjhg0blpOT07NnT9gVKS+5XB4UFMTj8QAAurq6+vr6YWFhISEhuN/GPHr06K5du5YtWxYREYFvyyRD9/fakJqayuVyAQCZmZmjR48eNmwYAEBVgnf69Gkok5UpFIqVlRX2UV5bW/v27du9e/dGRkbivoBo+vTpaWlpjY2No0aNSkhIwLdxMqHs/auiogIAcPLkyUOHDhkbGwMAJkyY4O/vD7uuDti8ebOVlRWsGTPOzs4tvxQKha9fvz516hQRfUVGRp48efL+/fvTp09//vw5EV0QDZ1zAmxh+IoVK0aPHj1jxgyhUKiiK3ekUqlcLoc4O/TGjRvr1q1raGjAvqRQKLa2tmfOnCG008zMzC1btlhYWCxdutTAwIDQvvDVpY97CQkJ0dHR2FNX161bhy0MV9HglZeXJyQkwJ2WbWdnx2b/sxsvjUbbsmUL0cEDALi4uBw7dszPzy8iIuLo0aNEd4ejrpi9p0+fYse6+/fvjxgxAgDQo0cPR0dH2HV1SlBQ0MiRI+HW4OjoiM2hMzY25nK5Bw8erK6uJqfr0aNH37x5k8lkjhgxAluFrPy60DmnRCKh0+nh4eHdunXDDndqIysry9zcXE9PD3YhYM6cOYWFhVevXgUAFBUVbdmyZceOHWQWUFNTs3btWhqNtnr1ag6HQ2bXHSbvAtLT0+fOnfvmzRu5XF5aWgq7HJxVV1dXVFTArqJtZ8+e/e2338jv9+7du0OHDj1+/Dj5XbefOp9zZmVlpaSkYP8TGRlpa2sLADAzI2N+I2nevn0bFRVlaIjnREochYWFaWpqYrsbkmno0KF3796tqKiYMGGC8o6Cwg4//kQikVwuT0pKmjJlSk5ODuxyiHX+/Pna2lrYVXyKVCr19PSE1fvr168jIyP/+OMPWAV8grpd7/32228vXrw4ceIEn89vuVcPAtHt27cfPnxI8hy3li5cuHDgwIFt27Yp1QQJdTjnlEgkJ06cwGYzeXt7nzhxAtsqC3ZdxCooKID429wh/v7+paWl2Pk/FCEhIUeOHFm3bt3evXth1fBfqp29mpoaAMCCBQtKS0uxBSbYPYOuYMuWLbNmzYJdRXv99NNPv/76K8QCTE1NY2NjGQxGRESEkmzNpKrnnHl5eWvXrp03b96AAQNg14K0y/HjxzU1NcPDw+GWkZeX9/3334eHh0+ePBluJSqWvffv3z948CA0NDQ5OVlfX/+DCYRdhEQiuXTpUmhoKOxCOkYul3t5eaWlpcEuBAAAsM15165dC7EGVTrnFIlEkZGR2NLJQYMGdc3gYeNJqrilJ4VCmTt37p49e2AXAgAAS5YsCQ4OHj58eElJCbQiYA+0fl5SUtK0adMkEolEIoFdC3x1dXVcLhd2FYqbO3duY2Mj7Cr+UVNTExgYePv2bSi9K/VxD7sm/vvvv5ctW0aj0Wg0GuyK4NPR0enfvz/sKhTn7OyMDUQrA11d3cuXL1+7dm337t3k966k2cvOzh48eDC2BnT58uXYY42R7Ozs5cuXw66iUyZPnhwbGwu7ilY2b97MYrGwDS/IpHTZw5ZaSiSSmzdvqtnjQTrvyJEjqr5Rgr6+vp+fn7KtN585c+ZXX301c+ZMUnuFcqbbJpFI5OnpeerUKdiFIMR6/PjxrFmzYFfRhpqaGk9PT7FYTE53SnHcO3/+fFFRkVwu53K5qv65Tpw3b95UVVXBrgIHHh4eJSUl2DwkpaKrq8vlcgcNGtS89J5Q8LN37Nix7OxsCwsLTU1NKhV+PcqpoaFh6tSpqrUnwieMGTPm2rVrsKtoA5VK5XK5I0eOJOHRnNB+12trazdv3gwACA4O/vHHH9Vgu0VCPXv2bPXq1bCrwE1gYCC2e4ByevDgQUhISHl5OaG9QMteSEgItveeMqy2Vn7e3t6jRo2CXQVubG1tX79+DfO+9ufcuXNn6tSphO62SHb2eDweNqvozp07np6eJPeuourr68+dOwe7CpwNGDDg4cOHsKv4lOvXr8+cObO+vp6g9knNXnV1dVRUlFKtoVIJV65cyc/Ph10FzpQ/ewCAPXv2BAcHE9Q4ednj8/kikSg+Pr55GzmknYyNjadOnQq7Cpz5+PhAXNHXTnp6elu3bv3666+JaJyM7MlkspCQEE1NTTXbK4U0/v7+6vdXx2KxbGxscnJyYBfyGW5ubkOGDNm+fTvuLZORvQsXLkRHR2toaJDQl/opKipSrS1f269Xr17Z2dmwq/i8KVOm5OXl4X6UJjZ7IpHo+fPnYWFh1tbWhHakxpKSkrAHRagfVckeAGD37t1bt27Fd7Ergdmrr68fNWoUmgbdSX369IG+wpogKpQ9AMDs2bNXrlyJY4MEZg/bdJ249rsIFxeXbt26wa6CEM7Oziq0LmzUqFF8Ph/HsVmisvf27Vt7e3uCGu9SfvnlF9Xa16NDampqCgsLYVfRXuvWrcNxARQh2UtISNi/f7+KPtBHqfB4PC6Xq8YT7iwtLZVk17D20NfXt7e3xyt+hGSvpqbm559/JqLlrkZDQwPufj5EU63sAQDmz5+P1yJ3FdunDFEzsbGxZWVlS5YsgV1IB8TGxtJotIkTJ3ayHfyPeydOnFDep0+omps3b166dAl2FQSys7MTiUSwq+iYoKCgmJiYzreDf/bOnTuHZo3hJTMzk8/nw66CQHp6ellZWbCr6BgOhzNkyJArV650sh2csyeTyYKDg7GnbSGdN3z4cD8/P9hVEMjQ0LCyshJ2FR02ZcqUzk9zwWeL1fnz51dVVTEYDLlcLpFIrl+/TqfTsUeU4NJ+l+Xm5ga7BGIZGRmp4qwdR0fH3NzcvLy8zmznhc9xz8/P7927d1lZWdnZ2bm5ua9evcrKynr58iUujXdlR44cUb/VQy3RaDQdHR3smTaqJSAgID4+vjMt4JO98PBwCwuLD15U6S1clURSUpJ6X++p7qEvICCgkx+LuF3vTZkyRVNTs/lLDofz1Vdf4dV4l/XNN9+o/fQgc3NzVTzuYVeqnZmPilv2xo0b1/LQ17179yFDhuDVeJfVv39/tX+IJ5VKJW5fBkL5+vp25lHyeI5zTpo0CTv06erqquvUe5IdO3ZMFc/HOoTNZqto9rBhDoXfjmf2xo8fjx367O3t1XtknDRXr15VxfOxDlHd7PXs2fPWrVtisVixt7frHoNELGuol7XnJyPCph8+fHjilzP41ZLP/rBcLmfr0qk0tZ0o3Hlr1661tLSEXQWxVDd72E2gJ0+eeHl5KfDez2Qv+1Hds6TaKl4Ti93OdVbOEwZuKUwBhSmfnyBL16TWljeZ27H6+unau6CpMP/y8PBoXrsgl8ux/3dxcVHLzSOMjY2rq6thV6EgX1/fvLw8/LP36EZVRYnYN9RMx4DRifI+o66qKfV6RUO9tPcAXeJ6US1OTk65ubnY/2PB43A4c+bMgV0XUVT3mtbMzCwhIUGxIf2PXu9xr1fVlkt8Q0wJDR4AgGOg4T/J/M2LhsxkwnfAVxXYtm4tX+nRo8eAAQPgVUQgTU1NlZtO3ax79+55eXmKvbft7FW/b6ooFvkEmnSusA7wm2D2+qlAJJSS1qMyCw0NbblPBIfDmT59OtSKCKTS2bOxsTExMVFsuKXt7FUUi+RysodAJGJ5RUkTyZ0qJzqdHhYWRqfTseu9Hj16+Pj4wC6KKCqdPQBAeXl5cXGxAm9sO3v1tVJjK2anq+oYMztWbYWCw7XqJyIiwtzcHACgra2txgc9AACTyST0kSNEU3jpfdvZE4tk4sZ23VTAUaNAKhGjRfT/oFKpERERNBrN0dFRjQ962AbVpqamsKtQnIuLi2LPJMVnDRECACjKFdZVSoR8iaBOKmmSdf5TxEDuN9xF6urqeutkWefL09ahU6hAi0Nj69ItHbU0mMrymFEqlarSazWoVKpiW62h7HVWfmb9q/T6Ny8ExjZsqUROY9CodDqFSgF4bC7Wf0AAAIAvxKHO+gYgbZJIxSIavSnheJmxJbOHu7arL/yHH9JoNKlUhcfYjIyMMjIyFHgjyp7i3uUIky5WaOmxKBqsHr6GNLqyHEk+y9DWsL6qIfd5Q+KFvEFBhu7D9CEWgy2zhlhAJ5mZmX1wQ6idUPYUdP3PsopSiaGdEYujyN87dGwDFtuAZWCjn/uiKivl3aippsaWcP4gqp49LS0txVYSqcxHtfIQ1En2r8yX0bUtXc1UNHjNKBSKiYOhWW+zK4fLsh/VQalB1c85dXR0FFvfjLLXMaJGaeyGd/bellr6LNi14IbGoNl5WTx9IMh/DmFOM4PBUOnNtTgcjmLz3VH2OkDIlxxbW9DD14auoTJP8Gg/s14mKQn8p4lkL1miUCivXr0iuVMcMZnM9PR0Bd6IstcBsRsK7b3VeUWPubPJs2R+SX4D7EJUicLzclD22utGbJlFb2O6phoe8VqycjNPiqtqInFmBYWi2g8moFKprq6uTU0dng6Jstcuha+EvAKxOl3jfQJDWyvxAnmLeqhUqkxG9iQqfL169UqBoVqUvXZJulhpZG8AuwqSGFhx3jwX8KtJmlur6sc9hW+T4Ja9oOChe/ftwKs1pfI2q56hpaGlq4y3E2LPrN4YHY57s6aOhul3SBp0oVAo1tbW5PRFEAcHBwVuk6Dj3uflZghoCk1cUF3aBqzsR+TtyVtQUEBaX0QoLCxE2SPEm+cCjknXeoYujUHV1tMoziNjwFMNzjkVmx6A55yy/PzchYujcnNzjI1NwydMCQoMxbFxWErfNOh10yLohl5VdcmlaztevX7EoGtamDuNGfGNlYUzAOBI7DJjIxsajc5NuyiRinv1GBQatJzF/Gc7qSeZN2/cPVhdU2pqbC+XEzVKwTbWLsoVWnTvEsNLnWRiYqLAcBGex728168GDfT7Zs63OjqcbdvXnzmL21PhIeJXS5pEhHwq19VV7DowWyisCx67JGD0AqlUvPvgnNKy19h37yfHVlWXzJyydfzYJc+e37597wj2evrThP/99ROHbTh+7PdOjj4lvFwiagMAUOm0sndkbCOgBse9yspKBf4IeB73Ro0MmBgxDQAQFBi6cHHU0WMxgQGhLJZqf3AK+VIag5CD3s10Xn7UAAAcn0lEQVT7h9naBnNm7KLR6ACAfn3HbNgRxk2LGx+wBABgbGg96cu1FArF2rL3s6y7L/NSAsFCsVgUd3WbvY377MidNBoNAFBRWUhQ/BiatNpyMqY4q0H2FEPIOgYajRYc9OWGTT+/fJnl5taPiC5II6yTEHQ/PefV3zW1ZSvXDW1+RSoV19T9s0yWwWA2b9FpoNft7btnAIA3BU8FwhrfgROx4AEAqFSi7vXTNemNZG1dpaGhQU5HBFGsfqLWEBkaGQMABAJV3W+4mfyf//DHr690dhocMGp+yxeZmm3sEUyjMWQyKQCgupaHRZGQgj4gJ+5a8kMKTApRKorVT1T2amqqAQAGBoYEtU8aNocuFRPym6HF4giEtSbGHZjCz9bWBwDUC8m48yZpkmrpkDGBrnnj7a6GqHsM9+/f0tHhODj0IKh90mhxaDIxIadejvZeb989LSz+d9mlqOkzY/rmZo4UCjX96XUi6vmAWCTV5pCxtFomk1GpXfFeF55/uQk3rhgYGDKZLO6j5IcPkxYtXK7q5/EAAI4htk0m/kYOm5X9KvnAsUVDBk3S0TbIyX0ok0lnTN78ibfo65n19wjiPo6TSEROjgPq+BXZr5J12IScXMgkEnNbkmYUaGtrk9ORUsHt10pDQzMifGrCjSuFhQXdulksW7pq7JjgjjZy8uTJB5kyDw8PNzc3JpPsDULbZGrNqqvg6dtIGEycI2hkaLlg9oHLCX/cuX8UUCiW3XoO8pnw2XeND/ieTtfIeJbwMo9rZ93X3KwHv74S38Iw/DKB5QgjIlr+gFwuFwrx2A1K1bQ9vPsooaqpEfQdSursYe7V8kYZr6zxUXp6+pMnT+zs7Nz/j74+zM187px+X13LMLTiQKyBZJImaT636Ov1ZDxu+v3795GRkdeuXSOhL4IEBQXFxMRgexm3n3LtlWRtbR3o6xIVFQUAyM7OzsjIuHbt2vr163V1dd3c3LDjYcsnS5PD0Z2dkvCpyY11/MpNf7QxoVkulwMgp1DauJgJHL3Qx3M8XhVmv0yOPbu6zW8ZGVhWVLWxa/KoYbOGDPzo03PqKxucvUn6rJHL5Sq9Ny727HUFhouUK3st9erVq1evXpMmTQIAvH379smTJ1wuNyYmRiwWNx8Pu3fvTkIlVj20Uq5WCaoatA3aniegraW3ZN7x/74uk8nkcnnzvbiWtFh4PvDMwa5fmwUAAACgtHmThMX6VLTKXlWOXmWDV3mfJhaLVff5exjFnmGmvNlrydbW1tbWdvz48dgpSkZGRkZGxtmzZ3k8XnMOXV1diStgSIjR9T/LP5Y9Go1moN+x8w18aWgwDTRwK6CyoKaXtw5Lm6QV+hKJhKjhLLIodptE9f7MJiYmo0ePHj16NACgvr4ey+H27dtfvHjh7u7efGqq2HalH2Nqw7TpxayvFLIN1X9Bg1jQMCSEvG1pJBKJjQ1Jx1ilonrZa4nNZvv6+vr6+gIApFLpkydPMjIyjh079t133zk4ODQfEvX0cNj5fOiXxsfWFTCYdE1tlb9x8glvU4uCZpuR2WNjY2NlJSFDtUpOtbPXEo1G69evX79+/0wfzcrKysjIiI+P//XXX/X09Nzd3X18fJydnTs6GNXSlP9nve+H171H2OFXtXJ596TUZ6y+YTdSFwqLRCIluZ+ksK5yztlOzs7Ozs7OkydPxoZqMjIyXrx4ER0dLZVK3dzcFBuqodEp32y037s8v/sACyZb3Y5+Rc94/uGGFg5krztRg3NOOzs7BabmqG32WsKGagAAixcvLisrw05Nz549a2xsTKfTPTw83N3dXVxc2tMUjU6du9kh9vd3Bjb6bCM1mY0hEja9S+eNnGRMfvAAANXV1QKBgPx+cfT69WsF3tUlsteSqanpB0M16enpW7duzc7Odnd39/Dw8PLycnFx+cTIG41GmfaTzf3z5W/SaozsDNiGKrxAUSKSVrypolMlXy2zYuvB+WWor69ns9tYvaFC0Dlnh7UcqpFIJFgOr169+s033zg7O2NRdHd3b3O2oV+oca/+jYnnKxtrBRQaQ8dES4PFgPGHUIRMJue/FzbyG+rKhIODDXv1hzllRyaTKfY8A+WBstcpdDrdy8vLy8sLAPDjjz8+e/YsIyPjzJkzK1eutLS09PLycnV1dXd3NzD4d56diSXzy0UWxa8bctPr85/ytPU0JWI5TYNG06BTaUo3MZ9CpYgbmqRiKV2DUv623qaXttsgbad+8CeUFBQUWFlZwa6iU1D28OTq6urq6hoZGQkAePnyZWZmZkJCwoYNG3R0dJqPh9iQqYUDy8KBNXSCcUWxqK5KLKiTCmol4iYJkCvXmjSWDo1GZ2hzWNq6NAsHUu8ifFplZaWbmxvsKjoFZY8oTk5OTk5OX375JfYhnZGRweVy9+3bJ5PJBg8e7OTk5OHhYWtra2ShaWTRtbbxxIW2traxsTHsKjqlR48euI1zajApMkD2xzZLm8bQUK5jxX/Z2NjY2Nhgs9t4PN7z58+5XG5sbGxdXZ2Hh4eHh0e/fv3ImWWqNrhc7qxZs2BX0SlZWVm4ZU9Hn1GYwgc+OEwHab/i10K7Pqq0x4SZmZmZmdmIESMAAFVVVenp6enp6efPn3///r27u/uAAQNcXFx69uwJu0xlx+PxunUjZQcawuB5zmlipZnNJW9L8H9K0aCYWKnqOZuBgcGIESOwHNbV1WG38tetW1dQUIAdDPv169enTx/YZSodHo83dOjQdvygUpNKpW2uVvm0jx73LLozE8/xhoSRdFF+K7a4tw+HzlC64UEFcDgcPz8/Pz+/efPmNTQ0pKenP378ePPmzS9fvvTw8Bg8eLCzs7Oqjy7gJTc3V4En+Cgbxbac+ehYi/swfQ1m7e0TxX39DPVNNWh0QlIhFslqykVpNyq9RunZ9VbtG6xtYrFYgwYNGjRoELZQLT09PScnZ+fOnc+fP+/3f7pyDvPy8tTg8hjn7AEAeg/Q1eLQn9yr5L1ppNHbdTorB0Amk9Lat2GrBosqEkote2gNDjY0t1fh2SHtxGAwvL29vb29IyMjJRLJ48ePHz9+3DKH/fv3b+fUNrXB5/PV4I/s4OCgwBLE9m7HLWpo1z6pjY2N48ePv369fZvYyeWaWmr+COX2aM5heXn51atXPf+PGvxSflZwcPDu3btVel6LXC738vJKS0vr6BvbG1ZNVrsOqTJAEUuF7fxhBEOn07HjITalJi0tLS0tbevWrS9fvsRCqK7jNDU1NfX19SodPIUHWtC9daVDp9N9fHx8fHywncaxHG7evJnNZtPp9P79+3t6ejo5OcEuEx85OTmjRo2CXUVnKbznBf7ZU5vfDOg0NDQGDhw4cOBA7GQ+LS3t0aNHa9euLSkpwaaeenp62tuTsY0fQRITE7G1XSpNWY57FAolJycH3zYRAACTyRw8ePDgwYOx8YnU1NTU1NQzZ87U1tYGBATY2Nh4eXmRv3tiJ6WkpERERMCuorOkUqlia6Bwzh6VSiV0vzAEAKCjozN8+PDhw4djE5GfPXuWnJx8+PBhuVzev39/7JBoaKjsM4RKS0vt7e1VfcU6dutIsVuUOGdPQ0PjxYsXAoGga+6wTz5DQ8Nhw4YNGzYMAFBUVJSampqYmLh161Z9fX0vL6+BAwe6u7traSnj3moJCQlqEDzsslxZnr/n5eVVV1eHskc+S0tLS0vLkJAQbBeD1NTUBw8erFixwsHBoX///t7e3s0bSSmDGzdurFmzBnYVOFCi7MlkstzcXFWfHavqHBwcHBwcAAA//PBDZmbmo0ePYmJinj59it3M6N+/v6OjI8Ty3r17Z21trR7DcmKxWFmy171797y8vCFDhuDeMqIYFxcXFxeXqKgoiUTC5XK5XO6qVasaGhpcXV2x+xnkXxyeOXNGbcYFRCKRsmTP3d39woULuDeLdB6dTm+eXFpdXf3w4cOUlJTo6GgDAwMfH58BAwZg9/dJcPbs2fv375PTF9FkMhl2itFR7Z1T1iHe3t7Jycmqvsl+15Gbm5uSkvLw4cNHjx6Fhoba2NgMHDjQzo6oLYATEhLy8vLmz5/fjp9VASkpKcePH9+9e3dH30hIPAICApKTk/38/IhoHMGdo6Ojo6Pj1KlTAQBpaWmJiYnLli1raGgYMGAAdnMf332jd+7ceeDAARwbhKuxsVGxvx9CJl6OGTPm5MmTRLSMEM3T03PJkiVnz549dOhQ7969r1275u/vP2vWrBMnTuAya+LKlSv9+vVTp6E4hbNHyHHPy8srOjo6Ozu7V69eRLSPkMDMzCwkJAS7Y5GRkfH06dN169ZVVFQM/j8MhiL7kd6+fXv58uUE1AuNwtmj/fzzzwTUAzgcTnx8PHbPF1F13bp1c3NzCwsLGzNmjEgkun379tq1a9PT02tqavT19XV12/sczz///JPJZGI7a6iNly9fUqlUDw+Pjr6RkLEWzMyZMxcvXty3b1+C2kfg4nK5ycnJZWVlubm5vr6+Q4YM+fS9+8bGRn9//+TkZBJrJMPBgwfFYvHcuXM7+kYCs1dUVDR//vy4uDiC2keUREFBQVJSUmJiYk5ODhZCX1/f/05k27Jli5ubm5od9AAA27dvNzY2njJlSkffSGD2AAAxMTEUCuXrr78mrgtEeQgEAiyEb9680dfXHz58+LBhw7Ab93fu3Ll27drmzZth14i/X3/9tXfv3tiFcYcQewtuzpw53333XX5+vkovM0PaSVtb+4svvvjiiy+wM9I7d+7s37/f0tJy+PDhO3bsUGBXBZWg8HOUiD3uYTw9PdX17x35rKdPn65Zs0YoFPbv39/BwWHkyJGqvknEB37//fcRI0ZgT9HpEDI2Vjl16pQaLJFEFPPw4cOAgIAbN25ERkYKBIL58+dPmTLl2LFjpaWlsEvDx4sXL5T3uAcAuH///sWLF7dv305CX4jySElJuXDhwsaNG1u+mJ2dffPmzRs3bvTr18/Z2TkgIECln30ZGBh44MABBWYLkJQ9AMCTJ08uXbq0evVqcrpDoMvLy/vxxx9Pnz79sR/Izs6+fPlyfHy8u7t7QEDAyJEjyS0QH76+vgkJCQosUCYvewCAuLi41NTUX3/9lbQeEVhKSkrmzJlz+fLl9vxwUlJSfHz8kydPfH19g4ODVWhDRLFYHBgYmJCQoMB7Sc0eAODatWt3797dtGkTmZ0iJKupqQkLC7t9+3aH3iWRSC5duhQXF9fY2Dhu3Ljg4GDlPxctLS2dPXv2lStXFHgv2dnDZvRxudyVK1eS3C9CjqamJj8/v4cPHyrcQl5e3qVLl3JyckxMTCIiIpR5f+5nz55t3779yJEjCrwXwhI7f39/Dofj7+8fGxtrZqZEDx9GcOHr69vJiWPdu3dfsmQJdpa0detWsVg8adKkgIAA/GrETXl5ucIPzYWzebuXl9e5c+eioqLUZvEyAgCoqKiYPn36gwcP8Fo2PWbMmKNHj65aterp06d+fn4HDx5sbGzEpWW8qF72AAB6enrx8fFxcXH79u2DVQOCo4yMjMmTJx84cECxtUWf0LNnz5UrV8bHx4vFYn9//3379lVUVODbhcLev3+v8Lkb5IeWbNu2jUajrV+/XiZr13OOEOV0+fLl3bt3JyQk4B68Zmw2e+7cucnJyZaWlpMnT/7111/Ly8sJ6qv9SkpKVDV7AIDZs2f7+/t7e3snJibCrgVRxJ49ex4/fnzw4EFyusPG9Hv37r106dKNGzfCPQvl8XgqnD1sb6XU1NQLFy6sX78edi1Ix6xcuVJTU5OgFdifEBIScuzYMTs7O39//xMnTpDcezNtbW3Vzh5m+/btTk5OY8eOzc3NhV0L8nkCgeCnn37y8/OLioqCVUN4eDg2pjpq1Cjyx+1EIlFGRobCYy1ArmR4PF5ERMSxY8dgF4J8yr1793x9fXNycmAX8o+KioqlS5cuXbpUKpWS1mlubm54eLjCb1ei4x7G1NT01KlTMpksJCTk+fPnsMtB2rBt27a4uLjExETl2dTd0NBw8+bNY8aM8fX1Je0AWFhYaGVlpfDblS57mOnTp0dHR2/evFktVzqrLj6fP2nSJFNT023btsGupQ3Dhw9PTk6Oi4vbv38/Cd29e/euM8/uVNLsAQCsra2PHTtmZWXl7+//999/wy4HAffu3QsKClqzZs3kyZNh1/Ip27Zt69at25w5c4juKD8/vzPZU/Zt2ydOnPjFF1+sWrXq8ePHs2fPxneDZKT9tmzZUlpaeu/ePdiFtEtQUJC5ufmXX3559uxZ4nopKSnp1M75uF58EujWrVsDBw48efIk7EK6nEePHg0bNuzixYuwC+mwp0+ffvvtt8S1P3DgwIaGBoXfrrznnB/AtnYsLCwMDw9/+vQp7HK6ivXr1x86dOjChQvBwcGwa+kwV1fXmTNnErQNdlFRkZGRUWdOxFQme5hly5b9/vvv0dHRa9asEYvFsMtRZ48fP/b393dyctq3b1/7d55WNi4uLj4+Pnv37sW+HD9+/Pjx43FpuaCgwNfXtzMtqFj2sCeqHj582MvLy9fX9/z587DLUU8bNmzYv3//uXPnwsLCYNfSWaGhobW1tVwud+jQoUVFRWKx+N27d51vNjMzs5MfSaqXPUxgYGBKSgqPxxs/fjwaBcXR7du3g4ODHRwcYmJi9PT0YJeDDy6XO2/evPr6emwyCo/H63ybdXV1vXv37kwLqpo9zLx583bu3Hny5MlFixYVFRXBLke1VVRULFq0KCEhITY2dsKECbDLwc3o0aMLCwspFAr2pVAorKys7Hyzd+7c6eQz65X9HsNnWVlZ7dy5Mzk5ef78+YMHD162bBnsilTSoUOH/vrrr9WrV2NPhFYbwcHBNTU1LV9pamoqKCjoZLOVlZVOTk6Kz+QEQOWPe80GDRoUFxdnZWUVHByMHrvZIampqUFBQSKRKCEhQc2Ch22NN2HChA8uzPLz8zvZ7IsXL6jUzmZHTbKHmThxYlxcXHFxcUBAQEc3yeqCqqqq1qxZc+jQoZiYmHnz5sEuhyhLly7du3evr6+vrq4udmOt81tiZ2VlOTs7d7IRCPuUkYDH423btu39+/ffffcdegBgm/bs2XPhwoUVK1b4+/vDroUkXC43JibmzZs3enp6586d68yBa/HixRMmTBg8eHBn6lHP7GEyMzO3b99uaGj43XffmZub495+6o2qghwhnUF9/w7npdMm1ky5XG7fR7vvEPxHGuPj4zdt2jRt2jSI6+4gunbt2oWzVyaP/bnkdYNcDuprJAo0IpFKaTQa5SPf5RgydPTp7kP1zB1Yn2hEnbOHuXPnzl9//WVtbb148WJtbW1c2pTL5H/+VtBnkD7HSMPATBPg/Vcol8srS0SVpY1lBQ0h8yzwajYrK2vDhg22trbLly9X/m1nCVJd1nQmumhAkDHHQINjwCBin6CmBmllqSg7pcZlsG5PL52P/Zj6Zw9z7ty56OjoiRMn4nJhc2TtG99QM1PrT32q4eJVeu3b5/VhCzsbPx6Pt2PHDplMFhkZ2cm7UirtfWHjjeNlwfNtyOnu/plSCweW+7C2T17UaqzlE8LCwhITEzU1NX18fDo5EMq9Vuk21JCE4AEAenjodrNjZSbXKtxCU1PTpk2boqKi/P39N23a1JWDBwBIia8aOQ2384jP8pvQrTBXWFPR1OZ3u0r2MFFRUUlJScXFxcHBwYrtoQ8AeP1MYNhNE+/SPkrPRPNtlkCx9x46dMjPz8/GxiY+Pl5Fn/KDo7pKcdX7Ji0dUu9pazBpJa/bHg7oWtkDADAYjKVLlx46dCg1NTUsLKyjC9JkErmmFk3flLzsGZhrUsDHruo/6vz582FhYSKR6OHDh+jBo5iqsibrnmRf5ZrasvhVbQ/ndLnsYYyMjNauXbt169bLly9HRka2/5HUcgDKCkjdEJIiB+XFHejx5s2b48aNy87OPnr0qBrftVOAVCwX1pK99kUqlgv5bWdP5eeUdYatre3WrVufP3++Z8+ew4cPL1iwoPM3TCFKSUnZuXOnlZXV3r17LSzIu6pBFNOls4fp06fPnj17uFzu77//3q1btwULFlhbW7f8gREjRty6dQtegZ+XmZl5+PDhpqamVatW9ezZE3Y5SLug7P3D29vb29v79u3bixcvdnNzW7BggaGhIbbasrq6evLkybGxsbBrbEN+fv6uXbuqqqoWLlzYr18/2OUgHdBFr/c+xt/f/8KFC+7u7l999dWWLVtEIlFxcTGFQsnPz9+wYQPs6lopKytbtWrVDz/8EBwcfPToURQ8lYOy14Zx48bduHHDwsJi4MCB2NwDsVh8+/ZtJdmlSyAQbNiwYcaMGQMGDDhz5oyfnx/sihBFoOx91FdffdW84BIAUF1dvWvXrg8Wg5Fv165dY8aMcXBwuHr16tixY+EWg3QGyt5HjR49+oNX3rx5s27dOkjlgKNHj3p6empraycmJqrTuvIuC2XvoyorKz/YUJFCoTx+/Jj8GbASidTPz4/P56elpc2YMYPk3hGCoHHOj0pLSzt79qxAIGhsbJRKpWKxuKGhQdwkpdR1eJZJJ8nl8vj4+C678kBdoex9ypdffvnBK1KJPGZFZ3cc6CgGg46Cp37QOSeCwIGyhyBwoOwhSHvFX704zN+zsrICl9ZQ9hAEDpQ9BIEDjXOSoayMd/Dw7tTUh0KhwMGhR/iEKcOGdvVV5KoiN+/lzl2bX77MMjQwsrLCc6MXlD3CVVZWzF84XSqVToyYpq9n8Cwzo6LiPeyikHZ59+7td0u+1uXozZ61gEaj/3n8AI6No+wR7s/jB2pqqg8fPG1tbQsAGD06EHZFSHvt2x9NpVB37zqqp6cPAKBSqTuicVvOgq73CMd9lOzh7oUFD1EhTU1NqakPR44KwIIHAKDT8TxWoewRrrq6ytjYFHYVSIfV1FRLJJJuZvjvaI5B2SMcm61TVY3DA98QkunocLCPToLaR9kjnIe7V3r6o1JeSfMrEokizwBASMZisSwsrO7dvyUWE7K7GRprIdzUKbP+fpi4YOGM0JCJBgaGaWkpLJbW0u9/gl0X8nmR075e//uqBQtnfPHFOCqVeu48no92RNkjnLW17c7owzH7o/8Xe4hBZ1hZ24aMR5vVqoaRI8bU1/P/+ut4zP5oWxt7Z2eXwsLOPrO2GcoeGeztu2/csBN2FYgiQsaHh4wPb/5yxfKf8WoZXe8hCBwoewgCB8oegsCBsocgcKDsIQgcKHsIAgfKHoLAgbKHIHCg7CEIHCh7CAIHyh6CwIGyhyBwoOx1jEwGDLtpkNkjhQp0DUntUW1RAJNN9uIBOoOiwWw7ZSh7HcPQoAj5UkEtIYsp21RbQV5f6k3XkFH2roHkTqt4TVo6tDa/hbLXYbbOWrWV5OWBX91k0Z1JWndqTN9UQ0OT7F94sUhqbKnZ5rdQ9jrMe4xB0jkeOX1JxDJufIX3GENyulNvNDqlV3+dRLL+7QAAOWm1cpnc0lGrze9SyH+KqhqoKRdf3FM8cpo5x4DAK7Hy4oZ7p3gTl1l/7KQFUcDTpJp3LxsHjjMh9BgolcqzHlZX80QBUd0+9jMoewqqKmtKuVpZ+LLBzoVdh/cpqI4eIz+Tb++q7RdmzNRCwcNZTmpdZnJtfY3U2JLZKJTi3r5cIi8vaew7RG/QOKNP/BjKXqeIGqSVpU1yGc7N0uhUIwsGnYGuCIgil8nrayV1lYRsGMdkUw3N2r7GawllD0HgQJ+sCAIHyh6CwIGyhyBwoOwhCBwoewgCB8oegsDx/wEhK7F5OXUXIAAAAABJRU5ErkJggg==", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from IPython.display import Image, display\n", + "\n", + "display(Image(graph.get_graph().draw_mermaid_png()))" + ] + }, + { + "cell_type": "markdown", + "id": "a1d4cc42-590c-4de9-9e51-0bb8a79db86f", + "metadata": {}, + "source": [ + "This graph looks complex, but can be conceptualized as loop of [supersteps](../../concepts/low_level/#graphs):\n", + "\n", + "1. Node A\n", + "2. Node B\n", + "3. Nodes C and D\n", + "4. Node A\n", + "5. ...\n", + "\n", + "We have a loop of four supersteps, where nodes C and D are executed concurrently.\n", + "\n", + "Invoking the graph as before, we see that we complete two full \"laps\" before hitting the termination condition:" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "d5c692d0-9a69-4743-bd47-e462adab8700", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Node A sees []\n", + "Node B sees ['A']\n", + "Node D sees ['A', 'B']\n", + "Node C sees ['A', 'B']\n", + "Node A sees ['A', 'B', 'C', 'D']\n", + "Node B sees ['A', 'B', 'C', 'D', 'A']\n", + "Node D sees ['A', 'B', 'C', 'D', 'A', 'B']\n", + "Node C sees ['A', 'B', 'C', 'D', 'A', 'B']\n", + "Node A sees ['A', 'B', 'C', 'D', 'A', 'B', 'C', 'D']\n" + ] + } + ], + "source": [ + "result = graph.invoke({\"aggregate\": []})" + ] + }, + { + "cell_type": "markdown", + "id": "42cb9253-93a9-4a33-b4fb-a235aa41d655", + "metadata": {}, + "source": [ + "However, if we set the recursion limit to four, we only complete one lap because each lap is four supersteps:" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "d0ff64b3-eb78-48a4-aab5-bb78499f92df", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Node A sees []\n", + "Node B sees ['A']\n", + "Node C sees ['A', 'B']\n", + "Node D sees ['A', 'B']\n", + "Node A sees ['A', 'B', 'C', 'D']\n", + "Recursion Error\n" + ] + } + ], + "source": [ + "from langgraph.errors import GraphRecursionError\n", + "\n", + "try:\n", + " result = graph.invoke({\"aggregate\": []}, {\"recursion_limit\": 4})\n", + "except GraphRecursionError:\n", + " print(\"Recursion Error\")" + ] + }, + { + "cell_type": "markdown", + "id": "13579366-69fb-4aa4-9d95-a9865c1d5799", + "metadata": {}, + "source": [ + "
    " + ] + }, + { + "cell_type": "markdown", + "id": "d33ecddc-6818-41a3-9d0d-b1b1cbcd286d", + "metadata": {}, + "source": [ + "## Combine control flow and state updates with `Command`" + ] + }, + { + "cell_type": "markdown", + "id": "7c0a8d03-80b4-47fd-9b17-e26aa9b081f3", + "metadata": {}, + "source": [ + "It can be useful to combine control flow (edges) and state updates (nodes). For example, you might want to BOTH perform state updates AND decide which node to go to next in the SAME node. LangGraph provides a way to do so by returning a [Command](/langgraph/reference/types/#langgraph.types.Command) object from node functions:\n", + "\n", + "```python\n", + "def my_node(state: State) -> Command[Literal[\"my_other_node\"]]:\n", + " return Command(\n", + " # state update\n", + " update={\"foo\": \"bar\"},\n", + " # control flow\n", + " goto=\"my_other_node\"\n", + " )\n", + "```\n", + "\n", + "We show an end-to-end example below. Let's create a simple graph with 3 nodes: A, B and C. We will first execute node A, and then decide whether to go to Node B or Node C next based on the output of node A." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "4539b81b-09e9-4660-ac55-1b1775e13892", + "metadata": {}, + "outputs": [], + "source": [ + "import random\n", + "from typing_extensions import TypedDict, Literal\n", + "\n", + "from langgraph.graph import StateGraph, START\n", + "from langgraph.types import Command\n", + "\n", + "\n", + "# Define graph state\n", + "class State(TypedDict):\n", + " foo: str\n", + "\n", + "\n", + "# Define the nodes\n", + "\n", + "\n", + "def node_a(state: State) -> Command[Literal[\"node_b\", \"node_c\"]]:\n", + " print(\"Called A\")\n", + " value = random.choice([\"a\", \"b\"])\n", + " # this is a replacement for a conditional edge function\n", + " if value == \"a\":\n", + " goto = \"node_b\"\n", + " else:\n", + " goto = \"node_c\"\n", + "\n", + " # note how Command allows you to BOTH update the graph state AND route to the next node\n", + " return Command(\n", + " # this is the state update\n", + " update={\"foo\": value},\n", + " # this is a replacement for an edge\n", + " goto=goto,\n", + " )\n", + "\n", + "\n", + "def node_b(state: State):\n", + " print(\"Called B\")\n", + " return {\"foo\": state[\"foo\"] + \"b\"}\n", + "\n", + "\n", + "def node_c(state: State):\n", + " print(\"Called C\")\n", + " return {\"foo\": state[\"foo\"] + \"c\"}" + ] + }, + { + "cell_type": "markdown", + "id": "badc25eb-4876-482e-bb10-d763023cdaad", + "metadata": {}, + "source": [ + "We can now create the `StateGraph` with the above nodes. Notice that the graph doesn't have [conditional edges](../../concepts/low_level#conditional-edges) for routing! This is because control flow is defined with `Command` inside `node_a`." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "d6711650-4380-4551-a007-2805f49ab2d8", + "metadata": {}, + "outputs": [], + "source": [ + "builder = StateGraph(State)\n", + "builder.add_edge(START, \"node_a\")\n", + "builder.add_node(node_a)\n", + "builder.add_node(node_b)\n", + "builder.add_node(node_c)\n", + "# NOTE: there are no edges between nodes A, B and C!\n", + "\n", + "graph = builder.compile()" + ] + }, + { + "cell_type": "markdown", + "id": "0ab344c5-d634-4d7d-b3b4-edf4fa875311", + "metadata": {}, + "source": [ + "!!! important\n", + "\n", + " You might have noticed that we used `Command` as a return type annotation, e.g. `Command[Literal[\"node_b\", \"node_c\"]]`. This is necessary for the graph rendering and tells LangGraph that `node_a` can navigate to `node_b` and `node_c`." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "eeb810e5-8822-4c09-8d53-c55cd0f5d42e", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from IPython.display import display, Image\n", + "\n", + "display(Image(graph.get_graph().draw_mermaid_png()))" + ] + }, + { + "cell_type": "markdown", + "id": "58fb6c32-e6fb-4c94-8182-e351ed52a45d", + "metadata": {}, + "source": [ + "If we run the graph multiple times, we'd see it take different paths (A -> B or A -> C) based on the random choice in node A." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "d88a5d9b-ee08-4ed4-9c65-6e868210bfac", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Called A\n", + "Called C\n" + ] + }, + { + "data": { + "text/plain": [ + "{'foo': 'bc'}" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "graph.invoke({\"foo\": \"\"})" + ] + }, + { + "cell_type": "markdown", + "id": "68986cc4-97ec-43a1-b95d-5273d7ffc25a", + "metadata": {}, + "source": [ + "### Navigate to a node in a parent graph\n", + "\n", + "If you are using [subgraphs](../../concepts/subgraphs), you might want to navigate from a node within a subgraph to a different subgraph (i.e. a different node in the parent graph). To do so, you can specify `graph=Command.PARENT` in `Command`:\n", + "\n", + "```python\n", + "def my_node(state: State) -> Command[Literal[\"my_other_node\"]]:\n", + " return Command(\n", + " update={\"foo\": \"bar\"},\n", + " goto=\"other_subgraph\", # where `other_subgraph` is a node in the parent graph\n", + " graph=Command.PARENT\n", + " )\n", + "```" + ] + }, + { + "cell_type": "markdown", + "id": "02ccddf2-978c-41bf-b2eb-2d0c4b3f5d81", + "metadata": {}, + "source": [ + "Let's demonstrate this using the above example. We'll do so by changing `node_a` in the above example into a single-node graph that we'll add as a subgraph to our parent graph.\n", + "\n", + "!!! important \"State updates with `Command.PARENT`\"\n", + "\n", + " When you send updates from a subgraph node to a parent graph node for a key that's shared by both parent and subgraph [state schemas](../../concepts/low_level#schema), you **must** define a [reducer](../../concepts/low_level#reducers) for the key you're updating in the parent graph state. See the example below." + ] + }, + { + "cell_type": "markdown", + "id": "6be0aeb9-e138-4adc-a1df-5d743a8eb348", + "metadata": {}, + "source": [ + "!!! important \"State updates with `Command.PARENT`\"\n", + "\n", + " When you send updates from a subgraph node to a parent graph node for a key that's shared by both parent and subgraph [state schemas](../../concepts/low_level#schema), you **must** define a [reducer](../../concepts/low_level#reducers) for the key you're updating in the parent graph state." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "91351541-67af-4c73-9437-426599dcf81e", + "metadata": {}, + "outputs": [], + "source": [ + "import operator\n", + "from typing_extensions import Annotated\n", + "\n", + "\n", + "class State(TypedDict):\n", + " # NOTE: we define a reducer here\n", + " # highlight-next-line\n", + " foo: Annotated[str, operator.add]\n", + "\n", + "\n", + "def node_a(state: State):\n", + " print(\"Called A\")\n", + " value = random.choice([\"a\", \"b\"])\n", + " # this is a replacement for a conditional edge function\n", + " if value == \"a\":\n", + " goto = \"node_b\"\n", + " else:\n", + " goto = \"node_c\"\n", + "\n", + " # note how Command allows you to BOTH update the graph state AND route to the next node\n", + " return Command(\n", + " update={\"foo\": value},\n", + " goto=goto,\n", + " # this tells LangGraph to navigate to node_b or node_c in the parent graph\n", + " # NOTE: this will navigate to the closest parent graph relative to the subgraph\n", + " # highlight-next-line\n", + " graph=Command.PARENT,\n", + " )\n", + "\n", + "\n", + "subgraph = StateGraph(State).add_node(node_a).add_edge(START, \"node_a\").compile()\n", + "\n", + "\n", + "def node_b(state: State):\n", + " print(\"Called B\")\n", + " # NOTE: since we've defined a reducer, we don't need to manually append\n", + " # new characters to existing 'foo' value. instead, reducer will append these\n", + " # automatically (via operator.add)\n", + " # highlight-next-line\n", + " return {\"foo\": \"b\"}\n", + "\n", + "\n", + "def node_c(state: State):\n", + " print(\"Called C\")\n", + " # highlight-next-line\n", + " return {\"foo\": \"c\"}" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "beb61d02-c868-4c2b-b83f-1dfd280f1c8e", + "metadata": {}, + "outputs": [], + "source": [ + "builder = StateGraph(State)\n", + "builder.add_edge(START, \"subgraph\")\n", + "builder.add_node(\"subgraph\", subgraph)\n", + "builder.add_node(node_b)\n", + "builder.add_node(node_c)\n", + "\n", + "graph = builder.compile()" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "3f07b704-1fe2-48a3-ad40-c9bc7698cb1c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Called A\n", + "Called C\n" + ] + }, + { + "data": { + "text/plain": [ + "{'foo': 'bc'}" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "graph.invoke({\"foo\": \"\"})" + ] + }, + { + "cell_type": "markdown", + "id": "bcd31ceb-f96f-4325-878d-ae1dea8cde8a", + "metadata": {}, + "source": [ + "### Use inside tools\n", + "\n", + "A common use case is updating graph state from inside a tool. For example, in a customer support application you might want to look up customer information based on their account number or ID in the beginning of the conversation. To update the graph state from the tool, you can return `Command(update={\"my_custom_key\": \"foo\", \"messages\": [...]})` from the tool:\n", + "\n", + "```python\n", + "@tool\n", + "def lookup_user_info(tool_call_id: Annotated[str, InjectedToolCallId], config: RunnableConfig):\n", + " \"\"\"Use this to look up user information to better assist them with their questions.\"\"\"\n", + " user_info = get_user_info(config.get(\"configurable\", {}).get(\"user_id\"))\n", + " return Command(\n", + " update={\n", + " # update the state keys\n", + " \"user_info\": user_info,\n", + " # update the message history\n", + " \"messages\": [ToolMessage(\"Successfully looked up user information\", tool_call_id=tool_call_id)]\n", + " }\n", + " )\n", + "```\n", + "\n", + "!!! important\n", + " You MUST include `messages` (or any state key used for the message history) in `Command.update` when returning `Command` from a tool and the list of messages in `messages` MUST contain a `ToolMessage`. This is necessary for the resulting message history to be valid (LLM providers require AI messages with tool calls to be followed by the tool result messages).\n", + "\n", + "If you are using tools that update state via `Command`, we recommend using prebuilt [`ToolNode`][langgraph.prebuilt.tool_node.ToolNode] which automatically handles tools returning `Command` objects and propagates them to the graph state. If you're writing a custom node that calls tools, you would need to manually propagate `Command` objects returned by the tools as the update from the node." + ] + }, + { + "cell_type": "markdown", + "id": "8bcd1a3d-7c50-4f58-be4e-1ed654aa33be", + "metadata": {}, + "source": [ + "## Visualize your graph\n", + "\n", + "Here we demonstrate how to visualize the graphs you create." + ] + }, + { + "cell_type": "markdown", + "id": "e130cf70-a30e-47d7-8fd5-464f1a92e374", + "metadata": {}, + "source": [ + "You can visualize any arbitrary [Graph](https://langchain-ai.github.io/langgraph/reference/graphs/), including [StateGraph](https://langchain-ai.github.io/langgraph/reference/graphs/#langgraph.graph.state.StateGraph). Let's have some fun by drawing fractals :)." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "6d604311", + "metadata": {}, + "outputs": [], + "source": [ + "import random\n", + "from typing import Annotated, Literal\n", + "\n", + "from typing_extensions import TypedDict\n", + "\n", + "from langgraph.graph import StateGraph, START, END\n", + "from langgraph.graph.message import add_messages\n", + "\n", + "\n", + "class State(TypedDict):\n", + " messages: Annotated[list, add_messages]\n", + "\n", + "\n", + "class MyNode:\n", + " def __init__(self, name: str):\n", + " self.name = name\n", + "\n", + " def __call__(self, state: State):\n", + " return {\"messages\": [(\"assistant\", f\"Called node {self.name}\")]}\n", + "\n", + "\n", + "def route(state) -> Literal[\"entry_node\", \"__end__\"]:\n", + " if len(state[\"messages\"]) > 10:\n", + " return \"__end__\"\n", + " return \"entry_node\"\n", + "\n", + "\n", + "def add_fractal_nodes(builder, current_node, level, max_level):\n", + " if level > max_level:\n", + " return\n", + "\n", + " # Number of nodes to create at this level\n", + " num_nodes = random.randint(1, 3) # Adjust randomness as needed\n", + " for i in range(num_nodes):\n", + " nm = [\"A\", \"B\", \"C\"][i]\n", + " node_name = f\"node_{current_node}_{nm}\"\n", + " builder.add_node(node_name, MyNode(node_name))\n", + " builder.add_edge(current_node, node_name)\n", + "\n", + " # Recursively add more nodes\n", + " r = random.random()\n", + " if r > 0.2 and level + 1 < max_level:\n", + " add_fractal_nodes(builder, node_name, level + 1, max_level)\n", + " elif r > 0.05:\n", + " builder.add_conditional_edges(node_name, route, node_name)\n", + " else:\n", + " # End\n", + " builder.add_edge(node_name, \"__end__\")\n", + "\n", + "\n", + "def build_fractal_graph(max_level: int):\n", + " builder = StateGraph(State)\n", + " entry_point = \"entry_node\"\n", + " builder.add_node(entry_point, MyNode(entry_point))\n", + " builder.add_edge(START, entry_point)\n", + "\n", + " add_fractal_nodes(builder, entry_point, 1, max_level)\n", + "\n", + " # Optional: set a finish point if required\n", + " builder.add_edge(entry_point, END) # or any specific node\n", + "\n", + " return builder.compile()\n", + "\n", + "\n", + "app = build_fractal_graph(3)" + ] + }, + { + "cell_type": "markdown", + "id": "edcd9ad2", + "metadata": { + "ExecuteTime": { + "end_time": "2024-04-18T12:18:30.629307Z", + "start_time": "2024-04-18T12:18:30.609323Z" + } + }, + "source": [ + "### Mermaid\n", + "\n", + "We can also convert a graph class into Mermaid syntax." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "66007b2d", + "metadata": { + "ExecuteTime": { + "end_time": "2024-04-19T11:25:38.733126Z", + "start_time": "2024-04-19T11:25:38.726838Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "%%{init: {'flowchart': {'curve': 'linear'}}}%%\n", + "graph TD;\n", + "\t__start__([

    __start__

    ]):::first\n", + "\tentry_node(entry_node)\n", + "\tnode_entry_node_A(node_entry_node_A)\n", + "\tnode_entry_node_B(node_entry_node_B)\n", + "\tnode_node_entry_node_B_A(node_node_entry_node_B_A)\n", + "\tnode_node_entry_node_B_B(node_node_entry_node_B_B)\n", + "\tnode_node_entry_node_B_C(node_node_entry_node_B_C)\n", + "\t__end__([

    __end__

    ]):::last\n", + "\t__start__ --> entry_node;\n", + "\tentry_node --> __end__;\n", + "\tentry_node --> node_entry_node_A;\n", + "\tentry_node --> node_entry_node_B;\n", + "\tnode_entry_node_B --> node_node_entry_node_B_A;\n", + "\tnode_entry_node_B --> node_node_entry_node_B_B;\n", + "\tnode_entry_node_B --> node_node_entry_node_B_C;\n", + "\tnode_entry_node_A -.-> entry_node;\n", + "\tnode_entry_node_A -.-> __end__;\n", + "\tnode_node_entry_node_B_A -.-> entry_node;\n", + "\tnode_node_entry_node_B_A -.-> __end__;\n", + "\tnode_node_entry_node_B_B -.-> entry_node;\n", + "\tnode_node_entry_node_B_B -.-> __end__;\n", + "\tnode_node_entry_node_B_C -.-> entry_node;\n", + "\tnode_node_entry_node_B_C -.-> __end__;\n", + "\tclassDef default fill:#f2f0ff,line-height:1.2\n", + "\tclassDef first fill-opacity:0\n", + "\tclassDef last fill:#bfb6fc\n", + "\n" + ] + } + ], + "source": [ + "print(app.get_graph().draw_mermaid())" + ] + }, + { + "cell_type": "markdown", + "id": "8f77ad75", + "metadata": {}, + "source": [ + "### PNG\n", + "\n", + "If preferred, we could render the Graph into a `.png`. Here we could use three options:\n", + "\n", + "- Using Mermaid.ink API (does not require additional packages)\n", + "- Using Mermaid + Pyppeteer (requires `pip install pyppeteer`)\n", + "- Using graphviz (which requires `pip install graphviz`)\n", + "\n", + "\n", + "**Using Mermaid.Ink**\n", + "\n", + "By default, `draw_mermaid_png()` uses Mermaid.Ink's API to generate the diagram." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "967f116d", + "metadata": {}, + "outputs": [ + { + "data": { + "image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/4gHYSUNDX1BST0ZJTEUAAQEAAAHIAAAAAAQwAABtbnRyUkdCIFhZWiAH4AABAAEAAAAAAABhY3NwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA9tYAAQAAAADTLQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlkZXNjAAAA8AAAACRyWFlaAAABFAAAABRnWFlaAAABKAAAABRiWFlaAAABPAAAABR3dHB0AAABUAAAABRyVFJDAAABZAAAAChnVFJDAAABZAAAAChiVFJDAAABZAAAAChjcHJ0AAABjAAAADxtbHVjAAAAAAAAAAEAAAAMZW5VUwAAAAgAAAAcAHMAUgBHAEJYWVogAAAAAAAAb6IAADj1AAADkFhZWiAAAAAAAABimQAAt4UAABjaWFlaIAAAAAAAACSgAAAPhAAAts9YWVogAAAAAAAA9tYAAQAAAADTLXBhcmEAAAAAAAQAAAACZmYAAPKnAAANWQAAE9AAAApbAAAAAAAAAABtbHVjAAAAAAAAAAEAAAAMZW5VUwAAACAAAAAcAEcAbwBvAGcAbABlACAASQBuAGMALgAgADIAMAAxADb/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAGwA8wDASIAAhEBAxEB/8QAHQABAQACAwEBAQAAAAAAAAAAAAYFBwEECAMCCf/EAFwQAAEEAQIDAwYHDAUHCQgCAwEAAgMEBQYRBxIhEzFBFBUiUVaUCBcyVWHT1BYjN0JScXWBlbPR0jM2Q3KTJFNUYoKxtCU0NURzg5GSoQkmV2Oio7LBGGR0hOH/xAAbAQEBAQEBAQEBAAAAAAAAAAAAAQIEAwUGB//EADcRAQABAgMECAQEBwEBAAAAAAABAhEDUZESFDHRBBMhQVJicZIzYbHBFUKBoQUiIzJT4fCy8f/aAAwDAQACEQMRAD8A/qmiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIi+Nu3DQqzWbEjYYIWF8kjzsGtA3JKsRfsgfZdO3mcfQfyWr1as78maZrT/wCpWCbjLusGixkpbeNxTxvFjIXmCWRv5U72nmG/+baRsOj+bflb3aeh9O0I+SvgsbE3bY8tRm5679TtuevXcr32MOnsrnt+XP8A71Xs73Y+6rC/PFD3ln8U+6rC/PFD3ln8U+5XC/M9D3Zn8E+5XC/M9D3Zn8E/o/P9l7D7qsL88UPeWfxT7qsL88UPeWfxT7lcL8z0PdmfwT7lcL8z0PdmfwT+j8/2Ow+6rC/PFD3ln8U+6rC/PFD3ln8U+5XC/M9D3Zn8E+5XC/M9D3Zn8E/o/P8AY7HLdUYZ5AblqJJ8BZZ/FZCKVk8YfG9sjHdzmncH9axp0phHAg4egQehBqs/guhLoDFQymxio3YC50Pb4zaIO26enHtyPG3T0mn6NtgUtgzwmY/7/s07FIiw2Fy9l9qTF5RjI8pCztO0haWw2Y99u0jBJI67BzCSWEgbkFrnZleNVM0TaUERFkEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAUxqrbJ53T+FdsYJ5ZL1hh39OOANIb/ivhJ9YaR4qnUxmx5JrnTN12/Zyw28dvtuA+QRyt3Ph0rOH5yAujA/vv8p+krHFToiLnQUO/jZoxmvjosZgyajbI2B9aGpPJHHI5nO2N8zWGJjy3ryucDt4K4XmzOeeNN/CDil0Dg9W058tmqzdTw28cTgL1XsQJLsc56RzMaGtHK4F7mbFh7yFhws+Ezp7iPBrCaavdw8Wnbd4Sy2cfbZEalZ4aZnSPha1ryPSMO/O0d46Eqj0lx70LrirmZ8PnDN5nreWXobFKxWmig2ce17KWNr3M2a7ZzWkHbotO4rI650NpjjRprT+ms1FrOfM5fOYTIHHOkoTxzvEkZjnP3t0uziBG478zdiNlM4DTmRn4i57KY/C8Q7uNyHD7IYoZPV0Fl8094SMk7MRyelFu0nlAaxjncwYCg2prj4XejsHw1u6t0663qaCF9JkRhxtxleTyiQNBE3YFp5QJCWjqHMEZ5XuAW4NM6ko6uwdXL47ynyKyHGPyynNUl6OLTzRTNa9vUH5TRuNiOhBWhdWaFzlz4D2B0/jsJakztPA4SV2IbEWWC+u+tNNFyO2PabRPHKepd071vLR2q4taYKLKw47KYqORzmitmaMlOw3Y7bmJ4DgPV60GcREQS+vtqGNq5tmzZ8TZjn5vXC5wZM36QY3OOx6czWnvAIqFMcSR2+j7lJu5lyDo6MYA3JdLI1m/5gHEn1AEqnXRV24VMznOnZ95le4REXOgiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICx2ew0eexj6r3uhfzNlimZ8qKRjg5jx+ZwB28e7xWRRapqmmYqjjAweG1GJ7IxeT7KlnGN3dXDtmztHfJCT8tnr8W77O26bys/wceFdmaSabhzpeWWRxe978TAS5xO5JPL3q4y+EoZ6p5NkakVyDmDg2Vu/K4dzmnvBHgR1Cwo0IyEFtTPZypHtsGC8Zg38xlDz/AOq9rYVfbfZn9uf/AHFexPu+DZwoc4l3DfSznHqScTASf/pV/jsdVw+Pq0KNeKnSqxNggrwMDI4o2gNaxrR0AAAAA9SwH3E2ParPf40P1SfcTY9qs9/jQ/VJ1eH4/wBpLRmqEUv9xNj2qz3+ND9UpPh5j8rqeDPvu6pzAdRzVyhF2MsI+9RScrN/vZ9Lbv8A9ydXh+P9pLRm2oo7VXBzQmusoMlqLR+DzmQEYi8qyFCKaTkG+zeZzSdhuen0rs/cTY9qs9/jQ/VJ9xNj2qz3+ND9UnV4fj/aS0Zp8/Bt4UFob8W+luUEkDzTBsD4/i/QFSae0npPhbhrUeFxWK0tijJ287akMdWEvIDed2wA32DRufUF8xomfx1RnnD1dtEP90S7FHQ+KqXIrkzZ8ndiIdHYyVh9h0TgNuZgeS1h236tAPU+sps4Ucar+kc/9nY+dCGTU2Vq5exA6DH1OZ2Pgma5kj3uBa6d7Tty+iS1rSNwHuJ6uAbSIi8669qflHAkREXmgiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiIC17waINTV+xJ/958l3/8Aa/nWwlr3g1v5Jq/fb+s+S7tv879CDYSIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiIC15wZG1TWHUH/3oyXcP/nLYa15wZ28k1ht7UZLw2/tkGw0REBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEUzmdU3GZGbH4alDcs1w3yma1M6KGEkAhm4a4ufykO2AAAI3I3G+O8+6w/0DB+9zfVrqp6NXVF+yPWYWy3RRHn3WH+gYP3ub6tPPusP9Awfvc31a1utecawWW6KI8+6w/0DB+9zfVp591h/oGD97m+rTda841gs+3GHXd3hhwz1BqvH4N+pLGJr+VOxsc/YOlja4dq4P5XbcrOd/cd+Xbx3XmD4G3wvbXGbX+X0tR0LJSq2rd3OXMm7JB7abJHbtZyCFvOS8tbvuO8nw2XpafLasswyQzYzAyxSNLHxvsyua5pGxBBi6grU3wfeA1r4OsOpWafp4id2avutOkntS80MI37KAHs+rWczuvjum615xrBZ6TRRHn3WH+gYP3ub6tPPusP9Awfvc31abrXnGsFluiiPPusP9Awfvc31aefdYf6Bg/e5vq03WvONYLLdFEefdYf6Bg/e5vq1+2ai1VBvJPicXZjb1MVW69sjht+LzxhpPqBIHXqQm615xrBZaIupicpWzeOgvVHl9eZvM0uaWuHgQQeoIIIIPUEELtrkmJpm0oIiKAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIggNPnfNasJ7/Ox6/8A+vAs4sHp/wD6a1Z+lj/w8Kzi+vicY9I+kLPEREXmgi6NzOY/H5HH0LN2CC9kHPZUrSSASTljC9/I3vdytBJ27gu8gIiICIiAi6uVylbCYu5kbsvY06cL7E8vKXckbGlzjsASdgD0A3X4weap6kwuPy+Om8ox9+vHarTcrm9pE9ocx2zgCNwQdiAfWoO6iIqOtwxO+mJ/oyuSAAHcBenVYpLhh/Vix+lsn/x06rVy9J+PX6z9WquMiIi5mRERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEX5kkbExz3uDGNG5c47ABRuZ408P9PTdjktbafp2CdhXlycIlcfUGc3MT9ACC0Ra6dx60vO0nG19Q5vpuHYzTt6aI/8AfdiIh+t4UXmvhb4bHWvJIsDYbcPyYchl8bXkd+aFtl8//wBpBdaf/wCmtWfpY/8ADwrOKF4Salm1hjc5mJ6Xm6W1lHuNbeQ8m0UQHWSON3UAHqwd/TcbE3S+vicY9I+kLPF5d1bPr7ihxk1/hcNYsw0tMGpVqQU9VS4V0RmrNl7d7I6svb8znOA5zygR7cu+5PfxWB1dq7izR0prLVuXp2a2haVu/HprJy1IZr3ldiN07XMDXAkAEgcodsA4ENaBtjW/A3RHEXMsy2ewgs5JsPkzrVe1PWfLDvv2chie3tGdT6L9x1PRZ6lofCY7Uoz9aiIcsMdHiRO2R+wqxvc9kYZvyjZznHfbfrtvsufZm/ajyphq1ji5N8G/I6jzOY85XoMtVsW8fk56UkjoYJAJAYnt5Xu5PSc3YuG4O46LZun9PXdccfuJ1bI6o1FFh8JLifIcXQy09aFj31Gve48jgSCQN278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1J98f3FpEez2Dxe3drfEhLOsXw+WCHT+auOrW2VC2Ku1na83fKwyPaHRt8Xb/mBVEiCctaky7BeFbSeQmdXtMgiMlmqxtqM/KmYRKSGN9Tw158GnvXNrJ6m5rramAov7O1HHXdayZibNAflynlheWub12Zseb1tVEiCdnk1ZIbIhr4aANusEDpJ5Zeer+O54DG8svqaC5vrKS09VymcMy2IrDy9r4j5tlkIpj5UTvv4++n/OD0R+QVRIgnZMHnp+231M6EHINsR+T0YgWVh/1Y8/Nzb+MnR3q2XEmlL0/bCTVWZIfkBdYGCtH2UY/wCqtLYQTF6+bmkP5fgqNEE7LoitY7cT5TNSCW+3IANyc0XI4d0TTG5p7L1x9WnxBXE3D/CWRYE8Fmy2e83JPbPenkAnb8ktDnnkaPyG7M/1VRognpeHel7BtGfT2Ms+U3W5Gbt6jJOe035Mx5gfTHg7vHgsjHp7FRPsPZjKbH2JhYmc2uwGSUd0junV30nqsgiDgADuGy5REBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERBhtaaVqa70dndNZB80VDM0J8dYfXcGytjmjdG4sJBAds47EgjfwK0Fjvgd8KeBWkMnnMHp039QY6tJPUy2WlNieKYDeORoOzGua7YhzWgghellitVYUak0zlcUXBnltWWuHn8UuaQD+ondeuDNNOJTNfC8XWOLzXBC2tBHEwbMjaGNH0AbBftfKrJJJCBMwxWGExzRHvjkaS17T9IcCP1LCag1Rdwl1kFbS+YzbHRh5sY81hG07kcp7WZjt+m/QbdR179v6jVVFMXliVAoHizxJm0HHhqdGFs2Vy9h8MDpa09iOFrGF75HRwNdI/YAANaB1duSACV3PjAym39QNTfm5qH2pY7O4C1xOioXW1MtonOYS15Rj712OvMd3MLXgsjleHMc0kOBLT3bFc+JXNVExhcfSf1427hJt41aobhJ98RWfkY8xQx0FuxRt0qltll/Ju1kzRIxzDuD8sDoeu+yyd/i9mdGs1hU1DUo5HJ4aGnNTOMa+GO2bT3RxRlr3PLCJG7E7kbHfbpsqDIcO8xn8HQqZvUzchcq5mrlRZZj2ws5YZGPELWB/QHlPpFziC4942C+WquD9XV+S1RYuZCWOLN0KlRrIY+V9aSvI+RkrX79TzOadth8nvO65tjpEReme39Mp9e+3/AFxNYIapHHvD/dQ7EPsnTdt0fmlkrWNHlFfma7tCSdunpDbf1BbmWsaeidRac1LDq7L5qfWV2njpMdHQx2NhqySNklicXgumDdxybncgEd222xzrdfZRx2OgdSt6E7l1D1d3/Ol7YM9XeK4ntm+f0uLFFKUNbZK7dggk0TqGlHK8MdYsOpdnECflO5bLnbD6AT9Cq3ODWlziAANyT4LrpqirgjRvwg/gza8494dmQ0jSwt9uBlkp9hKeyyMgftYIbI70DGDO7ZhIIJceu422p/7P7hbrnRnArVOGzT8porIzZx7q0NvGtbNBtFBzzM7VpbI14HKDsWgscQSe70NwUwz8ZooWpWlkuUsPv8p/IcGsjP642MP61fL+cdPmmrpWJNPC/wD9/d6TxTmR0peyPnhp1Vmasd9sLYWVhWZ5Bybcxhd2JcTJt6XaF+2/o8iZLRFfLeeG2MpmhFk2wtfHWyc1fsBHtt2DonNdEXbekWkF3j06KjRcCJzJcP8ACZjzyLsFm0zLiEW4pL05jcItuQMZz8sfd15A3mPV26/WR4d6XzDswchp7GZAZnsPOLblRkzbfY7dj2jXAh3JsC3fuI3CoUQY52ncS+e7M7GU3TXTG61Ia7OacsGzC87ekWgADffbwWQAAJ2AG/U/SuUQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREGsOJHDCfJW5M1gmB9143s0C4NFggdHsJ2DX+B3IDum5BG51BcvRYyya2QLsbaHfBeaYX/qDttx9I3C9XL5z1orUZjmiZMw/iyNDh/4FfoOifxfE6PRGHiU7URw7bT917J4vKfneiP8Artf/ABW/xXHnej/ptf8AxW/xXp/7msR81Uvd2fwT7msR81Uvd2fwX0fx3D/xzr/pLQ8wed6P+m1/8Vv8U870f9Nr/wCK3+K9P/c1iPmql7uz+Cfc1iPmql7uz+CfjuH/AI51/wBFoeYPO9H/AE2v/it/innej/ptf/Fb/Fen/uaxHzVS93Z/BPuaxHzVS93Z/BPx3D/xzr/otDy/55omRsbLUUsrzs2KJ3O9x9Qa3cn9QWwtDcLruoLEdzOVJMfiWEObUnHLNa+h7e9jPWDs49xAHfuirj6tEEVq0NcHv7KMN/3LsLj6T/Gq8SmaMGnZv33vP6cLHZHBwAGgADYDuAXKIvzQIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiIP/Z", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from IPython.display import Image, display\n", + "from langchain_core.runnables.graph import CurveStyle, MermaidDrawMethod, NodeStyles\n", + "\n", + "display(\n", + " Image(\n", + " app.get_graph().draw_mermaid_png(\n", + " draw_method=MermaidDrawMethod.API,\n", + " )\n", + " )\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "b9e767fc", + "metadata": { + "ExecuteTime": { + "end_time": "2024-04-18T12:18:30.873950Z", + "start_time": "2024-04-18T12:18:30.871750Z" + } + }, + "source": [ + "**Using Mermaid + Pyppeteer**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d403e1e7", + "metadata": { + "ExecuteTime": { + "end_time": "2024-04-19T11:25:44.798703Z", + "start_time": "2024-04-19T11:25:44.793438Z" + } + }, + "outputs": [], + "source": [ + "%%capture --no-stderr\n", + "%pip install --quiet pyppeteer\n", + "%pip install --quiet nest_asyncio" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "058546ee", + "metadata": { + "ExecuteTime": { + "end_time": "2024-04-19T11:25:47.412695Z", + "start_time": "2024-04-19T11:25:45.405158Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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AAAAJpWJUwAAwEHt2zUw+nHjDG8hflVPT0++8IW/O2C9tbUt5557YXbs2J5HH30k3d37kiSXXnplqqurR89bsuS4XHDBpdm1a0ceffSRMde44IJLD7ju3Lnzxxy3t8/JZZe9Kffcc9eY9cbGpixbdnx27hyZCvWrPve5/5WPf/xPDutz/OY37xj9eNGipTn99Feno2NLfvrTH+f6629MfX19Zs5sG817//33jnn+2Wefd0BZ7MQTTzmse5dRY0ttsqk3e5/32gMAAAAAYOL5rgcAAHBQfb1DSZLaegNrx/OLX6wYLUXt9/GP/0kuvfSNo8c9PT25/fYv5J/+6dM5//xfG3PueeddlPPOuygbNz6T97//raPrS5celz/8wz87rAzvfOfNo8WpD3/4Y7nkkjfmmGNmjj6+efOz+Yu/+OMsX/6T0bV77/123vKWd+bUU1912J/r7/7u7+Xqq68fPV6z5qm0t89JkixYsGg07zve8cYxW/197GN/lLa2WYd9n7KrrRt5re1/7QEAAAAAMDkUpwAAgIPq/2V5o6ZWcWo8u3fvOmDt4ovfMOa4oaEhN974m3nTm64bU2iaKMuWHZ+PfeyTOeusc0eLTM83f/7C/NEf/WXe+95rxxSaVq1aedjFqf/0n/4gb3rTm8esHXfciS8vOOPaX1LsV5wCAAAAAJhUvvMBAAAc1P6pN3UmTo1rzpx5B6z94hc/H/fc9vbZqa2tnZQcr3/9VeOWpvZraGjI2972njFr423hN57jjjsxV1xxzcvKx+GrrR/ZytHEKQAAAACAyeU7HwAAwEH19/1yq766SsFJpqalS487YO2P/uijWbHi4QLSjLVz54488cRjeeCB+7J27dNZvHjpmMcPtzh13XW/kerq6smIyDj2b9W3/7UHAAAAAMDksFUfAABwUJXKSGFquOAcU1Vz84zcfPPv5B/+4W9H13bs6MpHP/rbueKKa3L99Tce0S3tHn74gXzxi/+YVatWprt730HP3bz58IpTS5YcOxHROEy/fMll2IsOAAAAAGBSKU4BAAAHtX/S1GC/FscLeetbb8zTT6/K97//nTHrd9/99dx999dz3nkX5eabPzSpBapVq1bm7/7uf2bFip8e9nMGBwcP67x58xa81Fi8BM9NeTMkGgAAAABgMvkqLAAAcFC19bYNO5S6urr83u/9t9x002+N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DgAAAAAAAABA76NVHwAAAIBeUVS0QTfccHnA0FQgL7/8rG644XLV1m7qcu2zzz6km266xi801dGiRR/rgQfu7NbzH6gVK/4dMDTV5txzLzUqZbX57LOPujxvXd1WU2hKkk444bT92+Q+euWVv+ruu//LLzTVUVHRBs2Y8Qs1NDQEXbNu3Wpdd91FAUNTHXm9bt1887WaPfsF+Xy+oOv27Nmjp5/+n4Chqf21bVud7rrr5oChqUA++2yerrrqPK1c+W2P7QEAAAAAAAAAEBpUnAIAAAAQcjt31uvuu/9LXq/bNG+12pWfP1oWS4y8XrfWrPnO9HhFRZmefPJ+3XffUwoLCwt6/u++W2oaH3bYWGVlOVVZ6TJVA5Kk5cu/0YYNa02VnYYOTdRPfrK3fds33ywxrZ8w4WhZLDGmueHDR3RxxXurLrVJSEjU+PFHS5IWL16gww4bq7y8kWppaTZVP1q06GNdd93vZLFYgp63Y9BowoSjZbMld7mfnuD1uk2fw/T0LB1++Hht3bpZ3377lWltY2ODPv74PV144RV+59m82aubb77Wbz4ry6lx446SxWJRQcGPWr16henx11//X2VlOXX88acG3N/99//R7/Mn7f06Gz36CEnSmjXf+bVj7MwTT9znd20xMbEaPfoIJSQMU339DhUUrDWds7GxQffcc5teffWfGjo0oeMpAQAAAAAAAAD9BMEpAAAAACE3a9ZzfqGpGTNu05lnnq9BgwYZc9u21em55x7V4sULjLnvvluqzz6bp9NPP7vL57nggst16aVXa8iQocbcqlXLdffdtxjt5iTp3Xff0J13/qcqUWpquu6662FJ0iWXnG4Kwdx22z1KTBy2D1drNmXKuZox4w9Gy8HrrvudsZeRI8coK8upiooySXsDN//+97900klnBD3f4sWfmMannDJ1v/e2v8aOnajf//5OpaVlGHObNlXrvvtuV1HRBmNu9uwXdN55lyoiwvyj5+uv/6/fOW+88Vadc87FprnS0iLdcceNps/Hyy8/o2OOOcGvheOyZV/7haYSEhJ1992PatSow405n8+n1157Xm+++XKX1/nll4v8znnOORfrqqt+bWr32NzcrHfeeU2zZj1nzDU2NuiFF57ULbfc1eXzAAAAAAAAAAD6Bq36AAAAAITU2rWr9MEHfzfNPfXULJ199kWm0JQkDR2a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379qGHV1dZo7d67mzp0rr9drzFssFk2bNk2XXXYZbfyAQ1Rtba2ee+45I1xVX1+vCy+8ULfffrtp3RNPPKHZs2cbY7vdrvvvv1/jxo3r7S0DPaKpqUlut9sIWG3ZskU///nPTWvWrFmj6dOnm+YuueQS3Xrrraa5++67T++//74kKS4uTna7XY888oiysrJM69avXy+bzSar1RqCKwIAAAAAdIbgFABgwNu9e7epelTbv5WVlWppaQl6XHx8vF/1qJycHKWkpAzYKkjbt283wlEbNmxQQUGBysvL1draGnC9xWLR8OHDTa328vLyTH/JC+DAtLb4tPKLzfp2oVe7mwL/twjg0JNgjdSE45OUP3aIYuIOvMpcc3OzFi1apDlz5uiHH34wPTZp0iRdeumlOu644wbsayBgIPB6vWppaVFysrnl50033aQvv/zSNPf2228rNzfXNDdt2jRZrVZlZ2fL4XAoPz9fP/3pT0O+byBUtmzZIrfbrc2bN6umpkY5OTkaP368aU37tn9tFixYYApI7dixQyeddJIxttvtOvHEE3XbbbeZjnO73WpoaFBKSgo/MwMAAABADyI4BQAYMNraUZSVlamkpMQISVVVVamzb4eJiYnKyckxhaOcTueA/0vQmpoaUxWpgoIC1dTUBF0/ZMgQo3pU283hcCg8PLwXdw0MXL+dcZMifamKDx+ulj2RptZbnfH5fEYQov39uLg45efnh2y/OHBbt2412swkJSUpOzu7j3eEUBocP0hDk6I0NClKw+xRSs8ZHLLnKigo0BtvvKFPP/3UVIUzIyNDF110kc477zwNHhy65wfQvzQ2Npra/pWWlv5/9u48Lup6+x/4i0U2kU1AcB3WGTZFBMR9QyX1uqQVopZL3TYzu9atzG5a3ntb7GplV7uZ4m5qRaWlaLngQkKKMOwgg4DADCAgwoAIvz/88vn5ccByYT4sr+fjMQ+d9+eM94A3kJnXnIN//vOforVkV69exfjx40WP8/DwwO7du0Vnly5dQnJysrD2jytBqSPIz88XVgNqNBrMnTtXdD0rKwvh4eGis7CwMKxevVp09t///hebN28GAFhYWMDR0RFvv/02BgwYIKrLyMiAtbW1TsiRiIiIiIiImsfgFBERdTharVY0OaopJFVQUHDXgJSDg4MoGOXq6go3NzdYWVnpsfu2p76+HtnZ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4OnpKTpLT0/HsmXLUFRUJJw98sgjeO+990R1O3bswLp164Q1gzKZDHPnzoVCodBL70REREQPisEpIhLJz8+HUqlEYmIikpKSWgzrGBsbw8PDA35+fujfvz9X7j2g6upqJCYmCpOklEolysvLdeoMDQ3h6uoqCqe5urrC0NBQgq6JiKi2thZbt27F1q1b0adPH+zevRsGBgZSt0VERG1QSUkJtmzZgu+++w51dXUAbq3RnDdvHmbNmgUzMzOJOyQiIildunQJubm56NKlC4YPHy669uGHH2Lv3r3CfVNTU7z11luYNGmSvtskok4qNTUVly9fRvfu3REYGCi69v7772P//v2is40bN+rUrVixAqampnB0dISjoyNkMhkGDhzY6r0TERER/REGp4g6sbq6OqSkpCAxMRGJiYm4ePEirl692mytg4MD/Pz8hJu3tzdMTEz03HHH0NjYCJVKJYTTEhMTkZOTg+a+HNvZ2cHPzw++vr7Cr3xBhYiobYiOjsbatWuh0WgAAGZmZoiMjOTUKSIiuqvS0lJs374d+/fvh1arBXBreu+cOXPw+OOPo2vXrhJ3SEREbc2ePXsQHR2NtLQ0IXzbXChh/fr16NKlC7y9vdG/f39YW1tL0S4RdTLp6elIT0+HRqOBWq2GRqPB8uXLYW9vL9Rcv34do0aNEj0uMDAQGzduFJ0lJSUhLy8Pffv2hbu7O58LJyIiIr1gcIqoEykpKcHFixeFkFRaWlqz06RMTEygUCiEkJSvry/3kz+AqqoqKJVKISSVlJSEqqoqnTpjY2MoFAohJOXn54eePXtK0DEREf0ZixYtwsWLFwEAU6ZMwZIlS7gqldqcL774AgAwduxYrnQhamMqKiqwfft27N27F9XV1QCAbt26ITw8HHPmzOHacyIialZaWhpSU1MxceJEWFhYiK6NHDlS+J4CAD179sQPP/yg7xaJiHRcvXoVn332GXJycpCTk4Oqqio8+uijWL58uahuzZo12LNnj3DfwcEBq1atQnBwsL5bJiIiok6EwSmiDurmzZvIzMwUTZMqLCxsttbe3h4DBgxA//79MWDAACgUChgbG+u5444jJydHCEglJSXh0qVLzU6TcnJyEk3xUigU6NKliwQdExHR/VCpVFi5ciVeffVV+Pr6St0OkQ6tViuseVm1ahUmT54scUdE1Jyqqirs3LkTu3fvFt5g0bVrV0RERDBARUREf9q1a9ewatUqxMfHC99PPD09sWvXLlFdUlISjh49iqCgIAQGBnKaCxFJoqSkBPX19Tpv2F66dClOnTolOouMjNR53uXRRx+FpaUl+vXrB5lMBrlcrrPmlIiIiOjPYnCKqIPQarVISkpCQkICEhISkJiYiJqaGp06Q0NDeHp6on///kJQytnZWYKOO4ba2loolUrRJK9r167p1JmYmMDLywt+fn7o378//P39OZWEiKidqK6uxpYtW7Bw4UKYm5tL3Q7Rn8bgFFH7cv36dXz99dfYtWsXysvLAdyaQDVv3jyEh4frTBUhIiJqiVKpRHx8PLp06YI5c+aIrm3atEm0GisgIACvvPIKvLy89N0mEZEOrVaLS5cuQaVS4fLly8jJycHy5ctFq0erq6sxcuRI0eOaC4qmp6cjMzMTrq6ucHFx4XM6RERE1CKOlCFqpyoqKnD+/HkhKJWWloabN2/q1HXr1k0UkvL19eU7yR5ASUmJKJyWnp7e7Oe9R48eQkiqf//+nOJFRNROHTp0COvWrUNJSQnMzc2xcOFCqVsiIqIOqmvXrli4cCEiIiKwe/dubN++HZWVlfjvf/+LXbt24cknn8Tjjz/On+eIiOgP+fr6tjgVt6KiQnT//PnzzU5AP3DgAIYNGwZbW9tW6ZGIqDlmZmbw9vaGt7d3izWGhoZ49913oVKpkJOTA5VKBU9PT526Y8eOYdOmTcJ9R0dHfPzxxwyKEhERkQ6+ik/UTuTn5yMhIQEXLlxAQkICcnNzm62TyWSioJSLi4ueO+04GhsbkZ2dLQSlWlp3aGRkBE9PTwwYMAADBgyAv78/HBwcJOiYiIgelpKSErz55pu4cOGCcKZUKiXsiIiIOgszMzMsWLAAjz32GHbv3o2dO3eivLwcn376KXbs2IEFCxZg5syZMDExkbpVIiJqh5YtW4bFixcjNTUVSUlJSE1Nhbu7u6gmMTERK1euBADI5XIEBQVh6tSpcHV1laJlIiIRMzMzTJo06Q/ramtrYW5uLmzmUKvVzW6BGDt2LPr27QuZTCas/RsyZMhD75uIiIjaLq7qI2qDGhoakJGRIQR2EhISUFJSolNnbGwMhUIBf39/+Pv7IyAgAFZWVhJ03DHU1dUJ6w6bVu9VVVXp1HXr1g1+fn5CUIpTvIiIOp66ujrMmDEDxcXFcHV1xeLFi3XGwBMREenDtWvXsGPHDuzevRvV1dUAAAcHByxatAjTp0/nZFsiInroDhw4IASnmrz77rs6QYX8/Hz07t1bn60REd2z4uJiYTJVeHi46FpeXh5mzJghOvP29sa2bdtEZ1lZWVCpVPD19YWTk1Or90xERET6xeAUURtw8+ZNpKSk4PfffxfW7zU9IX47c3Nz+Pn5YeDAgfD390f//v1hamoqQccdw/Xr14UJXufPn0dKSgrq6+t16nr27ClMkhowYADc3NxgYGAgQcdERKRPp06dwtWrV/GXv/xF6laIiIhQUVGBbdu24euvv4ZWqwVw62eVF154ARMnTuTPKERE9FBVV1fj3LlzOHv2LGJjY7F582Z0795duF5fX4/Ro0fDwsICwcHBCA4OxpAhQziFnYjalfz8fGzatAkqlQoqlQpVVVWYNGkS3n33XVHdV199hQ0bNgAAunfvDh8fHzz77LOQy+VStE1EREQPGYNTRBKor6+HUqnE+fPnhaBU0xPft7O1tRWmSQ0cOBByuRxGRkYSdNwxVFRUCOG0CxcuICMjA3d+CTQ0NISnp6cQkho4cCDs7e0l6piIiFpbcXExtm3bhsrKSrz33ntSt0NERPSHysvLsWXLFuzfvx+1tbUAbq1ReumllxASEiJxd0RE1FlcvHgRixYtEp15eXlh+/btEnVERPTgSkpKUF9frzNVasWKFTh06JDoLDIyEr6+vqKz1157TVj55+LiAldXV26rICIiagcYnCLSgxs3biAxMRHnz5/H77//jqSkJOEJ7tvZ29tj0KBBCAgIwKBBgyCTySTotuNQqVRISEhAYmIiLl68iNzcXJ2apqBUYGAgAgMDERAQAAsLCwm6JSIifcrLy8OWLVvw008/CdMGd+zYAYVCIXFnREREf45Go8HGjRvx448/oqGhAQAQEBCAZcuW8Z3vRESkFwkJCTh37hx+++03XLx4EfPnz8fixYtFNd9//z3UajUGDx6M/v37S9QpEdGD0Wq1UKlUyMnJEdb+vffee6KNILm5uZg5c6bocWFhYVi9erW+2yUiIqJ7xOAUUSuor69HcnIy4uLiEB8fj8TERNTV1enU9ejRQwhJBQQEoG/fvhJ023E0Te9KTExEQkICqqqqmq2Ty+UICAhAUFAQAgICYGlpqedOiYhIap988onwTmgTExOE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y5cvV3BwsObNm6e0tDQ5OzurY8eOWrp0qT7++GN17NiRoikHVatWLbVr106StGjRIh05csRwIgBAUTp8+LD+/e9/W4umJCk7O9tgIgAAgBtTp04dSdLvv/9uOAkAAI4lLS1NY8aM0Z49e/Too48qKirKdCQAwF/k10Hmvffe0759+/TCCy+ob9+++v777w0kAwD8GStOlXBZWVkKCwvTwoULlZiYaB3v1KmTRo4cqZo1axpMh+KUmJiohx56SBcvXpSfn5+WLl0qT09P07EAADfphx9+UKNGjfJcGdq3b19JUo8ePdSzZ0/atAIAALs0b948LViwQBUrVlR4eLjpOAAAOJStW7fqpZdeksVikYuLi5599ln169fPdCwAwFXs2bNHy5cv17fffmsdmzdvnlq2bGkwFQCUbq6mAyB/OTk52rhxo+bNm6fjx49bx4OCgjRq1CjVrVvXYDqYULVqVT3//POaPn26YmNjNWnSJM2ePdt0LADADTh16pRWr16tr776SqdPn9bYsWP1z3/+0+aYDz74QFWrVjWUEICjmDdvniSpQ4cOqlevnuE0AEqj3At+LBaL4SQAADieDh06yM/PT88++6wSEhIUHR1tOhIA4BoCAgIUEBCgw4cP64033tDly5cpmgIAw1hxqgT69ttv9cEHH9i0Y2vRooXGjh2rxo0bG0yGkuC1117Tl19+KUnq3r27pk6dajgRAOB67Ny5UyNHjrQZa9Omjd5//31DiQA4KovFoqCgIEnStGnT1K1bN8OJAJRGoaGhmjFjhiQpMjLScBoAABxTamqqlixZkud8AwCg5EtJScnTbeDgwYO69dZb83QpAAAUDVacKkGioqL01ltv6eDBg9axxo0b66mnnlKbNm0MJkNJMmnSJMXFxSkyMlJr166Vt7e3xo4dazoWAKCAWrRoIQ8PD126dEn33nuvevbsqbvvvtt0LAAAgCLx5xbzFotF7u7uBtMAAOCYvLy8KJoCADv116IpSZo4caLOnTunESNG6NFHHzWQCgBKF2fTASBFR0dr5MiRGjJkiLVoqnbt2po5c6aWLl1K0RTyeOedd9SgQQNJ0ieffELLPgAoYY4cOaKFCxeqX79++vXXX232lS1bVq+//rq+/vprzZw5U0FBQXJxcTGUFAAAoGi5ublZb1+8eNFgEgAASpecnByNHz+eFR8BwM78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DvYhqYCAALy9vQ3UitQ8q1evBqBhw4b27UBERKqLzp07a3BKRERqvUaNGjFkyBD76rGZmZlXrNx88OBBioqKKCwsZN++fezbt4/FixdjsVho3749PXr0ICAggMDAwHLbTu/ll19m+/btbNy4kVWrVpXLzxQRkdrp0qVLvPnmmwC88847hISEGC4SEfltGpwSERERkWuy2WwcOXLEPiSVmJhIWlraVec5OTnRuXNn+1OwAQEBuLi4GCgWqflsNht169Zl1KhRODg4mM4RESkTX19foqKiOHLkCIWFhdqmV0REBPDw8KB///70798fAKvVyvfff2//Pfz777/HarXaf0c/cuQIy5YtA6BFixYEBAQQEBBAjx49aN68eZn/+19//TXbt28HYOjQoeX3xkREpFbKycmxf12vXj2DJSIi1093qEREREQE+Peg1O7du+3b712+fPmq81xcXOjatSsBAQF0796drl27UrduXQPFIrXPyy+/TG5uLkVFRaZTRETKzM/PD4CioiL2799P9+7dDReJiIhUPS4uLgQHBxMcHAyU/Lt58OBBEhMT2bNnD0lJSfbf1VNSUkhJSWHNmjUANG7c+IqHmtq1a/er/62MjAxee+01ANq2bcvDDz9cge9MRERqg+zsbPvXbm5uBktERK6fBqdERMrgnnvuITU11X7DX0SkOrPZbBw7doyEhAQSEhJITEwkIyPjqvPc3d3tW+716NEDPz8/6tSpY6BYRABcXV1NJ4iI3JDOnTvj5OREQUEBcXFxGpwSERG5DnXq1MHf3x9/f38eeugh++/ye/bssQ9SpaamAnDhwgU2btzIxo0bAfDy8rIPUQUEBNChQwcsFov9Z1+8eBEPDw8yMzOZNWuWVoMUEZGb9ssVpzQ4JSLVhcVms9lMR1yP0NBQCgoKmDJlCpGRkaZzRERERKql48ePk5CQwO7du9m9ezfp6elXnePt7W1/QrVHjx5X3VgVERERuVGTJk1ix44d+Pv78/HHH5vOERERqRFOnz5tX5EqMTGRM2fOXPO80gejAgMDCQgIoFOnTtSpU4edO3fSq1evSq4WEZGaKDk52T7AO27cOFxcXAwXiYj8Nj0+ICIiIlKDnT9/nri4OOLj49m1axdpaWlXnePl5UVAQABBQUEEBQX95lL+IlL5fv75Zxo2bGg6Q0TkpvXu3ZsdO3awf/9+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Z4mIiFRJsbGx/N///R/z58+nS5cupnOMadSoEXfffTd33303NpuNH3/8kbi4OHbu3ElSUhL5+fmcOXOG5cuXs3z5chwdHenatat9kKpjx45YLBbTb0NEpEa4dOkSAD4+Pvq7VUSqFQ1OiYiUga+vL25ubrRu3dp0iohUkOPHj7NkyRKioqLIz8+3Hw8KCuKBBx6gX79+ODg4GCwUkZrkk08+ISwsjLZt21dsP9kAACAASURBVJpOERExrnHjxrz++us8/vjjJCcn88ILLzBnzhzTWSIiIlXOihUrePXVVwF46qmnWLdunYaNAYvFQseOHenYsSPjxo0jLy+P3bt3ExcXx44dOzhx4gSFhYXs2bOHPXv2MH/+fLy8vAgJCSE0NJTevXvToEED029DRKTaKl1xSqupi0h1Y7HZbDbTEdcjNDSUgoICpkyZQmRkpOkcERERqWGOHj3KO++8Q2xsrP2Yi4sLd911F5GRkbRp08ZgnYjURLGxsUyePBmAhQsXEhQUZLhIRKRqeO+99/j73/8OwNNPP82YMWMMF4mIiFQdn332GW+88QYAjo6OzJ49m/DwcMNV1UNqaiqxsbH2FakuX7581TmdOnWiT58+9OnTB39/fz08JyJSBlFRUcTFxeHj48MTTzxhOkdE5LppcEpERERqteTkZBYsWMDmzZvtxzw8PHjggQeIjIykfv36ButEpKY6d+4cY8eOJSMjg44dO/Lpp5+aThIRqTJsNhuPP/44u3fvpk6dOvz973+na9euprNERESqhPnz57No0SIaNmzIG2+8QefOnU0nVUvFxcX88MMP7Nixgx07dvDDDz9QXFx8xTmenp6EhobSp08fevfujaenp6FaEREREalIGpwSERGRWikrK4t3332X5cuX22+MNWzYkDFjxnDffffh6upquFBEaiqr1cr48eM5evQozs7OfPbZZ9oGWETkP6SnpxMZGcnFixfx9PTko48+0t+VIiIi/7Jw4UJGjx5Nw4YNTafUGFlZWezYsYPvvvuO7du327ebKmWxWOjcuTN9+vShb9++dOrUCYvFYqhWRERERMqTBqdERESk1lm7di1vv/02ly5dAqBp06Y89NBDjBw5krp16xquE5GarqCggFmzZrF+/XpmzJhBRESE6SQRkSrp2LFjPPLII2RlZeHj48MHH3xAixYtTGeJiIhIDWez2Th06BDfffcd33333TVXo/L29qZv376EhYUREhKiB/BEREREqjENTomIlMGKFStITU3Fz8+PsLAw0zkiUkZHjhzh1VdfZd++fQC4uLjwyCOP8NBDD+Ho6Gi4TkRqm/j4eIKDg01niIhUaT/88AN/+MMfyMvLo0mTJnz88cc0atTIdJaIiEiliI6OJioqijlz5uDg4GA6p9bKzMy8YjWq9PT0K153dHQkKCiIvn37MmDAAJo2bWqoVERERERuhAanRETKYOzYsRw+fJiRI0fy/PPPm84RkTL49NNPefvttykqKgIgPDycqVOn4uPjY7hMRERERH7N7t27+eMf/0hhYSGtWrXigw8+wNvb23SWiIhIhcnNzeVvf/sby5YtA+DRRx/lscceM1wlULIa1Q8//MC2bdvYtm0bP/7441Xn3HLLLfTv35/+/fvj5+enLf1EpFY4e/Ys8+bNo1GjRowfP15DpCJSrWhpBREREanRcnNzef755/n2228BaNmyJS+++CLdu3c3XCYitUlGRgaenp6mM0REqqXAwEDmzp3L008/zalTp/j973/PwoULadasmek0ERGRcnfo0CGmTp3KuXPnAAgKCuL+++83XCWlLBYL/v7++Pv7M3HiRFJTU9m6dSuxsbHEx8eTl5fHsWPHOHbsGB999BE+Pj6EhYXRv39/evXqhZOTk+m3ICJSIc6cOUNMTAwADzzwgOEaEZGy0dquIiIiUmOdOnWKMWPG2Iemhg4dyrJlyzQ0JSKV6vLlyzz88MM8++yz5OXlmc4REamWwsLCeOGFF4CSG/IPPfQQBw4cMFwlIiJS/ho1akRWVhYAEyZMYOHChXh5eRmukv/Gx8eHUaNG8dZbb7F582b++te/cvfdd9OgQQMAUlNTWblyJZMnT2bgwIFMnTqVdevWkZGRYbhcRKR8Xbhwwf61VpsSkepGK06JiIhIjXT27FnGjRvH5cuXqVOnDk8//bSe0BQRIyZPnszJkyc5efIkQ4cOpX///qaTRESqpWHDhmGxWJg5cybp6ek8+uijzJkzhz59+phOExERKTcNGzZk1qxZODo6EhoaajpHysDFxcW+RZ/NZuP7778nJiaGmJgYkpOTsVqtbN26la1bt2KxWOjevTsDBgxg4MCB/M///I/pfBGRm1I6OFWvXj1cXFwM14iIlI0Gp0REyuCee+4hNTUVPz8/0yki8isyMzOZOHEily9fxmKx8MorrzBo0CDTWSJSyxQVFTFlyhT27t0LwMSJEzU0JSJykyIiIvD09OTPf/4zeXl5TJ48menTpzN8+HDTaSIiIjfku+++u2oIOCwszFCNlBeLxULXrl3p2rUrkyZN4syZM3zzzTfExMSwd+9eiouLSUxMJDExkTfffJNbb72VgQMHMnDgQG699VbT+SIiZXbx4kUAGjdubLhERKTsLDabzWY64nqEhoZSUFDAlClTiIyMNJ0jIiIiVdjEiROJj48H4LnnnuPee+81XCQitdGZM2cYO3YsWVlZREREMGPGDNNJIiI1RlJSEpMnT7ZvZTR+/HieeOIJw1UiIiLX7+jRo8yYMYNDhw4xf/58evXqZTpJKklGRgYxMTFs2bKF2NjYq15v1qwZ4eHhDBo0CH9/fwOFIiI35uzZs+Tk5HDLLbeYThERKRMNTomIiEiNkpSUxIQJEwB49NFHeeyxxwwXiUhtduzYMd58803eeustHB214K+ISHk6evQoEydO5NKlSwCEhITw6quvUr9+fcNlIiIiv+6f//wnc+fOtf85PDyc1157zWCRmJKTk8N3333HN998Q2xsLDk5OVe8XjpENXjwYHx9fQ1VioiIiNRsGpwSERGRGmXKlCnExMTg4eHB119/rUEFERERkRrsp59+4n//939JSUkBSj5cnDdvHh07djRcJiIicm3JycmMGjUKAFdXV5588klGjx5tuEqqitjYWL755huio6PJzs6+4rUmTZowZMgQwsPDNUQlIiIiUo40OCUiIiI1St++fbFarYwdO5annnrKdI6I1DJZWVm4u7ubzhARqVWysrKYPn26fasbJycnZs6cyeDBgw2XiYiIXNubb77Jrl27mDt3Li1atDCdI1VQYWEhO3fuZNOmTWzdutW+PXGpli1bMmTIEIYOHUrLli0NVYqIiIjUDBqcEhEpg9mzZ3Pq1Cn69evHgw8+aDpHRP5DYWEhISEhAEybNs3+BKeISGXYunUrs2fPZuHChbRv3950johIrfPRRx+xYMECSm913X333fz5z3/GxcXFcJmIiNRmGRkZeHp6XnHMarXq3ye5boWFhezYsYOvv/6ab7/99qqVqPz8/Ljzzju544478Pb2NlQpIrVZTk4OKSkpNG7cGC8vL9M5IiJl5mA6QESkOjl48CB79uzh5MmTplNE5Bq0LZ+ImBIbG8vUqVNJT0/XanciIoY8/PDDvPvuu/aV/9asWcP999/PwYMHDZeJiEhtlJOTw5w5c7jrrrs4f/78Fa9paErKwtHRkbCwMGbNmkV0dDTz5s3jjjvuwNXVFYADBw7w17/+lSFDhvDHP/6RdevWkZOTY7haRGqTH374gTFjxhAeHk5ycrLpHBGRMtPglIiIiNQofn5+AMTHxxsuEZHaIj4+nqlTpwLg6urKnDlzDBeJiNRewcHBLF26lG7dugFw5swZfv/737N48WKqyaLrIiJSA0RFRTFixAiWLVuG1WplwYIFppOkhnBycmLAgAG8/PLLREdH88orr9C3b1/q1KlDcXExO3fuZMaMGYSHhzNt2jS2bt1KQUGB6WwRqeHOnDlj/7pp06YGS0REbowGp0RERKRG6dChA1CyZdbFixcN14hIbbBs2TIKCwtxcXHh3XffxdfX13SSiEit1rRpU/7+978zceJE6tSpQ2FhIX/729/4wx/+wNmzZ03niYhIDRcbG8v06dNJS0sDYNSoUfYHLUTKk7OzM4MHD+att97i66+/5tlnn6VLly4A5OfnEx0dzdSpU7njjjt4/fXXOXDggOFiEampfvrpJwAaNGigVRVFpFrS4JSIiIjUKPfccw8ARUVFLFq0yHCNiNQGs2bNonfv3rz77rv2m9QiImKWg4MDjzzyCB9//DHNmjUDIDExkfvvv59Vq1YZrhMRkZqsd+/etG/fniZNmrBo0SKmTZtm30ZWpKJ4enoyevRoFi1axOrVq3n88cdp1aoVAJmZmXzxxRf87ne/Y/To0XzyySf2wT4RkfJQOjhV+ruXiEh1Y7FVk3XKQ0NDKSgoYMqUKURGRprOERERkSrstddeY/ny5QC8/vrrDBo0yHCRiIiIiJiSk5PDG2+8ccXAVGhoKC+++CI+Pj4Gy0REpCZIT0/Hy8vrimOHDh2iRYsWGpgS4/bv38+6devYuHEjly9fth93cHAgJCSEiIgIBgwYQN26dQ1Wikh1t2zZMqKiomjZsiUzZ840nSMiUmYanBIREZEax2q18uCDD5KcnIyjoyMLFy6ke/fuprNEpIbYuXMnvXr1Mp0hIiJltH37dmbOnMnPP/8MgIeHB9OmTWPw4MGGy0REpDpKTk7mtddeIz09nc8//xyLxWI6SeS/KigoICYmhnXr1rF9+3aKi4vtr7m7uzN48GCGDRumVZRFRESkVtLglIiIiNRIycnJPPzww2RmZuLq6sqiRYto37696SwRqcaKioqYOXMm69ev1+8lIiLV1OXLl3nppZf45ptv7Mf69OnDiy++iLe3t8EyERGpLpKTk1m0aBFfffWV/dicOXO47bbbDFaJXL/09HTWrVvHunXrOHr06BWvtWnThuHDhzNs2LCrVlITERERqak0OCUiIiI11pEjR5gwYQLZ2dm4uroyZ84cQkNDTWeJSDWUlZXF1KlTSUhIAMDf35+PP/7YcJWIiNyojRs38tprr9m3rKlfvz5TpkwhIiLCcJmIiFR1f/3rX/n8888BaNCgAZMmTWLYsGFacUqqpUOHDrFu3TqioqJIT0+3H69Tpw5hYWGMGDGC0NBQ6tSpY7BSREREpGJpcEpEpAwOHjxIdnY2jRo1onXr1qZzROQ6HDp0iD/96U/2LVkmT57Mgw8+aLhKRKqbxx9/3D40dfvtt/Pqq68aLhIRkZv1888/M3PmTLZv324/FhgYyEsvvUSTJk0MlomISFWWnp7OsGHDGDFiBI8//jhubm6mk0RuWmFhITExMaxatYq4uDh++dGhj48PERERjBgxghYtWhisFBEREakYGpwSESmDsWPHcvjwYUaOHMnzzz9vOkdErtOlS5d45plnSEpKAuC2227jpZdewsXFxXCZiFQX33//PRMmTOD2229n1qxZeppcRKQGiYqKYu7cuWRkZADg6urKE088wX333ae/70VEarGcnBw++eQThg8fTrNmza54LTMzEw8PD0NlIhXrwoULrF69mtWrV3Pu3LkrXgsICGD48OEMGjRI99VEBIDo6Gg2b95Mq1atmDhxoukcEZEb4mA6QERERKSiNWjQgA8++IDbb78dgC1btjBu3DiSk5MNl4lIddGlSxfef/99Zs+erQ/RRURqmCFDhrB8+XIGDhwIQG5uLnPnzuWRRx7h1KlThutERKSyWa1WPvnkE4YNG8YHH3xwzS26NTQlNVnjxo159NFHWbduHW+//TaDBg2yv7Znzx5efPFF+0NF+/fvN1gqIlVBQkICmzZtYsuWLaZTRERumAanREREpNZ45ZVXGDFiBADHjh3jwQcfZNu2bYarRKQqunz58lXHunXrZqBEREQqQ4MGDZg7dy6vvfYaXl5eAOzbt4/7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IlLzZGVlXXVs6NChdOrUiaeeeooNGzbwpz/9iUaNGhmoE5GyaNasGZMmTWL9+vW8/vrrhISEYLFYKCoqIiYmhsmTJzNs2DDef/99Lly4YDpXRP7l2LFj9q+12pSIVHcanBIRERH5FR06dOCzzz4jKCgIgCNHjhAZGcmOHTsMl4lIWUVERDB//nz+8pe/ULduXdM5IiJSw3h4eDBjxgwWLlxI06ZNAdi/fz/3338/H330EUVFRYYLRUSqv5SUFObOncudd95JVFTUVa8vWbKEsWPHamVZkWrI0dGRQYMG8c4777B27VoeeeQRfHx8ADh//jzvv/8+ERERTJ48mZiYGF1biRh29OhRAFxcXOy//4iIVFcWWzVZMzw0NJSCggKmTJlCZGSk6RwRERGpZYqLi5k/fz6LFy8GwGKx8NhjjzFhwoQy/ZygoCASEhIqIlFEfuGLL77A19cXf39/0ykiIlILWa1W3nvvPT799FP71jK33HILL730Eh07djRcJyJS/Rw/fpx33nmHb7/91n6sW7du9q24RaRmKioqYtu2baxatYrvvvvuim2QfXx8GD58OCNHjtTQhogBGzZsYOXKlTg5OTF//nzTOSIiN0WDUyIiIiJlsGXLFl544QWsVisAffv2Zfbs2bi7u//m95auWuXk5KQVq0QqyE8//cT06dPZt28fLVu2ZOnSpTg7O5vOEhGRWurw4cO88MIL9m0sHBwcePDBB3n88cdvaPVDDeGLSG118uRJ7r33XqBkhb8777yTkSNHamsgkVrkwoULrFq1itWrV3P+/Hn7cYvFQq9evbjnnnvo168fjo6OBitFRESkOqozY8aMGaYjrseHH35IcXExvXv3pkuXLqZzREREpJZq27Ytt912Gzt37iQjI4NTp06xadMmQkND8fLy+q/fFxQUZH8qrri4mIKCAnr27FlZ2SK1wubNm3nyySdJSUkBoEmTJvTr14/69esbLhMRkdrKx8eHe+65B1dXV/bu3UthYSF79+4lKioKf39/mjRpct0/q3QI//3338fb2xs/P7+KyhYRMSouLg53d3dcXFzsx7y8vCgqKuLee+9l1qxZ9OnTB29vb4OVIlLZ3NzcCAwMJDIyks6dO5Obm0tKSgrFxcWkpKSwadMmvvzySzIyMmjZsqXuBYiIiMh104pTIiIiIjcgNzeX5557jtjYWKBk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Wrvh5FwyhnTmRK7hmuvnaDpARKQ6+fTTT00n1Chp5/MBcPN0sm99IyIiIlJVOdRxoElLN84mZ5N2Ps90jlSAtAv//v+1eTs3gyUiIiIiv635LfU5kpRBUYGNrPQC6jfQ/bWa5tK/fu9o0d7dcImIiIjIb7M4WGjaxo3Thy9Xq/unWnFKRESMycoseZrf3VM3dURERKR6qO9V8vxRdmah4RKpCKXXp6BrVBEREan63Dz+/Wx89i+uY6TmyPrX7x31dG0qIiIi1YS7Z+n90+pzfarBKRERMcaaXQSAs2sdwyUiIiIi16duvZJf/HOyigyXSEUovT4FcK6nRbpFRESkaqvn/u9hmpxsXZ/WRNacYgBc6+n+qYiIyP9n787Doqr+P4C/URQGFwbFBdlBFMXEfd9x18wtK5fU0qTUXHL7luWeS2mWmZpL5ZZbpua+b6louIUKoqAoYgiCKIsywO8PfozcubMBs13m/XqenriHO3c+cmfOvefczzmHpKFMudx71HQJ3Z8ycYqIiMwmJyf3/yV4NSIiIiKJKFHSBgCQk51j5kjIGPLuT2Fj1jCIiIiI9GKTr08tWzrPpUhf+ZscNrxBJSIiIon4/9uW7GzzhlEQHD5JRFQAt27dQmpqKipVqgRPT09zh0NERERERERERERERERERESFxDk+iIgKYO7cuQgODsbGjRvNHQoREREREREREREREREREREVAROniIiIiIiIiIiIiIiIiIiIiIjI6jBxioiIiIiIiIiIiIiIiIiIiIiIrA4Tp4iIiIiIiIiIiIiIiIiIiIiIyOrYmjsAIiIp6du3LxISElC7dm1zh0JERERERERERERERERERERFwMQpIqIC6Nevn7lDICIiIiIiIiIiIiIiIiIiIgPgUn1ERERERERERERERERERERERGR1mDhFRERERERERERERERERERERERWh4lTRERERERERERERERERERERERkdWzNHQARkZTMnTsXMTExaNOmDQYPHmzucIiIiIiIiIiIiIiIiIiIiKiQmDhFRFQAt27dQkREBDw9Pc0dChERERERERERERERERERERUBl+ojIiIiIiIiIiIiIiIiIiIiIiKrw8QpIiIiIiIiIiIiIiIiIiIiIiKyOkycIiIiIiIiIiIiIiIiIiIiIiIiq2Nr7gCIiKRk+vTpSE1NRaVKlcwdChERERERERERERERERERERUBE6eIiAqgVq1a5g6BiIiIiIiIiIiIiIiIiIiIDIBL9RERERERERERERERERERERERkdVh4hQREREREREREREREREREREREVkdJk4REREREREREREREREREREREZHVsTV3AEREUjJ37lzExMSgTZs2GDx4sLnDISIiIiIiIiIiIiIiIiIiokJi4hQRUQHcunULERER8PT0NHcoREREREREREREREREREREVARcqo+IiIiIiIiIiIiIiIiIiIiIiKwOE6eIiIiIiIiIiIiIiIiIiIiIiMjqMHGKiIiIiIiIiIiIiIiIiIiIiIisjq25AyAikpJNmzaZOwQiIiIiIiIiIiIiIiIiIiIyAM44RUREREREREREREREREREREREVoeJU0REREREREREREREREREREREZHWYOEVERERERERERERERERERERERFbH1twBEBFJya1bt5CamopKlSrB09PT3OEQERERERERERERERERERFRIXHGKSKiApg7dy6Cg4OxceNGc4dCRERERERERERERERERERERcDEKSIiIiIiIiIiIiIiIiIiIiIisjpMnCIiIiIiIiIiIiIiIiIiIiIiIqvDxCkiIiIiIiIiIiIiIiIiIiIiIrI6tuYOgIhISvr27YuEhATUrl3b3KEQERERERERERERERERERFRETBxioioAPr162fuEIiIiIiIiIiIiIiIiIiIiMgAmDhFRERkZWbOnISUlGQAQMmStpgzZyns7e3NHBXl2bRpDUJDLyi3g4M/Q40atcwYEVHxEBJyFlu3/qrc7tz5TXTt+pYZIyoahUKBly8zkJGRAYUiEwqFAtnZWShZ0hYVK1aCnZ2duUPUKisrC6GhF1Ctmjvc3DzMHQ4RmVlxq6OLG54fIuMpTu3znJwcvHz5Ei9fZiAz8xUyMzOhUGQiOzsbMpkDKlashJIlS5o7TGRlZeHVq1d4+TIDr169hEKhQFaWAjk5OShfXg653MncIRKRmcXHP8aCBdOV297efhg7dqoZIyJVxen6SWRJituzifz3fJmZmcjKykJWlgIymQOcnCrC1tayU2UePXqIhIR4PH2agOzsLDg6OkEurwC53AmOjk4WH7/U8K9JRERkZa5evYT09DTldlaWwozRkKp79+7ixo1ryu3k5KdmjIao+Hjy5LHguxUQEGjGaArv+PEDWLjwK537yeVOcHX1QIcOXdGxY0+L60C8fDkEX345HoGBjbBo0Qpzh0NEZlZc6ujiiueHyHiKS/t82LDeiIuL1bmfh4c3/PxqoU+f9+Dn52+CyF579Oghhg/vo3M/mcwB7u5eqFu3Afr2HYiKFSuZIDoisiSpqS8E9z6vXr00YzSkTnG5fhJZmuLybOKHHxZg374/dO7n7FwZvr410KNHPzRp0hI2NjYmiE67589TsGfPNhw7dgCxsTEa95PJHNClSy+0b98FNWsGWETsUlfC3AEQEREREVmKzMxM5OTkmDsMIo0UCv06A5OTk3DjxjUsW7YQQ4f2wrFj+40cWcHs3/8nAODatX/w339xZo6GiIjIcuXk5CAzM9PcYRBplf/htTYxMdE4dmw/xowZgpkzJ+Hp00QjR/aavu289PQ03L59Ezt2bMTAgd2xZs0Pet+DExERWYNXr16ZOwQirfRNeE1IiEdIyFl89dUEjB37PsLDw4wcmXanTx/FkCFvYv36VVqTpoDce9Zdu7Zg3LjhiIi4YaIIizcmThERFcDcuXPx0UcfYePGjeYOhYiIDCg6+g5Wr/4eb7/dERcunDZ3OEQGlZychEWLZgim2janxMQnOHfupHL7xImDZoyGiIjIMiUmJmDHjo348MP++OWX5eYOh8jgzp8/hfnzv7D4pKTt2zdg06bV5g6DiIjIrLKysnD5cggWLPgSb77ZEs+eJZs7JCKDiowMx7Rpo/HkyX9mef/ff1+HefP+p/eAhDwymQN8fWsaKSrrwqX6iIgK4NatW4iIiICnp6e5QyEiIgP5+eel+OOPTcrt7OxsM0ZDVDByuRMGDBgKe3t7lCpVGunpaYiPf4yTJw8jISFesO+cOVOxdu0Osy83cuTIXsH2wYO78c47wzilNBER0f87d+4kZs2arNzm/SlJTVBQd/j7B6B0aTsAwNOnCbh79zbOnj0u2O/69VCsX78SH3wwxhxhYujQYJQrVx52dvbIzHyFxMQnCA0NEc02sHnzOtSuHYjGjVuYJU4iIiJzGz16MKKj7yi3eX9KUhIQEIjWrYNgZ2cPW1tbpKQk49GjWNFyfunpaZg7dxqWLl1n0n7KHTs24NdfV6j9nYuLKxo0aIZq1dyQkpKMp08TcedOuPL72KvX2yhVqpTJYi3OmDhFRERERFYtJeWZuUMgKjRXVw/06zdIVD58+Gj8/vs6bNz4enR8enoarly5iI4de5gyRAGFQoG//tohKIuLi8XNm9cREBBopqiIiIgsy4sXz80dAlGRdOrUA/XrNxGVP3wYg6lTPxYk+B86tMdsiVN9+w6Cvb29oOz994OVS7bkd+bMMSZOERGR1UpKMt3yukSGVr9+Y/Tp856ofPjwT/DNNzMQEnJWWRYeHoa4uFhUq+ZmktjCw8OwevUPovIGDZpi0qQZGgfA3rr1Lw4e3I0uXd4ydohWg0v1ERERERERFTO2trYYPHgk6tSpJyi/e/e2mSLKdeXKRdFMWABw/DiX6yMiIiIq7tzcPDB58kxBWXJyksUt99O0aSsMHjxSUHbr1r9mioaIiIiIjKFcufKYPHmWqPzevTtq9ja8ly9fYtGiGaLyNm06YtasJVpXDahV6w1MmDAdrq7uxgzRqjBxioiIiIiIqBiysbERjfS/cyfCTNHk2r//T7Xlx47tR0ZGhomjISIiIiJTq1Wrrqjs/v0oM0SiXd26DQTbMTHRyMzMNFM0RERERGQM5cqVFw08zb8spTGdOXMUsbExgrI2bTpi2rS5KF26tElioNe4VB8RUQFs2rTJ3CGQiTx/noI//9wMAKhQwRk9e/ZXll+79g8iIm7g5s3rePjwPjw9feHrWwN16zZA8+Zt9X6PjIwMXLv2D+7ejUBkZDhu374JB4cyqFkzAF5evvDx8UNgYCOULFlS72O+evUKISFncPbscdy/H4WkpERUqlQFLi5u8PWtgR49+hXsD/H/oqIicePGVdy5E4GIiBt4/jwF3t7V4eHhDXd3L9Sr1xguLq6FOnZhSPX8AEBY2FWcOHEId+6E4/HjWMhkDvDw8IGHhxe6dOlVoGPlSUiIx5UrFxEVFYmIiBuIjY2Bm5snvLyqw93dE/7+deDvX6dQxzYUQ8S4Y8cGpKWlAgDeeWc47OzsoFAocP16KCIibuDWrX8REXEDlSu7wNe3Jvz8aqJTpzc1NjI2b14LhSITYWFXBOWHDv2Fu3eFySVOThXx5ptvC8qio+/gzJmjyu2AgHpo2LAZMjIycPLkIZw7dxIPH8YgNfU5nJwqwt3dC+7uXgBylK/p0aM/KlZ01vn3e/LkPxw48DrhpFw5R7XTCxvC2bPHERWVOytR+/Zd/z9mICLiBsLDw3DrVhjCw/9FqVKl4etbE97evujYsade/4489+9H4datf3H37m2Eh4chPj4Ovr414etbA15evggIqIeqVasVKO6HD2Nw8uQhXLsWikePHgDIXcbO3d0LLVu2K9Cx8qSnpyM09Dyiom7j9u1biIy8hUqVqsDDwweent7w8qqORo2aF7geMKeyZcuZ7b0TEuJx7txJtb9LT0/DxYtn0aZNRxNHRSQthr4WqsrJyUFY2FXcvRuBO3cicPPmdWRnZ8HXtyZ8fPzg5eWLwMBGBa5LjFFHW+L9D6+hr0nhGmqIGA19zk+cOIQHD6Jx61aYoDw09ALWr18pKLOxscHbbw8VLDOWmvoCf/yxUbmd11bKzs5GaOgFHD26T9lOLFOmHNzcPOHvHwCF4nUySOPGLVGr1hs6/37Z2dn4/fd1yMpSKMv69x8CB4cyOl9bUJGR4Th/Pvceolatusrl0h49eoiwsCuIiLiJGzeu4vnzFPj51YKPT3U0b94Ofn7+er9HYmLC/7d5wxEZGY6oqNtwdfWAr29NeHn5oEaNgAIdDzBO+zwnJwdXrlxEZOQt3LkTgcjIWyhRoiS8vavD09Mbbm6eaNq0NcqUKVvgY5tKTk6OqEwmczBDJAUnpft+IlOQav387Fkyzpw5iosX/1b227i6eqBaNXfUrdsA3t5+BToeYJn1s1TPj7X0bxsjRkP3mScmJmDfvh0AcmeIzO/339ehbFnh59nf/w00adJSUHbhwmncvn1TuZ13z5yYmICDB3fh6tV/lG2QChWc4ebmIfg3urt7o337Llr/bnmOHt2nPBYAtG7dEd7e1fV6bUFJtW1urc8mCspU/ae7dm0RlQ0b9gnvOc2EiVNERERqJCY+waZNa5Xb9es3RalSpTBlSjDi4mIF+yYn/4Nr1/7Bzp2bERTUHaNHT9bZCI6OvoM5c6aKssmB3FGMeerWbYgpU2ahUqUqesU8e/YUhIcLO9mTk5MQGRmO06ePYsuWX5GenqbzWHkyMjLw228rsHPnZtHvEhLicenSOeX2Bx+MRt++g1CqVCm9j19YUjw/r169wk8/fStIfsmNLwlxcbEICTmD7ds36DxOfjk5OTh0aA+++26u6HfJyUkIC7uq3O7UqSdGjPgUcrlTgd6jqAwZ48aNa5Sf32rV3NG6dUfMm/c/hIScER339u2bOHAAOHBgF6ZNmwc3Nw/R8X77baWoDABCQs6Ijunq6iFKnIqMvCX4HPbu/S4qV66KL78cr+ZzmISMjHQkJyfh+vVQZbmDQ1n07z9YbRz5nTx5SPBeTZu2Mlri1KlTR3D6dG5CWELCE0yc+CW2bPkFv/zyk2jfmJhonDgB/P77L/jii/nKTjhNFAoFfv99HTZuXC36XWjoBYSGXlBujx//Bbp1661XzPv27cQPP8wXlSckxOPatX+wd+8OvY6T340b1/DNNzPUnsvIyHDltr9/HYwb9zl8fAresWoKqteEGjVqmSkS4MiRvYLtTp16CsqOHt3HxCkiHQx9LcwvJeUZliyZg/PnT4l+FxcXi7NnjwMAnJ0r4/PPv0ZAQKBeMRu6jrbk+x9eQ3NJ4RpqqBgNfc6PHdsvaGPlf23+e8E83bv3FSROJScnCfZzdfVA+/ZdsXDhV2rridyHGh7444/Xg8Tu3InA7Nnfqf335hcRcQPr169SbstkDnjnneE6X1cYt2/fUP67nJ0r47ffduP69VD8739jRPuSKSehAAAgAElEQVQmJMTj/PlT2LRpLUaO/BR9+w5CiRLaF104e/Y4vv12lqitnJychBs3rim333rrHXzwwRjB31wTY7TP4+MfY+nSeYLve57Y2BicPZv7s1zuhHHjPkeLFoVLfDS26OhIUZmnp48ZItEu/0NeAAgMbKTzs0RkbaRYP9+4cQ2zZ08WJYHkHVO13aoPS62fpXh+rKl/Oz9DxWjoPvMnTx6rvQcFgN27t4rKevUaIEqcOnv2hOB75eNTA7GxDzBjxkS1/1Ynp4qC95TJHNC8eVudn5+MjAx8841wOeAmTVppfU1RSK1tbq3PJvSRkZGBu3dvC8p8fWsa/X2jo+8I2p5A7mxTXHrPfHinT0REpIflyxdhwoQPRQ0MVceO7cf8+V9o3efAgV0IDn5PbVKOquvXQzFy5AC1N8n5hYeH4ZNPBokalaoK0qiMjAzHJ58MUttgU2fduuX45JNB+O+/OL3fw1As/fwkJiZg2rRPRA2Tonj2LBkzZkxU2zBR58iRvRg2rDcuXw4xWAy6GDPGX375CTNnfiZqjKqKjAzHmDFDkJam/2e/sOLjH2Ps2KEaP4d9+ryHHj36Csr27/9T7YhrVceOHRBsd+jQrfCBFsChQ3vw7bez1D78yy89PQ3Tp4/DrVv/atwnISEeU6d+rPaBrzpLl87DnDlT8eLFc437ZGZmYtmyhWof+BZWVlYW1q37ERMnjtBZpwC59e/HHw/Etm2/GSwGQzl9+qigc00mc0DXrvo9SDc0hUKBvXv/EJSNGjVBMLtASMhZJCY+MXVoRJJlyGvhjRvXMHLk2zrvaYDc+nzixBHYuHG11muYMepoKdz/5OE11DKvocaM0ZDn3JBmzZqssZ5o0aIdevd+V1AWEnIWCQnxOo975swxwXZQUHfY2dkVPlA9JSTEY8mSOWof+qpavfoH7Nypeebwly9fYvnybzBnzlS92sq7d2/F2LHvCwbTqGOM9vmJE4fw0UfvqH0oryo5OQmzZk3GrFmToVAodO5vSi9fvsT3338tKBs8eKTFLUUSG/sAa9YsE5S9955xEgOJigsp1M8HDuzCxIkjRElTRSGV+lkK58da+7eNGaMh+8wN5Z9/zqtNmsozePBIwYxTeTOU63L16kXBtouLK2rWDCh8oAVg6W1za302oa+1a5cJ6pU6deqhdm3x0tKGpq492K/fIKO/L2nGGaeIiIj0oNr4DQgIhIeHNx48uCfInAeAS5fOITw8TO30oxcv/o2lS+eJyvNuxjIyMhAeHiYY2ZienoaZMydhw4a/ULlyVdFrw8PDMG6c+g68gIBAuLt74d69uzobnfmlpr7AzJmfiTrMnZ0ro0aN2rC3lyEhIV4wcw6QOxL6+++/xrx5P8DGxkbv9ysqSz4/qakv8OmnQ9U+fPDw8EbNmgFITn6qdmS5NkuXzkNIiLDRKJM5oHbtupDLK+DFi+eIiAgTdAalp6dh9uwp+O233XB0lBfo/QrDmDEmJMQL/qaurh544436SEpKFL1nenoa9u/fKZrZqX37rnj5MgNXrlwUNI68vavDxcVNsK8+S96oLkHWtGkrODlVxIULp5GcnISgoO6wtS0FmcxB+X6xsTEIDw/TuhzKgwf3ROuqN23aWmc8hpJ/VJhM5oAWLdohM/MVrl8PVTtNt7oZCrKzszFr1mTRqG253AkNGzZH1aouiI6+KzoXZ88eR4UKzhg9erLa2L7++nO1S785O1dWNnDVxanNvn1/YOtW8cPRgIBA5exykZHhouTKtWt/RO3agahTp57e72UIWVlZyM7OVo4ETU19gUePHuLAgV3Yt0+YqDR58kw4OVUwaXx5Ll8OEXxng4K6o1y58mjbthMOHtytLD9x4pBes7ARkWGuhUBuJ+rEiSNE5R4e3qhXrzHs7e0REXET1679I/j9hg0/w8PDW+NMccaoo6Vw/5Mfr6G5LOkaauwYi3rO33ijPkqVKo3796MEMcjlTqhdWzyS3N5epjWe2NgYwXECAgLh5VUdN29eQ3T0Hbz11gBUrlwVTZu2Eny3jh8/gAEDhmo8blZWFo4d2y8o03cJFUNQfe+mTVujfHlHRETcED2U3bhxDbp37wcHB/FScJs2rcaePdsEZTKZA+rWbYjq1WsgPv4/hIVdETxsjImJxpw5U7FixWbY2oq71o3RPo+MDMeCBdNF5R4e3vD1rYmcnGw8evRQVE+cO3cSO3ZswLvvmj7hJ39CgEKhQFJSIv799zI2blwj+Ez6+9fR+lkztuzsLOXPGRkZSEx8gjNncmczya9fv0GoX7+JqcMjkhxLrp937dqCFSsWi8plMgfUqVMPcnkF3Lx5Xa+BlHmkVj9b8vmx1v5tY8dY1D5zR0cn5Qxpqm2HBg2aiu5Fq1fXPUvPgQO7lD/L5U6oX78pAODEiYMICAhEjRq10LNnf6xe/b1yv4MHd+ucofzkySOC7a5d3zLZ8wlLbptb87OJ/BQKBXJycmBjY4OcnBw8e5aM6OhIbNu2XpDMJZM5YOLEr0wyy+jNm9cF23K5k+SWNCxumDhFRERUAP36DcK77w5H+fKOyrKrVy9h5sxJggcVf/yxCV98IRy9rVAosHLlEkGZTOaAuXO/F3XAnzhxSNTwXr9+FSZNmiEoy87OxvLl34ji7NVrAEaM+FQw4jc29gGmTAnWa/Twr7+uEO03ZswUdO/eV7C+8rNnyVixYjFOnDioLAsNvYAjR/aic+c3db6PoVna+QGArVt/Ff0t69Sph88//xoVK1ZSlqWnp2POnCl6jVA7c+aYqLHaq9cADBv2sWBKZYVCge3b1+PXX1fke580rF79vdpYDclUMQYGNsL48V+gWrXXiU5xcbGYN2+aYKrbjRtXo3fvdwWdM9OmzQEAfPvtLMFDriFDPkLLlu0L8K8VqlGjNmbOXIyKFZ0B5HbA37t3R7k2erduvQWjyI4c2ac1cUp1NH+XLr0gk2l/SGZocrkTvvxyEWrXrqtsOKanp2PZsgWCjreQkLOIiooULWdz8uRhUUdhUFB3jB//hWB0eUrKM8yZM1XQIbRnzzb06vU23N29BK+/ePFv0WdMLnfCzJmLBX/PnJwcrF+/Eps3r9P574yLixXVqYGBjTBu3OeiaZLPnTuJRYtmCOqWb7+diZUrt+g1/byhhIeHoVu3plr3kckcMHPmt6hXr7GJohLbv184qq1du84AgJYt2wsSpw4d2sPEKaICKsq1EMjtZFU1evRk9Oo1QFAWFRWJ//1vtKDjc926H9G8eVvRMhHGqKOlcP+jDq+hlnMNNVWMRTnn77wzDABw+PBfWLx4trK8ffuuCA7WPDJfF5nMAfPn/6g8vzk5OQgLu6ps53Tt+pbgwcf+/X/i7bff1/iw6ebN64K6IH/CnSlNmjQDbdp0UrZ7c3JysHv3VsGD8fT0NBw7tk+07PajRw9FSXTe3tUxb94PgnaaQqHAunU/CpYzjImJxvHjB0RtXmO0zxUKBRYvniUoc3Fxxbhxn4sSeaKj72Dx4lmCuv+XX35C8+ZtTb4U3vTp43TuExTUHZ9++j+TzFSmSZ8+upfLGjlyHO9PiQrI0urnxMQEtUlTEyZMR5cuvQTXuwsXzmidDSf/+0uxfgYs7/xYc/+2qWIsbJ+5i4srZszIPTfvvNNZcP83ZcrsIg3O69r1LYwZM1XZlhw5cpwylvbtuwoSp0JDLyA+/rHaQctA7r12/r8NALRp06nQsRWWJbbNrfXZhKotW34VJcar8vPzx5dfLkKVKi4mienBg3uCbVdX7Us4kvFxqT4iogIYNGgQGjVqhHnzxDPSUPH3ySeT8NFH4wUNDACoV6+xaMp21WxxADhw4E/RqKWlS9epHbXcvn0XfPnlQkHZkSN7ERUVKSg7efKQ6EHKZ599hdGjJ4s6H11d3fHdd+rXJM8vLOyqaNTQDz/8ijfffFvQYAMAR0c5pk2bg27d+gjK164VTmlvCpZ4fmJjH4g6E7p164OFC1cIGiYAIJPJMGPGt/Dz89fwL8yVkvJM8BAFAIKDJ6pdh97W1hbvvfcBpk6dI4r14UP9R9AVlKli7NChG+bO/V7QGAVyG/UffzxJUJaenoanTxMK+k8pMBcXV3zzzSpl0hQA2NvbC0aLdOrUU/Caffv+QHp6usZjHj0qHBHYoUNXA0WrH2/v6li+fCPq1KknGG0jk8kwduw0wVJrAHDv3l3BdkZGBlatEiYlBgV1x+TJM0VLcpQv74ivv14m+h6sX79KsK0u0bFGjdpYuXKLKAnNxsYGQ4d+jLfeekfrvzMnJwfLli0QlLVo0Q4LF/6kdm35Fi3aYfnyjYKyuLhYnDp1WOv7mMO77w4TPTQ3pSdP/hNMMS6TOSg7kuvWbSjYNyYmGrdv3zJpfERSVtRr4d27t0XT9Y8f/4WoYxYAfHz88OOPGwRlcXGxOHhwl6DMGHW0FO5/1OE11HKuoaaKsajn3Fi+//4Xwfm1sbHBG2/UVz4obty4pSC2uLhY3LhxTePxVBP7u3Z9yySjsvPIZA5YvHg1OnXqKWj32tjYoHfvd9GggTCp/O7dSNVD4Jdflgu2XV09sHjxalE7zdbWFh99NF60pOHatcuQkZEhKDNG+3z79vWC2WednStj2bL1amc/8vaujiVL1sLDw1tQrm6WNXPz9q6OTp16iB7uWZpOnXqiYcNm5g6DSDIstX7esEF4PySTOWDZsvVqZ6Rp1qw1pk8X3jOoI8X62VLPj7X2b5sqxqL2mRtDUFB3TJgwXXAfULGiM9zcPJQ/t2rVQfCa48cPaDzeP/8IZ0sKCAgUtZGNzRLb5tb6bKKw+vYdiPLlTTcT1rNnwhmJq1Z11bAnmQoTp4iIiPTg5+ev9YFBUFB3wXZCQjyysrIEZRs3rhZsd+rUE15evhqP2bx5W8F63gBw9Og+5c+5D1KESzu0adNR6yiTypWrijrrVf3220rB9gcfjNa5HviHH44RHDc5OalAy3oUlSWeHyB3pEd+crkTgoMnqp2SGgDs7OxES8Sp+uuv7YKRQA0bNhN1Qqhq374LAgMbCcpiYqK0vqYoTBXjJ59MEj00zBMQECg6P0+e/Kf1eIbw0Ufjdc5C4OPjJ2qEnj8vXioHyB1BpLpMyxtvNCh6oAUwfPhoODtXVvs7mUwm+n49efJYsH327DFRfTBo0AiNMxiUKlUKffsOFJSdPn0UKSnPlNv79+8UJTpOmDBd60g3Dw/tiUP//ntFMKpKLnfChAnTtU7r7erqjvffHyUoM9UD0IL45ZefMHBgd2zY8DOys7NN/v75Z3QDcuvXvM4xe3t7dOjQTfB71VGCRKRZUa+Fu3dvFWw7O1cWJfjmV6lSFXTr1ltQtm/fTsG2MepoKdz/qMNrqOVcQ00VY1HPuTH07TtQ52wWpUqVwptv9heUqbZt8igUChw+/JegLG8mSVPp2bOf1mUTu3TpJdiOj48TbD969BCnTx8VlL333nDRw578VOuc5OQkXL16UbltjPZ5RkaGYIQ+AHz++dcoV668xteULl0aY8dOE5RFRlpeUnp09B1MmzYaI0cOEI22tyRHjuxFcPB7mDlzElJTX5g7HCKLZ4n1c24ygjCZ4MMPx6BGjVoaj+nm5qnxd4B062dLPD/W3L9tihgN0WduDB98MFrnPqqfx4MHd2vs01L9XGpr0xqLJbbNrfXZRGEtXPgV3nuvq2DwpzGpfnerVjXNTFekmWQSp/JGLZlqPVIiIqKCUNc5npz8VPlzauoL0Y2Q6kMNVSVLlkTPnsLO6/yZ+HfvRoiOOXTox3rHrE5OTo6o0d6xYw+drytXrjzq1hUmc1hS56c5zo9CocDZs8cFvx8x4tMiLz9y506EYFuf9dptbGzQpElLQZkxH0yZKkZdx1QdyZeY+ETr/kUllzuhRQvdSz0AQI8e/QTbBw7sVrvf338LP0NduvQSjTozN9WGf3y8sOEfExMt2G7TpqPamR3ya9myg6gT7PHjR8qfL1w4I/hdp049RUsbFdS9e3cE223adBKNxlOnUaPmgu27d28XKY6CcnX1wPz5P2Lx4tVYsmQNZsz4BmPHTkXfvgNFf8ONG1dj9uwpUCgUJotPoVCIOn/athVOl96ypfB7c+DALrx69crosREVB0W9FuYfJQ/kzlCnqRM1j2rnbHT0HeTk5Ci3jVFHS+H+pzB4DTXdNdRSYtR1zo2he/c+uneC+AHTgQO7kJaWJtrv338vCx6W1KhR2+QzW+r6/qv+nR89eiDYfvjwvmBbLndC27bak79cXFzRtGkrleM+VP5sjPa5atyurh4ICAjU+TrVfWJiopGZmVmkWApq+PBPsGjRCixZsgYLFizHlCmzMGLEWFFssbExGDHibVy9esmk8eWZNWsxvvlmFZYuXYc5c5Zi4sQvMWTIR6I+hPPnT2Hs2KGIjzd+siORlFli/aw6E42Liyu6dhXezxaUVOtnSzw/1tq/bSkx6uozN4agoO4aBxrk16BBU8jlTsrtuLhYhIVdFe2XmvpClDilOluVKVha29yan02o065dZyxc+BOWLFmDb7/9GV98MR/BwRPRvr1wZYf09DTMnDkJ27evN2l8AODgoDkJlUxD+zfOApljhDQREZE+nJ0rC9aLfv48RTnlaf4GYR5v7+o6j6l6Q52/gao6Urxu3YbK6WwLKyEhXtAJDgDffTdXr9deuiTsiHj48D7eeKN+keIxJFOfn//+i1PdHe3addE7Xk2io4XTZG/evFY04lsd1cZ4TIzxEtssJUYnp4qC7efPn2nY0zB8fGrovW/r1kFYuvT1sq/Xr4fi0aOHgumcc3JycOyYcBpqQ3yGDE11hoqUlGTB9oMHwo61/MsWamJnZwd3dy/BVO2PH8cqR4TevStspGsbiaive/eEI52OHNmLuDhx3aDq+fMUwbbq9PLGJpc7iabTzzN48Ej8/vs6bN/+evru8+dP4ejRfeja9S2TxHf5coigE1Qud0Lt2nUF+zRoIFz+JD09DaGh59G8eVuTxEhUnGm7Fubk5IjqLF0jnAH1I/CfPk1ULlNrjDraUu4tDI3XUNNdQy0lRl3n3Bh0jRrP4+HhjYCAQMESfefOnRA9xDt1SvhgqnNn04/o18XR0UmwrfpAVvXc16xZR+MMAfl5efkiJORsvuPEKn82Rvv8/n3h5zY2NgbTp48r1LEeP441aYJbzZoBopkFAODtt9/HjRvX8PXXnwva5998MxO//rrL5Ev31avXRO0DxHffHY7Tp49g4cKvlGWxsTH49dcVmDJllilDJCpWzFE/q95P5Z8BubCkXD9rU1yun1Lo37akGLX1mRuDp6e37p2Qu8xbz579sHHjGmXZ0aP7RIlj+T9bQO5gE22zv5mLqdvm1vxsQh03Nw/Uq9dY7e+GDg3GsmULBDMUr1mzDM2atTFq/azabs//PSTzkFziFBGROdWqVQtlypSBp6f26XrJOjk5VdB4c6PasHR19dBrFkXVG+rY2BgoFArY2tqKRpOoJvEUhroRKqqNMX3lzRZpKUx9flRHYbm4uBa5YyYjI0PQuQDkjiRRHZGiD2OdH0uK0dSN5GrVtM8AkV/ZsuXQpUsvHDq0R1l2/PgBDB48UrkdGRku+Ft6e1cv8owQxlC2rPa/s2qHYqVKVfQ6rrNzZdFDXwB48eK5qPMuf8JZYanORJGenlao+s/Ozq7IsRhKmTJl8cEHY3Dv3l3Bv+WXX5ajQ4duenVwFtX+/X8Ktrt06SX6bjs4OKBFi3Y4d+71kpWHD+9l4hSRAWi7Fj59migqq1hR98hfdUtxxMfHoWJFZ6PU0ZZ0b2FovIYKGfMaaikx6jrnhubi4qpzpHp+3bv3ESROHTiwS5A49erVK5w8eUjwmlatgooeqIFpWzIIEM4UDABVqui3LIbqQ8T8D3uN0z6PFpUVtn1uY2M59V9AQCA+//xrTJw4QlmWkBCPI0f26j1DmrHZ2tqiQ4duSEiIx9q1r5e5OXZsPwYMeB9eXr5mjI5IusxRP6veA7i6Fi0pByi+9XPxuX5afv+2JcWorc/cGKpUqab3vkFBPQSJU4cO7cGoURMEn9WTJw8LXtOhg3AGIUth6ra5tT6bKAwXF1dMnToHH300QNBe3rRpLaZNm2O093V19RC021Vn+SPTs5xPpQ55Dy/zT/9ORGRq06dPx88//4zBgwebOxSSGNWRyroaonkcHeWismfPcm/eVB+kqE6nXBiGnH5Y38azJTDG+TFGw191FFZRGOLzoo4lxWjqJZ4L8lAKEM/wcODALmRlZSm3z5xRHc1f9BkhzOHp0wTBtr7fL9XExCdPcjtxVBv+gLgTrjDyPyQsCkN0whpSiRIlMGjQCEFZcnKSQb+rmjx58h/Onz8lKNM0jX/r1sKHrufOnRQ93CeigtN2LVQ3E6PqbDiaqF6jnzzJXW7MGHW0Jd1bmBqvoYYjhRiNoUSJgi3x3KJFe8F2WNhVxMa+7sC/evWSYHaEpk1b611vmJKudoDqTF8ymUyv45YvL2z/5V8G0xjt8+howy1hos+SOKYUEBCIxo1bCMquXLlopmg069t3kKgsLOyKGSIhKh5MXT9nZWUhMjJc8DvWz5oVl+unFPq3pRCjsRSk/7RaNTfRLOt//31C+XNKyjOEhLxeilwmc0DDhsKlti2Fqdvm1vpsorAcHeXo31/43PfChdNGfc9q1YR/A9XkVDI9yc04xcQpIiKSopIlhR3W+mbUp6WlisrKlCkHIHfEeH45OUVfzlY1TpnMAV99tajAx7GxsYG//xtFjsdUjHF+0tJeCMoNsdywurhmzPgG9vb6dVTk5+lpnBGyUojRUgQEBMLV1UPZ6ExIiMf166GoX78JsrOzRdMct23byRxhFpmdnZ1o+nF9qHYalCuX990Sf++ys7NF32NdVDssZDIHQZz9+w9Gw4bNVF+mkzGnMy8sddNKx8c/1mtJ0qJQ/Qy7unrAx8dPbZuuUSNxx9bp00fQq9cAo8VHZO3U1ZsvX77U6wGIamJj2bLGq6Ot+d6C11DDkUKMlsDBwQE9e/bH3r07lGXHj+/HkCGjAACnTwsT+zt27G7S+AylZElblW39vgOqbTy5/PWSRsZon6s+WGzQoCnefntIgY9TurSd2uXozM3bu7pgdg19ls80NVtbW/j5+QsSL/I/8CciwzJ0/ZyZmSnatzD9c6qzQhX3+lkTqVw/pdC/LYUYLUWXLr1w+XKIcvvgwd3KwaWqiS2dOvU0yezqhmactrl1PpsoCg8PH8F2enoanj9PMdqqFlWrChOnYmNj8OxZstrB+mQakkmcMvWMAURERIakmkGft1yGLomJTwTbcrmTskFdrZq7YOT048fidasLSt3DddVRHcWRMc6P6o2vuhH+BaVuKbiqVV0tavk2KcRoKWxsbNC9ex+sXv29suzw4b2oX78JIiJuCBq+DRs2k+yDOjc3T8G/RXX2DE3i4x8Ltl1ccpcSUjeld1JSYoFHaaom7/j61kBY2FXldtWq1YpN/aeuA+PJk8dq9jQchUKBPXu2CcpiY2PQtWsTvY9x+PBfTJwiMqLKlcUjk5OSEiGTaV+6LT09XZTMk3ffY4w62prvLXgNNRwpxGgpOnfuKUic2rv3D7z33odQKBQ4cmSvYN8mTVqZOjyDUF2iMm9WNl1Ul7HJXz8Zo33u6Sl8eFO2bLli9blVnUXPUkfZlyvnKNj+77+in1siUs/Q9bO9vT3kcifB/dR//8WhVq2CJZqoJvMU9/pZE6lcP6XQvy2FGC1Fs2ZtBIMgbty4hgcP7sHd3Uu0TF+7dupnObd0xmibW+uziaJQN8NzQkK80RKn1LXPd+/egvffDzbK+5FuXKqPiIjIBFRvgpKTk6BQKHS+TjWBJ38mvmpj1RBrILu5CRtt6elpSEzU7wGNlBnj/OQ9oMoTFxer1zG1sbOzEy0PYorltgpCCjHq8urVK5O9V/v2XQXbx48fwPPnKcVmND+Q+9A3P9UOM3WysrLUTNee+52qXLmqaH9DjPr29a0p2H7woOgdCpZC9QE6ADg46LfcU2GFhl4o8lJ7kZHhiI6+Y6CIiEiVnZ2dKGFGn8Sc//4T17l5dbMx6ujicG9RWLyGGo4UYtTGlPenNWsGCJbySE5OwrVr/+Dy5QuC/bp16y2pWTLyUx04o+5eSR3VxB5X1/wPfg3fPld9MH/37u0iH9OSWGqilKqoqOL1dyeyZMaon1VnNdF3sKQ2xb1+1kQq108p9G9LIUZdFArxjG7GYG9vj27degvKjh8/gKdPExEa+vr+1MXFFbVr1zVJTIZmjLa5tT6bKAp1s5+qS6YylBo1akMmcxCUbdq0Fs+eJWt4BRmbZBKniIgswc6dO7Fq1SqcPm3ctW2p+FE3ivvixbM6X3fgwC7Bdv7RKKoZ/pcvhxR5ffSKFZ1FN2uHD+8p0jGlwBjnR9063cePHyhEdEJ+fv6C7f37/7S4xHIpxKhNcvJTk71XxYrOaNWqg6Ds1KnDos9Ks2ZtTBaToal2gp06dUTna/7557yaEVO5CY6lSpUSfb8OHtxdxCjFHZ+HD/+FlJRnGvaWloiIG6Ky6tVrqtnTcFTrx8IyRL1JRJqp1n1//31C52uOHt0n2HZxcVUuV2KsOlrq9xaFxWuo4UghRm30nW3MUN58s79g+8iRfTh9+pigTHUAgJSojsC/du0fnQ8rk5KeigY35H8gZYz2ef4ENiD3wVT+mdOkTKFQ4ObN64IyNzcPDXubT3z8Y9FggLw6lYgMzxj1s+rMPgcP7la7hF9BFOf6WRupXD+l0L8thRh1KepguYLo1KmnYHv//j/x99/HRftIefUqQ7fNrfnZRGHduhUm2JbJHNQOPjIUmUyGYcM+FpXv2LFB72NkZ2cjIyPDkGFZNckkTnHGKSKyBDt37sTq1auZOEUFZmtri8aNWwjKdu3aqoXzZFoAACAASURBVPU1//57BZGR4YKywMCGyp/VTYG6fv2qIkSZSzXOX39dIZmRoIVljPNToYIz5HInwe/Xrl1W5BvZN96oL9i+fDnE4hILpBBjfnlrv+cx9QwEnTu/KdhetmyhoPOhU6eecHAoY9KYDCkwsJFgOzr6Dv7994rW1/zxxybBtqurBypUcFZu+/sLp9U/cmQvoqIiixSn6lT96elpWLt2WZGOaQmSkp5i5crFonLVEWKGFB//GOfPnxKUDRv2MVas2Kzzv65d3xK87vDhv4o8Io6INGvQQLh85s6dm5GWlqpx/9TUF9i+XdiJ17Bhc8G2Mepoqd1bGAqvoYYjhRjzUx3ZfO/eHZP2ibZtK1zm5MSJgzhx4qByWy53Qp069UwWj6F5e/uJHlYeOqQ9ifDAgT9FZfk/V8Zon1er5i5qUy5ZMsekM5AZy9atv4pmKGjbtpOZolEvOzsb3303V1TeokU7M0RDZB2MUT+rDhqKi4vFwYNFG+hTnOtnbaRy/QSk0b8thRjzK19eLtg2xNJv+vLx8RMk7CQnJ+HHHxcJ9mnXrovJ4jEGQ7fNrfnZRGFcuxaKffv+EJTVrdtQw96G07Vrb9F52rZtPX75ZTmys7M1vCpXauoLzJ49BVOnfsy+UwNh4hQRUQFIOWOdzG/48NGC7WvX/sHOnZvV7vvwYQwWLJguKPPz8xfMTOPh4Y2gIOHyXadPH8XPPy/VeAMcGRkuGoGuauTIcaKyuXOn4t69uxpfExMTjZkzJyEkRPcsTZbK0OenRIkSomMmJydh9uzJGqeyTkl5hsjIW1rj7Nq1t2hkx7JlC3HhwhmNr0lJeYYVKxZjw4aftR7bUKQQY36qow/37fvDpFPiNmzYTNRAyq99e2k3/P3964hm1frhh/lqvwc5OTlYv34lrl37R1D+0UfjUaLE66bLwIEfiF47e/Zk3LhxTW0MCoVC54NmHx8/9Os3SFB28OBubNv2m8bGp0KhwO7dW/HVVxORlZWl9fimlpOTg4sX/8aXX44TjQLs1q03SpYsabT3PnJkr6ise/e+8PHx0/mf6ijC5OQkXLly0WixElm7nj3fFl2Dvv/+a7X3kmlpaZg//wtRuWqdbIw6Wmr3FobCa6jhSCHG/FSXaYyLi8XlyyEme39HRznatOmo8ffdu/cx6r2EsTk4OOCDD4RttW3b1ou+P3kuXDiD335bKSjr338wqlRxUW4bo31eqlQpjB8vrHdjY2OwePEsre2Vixf/xsSJI/Ra3tPUEhMT8NtvK9Q+FG/ZsoOaV5hHVFQk5s//QvS9c3aujJo1A8wUFVHxZ4z6uUOHbqKZ5n/8cREOHtyt8Xnjv/9e1hpncayf9SGV6ycgjf5tKcSYn2qS219/bdeZ2GFIqgPt8vP3ryNYAlKKDN02t+ZnEwWRkZGBfft2YsaMiaLftWtn/KR+e3t7vP9+sKh8y5ZfMX/+F0hLU1/XxcY+wPjxH+D8+VMIDw/D5s1rjB2qVbA1dwD6yuvkMWUlTESkikmcVBS+vjUQFNQdx47tV5atWvUdoqIiERTUDZ6evnj+/Blu3ryOVau+EzUAR44cJ3joAQBDhwYLjgfkjjI/d+4kevd+F+7uXqhcuSoePXqIixf/xt69O3TGWblyVYwf/wWWLp2nLIuOvoNRo95F//6D8cYbDeDq6o6MjAw8fHgfYWFXlce9d+8O6tVrDDs7uwL/fczNGOenY8ce+OOPTYiJiVaWhYZewJAhb2LIkI/g4+MHFxc3pKa+wNWrl7Bjx0adDX9bW1t89tkMBAe/pyxLT0/DjBkT0apVB7RuHQQPD2+ULFkSjx49QFRUJLZv36A8btu2nURTihuaFGLMT92SZePGDcOoURPg5uaJuLhYhIVdQUrKM1HHmCHY2tqiS5de2Lr1N9Hv5HIn0WwTUjRs2Mc4e/b1FNoxMdEYO/Z9fPjhWNSoURtyeQVERd3GkSP7RKOU6tZtiGbNWgvKPDy80avXAOzZs01ZFhcXi4kTR6Bbtz6oW7cB3Nw8YGNTArduXcf+/X8iOvqOzjjffz8Y586dRFxcrLJs7dofcfz4QfTp8x48PLxRrpwj4uPj8ODBPezevU05Uv7Ikb1aO3GMJSoqEqtXf4/y5R1RsqQtkpOf4smT/xAZGS4axQ8A3t7VERz8mdHiUSgUgvMCAE2btoajo1zDK4T8/etALncSJHsdO3ZANBKTiAzD3t4eH3wwBkuWzFGWnTx5GI8fP8I77wyFj08NlChRArdv38TWrb/h9u2bgtcPGfIRKlasJCgzRh0ttXsLQ+I11HCkEGMeFxc3yGQOgrbB55+PxdixUxEQUA+pqS9w48ZV3LhxHZMnz0S5cuUNHkOnTj1FS+vkUZ2RSoq6du2NrVt/Uz68Tk9Pw5QpH2P48E9Qr15jVKvmjkePHuCff86LHvLIZA54551homMao33evHlbdOjQTfD9PnnyMEJCzmLw4JGoXr0mKlWqiqSkRDx8eB/nzp1UPkxdt245pkyZVeC/jSHs3r0NYWFX4eBQBhkZ6UhMTEB8fBwuXTqndv9RoyaIlic1hbVrl8HJqQLs7OyRmvoc8fH/4dGjBxqTSadPXyBq9xORYRm6frazs8OoURMwb97/BOXffTcXp04dQZs2HeHm5glHRzkiI2/h1KmjCAnRnACQR6r1c1FJ5fophf5tKcSYn59fLZw8eVi5fePGNXz11QQMGDAUcrkT7t69jbCwq/D0zG1vGFqbNp2wbNlCtb/r3Lmn2nIpMUbb3FqfTagTEnIWCoUC5cqVR1ZWFp4+TUR8/GNcuXJR7b+5R49+6NChm0li69z5TezatUVwnoDcJNLTp48iICAQAQGBkMsrIDr6Dm7evC7q8920aS0aNmyOgIBAk8RcXEkmcSpvFJOljeQmIuvCxCkqqqFDgxEael7wQPjIkb1qZ+fIr0uXXmqTJ6pUccHw4Z/gl19+EpTHxcVixQrx0kz66tr1LZw/f0o0emXHjo3YsWOjxtfFxcVi794dotHcUmHo82Nra4sxY6ZgyhTxWtVFGWHh7V0dI0aMxZo1wuVFzp49Lniwps6aNcswe/aSQr+3vqQQY56aNQPQpk1HwYOhuLhYzJw5SbTvmDFTlWvFG1KHDt3UJk516tTTKO9nau7uXhg8eCQ2blytLEtOTsLixbO1vk4mc0BwsHjEDwAMHPghTp8+IppN6cCBP9VOBa8Pe3t7TJo0E599NlJQHh19R9Bxoc7KlUvQrl0X2NvbF+q9Cys9PU1rvZyfTOaAGTO+NWqMoaEXROekILOm2draok2bToIH+idOHMTo0ZON8lCYiPD/ieMHBCPFw8PDMGvWZK2v8/DwRt++6u/5jFFHS+newpB4DTUcKcSYp3Tp0hgxYqzo4ZC6h0UPH94XLUVoCA0aNBUlMwO5M+16efka/P1MrXTp0hg37nN8+eV4Qblq21qdTz6ZhPLlHUXlxmqfBwdPxOXLwnus9PQ0rF79vdbXHTu2H717v4MaNWoX+r0L6/z5U6KlmzXp0+c99O070MgRqaea8K/NF1/MN8p3jYiEjFE/t24dhIYNmyE09IKg/PLlkCLN6CjF+rmopHT9lEL/thRizNOjRz/8+efvghnTLl06J0qKbtiwmVESp8qXdxT13+Zp1SrI4O9nDoZum1vzswlVkZHhiIwM12vfgIBAjW1pYyhVqhQWLPgJkyePUjsI9saNaxqT+vPI5U6i5d6p4CQzPCIvcYprNBKROfXp0wcjR45E27ZtzR0KSVSVKi5YvXo7mjfX/zP06afTMGHCdI2/f/fd4Zg2ba4hwlOysbHBV199gw8/HFOg10l92npjnJ/AwEb48ccNcHFxNUSISm+//T5mzVqsdYk3dZo3b2PQOLSRQox5Ro2aoFecjx8/Msr7e3n5QiZzEJUXh9H8eYYM+QhffrlQ7b9TnTp16uHnn7fC17eG2t87OVXAqlVbDT4TUZ069bBq1ZYCd2AGBXW36CS33Ifuew1eF6nat2+nqKxp09Zq9tSsVav2ojJdHS9EVHi2trb4+utlGDx4hN6v6dmzP5YtWw8HB/V1urHqaCndWxgSr6GGI4UY83Tt2hsNGjTVuZ/qyGRDsbW1Rd26DUXlqsvqSlmTJi2xcuXvcHX10Gt/udwJixevRufOb2rcxxjtc0dHOVav3l7gv32dOvVEMw9YEn//Oli0aKVJH0wVRlBQd6xbt1Pr8pVEZFiGrp9tbGwwe/Z3GDDgfUOGWWzrZ12kcv2UQv+2FGLMI5PJMHHilzr3u3s3wmgx1KsnHrjcokU7vWc5t3TGaJtb87OJgnJ2rozPPvsKixatROnSpU363hUrOuPbb39Gq1YFX7q6ceMWWLHi92IxuMXcLLdnX0Ve5wQTp4jInHr37m3uEMhEbG1LCbZLltR9ySxdWjg1ruox8pQv74gZM77B3r07cPTofoSHh4n2kcudUKtWXQwdGgxv7+o637t9+y6oXr0m1q79EVevXlI7vWiLFu0watQEjBs3TDASqkSJkmqPaWtriwEDhqJ587Zaj+vh4Q0fHz80adISbdt2NskDBamdHz8/fyxfvhHr1i1HaOh5wfIg+fcJDv4MBw/uFsxwpe0mvVmzNlizZgfWr1+Fc+dOCkb85HF2rgxf35oICKiLzp17wcmpgs54DcmQMdrZ2Qk+g7qWSChVSniONZ3zvBjWrNmBH36Yr3FJErncCc+fP9N4vKJ+9mvVekMw0tHDw1u0ZrwplCpVWmVb899N3e9VX59fq1Yd4OtbE+vW/YibN6+r/Tz4+fmjVasO6N9/iM6/qVzuhNmzv8POnZtx9Og+tUsJyeVO+OCDMcjOzhZMf25np3nGCC8vX3z33Vrs2rUFhw7tUftAUiZzQI0ateHn549OnXqarHGq7XOcRy53goeHD1xdPeDm5oEOHbqhQoWKRo8tIyNDtKRB+/ZdNXbeaBIQUE+0PNHFi3+jWzfehxEZ61poa2uLIUNGoW7dhtiy5VfcuvWv2vu+OnXqoW/fgWjZUpzgqMpYdbQl3//wGmrZ11BjxGjMc25ra4s5c5Zi69ZfsX79KrX7yGQOyMhI13j8onb4+/rWEN0bm2NEv2rdpevvrNrG1baMjbd3dSxfvhEbNqzCpUvn1H4eXFxc0aBBMwwb9rHamTJUGaN9Xr68IyZNmoHWrYOwefNate1UAKhRozZ8fPwQFNQddes20Bmroei6R5XJHFCpUhV4eHjD1dUdderUR+PGLZQzu5uCrs8NkBunu7sX3N29UK2aG1q0aAcfHz8TREckTVKqn21tbfHhh2NRp059bNv2G8LCrqrdb8CA99G6dUeMHfs6yUomK6PxuJZcP0vp/ADW179tjBiN2WcO5M4mtWrVFixYMF3jct6596cZyplaxf2nuq/Hmnh6iu/Jg4JMs5yaKim1za3x2YQ+nzMXF1e4uXnCzc0T3t7V0a5dF5Muf6mqQoWK+PLLhbh06Rz++muHzmVjW7Roh379BqFOnXomirD4s8mRyHpTvXv3xsOHDzFkyBCMGzfO3OEQEZEBbP/pHh7eTYNXrXJo08fN3OGYjUKhQFzcQzx4cA8ymQM8PX2L/IA7Pv4x7t27C1tbW7i4uKFSpSoGafAlJMTj/v0ovHr1Eq6uHnBxcdOr81HKjHF+nj9PQVRUJDIy0lG1ajVUqVLNIMt+PH+egvv3o5CUlIgqVarBzc0DDg6aO3fMQQoxvnjxHHfv3kZKSjIqVHCGs3NlVKjgbPTP+qpVuQ8v84wc+Sn69x9i1Pc0t7zPQ3Ly0/9P8vEs0t85IyMDMTFRSEiIR6VKVeHi4oqyZcsVOc6MjAw8eHAPjx/HwsmpIlxdPUyehEiW4+qZJ7h+JgEOZUti1Kya5g6HDOza309xfOdjwAZ4/3+1zB2OWT158h9iYqKRmZkJDw9vVK1aTWdnsDbGqqOlcG9hDLyGGo4UYnz58iXu34/C48excHSUo2LFyqhYsRJkMplR3/fcuZOCpUEaN26BuXO1Lz8kdXmfh7i4h6hUqQo8PX2KXKcYo32uUCjw+PEjPHgQjdKl7eDm5olKlaoUqZ4macpIVWDb95EAgDeHuaP6G0Wvu8mC5ADfTboJAGjWrSpq1C/YzB7FiaHr57z+vocP76NcOUe4uLihQoWKRU7otNb6WSrXT0Aa/dtSiTEqKhJZWQrlvamTUwWjftafPUvGgAGdlNsymQO2bDlksuW0zcXQbXNrfjYhJampLxAVFYmkpEQ8e5aEkiVt4egoR4UKzvD1rWnyWbEK6ubFRPxzNB4lbW3w6UJp9K9JJnGqX79+uH//PgYOHIiJEy17+l4iItIPE6eKvxcvniMzM9Ngx7O1tUW5cuUNdjxrx/NjWWbNmoxz504qtzds+AuVK1dVu29GRoba0UZFYWkPCKVMoVDg+fMUgx6zXLnyBh/xyM9R4TBxqnhj4lTxx7rPsknlGmotdu/eip9++la5PW3aXLRv30Xj/snJSTBkV7O9vczoyWHWRCrnRypxWgomThVzTJyyCqz3LBvPj+WIjAzHmDGvB5n26NEPn346TeP+7Pu2bFJpm/NzVDhSTJySTK9ByZK50yxmZWWZORIiIiLS16efDkNsbIzBjieTOWDXrlMGO5614/mxHGfPHhckTQUGNtKYNAUAa9cuw5492wwaw5o12+Hu7mXQY1qrc+dOYt68/xn0mOPHf2Hwper4OSIia8S6z7JJ5RpqDR48uIfNm9cKypo1a6Nx/8TEJxg4sLtBY2jfviumTZtj0GNaK6mcH6nESURkKKz3LBvPj+VIS0vFypWLBWUdOnTV+hr2fVs2qbTN+TmyHpJLnFIoFGaOhIis2ZIlSxAeHo4mTZpgxIgR5g6HyOJlZzPh2ZLx/JhfbOwD7NmzDbt2bRGU9+zZT+vrsrOzDR6LMY5praRyfqRyTCIiQ2LdZ9l4fswvJeUZDh/eg40b1whGgHfr1lvr7AjGWNQgJ4fnzlCkcn6kEicRkaGw3rNsPD/ml5mZibNnj2Pz5rWIiYlWlru4uKJ27bpaX8u+b8smlbYfP0fWQzKJU3nrNBpyKjQiooK6c+cOLl++DCcnTotMpI/cWXNcDHY8R0e5wY5FPD/m9NVXE3H9eqja6YgDAxuhdesgra/39PRGYGAjg8ZUtiyXdDAUZ+fKBj8/2mYgKyx+jojIGrHus2xSuYYWR7//vg579/6BhIR40e9kMgcMGqR98JidnT0aNGhq0NUCfHz8DHYsayeV8yOVOImIDIX1nmXj+TGfS5fOYcWKxRpn+hk9egpKlCih9Rjs+7ZsUmmb83NkPSSXOPXq1SszR0JE1izvRozLhhLpZ8KE6eYOgbTg+TGfu3cj1CZN+fvXwdSps2FjY6P19b16DUCvXgOMFR4VUZ069bBo0Qpzh6ETP0dEZI1Y91k2qVxDi6PHjx9pTJqaM2cpKlWqovX15cqVx/z5PxorPCoiqZwfqcRJRGQorPcsG8+P+aSkJGtMmvrkk0lo3LiFzmOw79uySaVtzs+R9ZBc4tTLly/NHAkRWbO8ZUM51T8RERnagAHvY8iQUcr7XiIiIiIic2rVqgOCgyfqTJoiIiIiIjK2GjVqIzh4IgICAs0dChEVQ5JLnOKMU0RkTnmJU5xxioiIisLXtyZcXT3g4uIKf/86aNu2Exwcypg7LCIiIiKyUlWquMDfvw6qVXOHl5cPOnToxoQpIiIiIjILJ6eK8PPzR5Uq1VCtmhvatOkEPz9/c4dFRMWYZBKn7OzsAHDGKSIyryVLlpg7BCIiKgZmz+b1hIiIiIgsx8CBH2LgwA/NHQYRERERERo0aIoGDZqaOwwisiIlzB2AvjjjFBERERERERERERERERERERERGQoTp4iIiIiIiIiIiIiIiIiIiIiIyOpIJnEqb6m+9PR0M0dCRERERERERERERERERERERERSZ2vuAPQlk8kAAKmpqWaOhIisWUxMDOLj41GmTBnUqlXL3OEQERERERERERERERERERFRIUkmcapMmTIAgLS0NDNHQkTWbOvWrdi6dSt8fHywbds2c4dDREREREREREREREREREREhSSZpfqYOEVElqB06dIAgMzMTDNHQkREREREREREREREREREREUhmcQpBwcH5c/p6elmjISIrBkTp4iIiIiIiIiIiIiIiIiIiIoHySROlS1bVvlzamqqGSMhImuWlzj16tUrM0dCRERERERERERERERERERERWFr7gD0Vb58eeXPKSkpcHZ2NmM0RGStGjVqhJEjR8Le3t7coRAREREREREREREREREREVERSCZxqkKFCsqfExIS4OPjY8ZoiMhaBQYGIjAw0NxhEBERERERERERERERERERURFJZqm+/DNMPX361IyREBERERERERERERERERERERGR1Ekmcaps2bKwtc2dICshIcHM0RARERERERERERERERERERERkZRJJnEKeD3rVGJiopkjISIiIiIiIiIiIiIiIiIiIiIiKZNk4hSX6iMic4mLi8OCBQvw2Wef4fHjx+YOh4iIiIiIiIiIiIiIiIiIiApJUolTFSpUAMAZp4jIfJ4+fYodO3bg1KlTSE5ONnc4REREREREREREREREREREVEiSSpyqWLEiACZOEZH5lClTRvlzamqqGSMhIiIiIiIiIiIiIiIiIiKiopBk4lRcXJyZIyEia5U/cSotLc2MkRAREREREREREREREREREVFRSCpxqmrVqgCAFy9e4NmzZ2aOhoiskYODg/JnzjhFREREREREREREREREREQkXbbmDqAgPDw8lD8/fPgQjo6OZoyGiP6PvTuPrqo82z9+hYRAJgiQSQYzAgHCaBgUEApRVKJSRKUOVBGLUxUp/gSHNq0T+mrFVl5wZBBb8aWCGgQlzKCAAYIkJDGQQUjICAmZTubfH+hpt6GtIMmTk3w/a53l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xXQMAAAAAAAAAAAAwK6srMx0BABocZxjYmJiTIdoau7u7vLy8tKXX36poqIi2Ww2XX755aZjAWiF7r33Xr3xxhs6c+aMfdodAKD5bdu2TZ9//rlOnDih8PBw03EAAADQhr344ot64403VFJSoqFDh5qOAwAAgDZs6dKlevLJJ1VdXa1hw4aZjgMALUKbmDglSbfeeqvGjBkjSXr//fe1d+9ew4kAtEYDBw6UJO3cuZPpdgBg0LZt2/TWW29p3bp1pqMAAACgjfvqq6+UnJysrKws01EAAADQhhUVFWn16tUqLi7W8ePHTccBgBajzTROSdKf/vQndevWTZL05JNPqri42HAiAK3NxIkTJUlVVVXatGmT4TQAAAAAAMCknJwcnThxQpIUGRlpOA0AAADaqoaGBj355JOqqqqSi4uLHnzwQdORAKDFaFONU506ddILL7wgSSouLtYTTzyhhoYGw6kAtCYDBgxQz549JUlbtmwxnAYAAAAAAJj0w7WBdu3a6corrzScBgAAAG3V4cOHFR8fL0m699575efnZzgRALQcbapxSpKGDRumO++8U5K0b98+rVy50nAiAK3NPffco2eeeUYvv/yy6SgAAAAAAMAgFxcXde7cWcOHD1enTp1MxwEAAEAbNWjQIC1ZskSXX3657r77btNxAKBFcWpogyOXamtr9etf/1qpqalq166d/vKXv2jUqFGmYwEAAAAAAABohQoKCuTr62s6BgAAAAAA+JE22TglSdnZ2br11ltls9nUsWNHLVu2TL179zYdCwAAAAAAAAAAAAAAAEAzaHNb9f2gR48eWrhwoZycnGSz2fTQQw8pLy/PdCwAAAAAAAAAAAAAAC7YkSNHNGvWLJWWlpqOAgAtXpttnJKkMWPGaMGCBZKkoqIiPfjggyorKzOcCkBrkpCQoMWLF5uOAQAAAAAAmtGOHTtMRwAAAEAbFRsbqxkzZighIUFz5841HQcAWrw23TglSVOnTtXMmTMlSZmZmZo7d65qa2sNpwLQGqxfv16zZs3SsmXLlJycbDoOAAAAAABoBtu3b9fcuXN11113KTc313QcAAAAtCEPP/ywYmJiJEne3t767W9/azgRALR8bb5xSpIeeOABRUdHS5IOHDhg/8cEAH6O8ePHq2PHjpKk5cuXG04DAG1LTEyMIiMjddddd5mOAgAAgDaksrJS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XJxqa2u1ceNGbdy4UWFhYZo8ebImT57MFCqglXFxcdH8+fPVv39//elPf1Jtba327NlD4xQAAAAAwCEUFRWpW7dullppaan9eVBQkKKiolRXV9fc0QAAANqU3NxcdejQQV26dLHUY2JiFBcXZ6ldf/31lsapjh076oYbbpC3t7eCg4MVEhKikJCQRr8Hk6UAAC0ZE6dakVOnTmnNmjX66KOPVFhYaK87OTlp5MiRmjx5sn7xi1+oY8eOBlMCuNiOHj2q559/XosWLVKnTp1MxwGAFoGJUwAAAC3P9u3btWnTJu3YsUPXXnutFixYYDn+xRdf6Pjx45o4caKCgoIMpQQAAGjdCgoKtHjxYqWnpysjI0OVlZV69NFHdfvtt1vWvfnmm3rzzTfl6uqq0NBQ9erVS7/61a80cOBAQ8kBAGgaNE61QrW1tfryyy+1fv167dixQzU1NfZjbm5umjhxoqKjo3XZZZfJycnJYFIATc1ms9EsCaBNWrFihXbv3q2QkBDNnz/fdBwAAIA27cyZM7ruuutks9nstUsuuUSffvqpwVQAAACtT0pKig4cOKDMzExlZWUpPT1db731lqUp/fTp07rqqqss75syZYqeeuopS62wsFC1tbUKCAholuwAAJhC41QrV1ZWps8//1yxsbE6fPiw5Zi/v7+uvfZaXX/99QoMDDSUEEBTWbx4sTZs2KCYmBhFRkaajgMAAAAAaOXKy8u1d+9e9e/fv9EXbNOnT9fRo0fl6empyMhIjRgxQrfccouhpAAAAI7JZrPp2LFjOn78uPz9/TV06FDL8ZdfflkffPCBpbZo0SKNGTPGUluwYIF69uyp4OBg+4ObsAEAbRWNU21Idna2Pv30U61fv14nT560HAsLC1NUVJSuvvpqXXrppYYSArhYsrOzdeONN9pfX3PNNZo3b568vb0NpgIAAAAAtDa5ubn65JNP9NVXX9lv2ps/f76mTZtmWbd371517NhRgwcPNhETAADAYaSlpal3796W2r59+/SHP/xBBQUF9toNN9yg3//+95Z1H3zwgV5++WV16NBBQUFBCgoK0m233aYBAwY0S3YAABwRjVNtUENDgw4ePKj169crLi5O5eXlluPBwcGaOHGioqKiFBYWZiglgJ/ryy+/1DPPPGP/QWrs2LF69dVXDacCAAAAALQm33zzjWbOnGmpRUVF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AAAAms6HH36ojRs36ptvvrHXhg8fbpmK3bdvX/n5+alPnz6KiIhQREQEW9UAAACdOXNGBQUF6tatW6MtfJ988knt379fhYWF9lp8fLxlTUVFhdasWWOp5eXlNfp9RowYoW7dutkbovz8/NShQ4dG637c6A0AANBW0EUCh+Ph4WG5q6G6ulpJSUk6ePCgDhw4oG+++UYVFRUqKyvT7t27tXv3bkmSq6urwsPDNXDgQPvD39/f5KkArYKvr68eeughPfTQQ8rNzW10fNu2bZo3b56uuuoq3XjjjRo1apSBlAAAAABw/mw2m44dO6asrCz17NlTgwYNshzPzMy0NE1J0rfffmtpnJKkzz77rMmzAgCAliMnJ0dVVVUKDg621P/xj39o5cqVKigosE/JjomJUXR0tGVdUVGRpWlKOrudno+Pj/21n5+frrzySsu2eT+eSiVJd91118U6LQAAgFaJxik4PFdXV/tUqZkzZ6q+vl7ffvutfWu/hIQEnTp1StXV1frmm28sFzR9fHw0aNAgeyNVv379znmnBYCfJiAgoFHtk08+kSRt2rRJmzZtkp+fn55//nkNGTKkueMBaEOCg4M1bNgwhYSEmI4CAAAc0K5du/Tss89avrCcMmVKo8apyy+/XBUVFQoKClJISIgCAwPPua0NAABwbGVlZSovL1dFRYXKy8sVGBjYaML+jBkzlJOTo+LiYknSwIEDtWzZMssam82m7OxsS62oqKjR7zd8+HD5+fnJz8/PPiXK09PTsqZz587685//fDFODwAAoE1zamhoaDAdAmhq6enpSkpKUlJSkhISEnT06NF/uzY8PFzh4eHq37+/+vfvf847NAD8dMePH9fatWsVGxurU6dOSZI2bNggX19fw8kAAAAAtEU2m03p6enKyMhQRkaGsrKy9D//8z+WNd98841mzpxpqU2aNEnPPfdcc0YFAABNrKSkRAUFBSosLFReXp68vLw0YcIEy5q33npLb7zxhqX26quvauzYsZbaddddp/z8fPvrgIAAxcbGWtbs2bNHa9eula+vr/0xcOBA9erV6yKfGQAAAH4qGqfQJtlsNiUmJioxMVGHDx/W4cOH7Q0dP+bq6qq+fftqwIAB9maqwMBAOTk5NXNqwPFt3bpVqampuu+++yz13Nxcvffee5o4caKGDRtmKB0AAACAtuDpp5/Whg0b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", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import nest_asyncio\n", + "\n", + "nest_asyncio.apply() # Required for Jupyter Notebook to run async functions\n", + "\n", + "display(\n", + " Image(\n", + " app.get_graph().draw_mermaid_png(\n", + " curve_style=CurveStyle.LINEAR,\n", + " node_colors=NodeStyles(first=\"#ffdfba\", last=\"#baffc9\", default=\"#fad7de\"),\n", + " wrap_label_n_words=9,\n", + " output_file_path=None,\n", + " draw_method=MermaidDrawMethod.PYPPETEER,\n", + " background_color=\"white\",\n", + " padding=10,\n", + " )\n", + " )\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "d821b2f6", + "metadata": { + "ExecuteTime": { + "end_time": "2024-04-18T12:18:30.629629Z", + "start_time": "2024-04-18T12:18:30.620092Z" + } + }, + "source": [ + "**Using Graphviz**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d4234400-75cd-4b13-aeff-828f7fb68ab1", + "metadata": { + "ExecuteTime": { + "end_time": "2024-04-19T11:25:42.057704Z", + "start_time": "2024-04-19T11:25:42.019017Z" + } + }, + "outputs": [], + "source": [ + "%%capture --no-stderr\n", + "%pip install pygraphviz" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "ee026342-f560-4ce0-ab43-1718bd19a366", + "metadata": { + "ExecuteTime": { + "end_time": "2024-04-19T11:25:42.631675Z", + "start_time": "2024-04-19T11:25:42.452377Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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P87s2bNZt24dDz/8MP/85z8xGAxahyWEEGesrKyMPXv2OBWn0tLSUBSlSXHq/PPPJzQ0VOuQRQdw8OBBbDYb/fr10zoUIYToSFq3EFVYWMiQIUOYOHEiq1ataq3ZCKGJJUuWoNPpmDdvntahCCGEaCNJSUksWrSItWvXMmLECObNm8f1118vB2mFEC5FURRefPFFEhMTGTFiBKtWrSIqKkrrsIQQ4pyVlpayd+9ep+LU/v37AZoUpy644AK5zbJo4u6772bFihVccsklrF69msDAQK1DEkKIjqB1C1EA33zzDVOnTuXVV1/lr3/9a2vOSgghhBCixdlsNr766iueeOIJkpOTiYuLIzExkWnTpmkdmhBCtKrU1FSuu+46fv/9d15++WWuu+46rUMSQogWV1JSwr59+9iyZQtJSUmkpKSQm5sLNC1OxcfHExwcrHHEQks2m401a9bwzTff8Morr2gdjhBCdBStX4gCeOihh3jhhRf46aefiI2Nbe3ZCSGEEEKcs5qaGv7zn//wr3/9i0OHDjFlyhQeffRRRo8erXVoQgjRZsxmM4mJiSxbtowbbriBFStW4Ofnp3VYQgjRqnJycpyumtq+fTt5eXkYDAb69+/vVJwaMWIEPj4+WocshBBCtGdtU4iyWq1MnjyZw4cPk5ycLJetCiGEEKLdKisr46233uLZZ5+lsLCQa665hkceeUTuAy+EcGv//e9/ue222/D392fVqlWMHTtW65CEEKJNnVic2rZtG/n5+RiNRvr16+dUnBo5ciTe3t5ahyw0lJubS5cuXeQW3kIIoWqbQhRAXl4esbGxxMfH89FHH7XFLIUQQgghTlteXh4vv/wyS5cuxWq1csstt5CYmEh4eLjWoQkhRLuQl5fHLbfcwvr163n44Yd59NFH0ev1WoclhBCaObE49fPPP1NYWNhscWr06NF4enpqHbJoIwkJCWRnZ3PnnXdy7733ah2OEEJore0KUQA//PADF198MUuXLuXOO+9sq9kKIYQQ7daRI0dQFIXu3btrHYrbyszMZOnSpaxcuZKAgAD+/ve/M3/+fIKCgrQOTQgh2h1FUXjxxRe5//77iYuL47333iMiIkLrsIQQot04sTi1ZcsWiouLMZlM9O3b16k4dd555+Hh4aF1yKIV/Prrr6xYsYK8vDw++OADrcMRQgittW0hCuCJJ57g6aef5ocffpDbOQghhHB7c+bM4eDBg/zvf//TOhS3s2vXLp5//nk++OADevbsydy5c7n99tvlNipCCHEaUlJSmDlzJsePH+eVV17h2muv1TqkDmPr1q1s3bqV+fPnax2KEKINWK1W0tPTnYpTO3fupKqqqqE4FR8fT1xcHCNHjmTgwIFytakQQghX0/aFKJvNxowZM/jll1/Ytm0bPXv2bMvZCyGEEO3KFVdcgYeHB6tXr9Y6FLeRlJTEokWLWLt2LcOGDWPBggXMnDkTo9GodWhCCNGhVFdX88ADD/Diiy9y44038vLLL+Pr66t1WO3e/fffz3fffceuXbu0DkUIoZHmilM7duyguroaPz8/hg0b5nTllBSnXJfFYpH9ECGEO2j7QhRARUUFcXFxWCwWfvrpJwIDA9s6BCHOWUpKCgUFBUyePFnrUIQQHdjq1avx9PTk8ssv1zoUl2az2fjqq6946qmn2LZtG3FxcSQmJjJ16lR0Op3W4QkhRIf2+eefc9tttxEaGsoHH3xAbGys1iG1axdeeCHR0dG8/vrrWocihGhHLBYLGRkZTsWplJQUzGYz/v7+DB061Kk4FRMTI/3YDs5mszFkyBBGjRrF3LlzGTlypNYhCSFEa9GmEAVw+PBhxowZw4gRI1izZg0Gg0GLMIQ4a3feeSepqan8+OOPWocihBDiJGpra1m9ejXPPPMMBw4cYMqUKTz88MOcf/75WocmhBAuJTs7m5tuuoktW7bw0EMP8eijj8rZ+ydRVFREVVUVkZGRWocihGjn6urqOHDggFNhavv27dTW1hIYGMjgwYOlONWBWSwW3n77bV566SXGjBnDq6++qnVIQgjRWrQrRAH89NNPXHjhhcybN49FixZpFYYQZ2XBggX8/PPP/Pzzz1qHIoQQ4gQVFRW88cYbLF68mOPHj3Pttdfy4IMPMnDgQK1DE0IIl6UoCi+++CL3338/48aN49133yU8PFzrsIQQwqU0Lk5t2bKFpKQkMjIysFqtBAUFMWjQoIbCVHx8PNHR0VqHLE5DdXW1PKtWCOHKtC1EAbz33nvcfPPNvPnmm8yaNUvLUIQ4I3v27KGsrIz4+HitQxFCCFEvPz+f5cuXs2zZMmpra5k9ezb33XefnHUuhBBtKDk5mZkzZ1JSUsLrr7/O9OnTtQ5JCCFcWkVFBbt27XK6cio9PR2bzUZYWJjTVVOjR4+mW7duWocshBDCvWhfiAJ46KGHeO6551izZg2XXHKJ1uEIIYQQooP57bffeOGFF3j99dfx9fXljjvuYO7cuXTq1Enr0IQQwi2Vl5dz7733snLlSm688UZeeeUVfHx8tA5LCCHcRnl5Obt373YqTqWlpaEoSpPi1JgxY+jSpYvWIYuTqKysZNq0adx4441cd911eHl5aR2SEEKcqfZRiFIUhVtvvZX//Oc/rF+/ngsuuEDrkIQQQgjRAezdu5d///vffPjhh0RGRjJ//nxuu+02OdgphBDtxKeffsrtt99O165d+eCDDxg+fLjWIQkhhNsqKytjz549p1WcGjt2LJ07d9Y6ZAHk5uZy77338sknn/D444/z4IMPah2SEEKcqfZRiAKwWq1cffXVbNq0ic2bN8szHIQQQghxUklJSSxatIivvvqKwYMHc++99zJz5kyMRqPWoQkhhDjB77//zo033sgvv/zC448/zn333Yder9c6LCGEEEBJSQn79u1zKk7t378foElxKi4uTu44oKFjx47h6elJcHCw1qEIIcSZaj+FKFAfzHfJJZeQlZXFli1b6Nmzp9YhCSGEEKKdUBSFtWvXsnDhQn766Sfi4uJITExk6tSp6HQ6rcMTQghxClarlcWLF/PPf/6TCRMm8M477xAWFqZ1WEIIIZqRm5tLcnJyQ2EqOTmZY8eOAY7iVHx8PHFxccTGxuLr66txxEIIIdq59lWIAigtLWX8+PFUVVWRlJQk96gVQgjhsr7//ntSUlK47777tA6lXaurq+PDDz/k2WefZf/+/Vx22WU88MADxMXFaR2aEEKIM/TLL79w/fXXU1payptvvsnUqVObHc9qtfLxxx/zl7/8pY0jbD0lJSX4+/tjMBi0DkUIIc5YTk6O01VTv/zyC8ePH8dgMNC/f3+nK6dGjhyJt7e31iG7naNHj7J8+XLuvPNOIiIitA5HCCEaa3+FKFA3nHFxcYSFhfHdd9/h7++vdUhCCCFEi3vkkUdYs2YNu3fv1jqUdqmyspLXX3+d559/niNHjnDllVfy2GOPMWjQIK1DE0IIcQ7Kysq46667eP/997ntttt44YUXmjzb78knn+Txxx/nxx9/ZNy4cRpF2rJuu+02fv/9d9atW6d1KEII0SJOLE5t3bqVgoICjEYj/fr1cypMjRo1Ci8vL61Ddmk//PAD119/PQUFBXz77bdceOGFWockhBB27bMQBZCRkcH48ePp27cv33zzDX5+flqHJIQQQrSoOXPmcOjQITZs2KB1KK2uoqLitHN5WVkZb731FgsXLqS4uJhrrrmGRx99lD59+rRylEIIIdrSxx9/zJw5cwgPD+eDDz5g6NChAPz888/Ex8ejKArh4eGkpqYSGBiocbTnLiYmhhkzZvD0009rHYoQQrSaE4tTP/30E0VFRc0Wp0aPHo2np6fWIbuU2tpaPvnkE6644gop/Akh2pP2W4gCtRg1ceJEoqOj+fbbb6UYJdoVm83Gn//8Z+6//36XOUtTCNG2SktLqaqqcvlnZCxdupTvv/+eL7744pTjHTt2jFdeeYUlS5agKAqzZs3igQcecPnfRwgh3Nnhw4e54YYbSE5OZuHChcyePZuhQ4dy5MgRLBYLJpOJa665hvfff1/rUM+JoigkJiYyffp04uPjtQ5HCCHalL04tWXLFpKSkti1axeVlZWYTCb69u3rVJw677zz8PDw0DpkIYQQLat9F6IA0tPTmThxIn369JEro0S7ExgYyHPPPcdf//pXrUMRQoh2afHixdx3333odDr27dtHTExMk3EOHjzIsmXLWLlyJUFBQcyZM4d//OMfLnH2uxBCiD9msVh44oknePrpp+nWrRvHjx+nrq7OaZwPP/zQpZ4XJYQQ7sxqtZKenu505dTOnTupqqrC19eX4cOHOxWnBg4ciF6v1zpsl3Ho0CGqq6sZPHiw1qEIIdxH+y9EgaMY1bdvX77++mspRol2IyYmhr///e/cfffdWocihBDtzrPPPktiYiIAJpOJv/zlL7z77rsNn+/YsYMlS5bwwQcf0KtXL+6++27mzJkjt5AQQgg39cQTT/DYY481Ga7T6fD19SU1NZUePXpoEJkQQojWZrFYyMjIcCpOpaSkYDab8ff3Z+jQoVKcaiH3338/ixcvZtKkSaxevZqQkBCtQxJCuL6OUYgC2LNnD5MmTSImJoavv/4aX19frUMSQgghxEksWrSIBx54wGmYwWDg0KFDZGdns2jRItauXUtsbCzz58/n+uuvx2AwaBStEEIIrWVlZTFkyBCqqqpobhfVZDJx3nnnsWnTJjnwKIQQbqK54lRycjI1NTUEBAQwZMgQp+JUTEwMOp1O67DbPUVRWLduHZ999hmv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5BNcvHgR0dHReOqppzB9+nS4ubkJHe+OKC0thbe3t9AxiIiI6BYYDAacOXMGiYmJcHFxwfPPPy90JCKyAnq9Hrm5ufD29oajo2Or44YPH47y8nIMGDAAH3/8sRkTEhEREVEHUCEWOgFRR+Tp6Ym//e1vuHDhAk6ePIl7770XL730Evz8/DB16lTs378fHbnHe+LECchkMmzatEnoKERERHSLxo4di1WrVqGoqEjoKERkBb744gs4Ojqia9euSElJaXPsgQMHcPr0aTahiIiIiOiGeEUU0R2iUCiwdetWrF+/vvGmun/5y1/wl7/8pcMtfaPX67Fo0SIsX74cJ06cQExMjNCRiIiI6CZyc3MRFBQEkUgkdBQislAGgwFr1qxBZmYmgoKCsHDhwlbHZmRk4OjRo+jWrRt69erF++MSERER0R/FpfmI2kNaWho2b96MDRs2QKlUYvz48Zg5cyYefPBB2NjYCB3vlqWmpvL+V0RERAJSKBRISEjADz/8gEcffRTjxo0TOhIRWSiNRoPs7GyEhoZCIpG0Oq5nz55wdnbGgw8+iNdff92MCYmIiIiok+LSfETtISoqCkuXLkV+fj6++OILVFRUYPz48ejatSv+8Y9/ICcnR+iIt4RNKKI7LzExEatWrRI6BhF1EEVFRZg9ezYKCws71GQWIjKv9957D46OjoiIiMDly5fbHHv+/HkcPXqUTSgiIiIiMhteEUVkJunp6di4cSM2btyIa9euYdiwYXj66acxYcIESKVSoeMRkZksXrwYiYmJSE1NFToKEXUQSqWSS2IRdUJKpRLr1q2DXC7HgAED8OSTT7Y69vTp08jIyEB4eDh69uwJOzs78wUlIiIiImobr4giMpeIiAgsXboUV69exZYtWwAAjz76KLp27YpXX331pjMXiYiIyHqcP38eixYtQnR0NPLz89scyyYUkfWpra3FxYsX2xxjY2ODDz74ABcuXEBdXV2bY/v27Ytp06YhJiaGTSgiIiIisji8IopIQHl5efjyyy+xdu1a5OTkICYmBjNnzsTMmTPh6ekpdLw2ffvtt7j33nsRHBwsdBSiDqW2thYajQaurq5CRyEiAf3vf//De++9hzFjxuDll19mPSXqRObNm4f169cDAFQqFRwcHARORERERETUrirYiCKyAHq9HklJSdi0aRN27twJvV6P+Ph4zJw5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IiIiItLgaWk+EZG64HQ62bFjB6tWrSIpKYlvvvkGX19frr/+ehITE7n55puJjo42OqbUk61bt3LNNdeccd5qtfL0008zY8YMA1LJxcrNzWXChAls3LiRJ554glmzZhkdSS7QnDlz+O677zCZTCxatKjWcXa7na1btxIVFUX79u0xmUz1mFJERERERETkkqRClIhIXSovLycuLo4hQ4YQFRXF1q1bSUpKori4mMjISBITE2v2lvL19TU6rtShyMhIcnJyzjj/448/0rlzZwMSycWqrKzk/vvvZ/DgwQwePJjg4GCjI8kp3G43ubm5ZGZm0qNHD1q3bl3r2D/84Q8UFBQQGxvLzJkz6zGliIiIiIiISKOnQpSISF0qKSnhpZdeYsGCBUyaNImnn34ah8PBxo0b+eqrr1i2bBnp6ekEBgZy4403MmLECIYPH06HDh2Mji5eNnPmTP7617/WLM9nMpno2bMn27dvNziZnI3b7Wb79u3ExMSoSHyJWrhwIXfddRcAixYt4tZbbzU4kYiIiIiIiMhlSYUoEZH64HK5qKioICAg4Ixr+fn5rFixgi+//JIVK1ZQWlpa0y2VmJjI8OHDCQwMNCC1eNPu3btPW47RYrEwe/ZsHnnkEQNTydksXryYBx54gPz8fFauXEliYqLRkeQUjz/+OBkZGYSHh/PGG2/UOi4/P5/MzEw6d+5MSEhIPSYUERERERERkVOoECUi0lAUFhYSFBTEhg0bWL58OStWrCA9PR1/f38GDBjA0KFDGTZsGF27djU6qlyg7t27k56ejtvtxmQykZubS7t27YyOJf8jPT2dpKQkhg0bRs+ePbUPUD1wOBzs27ePrKws+vfvf9ai/c9uu+02bDYb/fr148EHH6zHlCIiIiIiIiJyAVSIEhFpCH766SfCw8OJj4/n8ccfZ+TIkYDnX/SvX7+epKQkli5dytGjRwkNDWXw4MGMGjWKxMREWrRoYXB6OVezZ89m+vTpuFwubrjhBtauXWt0pMtOQUEBKSkpDBs2zOgocornnnuOGTNmALBlyxb69OljcCIRERERERER8RIVokREGoKqqipWrFjBhx9+yMiRI7nzzjvPGON0OtmxYwerVq1i1apVrFu3DpfLRa9evWqW8Rs4cCAWi8WAGci5yM3NpWPHjrjdbubNm8ekSZOMjnRZeeCBB3j77bcJCAigoKAAf39/oyM1asePH2fatGlkZWXRr18/nn766VrHHjhwgIKCAqKiomjevHk9phQRERERERGROqZClIjIpaqoqIhVq1axYsUKVqxYQV5eHq1bt2bw4MEMHTqUxMRELfvWAPXr14+tW7eSn5+vbrZ69vXXX1NeXk5CQgJNmjQxOs4lq6KigszMTLKyshg9enSt41wuF4MHD6Zjx44MHTqUsWPH1mNKEREREREREWkgVIgSEbnUzJw5k4EDB9K/f398fHxqzu/cubOmKLVx40YqKyuJjo4+rVuqadOmBiYXgLfeeovly5ezZMkSo6M0CAUFBYSEhFzUMxwOB5s2baKqqoohQ4Z4KZnUZvLkycybNw/w7G3XunVrgxOJiIiIiIiISAOmQpSIyKWkqKiIhIQEdu7cyf3338/cuXPPOu7EiRNs2rSpZhm/7du3YzKZTlvG74YbbsDX17eeZ9D4lZeXY7fbsdvtNefsdjsOhwOA0tJSUlJSGDhwYM31UzujfH19CQoKavRFw8rKSmbMmMFXX31FWlraBT/H5XLRoUMH8vLyGDNmDP/+97+9mPLycejQIWbOnElmZibjxo1j8uTJtY7du3cvFRUVREVFaXlDEREREREREfk1KkSJiFyK9u7di9vtpkuXLuc0/siRI6xZs6amMJWdnU1AQAB9+/atKUz17t0bs9nslXwul8trzzJSUVEReXl5HD58mPz8fAoLC8nPz/ccFxzm2NEjlJWVUlZWRklJGaX2cpxOl9e+v1nTJgQFNiEoMJDAoEBatGxNcEgYwcHBtGnThtDQ0Jrjtm3bEhYWhslk8tr315X09HTGjh1LRkYGbrebAwcO0KFDhwt+3tKlS4mOjiYyMtKLKRuH0tJSMjMzyc/PZ/jw4bWOKygoYPz48URFRTFmzBgGDx5cjylFREREREREpBFTIUpEpLHasmULXbt2PWtnTXZ2Nhs3bmTTpk18+eWX5OXlERwczMCBA0lMTGTIkCFERERc0PdmZWVx1113MX/+fLp27XqRs6hbTqeT7Oxsdu3aRU5OjueVncW+nL3s259LaVl5zVirxUxIcwshTU2ENq0mJMhJiyYQ5A+BftA8AIL8PMdB/p7jn/nbwM969gzVTiirOPn5RBXYKzznisuh7ITns70SjtqhsMxMod3C4RIT+ceqKa901tzra7PSMbwtEZ2uIKJTFBEREXTq1IkuXboQHR1tePeK2+1m3rx5PPzwwzidTqqrq7FYLMydO5dJkyadMT4rK4vly5dz3XXXERcXZ0DiS9/QoUNJTk4mKCiIkpKSS6JQKSIiIiIiIiKNigpRIiKNkdvtpn379hQVFXHffffx5ptv/uL47Ozsmm6p5cuXU1ZWRmRkZE231I033kjLli3P6bvfffddJk2ahM1m49lnn2XKlCmn7WVllP3797Nt2zZ27dpFWtoP7M7Yya7dmVRWeZbMC21pI6I1RLSqolMwRARDp2Bo3xJCmkGrQIMnUIvjlXC4GH4qhpxCyCmAfUdgX5GVnEITB484qHa6MZtNdOrYjpjYXnSLiaVbt2707NmTmJiYevnzyc/PZ8KECaxcuRKX62TXmI+PD6NGjWLx4sWnjd++fTtXXXUVTZs25e9//zsTJ06s84yXirS0NF544QUyMzOZPn06o0aNqnVseno6VquViIgIbDZbPaYUEREREREREQFUiBIRabyOHTtGUlISTqeTe++995zvq66uJjU1taYwtW7dOpxOJ717964pTF1//fX4+flRWVmJ1Wo9bRm+8ePH8+mnn1JdXY3ZbKZXr168//77dOvWrS6meValpaXs3LmTbdu2sWnjetavW0t+4VEAwlpaiWnnpFtbFzHtoVs76NXR08nUGFU74UARpB+EjEOQfshExk82dh2sprzCSZMAP3r17EFcH0/XUVxcHN26dfNq58znn3/OfffdR3l5ec1eWacKCAiguLgYq/Vk25jL5WLDhg307dv3tPON2ZEjR8jMzKS8vJyEhIRax6WmpjJ9+nSioqK46667uPrqq+sxpYiIiIiIiIjIeVEhSkTkcpednU3z5s1r7Xiy2+189913NYWplJQU/Pz86NevH6GhoezYsYOPP/6YmJgYAEJCQigsLKy532Kx4Ha7efTRR5k1a1addGWUlJSwfv16vv76a9Z8vYIf0vfgdrvpFGrjmk4O+kS6ueYKuCoCmvh6/esvSdVOSD8EW7NgcxZs3Wcj/YCne6p92xASEoeSkHAjCQkJF7x/U1lZGVOmTOGdd97BbDaf1gn1v9atW0f//v0vdDqNQteuXdmzZw+xsbH88MMPRscREREREREREfEGFaJERC53Y8aMISkpiX79+pGcnPyrhaLc3NyaotSSJUsoL/fsoxQbG8uYMWOYNWvW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4MTxEh64sZo/DoXQ5kYnk4tR4YB/roc5X1k5cMTNw398hBkzZtCsWTOjo4mIiIiIiIiISP3SHlEiImK8srIyXn/9dV59+SWOHSvm7hvcTB3h4sowo5PJ+Th2HOaugleTLRSXw90TJvD443/iiiuuMDqaiIiIiIiIiIgYQ4UoERFpOKqqqvj444/52/Oz2LUni7hIHyYPcjKuLwT6GZ1Ozsblhm9+hPc3mflgkwkfqy/33DuJxx57TEvwiYiIiIiIiIiIClEiItLwuFwuli9fzvx33yEpKQlfK9x+jYs7r3dxw5Xgox0ODZdxCD79DhZstLK/wEH8tVdz78TJ3HHHHQQFBRkdT0REREREREREGgYVokREpGE7cuQIH3zwAQvmz2PHznRaNbUyqlc1t1ztZkh38LcZnfDy4HLD5kxY8j0s2W7jx0NVhLVpzZ1338u9995LdHS00RFFRERERERERKThUSFKREQuHZmZmSxevJglny/iuy3f42czk9ANEro5SYiBHh3AZDI6ZeORWwSrM2B1uonkNAuHjzmIigznljG3c8sttxAfH4/ZrPY0ERERERERERGplQpRIiJyaTp8+DBffPEFyckrWLvma4qOltC6mZVB0U4GdnUR3xliO4DVx+ikl47MfNiSBet2wZrdVvbmOfDztRJ/3bUkDhnOzTffTGxsrNExRURERERERETk0qFClIiIXPpcLhepqamsWbOG1V+vZP36dZTZT+Dv60OvCDPXdHLQJxKujoSoNtpjCuDQMUjJga3ZsDXHhy1ZJo6WVWO1+HB1XG8SEoeSkJBAfHw8/v7+RscVEREREREREZFLkwpRIiLS+LhcLnbv3s2WLVvYunUrW77bSOrOdBzVTnytZqLbW4kOqyK2vZtu7SCmPXRsDTaL0cm9y+32FJx250H6Qcg4BGmHrGQcclNsr8ZkMtH5inD6XNuPa665lj59+tC7d2/8/PyMji4iIiIiIiIiIo2DClEiInJ5qKys5IcffiA9PZ2MjAzS03aSkf4D+w7k4Xa7MZtNtG1pJSLYTadWDiKCISIY2reE0GYQ0hSCmzasbqqjdsgvgcIyOHgU9hX+91VkYd8RHw4UOqh0uABo3bIZsbGxRMf0oHv37kRHR9OrVy+aN29u8CxERERERERERKQRUyFKREQub3a7nT179pCTk8O+ffs8r5wscrL3sm//QcpPVNaMNZtNBDezEtzURGgzFy38HTQLgEBfCPSDIH9oHgBBfmDx8exPFXhKc5G/DfysnmOnC0pPnLxW6YDyKs/xseNgr/C8yio840rKwV7lw+ESC4dL3BSWVFP13yITgNXiQ/t2oUREdCIisjMRERF06tSJiIgIunbtSnBwcF3+GEVERERERERERM5GhSgREZFfcuzYMQ4fPkxhYSGHDx8mPz+/5ri4uJiS4iLsZaWUlZVSVlZGSUkZpfZynE7Xrz+8Fs2aNiEosAmBTZoQ1DSIZs1a0KxFKwIDgwgJCSEsLIzg4GDatGlDaGgowcHBhISEYDY3oHYtERERERERERERFaJERETqTkVFBSdOnGx7stvtOByOms8tWrSoObZYL2SkjgAAAF9JREFULAQFBdVrPhERERERERERkTqmQpSIiIiIiIiIiIiIiIjUiWNaw0dERERERERERERERETqhApRIiIiIiIiIiIiIiIiUicswDajQ4iIiIiIiIiIiIiIiEijU/r/ARN5/xGPrsbJAAAAAElFTkSuQmCC", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "try:\n", + " display(Image(app.get_graph().draw_png()))\n", + "except ImportError:\n", + " print(\n", + " \"You likely need to install dependencies for pygraphviz, see more here https://github.com/pygraphviz/pygraphviz/blob/main/INSTALL.txt\"\n", + " )" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.4" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/docs/docs/how-tos/http/custom_lifespan.md b/docs/docs/how-tos/http/custom_lifespan.md index a7b2d7d48..a804f4748 100644 --- a/docs/docs/how-tos/http/custom_lifespan.md +++ b/docs/docs/how-tos/http/custom_lifespan.md @@ -1,8 +1,8 @@ # How to add custom lifespan events -When deploying agents on the LangGraph platform, you often need to initialize resources like database connections when your server starts up, and ensure they're properly closed when it shuts down. Lifespan events let you hook into your server's startup and shutdown sequence to handle these critical setup and teardown tasks. +When deploying agents to LangGraph Platform, you often need to initialize resources like database connections when your server starts up, and ensure they're properly closed when it shuts down. Lifespan events let you hook into your server's startup and shutdown sequence to handle these critical setup and teardown tasks. -This works the same way as [adding custom routes](./custom_routes.md) - you just need to provide your own [`Starlette`](https://www.starlette.io/applications/) app (including [`FastAPI`](https://fastapi.tiangolo.com/), [`FastHTML`](https://fastht.ml/) and other compatible apps). +This works the same way as [adding custom routes](./custom_routes.md). You just need to provide your own [`Starlette`](https://www.starlette.io/applications/) app (including [`FastAPI`](https://fastapi.tiangolo.com/), [`FastHTML`](https://fastht.ml/) and other compatible apps). Below is an example using FastAPI. @@ -47,7 +47,7 @@ app = FastAPI(lifespan=lifespan) ## Configure `langgraph.json` -Add the following to your `langgraph.json` file. Make sure the path points to the `webapp.py` file you created above. +Add the following to your `langgraph.json` configuration file. Make sure the path points to the `webapp.py` file you created above. ```json { @@ -71,11 +71,11 @@ Test the server out locally: langgraph dev --no-browser ``` -You should see your startup message printed when the server starts, and your cleanup message when you stop it with Ctrl+C. +You should see your startup message printed when the server starts, and your cleanup message when you stop it with `Ctrl+C`. ## Deploying -You can deploy your app as-is to the managed langgraph cloud or to your self-hosted platform. +You can deploy your app as-is to LangGraph Cloud or to your self-hosted platform. ## Next steps diff --git a/docs/docs/how-tos/http/custom_middleware.md b/docs/docs/how-tos/http/custom_middleware.md index 2626e289a..ec18491d8 100644 --- a/docs/docs/how-tos/http/custom_middleware.md +++ b/docs/docs/how-tos/http/custom_middleware.md @@ -1,6 +1,6 @@ # How to add custom middleware -When deploying agents on the LangGraph platform, you can add custom middleware to your server to handle cross-cutting concerns like logging request metrics, injecting or checking headers, and enforcing security policies without modifying core server logic. This works the same way as [adding custom routes](./custom_routes.md) - you just need to provide your own [`Starlette`](https://www.starlette.io/applications/) app (including [`FastAPI`](https://fastapi.tiangolo.com/), [`FastHTML`](https://fastht.ml/) and other compatible apps). +When deploying agents to LangGraph Platform, you can add custom middleware to your server to handle concerns like logging request metrics, injecting or checking headers, and enforcing security policies without modifying core server logic. This works the same way as [adding custom routes](./custom_routes.md). You just need to provide your own [`Starlette`](https://www.starlette.io/applications/) app (including [`FastAPI`](https://fastapi.tiangolo.com/), [`FastHTML`](https://fastht.ml/) and other compatible apps). Adding middleware lets you intercept and modify requests and responses globally across your deployment, whether they're hitting your custom endpoints or the built-in LangGraph Platform APIs. @@ -40,7 +40,7 @@ app.add_middleware(CustomHeaderMiddleware) ## Configure `langgraph.json` -Add the following to your `langgraph.json` file. Make sure the path points to the `webapp.py` file you created above. +Add the following to your `langgraph.json` configuration file. Make sure the path points to the `webapp.py` file you created above. ```json { @@ -68,7 +68,7 @@ Now any request to your server will include the custom header `X-Custom-Header` ## Deploying -You can deploy this app as-is to the managed langgraph cloud or to your self-hosted platform. +You can deploy this app as-is to LangGraph Cloud or to your self-hosted platform. ## Next steps diff --git a/docs/docs/how-tos/http/custom_routes.md b/docs/docs/how-tos/http/custom_routes.md index e5d5ed5d6..19a3abb63 100644 --- a/docs/docs/how-tos/http/custom_routes.md +++ b/docs/docs/how-tos/http/custom_routes.md @@ -1,10 +1,10 @@ # How to add custom routes -When deploying agents on the LangGraph platform, your server automatically exposes routes for creating runs and threads, interacting with the long-term memory store, managing configurable assistants, and other core functionality ([see all default API endpoints](../../cloud/reference/api/api_ref.md)). +When deploying agents to LangGraph platform, your server automatically exposes routes for creating runs and threads, interacting with the long-term memory store, managing configurable assistants, and other core functionality ([see all default API endpoints](../../cloud/reference/api/api_ref.md)). -You can add custom routes by providing your own [`Starlette`](https://www.starlette.io/applications/) app (including [`FastAPI`](https://fastapi.tiangolo.com/), [`FastHTML`](https://fastht.ml/) and other compatible apps). You make LangGraph Platform aware of this by providing a path to the app in your `langgraph.json` configuration file. (`"http": {"app": "path/to/app.py:app"}`). +You can add custom routes by providing your own [`Starlette`](https://www.starlette.io/applications/) app (including [`FastAPI`](https://fastapi.tiangolo.com/), [`FastHTML`](https://fastht.ml/) and other compatible apps). You make LangGraph Platform aware of this by providing a path to the app in your `langgraph.json` configuration file. -Defining a custom app object lets you add any routes you'd like, so you can do anything from adding a `/login` endpoint to writing an entire full-stack web-app, all deployed in a single LangGraph deployment. +Defining a custom app object lets you add any routes you'd like, so you can do anything from adding a `/login` endpoint to writing an entire full-stack web-app, all deployed in a single LangGraph Server. Below is an example using FastAPI. @@ -34,7 +34,7 @@ def read_root(): ## Configure `langgraph.json` -Add the following to your `langgraph.json` file. Make sure the path points to the `app.py` file you created above. +Add the following to your `langgraph.json` configuration file. Make sure the path points to the `app.py` file you created above. ```json { @@ -58,7 +58,7 @@ Test the server out locally: langgraph dev --no-browser ``` -If you navigate to `localhost:2024/hello` in your browser (2024 is the default development port), you should see the `hello` endpoint returning `{"Hello": "World"}`. +If you navigate to `localhost:2024/hello` in your browser (`2024` is the default development port), you should see the `/hello` endpoint returning `{"Hello": "World"}`. !!! note "Shadowing default endpoints" @@ -67,7 +67,7 @@ If you navigate to `localhost:2024/hello` in your browser (2024 is the default d ## Deploying -You can deploy this app as-is to the managed langgraph cloud or to your self-hosted platform. +You can deploy this app as-is to LangGraph Cloud or to your self-hosted platform. ## Next steps diff --git a/docs/docs/how-tos/human_in_the_loop/add-human-in-the-loop.md b/docs/docs/how-tos/human_in_the_loop/add-human-in-the-loop.md new file mode 100644 index 000000000..51508ec46 --- /dev/null +++ b/docs/docs/how-tos/human_in_the_loop/add-human-in-the-loop.md @@ -0,0 +1,848 @@ +--- +search: + boost: 2 +tags: + - human-in-the-loop + - hil + - interrupt +hide: + - tags +--- + +# Add human-in-the-loop + +## `interrupt` + +The [`interrupt` function][langgraph.types.interrupt] in LangGraph enables human-in-the-loop workflows by pausing the graph at a specific node, presenting information to a human, and resuming the graph with their input. It's useful for tasks like approvals, edits, or gathering additional context. + +The graph is resumed using a [`Command`](../reference/types.md#langgraph.types.Command) object that provides the human's response. + +```python +# highlight-next-line +from langgraph.types import interrupt, Command + +def human_node(state: State): + # highlight-next-line + value = interrupt( # (1)! + { + "text_to_revise": state["some_text"] # (2)! + } + ) + return { + "some_text": value # (3)! + } + + +graph = graph_builder.compile(checkpointer=checkpointer) # (4)! + +# Run the graph until the interrupt is hit. +config = {"configurable": {"thread_id": "some_id"}} +result = graph.invoke({"some_text": "original text"}, config=config) # (5)! +print(result['__interrupt__']) # (6)! +# > [ +# > Interrupt( +# > value={'text_to_revise': 'original text'}, +# > resumable=True, +# > ns=['human_node:6ce9e64f-edef-fe5d-f7dc-511fa9526960'] +# > ) +# > ] + +# highlight-next-line +print(graph.invoke(Command(resume="Edited text"), config=config)) # (7)! +# > {'some_text': 'Edited text'} +``` + +1. `interrupt(...)` pauses execution at `human_node`, surfacing the given payload to a human. +2. Any JSON serializable value can be passed to the `interrupt` function. Here, a dict containing the text to revise. +3. Once resumed, the return value of `interrupt(...)` is the human-provided input, which is used to update the state. +4. A checkpointer is required to persist graph state. In production, this should be durable (e.g., backed by a database). +5. The graph is invoked with some initial state. +6. When the graph hits the interrupt, it returns an `Interrupt` object with the payload and metadata. +7. The graph is resumed with a `Command(resume=...)`, injecting the human's input and continuing execution. + +??? example "Extended example: using `interrupt`" + + ```python + from typing import TypedDict + import uuid + + from langgraph.checkpoint.memory import InMemorySaver + from langgraph.constants import START + from langgraph.graph import StateGraph + # highlight-next-line + from langgraph.types import interrupt, Command + + class State(TypedDict): + some_text: str + + def human_node(state: State): + # highlight-next-line + value = interrupt( # (1)! + { + "text_to_revise": state["some_text"] # (2)! + } + ) + return { + "some_text": value # (3)! + } + + + # Build the graph + graph_builder = StateGraph(State) + graph_builder.add_node("human_node", human_node) + graph_builder.add_edge(START, "human_node") + + checkpointer = InMemorySaver() # (4)! + + graph = graph_builder.compile(checkpointer=checkpointer) + + # Pass a thread ID to the graph to run it. + config = {"configurable": {"thread_id": uuid.uuid4()}} + + # Run the graph until the interrupt is hit. + result = graph.invoke({"some_text": "original text"}, config=config) # (5)! + + print(result['__interrupt__']) # (6)! + # > [ + # > Interrupt( + # > value={'text_to_revise': 'original text'}, + # > resumable=True, + # > ns=['human_node:6ce9e64f-edef-fe5d-f7dc-511fa9526960'] + # > ) + # > ] + + # highlight-next-line + print(graph.invoke(Command(resume="Edited text"), config=config)) # (7)! + # > {'some_text': 'Edited text'} + ``` + + 1. `interrupt(...)` pauses execution at `human_node`, surfacing the given payload to a human. + 2. Any JSON serializable value can be passed to the `interrupt` function. Here, a dict containing the text to revise. + 3. Once resumed, the return value of `interrupt(...)` is the human-provided input, which is used to update the state. + 4. A checkpointer is required to persist graph state. In production, this should be durable (e.g., backed by a database). + 5. The graph is invoked with some initial state. + 6. When the graph hits the interrupt, it returns an `Interrupt` object with the payload and metadata. + 7. The graph is resumed with a `Command(resume=...)`, injecting the human's input and continuing execution. + + + +!!! tip "New in 0.4.0" + + `__interrupt__` is a special key that will be returned when running the graph if the graph is interrupted. Support for `__interrupt__` in `invoke` and `ainvoke` has been added in version 0.4.0. If you're on an older version, you will only see `__interrupt__` in the result if you use `stream` or `astream`. You can also use `graph.get_state(thread_id)` to get the interrupt value. + +!!! warning + + Interrupts are both powerful and ergonomic. However, while they may resemble Python's input() function in terms of developer experience, it's important to note that they do not automatically resume execution from the interruption point. Instead, they rerun the entire node where the interrupt was used. + For this reason, interrupts are typically best placed at the start of a node or in a dedicated node. Please read the [resuming from an interrupt](#how-does-resuming-from-an-interrupt-work) section for more details. + +## Requirements + +To use `interrupt` in your graph, you need to: + +1. [**Specify a checkpointer**](../../concepts/persistence.md#checkpoints) to save the graph state after each step. +2. **Call `interrupt()`** in the appropriate place. See the [Design Patterns](#design-patterns) section for examples. +3. **Run the graph** with a [**thread ID**](../../concepts/persistence.md#threads) until the `interrupt` is hit. +4. **Resume execution** using `invoke`/`ainvoke`/`stream`/`astream` (see [**The `Command` primitive**](#the-command-primitive)). + +## Design patterns + +There are typically three different **actions** that you can do with a human-in-the-loop workflow: + +1. **Approve or Reject**: Pause the graph before a critical step, such as an API call, to review and approve the action. If the action is rejected, you can prevent the graph from executing the step, and potentially take an alternative action. This pattern often involve **routing** the graph based on the human's input. +2. **Edit Graph State**: Pause the graph to review and edit the graph state. This is useful for correcting mistakes or updating the state with additional information. This pattern often involves **updating** the state with the human's input. +3. **Get Input**: Explicitly request human input at a particular step in the graph. This is useful for collecting additional information or context to inform the agent's decision-making process. + +Below we show different design patterns that can be implemented using these **actions**. + +### Approve or reject + +
    +![image](../../concepts/img/human_in_the_loop/approve-or-reject.png){: style="max-height:400px"} +
    Depending on the human's approval or rejection, the graph can proceed with the action or take an alternative path.
    +
    + +Pause the graph before a critical step, such as an API call, to review and approve the action. If the action is rejected, you can prevent the graph from executing the step, and potentially take an alternative action. + +```python +from typing import Literal +from langgraph.types import interrupt, Command + +def human_approval(state: State) -> Command[Literal["some_node", "another_node"]]: + is_approved = interrupt( + { + "question": "Is this correct?", + # Surface the output that should be + # reviewed and approved by the human. + "llm_output": state["llm_output"] + } + ) + + if is_approved: + return Command(goto="some_node") + else: + return Command(goto="another_node") + +# Add the node to the graph in an appropriate location +# and connect it to the relevant nodes. +graph_builder.add_node("human_approval", human_approval) +graph = graph_builder.compile(checkpointer=checkpointer) + +# After running the graph and hitting the interrupt, the graph will pause. +# Resume it with either an approval or rejection. +thread_config = {"configurable": {"thread_id": "some_id"}} +graph.invoke(Command(resume=True), config=thread_config) +``` + +??? example "Extended example: approve or reject with interrupt" + + ```python + from typing import Literal, TypedDict + import uuid + + from langgraph.constants import START, END + from langgraph.graph import StateGraph + from langgraph.types import interrupt, Command + from langgraph.checkpoint.memory import MemorySaver + + # Define the shared graph state + class State(TypedDict): + llm_output: str + decision: str + + # Simulate an LLM output node + def generate_llm_output(state: State) -> State: + return {"llm_output": "This is the generated output."} + + # Human approval node + def human_approval(state: State) -> Command[Literal["approved_path", "rejected_path"]]: + decision = interrupt({ + "question": "Do you approve the following output?", + "llm_output": state["llm_output"] + }) + + if decision == "approve": + return Command(goto="approved_path", update={"decision": "approved"}) + else: + return Command(goto="rejected_path", update={"decision": "rejected"}) + + # Next steps after approval + def approved_node(state: State) -> State: + print("✅ Approved path taken.") + return state + + # Alternative path after rejection + def rejected_node(state: State) -> State: + print("❌ Rejected path taken.") + return state + + # Build the graph + builder = StateGraph(State) + builder.add_node("generate_llm_output", generate_llm_output) + builder.add_node("human_approval", human_approval) + builder.add_node("approved_path", approved_node) + builder.add_node("rejected_path", rejected_node) + + builder.set_entry_point("generate_llm_output") + builder.add_edge("generate_llm_output", "human_approval") + builder.add_edge("approved_path", END) + builder.add_edge("rejected_path", END) + + checkpointer = MemorySaver() + graph = builder.compile(checkpointer=checkpointer) + + # Run until interrupt + config = {"configurable": {"thread_id": uuid.uuid4()}} + result = graph.invoke({}, config=config) + print(result["__interrupt__"]) + # Output: + # Interrupt(value={'question': 'Do you approve the following output?', 'llm_output': 'This is the generated output.'}, ...) + + # Simulate resuming with human input + # To test rejection, replace resume="approve" with resume="reject" + final_result = graph.invoke(Command(resume="approve"), config=config) + print(final_result) + ``` + +See [how to review tool calls](./review-tool-calls.ipynb) for a more detailed example. + +### Review & edit state + +
    +![image](../../concepts/img/human_in_the_loop/edit-graph-state-simple.png){: style="max-height:400px"} +
    A human can review and edit the state of the graph. This is useful for correcting mistakes or updating the state with additional information. +
    +
    + +```python +from langgraph.types import interrupt + +def human_editing(state: State): + ... + result = interrupt( + # Interrupt information to surface to the client. + # Can be any JSON serializable value. + { + "task": "Review the output from the LLM and make any necessary edits.", + "llm_generated_summary": state["llm_generated_summary"] + } + ) + + # Update the state with the edited text + return { + "llm_generated_summary": result["edited_text"] + } + +# Add the node to the graph in an appropriate location +# and connect it to the relevant nodes. +graph_builder.add_node("human_editing", human_editing) +graph = graph_builder.compile(checkpointer=checkpointer) + +... + +# After running the graph and hitting the interrupt, the graph will pause. +# Resume it with the edited text. +thread_config = {"configurable": {"thread_id": "some_id"}} +graph.invoke( + Command(resume={"edited_text": "The edited text"}), + config=thread_config +) +``` + +??? example "Extended example: edit state with interrupt" + + ```python + from typing import TypedDict + import uuid + + from langgraph.constants import START, END + from langgraph.graph import StateGraph + from langgraph.types import interrupt, Command + from langgraph.checkpoint.memory import MemorySaver + + # Define the graph state + class State(TypedDict): + summary: str + + # Simulate an LLM summary generation + def generate_summary(state: State) -> State: + return { + "summary": "The cat sat on the mat and looked at the stars." + } + + # Human editing node + def human_review_edit(state: State) -> State: + result = interrupt({ + "task": "Please review and edit the generated summary if necessary.", + "generated_summary": state["summary"] + }) + return { + "summary": result["edited_summary"] + } + + # Simulate downstream use of the edited summary + def downstream_use(state: State) -> State: + print(f"✅ Using edited summary: {state['summary']}") + return state + + # Build the graph + builder = StateGraph(State) + builder.add_node("generate_summary", generate_summary) + builder.add_node("human_review_edit", human_review_edit) + builder.add_node("downstream_use", downstream_use) + + builder.set_entry_point("generate_summary") + builder.add_edge("generate_summary", "human_review_edit") + builder.add_edge("human_review_edit", "downstream_use") + builder.add_edge("downstream_use", END) + + # Set up in-memory checkpointing for interrupt support + checkpointer = MemorySaver() + graph = builder.compile(checkpointer=checkpointer) + + # Invoke the graph until it hits the interrupt + config = {"configurable": {"thread_id": uuid.uuid4()}} + result = graph.invoke({}, config=config) + + # Output interrupt payload + print(result["__interrupt__"]) + # Example output: + # Interrupt( + # value={ + # 'task': 'Please review and edit the generated summary if necessary.', + # 'generated_summary': 'The cat sat on the mat and looked at the stars.' + # }, + # resumable=True, + # ... + # ) + + # Resume the graph with human-edited input + edited_summary = "The cat lay on the rug, gazing peacefully at the night sky." + resumed_result = graph.invoke( + Command(resume={"edited_summary": edited_summary}), + config=config + ) + print(resumed_result) + ``` + +### Review tool calls + +
    +![image](../../concepts/img/human_in_the_loop/tool-call-review.png){: style="max-height:400px"} +
    A human can review and edit the output from the LLM before proceeding. This is particularly +critical in applications where the tool calls requested by the LLM may be sensitive or require human oversight. +
    +
    + +```python +def human_review_node(state) -> Command[Literal["call_llm", "run_tool"]]: + # This is the value we'll be providing via Command(resume=) + human_review = interrupt( + { + "question": "Is this correct?", + # Surface tool calls for review + "tool_call": tool_call + } + ) + + review_action, review_data = human_review + + # Approve the tool call and continue + if review_action == "continue": + return Command(goto="run_tool") + + # Modify the tool call manually and then continue + elif review_action == "update": + ... + updated_msg = get_updated_msg(review_data) + # Remember that to modify an existing message you will need + # to pass the message with a matching ID. + return Command(goto="run_tool", update={"messages": [updated_message]}) + + # Give natural language feedback, and then pass that back to the agent + elif review_action == "feedback": + ... + feedback_msg = get_feedback_msg(review_data) + return Command(goto="call_llm", update={"messages": [feedback_msg]}) +``` + +See [how to review tool calls](./review-tool-calls.ipynb) for a more detailed example. + +### Validating human input + +If you need to validate the input provided by the human within the graph itself (rather than on the client side), you can achieve this by using multiple interrupt calls within a single node. + +```python +from langgraph.types import interrupt + +def human_node(state: State): + """Human node with validation.""" + question = "What is your age?" + + while True: + answer = interrupt(question) + + # Validate answer, if the answer isn't valid ask for input again. + if not isinstance(answer, int) or answer < 0: + question = f"'{answer} is not a valid age. What is your age?" + answer = None + continue + else: + # If the answer is valid, we can proceed. + break + + print(f"The human in the loop is {answer} years old.") + return { + "age": answer + } +``` + +??? example "Extended example: validating user input" + + ```python + from typing import TypedDict + import uuid + + from langgraph.constants import START, END + from langgraph.graph import StateGraph + from langgraph.types import interrupt, Command + from langgraph.checkpoint.memory import MemorySaver + + # Define graph state + class State(TypedDict): + age: int + + # Node that asks for human input and validates it + def get_valid_age(state: State) -> State: + prompt = "Please enter your age (must be a non-negative integer)." + + while True: + user_input = interrupt(prompt) + + # Validate the input + try: + age = int(user_input) + if age < 0: + raise ValueError("Age must be non-negative.") + break # Valid input received + except (ValueError, TypeError): + prompt = f"'{user_input}' is not valid. Please enter a non-negative integer for age." + + return {"age": age} + + # Node that uses the valid input + def report_age(state: State) -> State: + print(f"✅ Human is {state['age']} years old.") + return state + + # Build the graph + builder = StateGraph(State) + builder.add_node("get_valid_age", get_valid_age) + builder.add_node("report_age", report_age) + + builder.set_entry_point("get_valid_age") + builder.add_edge("get_valid_age", "report_age") + builder.add_edge("report_age", END) + + # Create the graph with a memory checkpointer + checkpointer = MemorySaver() + graph = builder.compile(checkpointer=checkpointer) + + # Run the graph until the first interrupt + config = {"configurable": {"thread_id": uuid.uuid4()}} + result = graph.invoke({}, config=config) + print(result["__interrupt__"]) # First prompt: "Please enter your age..." + + # Simulate an invalid input (e.g., string instead of integer) + result = graph.invoke(Command(resume="not a number"), config=config) + print(result["__interrupt__"]) # Follow-up prompt with validation message + + # Simulate a second invalid input (e.g., negative number) + result = graph.invoke(Command(resume="-10"), config=config) + print(result["__interrupt__"]) # Another retry + + # Provide valid input + final_result = graph.invoke(Command(resume="25"), config=config) + print(final_result) # Should include the valid age + ``` + + +## Resume using the `Command` primitive + +When the `interrupt` function is used within a graph, execution pauses at that point and awaits user input. + +To resume execution, use the [`Command`](../reference/types.md#langgraph.types.Command) primitive, which can be supplied via the `invoke`, `ainvoke`, `stream`, or `astream` methods. + +**Providing a response to the `interrupt`:** +To continue execution, pass the user's input using `Command(resume=value)`. The graph resumes execution from the beginning of the node where `interrupt(...)` was initially called. This time, the `interrupt` function will return the value provided in `Command(resume=value)` rather than pausing again. + +```python +# Resume graph execution by providing the user's input. +graph.invoke(Command(resume={"age": "25"}), thread_config) +``` + +## How does resuming from an interrupt work? + +!!! warning + + Resuming from an `interrupt` is **different** from Python's `input()` function, where execution resumes from the exact point where the `input()` function was called. + +A critical aspect of using `interrupt` is understanding how resuming works. When you resume execution after an `interrupt`, graph execution starts from the **beginning** of the **graph node** where the last `interrupt` was triggered. + +**All** code from the beginning of the node to the `interrupt` will be re-executed. + +```python +counter = 0 +def node(state: State): + # All the code from the beginning of the node to the interrupt will be re-executed + # when the graph resumes. + global counter + counter += 1 + print(f"> Entered the node: {counter} # of times") + # Pause the graph and wait for user input. + answer = interrupt() + print("The value of counter is:", counter) + ... +``` + +Upon **resuming** the graph, the counter will be incremented a second time, resulting in the following output: + +```pycon +> Entered the node: 2 # of times +The value of counter is: 2 +``` + +### Resuming multiple interrupts with one invocation + +If you have multiple interrupts in the task queue, you can use `Command.resume` with a dictionary mapping +of interrupt ids to resume values to resume multiple interrupts with a single `invoke` / `stream` call. + +For example, once your graph has been interrupted (multiple times, theoretically) and is stalled: + +```python +resume_map = { + i.interrupt_id: f"human input for prompt {i.value}" + for i in parent.get_state(thread_config).interrupts +} + +parent_graph.invoke(Command(resume=resume_map), config=thread_config) +``` + +## Common pitfalls + +### Side-effects + +Place code with side effects, such as API calls, **after** the `interrupt` to avoid duplication, as these are re-triggered every time the node is resumed. + +=== "Side effects before interrupt (BAD)" + + This code will re-execute the API call another time when the node is resumed from + the `interrupt`. + + This can be problematic if the API call is not idempotent or is just expensive. + + ```python + from langgraph.types import interrupt + + def human_node(state: State): + """Human node with validation.""" + api_call(...) # This code will be re-executed when the node is resumed. + answer = interrupt(question) + ``` + +=== "Side effects after interrupt (OK)" + + ```python + from langgraph.types import interrupt + + def human_node(state: State): + """Human node with validation.""" + + answer = interrupt(question) + + api_call(answer) # OK as it's after the interrupt + ``` + +=== "Side effects in a separate node (OK)" + + ```python + from langgraph.types import interrupt + + def human_node(state: State): + """Human node with validation.""" + + answer = interrupt(question) + + return { + "answer": answer + } + + def api_call_node(state: State): + api_call(...) # OK as it's in a separate node + ``` + +### Subgraphs called as functions + +When invoking a subgraph [as a function](low_level.md#as-a-function), the **parent graph** will resume execution from the **beginning of the node** where the subgraph was invoked (and where an `interrupt` was triggered). Similarly, the **subgraph**, will resume from the **beginning of the node** where the `interrupt()` function was called. + +For example, + +```python +def node_in_parent_graph(state: State): + some_code() # <-- This will re-execute when the subgraph is resumed. + # Invoke a subgraph as a function. + # The subgraph contains an `interrupt` call. + subgraph_result = subgraph.invoke(some_input) + ... +``` + +??? example "Extended example: parent and subgraph execution flow" + + Say we have a parent graph with 3 nodes: + + **Parent Graph**: `node_1` → `node_2` (subgraph call) → `node_3` + + And the subgraph has 3 nodes, where the second node contains an `interrupt`: + + **Subgraph**: `sub_node_1` → `sub_node_2` (`interrupt`) → `sub_node_3` + + When resuming the graph, the execution will proceed as follows: + + 1. **Skip `node_1`** in the parent graph (already executed, graph state was saved in snapshot). + 2. **Re-execute `node_2`** in the parent graph from the start. + 3. **Skip `sub_node_1`** in the subgraph (already executed, graph state was saved in snapshot). + 4. **Re-execute `sub_node_2`** in the subgraph from the beginning. + 5. Continue with `sub_node_3` and subsequent nodes. + + Here is abbreviated example code that you can use to understand how subgraphs work with interrupts. + It counts the number of times each node is entered and prints the count. + + ```python + import uuid + from typing import TypedDict + + from langgraph.graph import StateGraph + from langgraph.constants import START + from langgraph.types import interrupt, Command + from langgraph.checkpoint.memory import MemorySaver + + + class State(TypedDict): + """The graph state.""" + state_counter: int + + + counter_node_in_subgraph = 0 + + def node_in_subgraph(state: State): + """A node in the sub-graph.""" + global counter_node_in_subgraph + counter_node_in_subgraph += 1 # This code will **NOT** run again! + print(f"Entered `node_in_subgraph` a total of {counter_node_in_subgraph} times") + + counter_human_node = 0 + + def human_node(state: State): + global counter_human_node + counter_human_node += 1 # This code will run again! + print(f"Entered human_node in sub-graph a total of {counter_human_node} times") + answer = interrupt("what is your name?") + print(f"Got an answer of {answer}") + + + checkpointer = MemorySaver() + + subgraph_builder = StateGraph(State) + subgraph_builder.add_node("some_node", node_in_subgraph) + subgraph_builder.add_node("human_node", human_node) + subgraph_builder.add_edge(START, "some_node") + subgraph_builder.add_edge("some_node", "human_node") + subgraph = subgraph_builder.compile(checkpointer=checkpointer) + + + counter_parent_node = 0 + + def parent_node(state: State): + """This parent node will invoke the subgraph.""" + global counter_parent_node + + counter_parent_node += 1 # This code will run again on resuming! + print(f"Entered `parent_node` a total of {counter_parent_node} times") + + # Please note that we're intentionally incrementing the state counter + # in the graph state as well to demonstrate that the subgraph update + # of the same key will not conflict with the parent graph (until + subgraph_state = subgraph.invoke(state) + return subgraph_state + + + builder = StateGraph(State) + builder.add_node("parent_node", parent_node) + builder.add_edge(START, "parent_node") + + # A checkpointer must be enabled for interrupts to work! + checkpointer = MemorySaver() + graph = builder.compile(checkpointer=checkpointer) + + config = { + "configurable": { + "thread_id": uuid.uuid4(), + } + } + + for chunk in graph.stream({"state_counter": 1}, config): + print(chunk) + + print('--- Resuming ---') + + for chunk in graph.stream(Command(resume="35"), config): + print(chunk) + ``` + + This will print out + + ```pycon + Entered `parent_node` a total of 1 times + Entered `node_in_subgraph` a total of 1 times + Entered human_node in sub-graph a total of 1 times + {'__interrupt__': (Interrupt(value='what is your name?', resumable=True, ns=['parent_node:4c3a0248-21f0-1287-eacf-3002bc304db4', 'human_node:2fe86d52-6f70-2a3f-6b2f-b1eededd6348'], when='during'),)} + --- Resuming --- + Entered `parent_node` a total of 2 times + Entered human_node in sub-graph a total of 2 times + Got an answer of 35 + {'parent_node': {'state_counter': 1}} + ``` + + + +### Using multiple interrupts + +Using multiple interrupts within a **single** node can be helpful for patterns like [validating human input](#validating-human-input). However, using multiple interrupts in the same node can lead to unexpected behavior if not handled carefully. + +When a node contains multiple interrupt calls, LangGraph keeps a list of resume values specific to the task executing the node. Whenever execution resumes, it starts at the beginning of the node. For each interrupt encountered, LangGraph checks if a matching value exists in the task's resume list. Matching is **strictly index-based**, so the order of interrupt calls within the node is critical. + +To avoid issues, refrain from dynamically changing the node's structure between executions. This includes adding, removing, or reordering interrupt calls, as such changes can result in mismatched indices. These problems often arise from unconventional patterns, such as mutating state via `Command(resume=..., update=SOME_STATE_MUTATION)` or relying on global variables to modify the node’s structure dynamically. + +??? example "Extended example: incorrect code that introduces non-determinism" + + ```python + import uuid + from typing import TypedDict, Optional + + from langgraph.graph import StateGraph + from langgraph.constants import START + from langgraph.types import interrupt, Command + from langgraph.checkpoint.memory import MemorySaver + + + class State(TypedDict): + """The graph state.""" + + age: Optional[str] + name: Optional[str] + + + def human_node(state: State): + if not state.get('name'): + name = interrupt("what is your name?") + else: + name = "N/A" + + if not state.get('age'): + age = interrupt("what is your age?") + else: + age = "N/A" + + print(f"Name: {name}. Age: {age}") + + return { + "age": age, + "name": name, + } + + + builder = StateGraph(State) + builder.add_node("human_node", human_node) + builder.add_edge(START, "human_node") + + # A checkpointer must be enabled for interrupts to work! + checkpointer = MemorySaver() + graph = builder.compile(checkpointer=checkpointer) + + config = { + "configurable": { + "thread_id": uuid.uuid4(), + } + } + + for chunk in graph.stream({"age": None, "name": None}, config): + print(chunk) + + for chunk in graph.stream(Command(resume="John", update={"name": "foo"}), config): + print(chunk) + ``` + + ```pycon + {'__interrupt__': (Interrupt(value='what is your name?', resumable=True, ns=['human_node:3a007ef9-c30d-c357-1ec1-86a1a70d8fba'], when='during'),)} + Name: N/A. Age: John + {'human_node': {'age': 'John', 'name': 'N/A'}} + ``` \ No newline at end of file diff --git a/docs/docs/how-tos/human_in_the_loop/breakpoints.ipynb b/docs/docs/how-tos/human_in_the_loop/breakpoints.ipynb index 7d52f25c9..9520d97ae 100644 --- a/docs/docs/how-tos/human_in_the_loop/breakpoints.ipynb +++ b/docs/docs/how-tos/human_in_the_loop/breakpoints.ipynb @@ -1,126 +1,214 @@ { "cells": [ { - "attachments": { - "e47c6871-a603-43b7-a8b0-1c75d2348747.png": { - "image/png": "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mmvklltusROkpaVJo0aNzFQyb731ljz66KO8QBBAAAEEEEAAAQQQQAABBBBAAIFCL0CIo9AfQnYAAQQQQAABBLxdQMMODRs2lJMnT5qhvv/++9KyZUvz/0OHDjUl4N9++21p06aNeUwvVukyS5cuNRembO3hhx+Wp556Suo63Nn+888/y7p16yQuLk5atWol119/van6oXdl33HHHea/1nb06FF57bXX0lXR0OdzWoreFhgZMGCACXLQEECgeAvEr18vx599VvzCw6XaypXFGyOf9t7bPme2bNkir776quzbt88uoIFBDWLUrFnTYyoaUrRNF/bVV1/Jtdde67G+6QgBBBBAAAEEEEAAAQQQQAABBBAoKAFCHAUlz3YRQAABBBBAoNgI6MUsDWDY2uDBg+WZZ54RvUv5uuuuk3PnzsmmTZukSpUqosv27NnTHvjQdfSilFbMsLXx48fb+5syZYroz9b2+eefy0cffSSLFy8W27Zsz0dGRpp1Dx48aB7S0MeePXtk//79ZkoXLUlvLVPvykEaNGiQfPzxxyYY0r17d1dWYRkEECjCAvHffy/Hn3tOfENCpPr69UV4T71n17zpc0Y/zx555BGDExISIs2aNTNVp/Szrm3btjJp0iSPwY0aNUqmTZtmtrNr1y7x8/PzWN90hAACCCCAAAIIIIAAAggggAACCBSUACGOgpJnuwgggAACCCBQbARef/11mTNnjn1/9YLWzJkzTZn5Tp06mTLzq1atMs9rEEIDGNpq164ts2bNkho1apgpVTSUoRU2tGmljqCgIOncubP5+Z577jEl5n///XdTsn7kyJHmgtlLL70kffv2Ncto2XmdtkWDGrpNHVN4eLj89ttv9sog27dvN2EOd1r//v1FgyO6zSeeeMKdVVkWAQSKoMD5devkxIABhDjy8dh6y+eMVpxq0qSJPbAxZswYCQwMNJ9lw4YNM59rGujwRDty5IjceuutpquBAwdK7969PdEtfSCAAAIIIIAAAggggAACCCCAAAIFLkCIo8APAQNAAAEEEEAAgaIsYK22MX/+fHn88cfN7moJ+Oeee85MaaIXtp5++mnzuN6hrFOraJDi22+/ldDQ0HQ8y5cvl379+pmLZElJSbJ582ZT1UPDHz4+PmZZaxBEp1b57LPPzOMrVqyQXr162furV6+eVK9eXb788kvzWE4vrun2v/76a1MRxFpxpCgfV/YNAQQyFzj/zTdy4qWXmE4ln14k3vQ5Yw2TaHWMG264QQICAuzTd3Xr1s0eRnSHR/dRP8P0czE2NtZ8/v3999/2qlJaiURDiTQEEEAAAQQQQAABBBBAAAEEEECgKAgQ4igKR5F9QAABBBBAAAGvFfjxxx+lQ4cOctNNN5lKGnfeeadwh6bTAAAgAElEQVSZukQDFD///LMZ908//SQVK1Y0/68BDg1yPPnkkzJ8+PAM+7VgwQJ55ZVXTIhj/aVpCrZu3SqVKlUyy65cudJMx2JtGzZskGrVqpmqHRoaeeCBB+Sbb74xd0rbWoMGDWTs2LFy+eWXu22p1Td0LDr2Nm3auL0+KyCAQNESOLdqlUS/+qoE1KwpVT79tGjtnBfujbd8zlSuXNn+GdKxY0dZuHBhOi0N+b3xxhtSunRptxRTU1NNVaklS5ZkuV6PHj3k+eefl5IlS7rVPwsjgAACCCCAAAIIIIAAAggggAAC3iZAiMPbjgjjQQABBBBAAIEiJfDBBx/I6NGj5c0335SnnnpK3nnnHZkwYYJ9H3UalBkzZth/1qlUtJKGVsX49NNP7Re7NHChdyHrBTD9/9mzZ9unUtm5c6eUK1dOpk+fbqY00TZ48GCJi4uTyZMny4ABA6RPnz72i2s65Yq2H374QY4dOya1atWSxo0b2yt5uHsA2rVrZ6Zoeffdd6V169burs7ymQjEf/ednF2xQioOGyY+QUE4IVBoBM4uXy4nhw6VwGuukYh58wrNuAvrQL3lc+buu++WVq1aiYYCly5dKlFRUaZalH5maVUoncYrJ23Pnj1y7733mlW1/5o1a8p7773ntCv97Pzwww9NcJGGAAIIIIAAAggggAACCCCAAAIIFFYBQhyF9cgxbgQQQAABBBAoFAJdu3aVtWvXypw5c6Rp06Zy5swZadSokb0Kht5Z3LBhQ/u+WJ/XUvT6nF4I04tYtqbBjIceesj827Fjh+hyVapUkX379plFtIqHhkaOHj0qt956q5maRStlXH311eZ5rQiilUE81WzVRTRE0qJFC091W+z7iZ03T2ImTZKKI0ZISMuWxd4DgMIjELd0qZwaOVKCGjaU8GnTCs/AC+lIveVzRkOKtinDfvvtNylVqpRHRA8fPmyCho5NP/u+++47M13LqlWrzOeeBkZsIRKPbJxOEEAAAQQQQAABBBBAAAEEEEAAgQIQIMRRAOhsEgEEEEAAAQSKj8ANN9wgJ0+eNFU0rrnmGrPjmzZtkjFjxphpVh577LEMGDrNilbr0ItTtqZBDK1yoVOX6J3G2hYtWmRKzNuaXtAaOHCgqfhhazNnzjQXtrTPF154wQRKIiIiZNmyZSb44dg0MJKUlOTWXcy2EIeWzr/llluKz8HN4z2NnT9fYiZMkDKPPy7lXnghj7dG9wh4TiBu4UI5NWaMBDdtKmETJ3quY3pyKuAtnzMbN240n1P6mdesWTOZOnWqBDlUEUpOTjYVoIKDg03A0NW2fPlyU8nKFlbUz8Fp06almwLsxIkT8uijj5oA46+//iq+vr6uds9yCCCAAAIIIIAAAggggAACCCCAgFcJEOLwqsPBYBBAAAEEEECgqAmMHz9e/vjjD3n//ffF39/frd1LTEyU06dPS4kSJSQ0NNTpun/99ZfpX5+/9tprnS6nF7Q0sHHgwAG577777FVAevXqJXXr1jWhjV27dsnXX38tBw8eNNvRZV1tW7duNSXztT9399HVbRTH5eIWL5ZTo0dTzaA4HnwP7XPSX39Jws8/S3CLFuIbEpJ1rykpIn5+Htly7EcfSczEiaaCjFaSoeWtgDd9zqxevVq6d+9udlgDg507d5bLLrtMYmJiRD8rVq5caT6DtGqTVm9yt509e9ZM/aWhRWctNjZW9B/Tqbgry/IIIIAAAggggAACCCCAAAIIIOBNAoQ4vOloMBYEEEAAAQQQQCCPBTSk0bdvX1OZw1nTO6Nfe+01adeuXR6PhO6zEzj31VcSPWSI+FetKlW/+CK7xXm+EAuknDgh57/9VhL37JGUmBjxDw+XEvXqSfBdd4mPQyUDV3cz9exZOXT77Wbx7Kq5aFhIQ0MV33pLQu65x9VNZLrcmenT5fQHH0jphx+W8oMG5bo/OihcAt9//70899xzpiKHs1avXj0ZNmyYXH/99YVrxxgtAggggAACCCCAAAIIIIAAAgggkE8ChDjyCZrNIIAAAggggAAC3iKQlpZmpnTZsmWLHD58WEqVKiW1atWShg0bypVXXkkJei85UHpR/8SlaVRqbt/u0qg0AJCwc6cEXn65+Neo4dI6nlwo7cIFSdy3T1JjYsSnZEnxLVvWjEWymNYg9cwZSUtOFr9LUyukJSTIqXHjJHH3binZpImU7dlTxMfHI8NUn6T9+yXt3DnxLVNG/CpWFP9q1bLtO+X4cTkzc6acW7FCfEqUkJK33SalO3aUwKuucrquO8unREdLZOfOknzkSIa+NMBTcdQoKVG37sXnUlLk3MqVcnb5crMf2vwiIiSkWTMJufde8QsPt/eR9M8/crRtW/NzQK1aUmXJEqdj1X6Otm9vnssQ9khNlcS9e0VDJuLvL37lyklAzZrm2GbVtAqHVuMo89RTUu7ZZ7P1ZYGiJ5CQkCBalWP37t2i05yEhYWZqcBuvvlmqmQUvcPNHiGAAAIIIIAAAggggAACCCCAgIcFCHF4GJTuEEAAAQQQQAABBBDwhED8+vVy/NIFcGuII/nwYYlbtkz8ypSRUm3aiK9lqp3j/fpJ/IYNZvM1Nm8Wn8DADEOJ37RJ4hYulPIvvWSqfJiWlmYPSmgQI37jRkn6+28p/cgj9mk4NDgQM26chHbtKmWefjpDv+dWrZKY8eMl5dSpdM8FN28uYW+95TyIkZZmqkWknjsnlefMkRLXXisnXnzRVKWwtQqDB0upS2GEHLumpMjp99+XM7NmZeii/CuvSOkOHTLtWqckierRI8N+6QqlHnpIyr/6qvhYpkpyd/nIrl0lYceOLHet/IsvSuA118ipUaNMSCazpsGSci+8YMajpkcffNA+7ho//ig+AQEZVo0ePNiEU7RFfPyxBP73v+b/tSrIyaFDM2xPgyIaCMlqepaTI0bI2WXLpGyvXhL6zDM5PmysiAACCCCAAAIIIIAAAggggAACCCCAQHEUIMRRHI86+4wAAggggAACCCDg9QIXfvxRonr1MuOssWWLuTB/Yds2OfH88+YCvTa94B4xb56In58JYhy48Ub7fmUW4rCFBrRCglZK0NBB5NNPm2kvQlq2lJhJkyRW+9TKDJcqKZxbvVqiLdNiVP38c/GvXt2+rdg5cyRm8mT7z37ly5tKIMkHD5oQQYnrr5fw9993Gio5cMMNZr0KQ4eaig+np05Nd2w0vGD2MYctLTFRol97Tc5/882/4wsPl4AaNeTC1q0X9/Ppp6Vc//5OtxDZpYupbpJZC2nRQiqOHm1/2p3lE3//XY499phZV8MR4VOmSMB//iNaLSdh+3YzJUlm21aX4DvvlORDh+T82rX210TQLbdI2Jgx4lu6tMQtXSqnRo40/WvwQityWJsGdY5emjpJgzIamNGmLhpcsTUNbJjjnZJiQh16fCvPmpVptRd9rehrRgMlWt2DhgACCCCAAAIIIIAAAggggAACCCCAAAKuCxDicN2KJRFAAAEEEEAAAQQQyDeBhJ9/NtNsaKu+fr3E//BDuiCFbSDlX3tNSrdrJyknT8rh5s3Nw0ENG0r4tGkZxpoaGyuHmjY1j5d57DEpd6nqhU7boutUGDZMjj38sD0QENKqlZR59FE59sQT6foq26ePqcihTatbnH73XfP/JRs1Eq1sYQt4aOWIuEvTeJR/+WVT2cOxHWrSxGxPQwwpUVHmaf3/gOrVTWhFW2aBlGwPRmqqqWZiq06ioZTQp5+2Vy850rq1fRoTaxUKW78aWDjWsWO6zWjYRKcvOf7ii3Jh82bzXKUpU6Rk48Ym4ODO8qY6yIwZF/uYPNlMH5OupaVJ4h9/mKlcrCEUrbih1TlMeEcLqcTHS+z8+XL6vffMz6VatzbHUh8/2LixeSxs/HgJvuuuf7tPTZXIbt1MSERDGlWWLzfTpah5VPfu9uNQccQICdKgjY+PCWbYwjzBTZtK2MSJTg/B8eeek/jvv5cKQ4aYajE0BBBAAAEEEEAAAQQQQAABBBBAAAEEEHBdgBCH61YsiQACCCCAAAIIIIBAvglYqzRoMOKUTkmiAYfy5c2Fcb2wb34OD5dqK1eaqhdHHnrIPKZTWOhUFo7NWmUjfMYMCbrxRjN1iYY4tJWoW1cSdu2yr1aifn17NQ1rX2aKlDFjTBWPow8/fHHd+vVNcMQ+ZUdqqhy+5x77dB4aFKi6cqX4lir1b1cpKXKgYcN0w9TldGoVXe7wvfea5yI++UQC69Rx2/7sp5/KyeHDL5p07ixl+/Wz95H0zz9y1DJNiwZQKjlUAbHa6Ioh990nFS9VttAKI8c6dDD7F1i7tkQsXJjO0pXltULIuZUrzTGttnZtpvunQRgNxGgr3b69mcLFWdMwjW3KmBobN4pPUJDYpthxXE9DHzETJphuNJhS6oEHJC0pSY488IAJ0+hxiFi8WPwrV7Zvyjr1ij5YefZsKVGvXoahaBUPreahFUq0UgkNAQQQQAABBBBAAAEEEEAAAQQQQAABBFwXIMThuhVLIoAAAggggAACCCCQbwKJe/bIMYepKPyrVjXTWPiFhZnqF7YL9tVWr5a05GQ50qqVGZ+1UoZtwNZQiD5mmxLFMaiQ2Q5qaEP7ODN79sVpXD7+WGI//FBi3nnHhBA0xOBXoYJ9dWvwwPZg2R49JNQyTYe1eohtGQ2CaFUQbVrVQqtb2EIG7uIf79NH4jdtMhVCKr3zjr1yhfZzYuBAOb9mTbourdvWJ2I/+khiLNUmwiZMMFOY2NrpadPkzKWKJzrlTdwnn7i1/AmtErJpkz2Ik9n+WadFUWcNjThr1mltqn/7rak4ErdokT0AVH3dOvEtUybddCm2QI72Z63+UnnmTDMNjv3146TKiD6vyzk2reShFT1yetzcPc4sjwACCCCAAAIIIIAAAggggAACCCCAQFESIMRRlI4m+4IAAggggAACCCBQZAS0koFWNLC2qp99Jv41apiHtGJG5FNPmf/XqTJ0Ko6DN99sfjZVFD75RDT0oU2DAtEvv2yfJkUfs12kdwxxBNSqZUIZtqlMdNkKgwdLqbZt5ezy5XJy6FDTv07xcmrsWBNc0AoeWj3D1rIKhlRZtkwCLrvMLOo4/YjjRX/bdCxZVZ/I6oAfbdNGkg4cSF+ZJCVFTn/wgb2SiXV9DUeEz5pl9k/bqTFjJG7hQvsiJvAwerSIr6957Mz06aYvbeqhwRp3ltcqGTqdSXaVOKwVRSrPnSslrr02w26rZVSXLuYY2yqD6ELJkZFypGVLs7y+Rkq3bStaUcM2hU2VhQtNsEObTtly4qWXLu7P99/bq6Zo1ZKoXr3s091YN67TrYRc6t/2eGSXLma/yj37rOgUNjQEEEAAAQQQQAABBBBAAAEEEEAAAQQQcF2AEIfrViyJAAIIIIAAAggggEC+CWiVCK0WYWsZLpanpsqhO+4wF+NLd+wo5QcOlNNTp6abZiX4rrsk9cwZObdiRYZx6/QZGppwDFxoSECrS8Rv2GDWsS2n/2+t5lH1yy/l/Ndfm0oc2jRoEXDFFRL/3XcmNKJNwxA6bUvSn39K9Ouv2x/TqhhaxSF+/Xo5/uyz5vGSjRtLpSlT0o3z7LJlcnLECAmoWVOqfPqp2/a2Shy6Ytm+fcXHz0/OfvaZCXZoC7zmGgmfMkViJk+Ws59/fvGx2rXNOPwqVbJPRWLdsE6pUuqhhyTl+HGJHjLE/lSNDRvkxMsv291sT2S1fGT37pL4229m0RqbN4tPYKDTfUw+dsxeZUWDORqqCahTR3x8fCRx/34TvohbsMCsq9PrRMyda6q12JotbOPYuWMgxFqJQ6uhaGglcfduY2Zr+popcfXVcrRDB/tj+trT16Ct2dw1+KNjpSGAAAIIIIAAAggggAACCCCAAAIIIICA6wKEOFy3YkkEEEAAAQQQQAABBPJNQKctOX0p1BDSqpVUHD48w7ZtlSC0ekaVJUsk7fx5EyzQYIZj00BFJZ2CZfp0e8hCgwMa1jjxwgtmca2aoNUTtI9zX30l2m/EvHniU7Lkxe7S0uRwy5amIkOlyZMlUC/mP/RQugoftu1qmKDytGn2yiFnZs40IRNbC+3WTTRkcuyxx8xDOn7dnrVZK3XYpn9x5wBomEQDBc6aTrESNm6c+AQHS1pSkpx48UUTKtGmlTE0mBD7ySeSsGOHmUIlYfdup5UodHlbpZLIrl3dWl73XYMx2rRySmCdOpnu3qm33jJTo2TVjPn06eJfvXq6xVJjY03VFlt4RZ/U6XE0pJGupaWJ2YedO51uptLbb0vJ2283zzlWigm++27joFO4nBw2zIRi9DVX7dtvxcff353DxrIIIIAAAggggAACCCCAAAIIIIAAAggUawFCHMX68LPzCCCAAAIIIIAAAt4qoBUajnXqZAIFVZYuNRfHHZtW4Thy770mRFFz+/aLT6emmsoJ51atMlOi6FQnWg1CL9j7VaggKSdOyMmRIyXpr79EgxHJJ07IkfvuM9UuIhYsEJ+gIEk9fVrOrVkjIc2bi2/Zsuk2e+7LL01VDa1WodUzdJw6PYc1IKBVGUKfecaM3dq0wsfpadPMQ6a6xrJlJgyg1UIyBAourXjyzTdFq5JU+fzzDP25cuy0Csmp0aPtQRMdU5nOnaV0hw7iExBg7yLtwgVT+cQW5NB9SNy714QyyvbsKaXatDFu8d9/b9bRgIIGFzRgo1UrtNlCHK4uHzNpksTOm2fWtU5f4my/0hITzdQ1OqVN0v796RbRQEqp9u0lWAMWfn5OWZIPHbJPo1L+pZck6NLUO44Lp0RHi05jc37dOvtTOg2LVjLRKiXWZq2koo9XXb5c/KtVE2tFj8ymf3Hl2LEMAggggAACCCCAAAIIIIAAAggggAACxVGAEEdxPOrsMwIIIIAAAggggEChEEiJiREfX1+nAQ7bDlzYvl2S/v5bSrdrl/N9Skm5uG4mAQDHjjVQkG7qj7Q0SY6KEklJEf+ICBFf30zHknzwoAl8aIggs+lD0q2cmmoqgLg6NmcbTktOlpRjx0xFEb+KFbN0Sti1y1TmCLrhhn9DGX37SmiXLmY9rWqRev68+Ot0JQ5e9hCHi8urY+zcuRLwn/+YQIirLfXsWdF/WuFCgzni4+Pqqi4vp689Ddf4V6mS5XHSwE/CL79I4LXXpgvZnPv6a1MZJuTee00wiIYAAggggAACCCCAAAIIIIAAAggggAACrgkQ4nDNiaUQQAABBBBAAAEEEECgmAnYQhk6xYxONZNdc3f57PrjeQQQQAABBBBAAAEEEEAAAQQQQAABBBAofgKEOIrfMWePEUAAAQQQQAABBBBAwAWBqB49zHQvZXv0kNAePbJdw93ls+2QBRBAAAEEEEAAAQQQQAABBBBAAAEEEECg2AkQ4ih2h5wdRgABBBBAAAEEEEAAAVcEoocMkXNffSWl27eX8q++mu0q7i6fbYcsgAACCCCAAAIIIIAAAggggAACCCCAAALFToAQR7E75OwwAggggAACCCCAAAIIuCIQ8847EvvhhxJ0yy0S/t572a7i7vLZdsgCCCCAAAIIIIAAAggggAACCCCAAAIIIFDsBAhxFLtDzg4jgAACCCCAAAIIIICAKwJnP/9cTg4bZhattnq1+IWFZbmau8u7MgaWQQABBBBAAAEEEEAAAQQQQAABBBBAAIHiJUCIo3gdb/YWAQQQQAABBBBAAAEEXBRIOXFCDrdoYZYu26ePhHbtmuWa7i7v4jBYDAEEEEAAAQQQQAABBBBAAAEEEEAAAQSKkQAhjmJ0sNlVBBBAAAEEEEAAAQQQcE8gsmtXSdixQ4IaNJDw6dOzXdnd5bPtkAUQQAABBBBAAAEEEEAAAQQQQAABBBBAoFgJEOIoVoebnUUAAQQQQAABBBBAAAF3BC78+KNE9eolZXv0kNAePbJd1d3ls+2QBRBAAAEEEEAAAQQQQAABBBBAAAEEEECgWAkQ4ihWh5udRQABBBBAAAEEEEAAAbcFUlJE/PxcX83d5V3vmSURQAABBBBAAAEEEEAAAQQQQAABBBBAoIgLEOIo4geY3UMAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQACBwiFAiKNwHCdGiQACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAJFXIAQRxE/wOweAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCBQOAUIcheM4MUoEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQKOIChDiK+AFm9xBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEECgcAgQ4igcx4lRIoAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggEARFyDEUcQPMLuHAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAoVDgBBH4ThOjBIBBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEirgAIY4ifoDZPQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBAoHAKEOArHcWKUCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIFDEBQhxFPEDzO4hgAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQOEQIMRROI4To0QAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQACBIi5AiKOIH2B2DwEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQKhwAhjsJxnBglAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCBRxAUIcRfwAs3sIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgggUDgECHEUjuPEKBFAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEECgiAsQ4ijiB5jdQwABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAIHCIUCIo3AcJ0aJAAIIIIAAAgi4JRAdHS07d+6UXbt2ya+//ir33XeftG/f3q0+WBgBBBBAAIHMBI4fPy5TpkyR8+fPS506deSyyy4z/2rWrClBQUHAIYAAAggggAACCCCAAAIIIIAAAgjkUIAQRw7hWA0BBBBAAAEEEPAWAQ1s7Nmzx/zT0MaOHTvk0KFD6YYXEREh/fv3l9tuu01q1KjhLUNnHAgggAAChVAgKipK/v77b+nYsWOG0YeFhUnbtm2lXbt2cuWVVxbCvWPICCCAAAIIIIAAAggggAACCCCAQMEKEOIoWH+2jgACCCCAAAII5Ehg7969snnzZvn0009l+/btbvVxzTXXSIcOHcy/4OBgt9ZlYQQQQACB4ifwZ1Ss/LRtq2zdvEk2ffeNHD6wP1sEX19fE+TQf40aNcp2eRZAAAEEEEAAAQQQQAABBBBAAAEEELgoUOxDHOfOnZOkpCQpW7Zsvrwmzp49KwkJCRIaGir+/v75sk02ggACCCCAAAJFQ2DLli2yYcMG+eqrr2Tfvn0Zdqp6pUpS74orpP4VV0id6tWlRECATFq8WP5bo4YkJCbK3sOH5ac//rCvV6tWLXuYo0KFCkUDib1AAAEEEMi1wO9/7pfvt2llp52yc+tmOfrXbqd9BpcuKxWqXiYRta6WMhXCZf8vm6RSzTpyaM92ObLvV/s6Le69V94cNkwqV66c67HRAQIIIIAAAggggAACCCCAAAIIIFDUBYpdiOO3336TlStXyqpVq9Jd/NCy4+XLl8/z4z1ixAiZMWOG2Y5eLLn++uulZcuW0qxZMxPsoCGAAAIIIIAAAlaB48ePy8cffyyff/657N//753PpUNCpMGVV8q1//mP1K1VS66vXVsqlSuXLd7GX3+Vpd99J19t2iTxCQlmeb2oplOtPP7449muzwIIIIAAAkVXQCs8TZ0xW75fuyrDTmpYo8rl15h/EVdc/G/p8mFOMVJTU2Tz8rmyaflciT588bOrVp3/yujhw+SWW24puoDsGQIIIIAAAggggAACCCCAAAIIIOABgWIT4jhx4oQMHz7cXABx1v766698qYyhAQ4Ncji2kJAQGTlypDz00EPi4+PjgUPr3V389NNPsnPnTrn33nulatWq3j3YIjC6M2fOyPnz582e6OuLO+BcO6hpaWkSGRlpXzggIEAqVqzo2spFbCl9Da1YsUJ0jvOmTZvmy/tlESNkdxDIkcDbb79tAhxRUVH29W9r2FA6N28uza6/Pkd92lY6fOKEzF6xQv735Zf2fp5++mkZNmxYrvplZQTyUiBp/34JqFUrLzdB3wgUSwH9rjd0xChZtugT+/77B5aQq25pZv7VaXiHhIS6X7Hpwrk4e5gj9mSkBJYIkuFvDpNHHnmkWDqz0wgggAACCCCAAAIIIIAAAggggIArAsUixPHnn3/KAw88IDp1irOmFTHcnUveFVxny2j58969e2e6eseOHeWtt94SnT+4qLbnn39eli1bZt+9KVOmmONDyzsBvdvt2LFj9g0cOHAg7zZWhHrW94yrr77avkdXXXWVqeJT3Nrvv/8uLVq0sO+2Tr+wdu1a8fPzK24U7C8C+Srg+Hl5Ve3a0q1lS2l/220eHce3O3bIO0uWyPa9e02/jRo1kk8++fcinkc3RmcI5EJAAxwnXn5ZAi6/XEK7dJHAK6/MRW+5WzVm4kQRX18p99xzueuItRHwAoFdu3bJiy+9JL/v2WNGU7V2XbnxnodNeKNsuGcC96eOHZAV00fJbxsufpfu2bOnDBo0yAv2niEggAACCCCAAAIIIIAAAggggAAC3vDzeAUAACAASURBVCdQ5EMcBw8eNNUtTp48mUH/jjvukAYNGphyrjfddFO2R0crGeiFyy+++CLdHbHaf5cuXbJdXxfQO5y0Dw2NbNy4MV1ZdFsHBXEXrJZq79atm30fevToIa1atcp0n3RaGutJt8GDB7tkqEECx/K59erVk+XLl7vkpwudPn1a4uLizPJaVaJatWour1tcF9QggjXERIjDtVcCIY6LTkOGDJG5c+emQ5szZ46pyFEQLT4+XqKjo+2brlSpkpQoUaIghsI2EcgzAf1cnTdvnr3/ji1ayCsdOkj5MmXyZJtJycnyztKlJsyhLT8DrnmyQ3RaJAXS4uPl2OOPS9I//5j9K9u7t4Ravr/m+U6npkrM229LclSUnF+zRvzCwqTa6tV5vlk2gEBeClhvMgivWUdubdNZbmr5WJ5tctX/Rst3iz4w/d99990ya9asPNsWHSOAAAIIIIAAAggggAACCCCAAAKFVaBIhzh0KgQt06rz+lrb/fffLxMnTnTpol9ycrJZ/7PPPpPFixc7Pc7PPPOM6MWWnDSdVqRTp04ZqoTk9wXSI0eOyK233mrfhX79+smLL76Y6S5t3bpV2rdvb39+7NixolVEsmt79+6V5s2bp1ssIiIiwzHKqh+tVPL+++/bF1mwYEG6sWc3huL4PCGOnB11QhwX3fr06SNfWqZb0McmT55sAnIF0f7v//5POnfubN+0Vit4jjuhC+JQsM08Ehg1apRMmzbN3vvIZ56RJ+65J4+2lr7bz3/4QfpPnmwerFGjhqxfvz5ftstGEHBVIGHXLjkxYICkXApol3v+eSnTqZOrq+d4ubSkJIkeOFDOr1tn+vAJDJSKo0dL8J135rhPVkSgoAX0byr920qbBjgeG/yeVKpZO8+H9dPXS2TJ+BfMdkJDQ+WXX37J822yAQQQQAABBBBAAAEEEEAAAQQQQKAwCRTpEIdWd9AwgrU9+eSTMnToUJenAdBggmMIxPEA5ybEoX1psEHDJtZqIXrhZM2aNRIUFJQvr6f8CnHozrRr1062bdtm3y+t6KHldF1tjiGO/A68uDpOb1qOEEfOjgYhjotuGzZskMce+/eOzJCQENEAWsmSJXMGm8u1HEMcvXr1kldeeSWXvbI6At4hMGnSJHn77bftg/nirbfkussvz9fBfbx2rQy6FCLR3/3Ro0fn6/bZGALZCcRv3GiCHGmJiWbR8q+8IqU7dMhutRw/n3bhgpx44QWJ37TJ9OEbGiphb70lQTffnOM+WRGBghbQyootW7Y0w8jPAIdtv7eu+kSWTRxoftQKkO+9915Bk7B9BBBAAAEEEEAAAQQQQAABBBBAwGsEinSIo1mzZrJv3z47tlaOmDBhglv4DzzwgPz8889ZrpPbEId2rtO+NGnSJN128vNO9/wMccTExMjSpUtFTxzec889pjKHv7+/y8eFEIfLVPYFCXG4b6ZrEOK46KZVjbZs2WKmPdK7JTV0pkGzgmqEOApKnu3mtcAff/whbdq0sVfnOpBJBbC8Hof2P+PLL2XEnDlmU1ptTL/r0BDwJoFzq1dL9KBB9iFVeOMNKfXggx4fYuq5c3Liuefkwk8/mb79K1eWim+9JSWuu87j26JDBPJLICkpSa699lq5cOFCgQQ4bPu5/N3XZdPyi581AwcOlN69e+cXAdtBAAEEEEAAAQQQQAABBBBAAAEEvFqgyIY49uzZI/fee286/K+//lquvPJKtw6INcShFy01CKJ3n48cOdLeT48ePeTVV191q19nC+v0JdYpW+644w6ZO3durvt1pYP8DHG4Mp6sliHE4b4gIQ73zXQNQhw5c8vrtQhx5LUw/ReUgPV7wP9eflmaN2xYUEMx231nyRKZsHCh+X+dhk4radEQ8CaBuCVL5NSoUfYhVRw1SkIcvv/nZrypsbFyvF8/0SlctAVcdpmEjR0rAVdckZtuWTcfBZL275fza9ZI8F13SUDtvJ8mJB93LVebeuONN+TDDz+UoFJlpPu4hRJx+dW56i83K+u0Kjq9ijZXp+jMzfZYFwEEEEAAAQQQQAABBBBAAAEEECgMAkU2xKEVN9555x37Mbjllltk4aULEe4cmCFDhkhwcLAp8Vq3bl3x8fGR77//XjpZ5t72VIhj586d8qDDHYTbt2+XChUquDPkHC1LiCNHbOlWSklJkdTUVPH19XV5up7cb9W1HjILceiYo6OjJS4uTqpVq+bR6Xu078jISNE7/bRvd6qt2PZK19c7BN1d31PHIr9DHGfOnJHz58+b9xyteJGbduLECVNBo3z58jmyz822XVlXbY8fPy6BgYESERFhfm9cbYQ4XJViucIk8M0330iXLl3MkHs++KAMeuIJrxj+U6NGybodOyQ8LEy+XLFCKlWq5BXjYhAI2ATOzJ4tp6dMsYOETZggwXfemWuglJgYOd67tyT+8YfpK/CqqyRs3Djxr1Il133TQf4JaMhHwz7aSjZpIiHNm5tAh09wcP4Nwsu2NH/+fPsNCPf3ekMat7n42VOQbe7rXWXP5rVmCF9++aX5u5uGAAIIeFJA/z5OTk42Xeq0xeXKlfNk9/SFQLEX0PNweo7H1sqUKSM6FS8te4HY2Fh7NU5dWt+f8mt69exHl79L6NTNen1Eb8ytWrVq/m68EGzNdt5Yh6rXqCpXrlwIRp1+iPo+8c8//5h/2vS6l/7Tc8Ph4eGFbn8YcN4KREVFmetthfk1n7dC9F4cBIpsiOOJJ56Q9evX24/h9OnTpUWLFh45po4hDk9Mp2IbmOP0LXqS7bbbbvPIuLPqJC9CHHqR1rEairMx9OnTx0zPkFnTY3ngwAH70ydPnkz35VY/6LP6w+Ddd9+VevXq5bnhvHnzTMl5a9NxXXHFFdKwYUMzBp06Riu55HdzDHH89ddfZt7pDz74IJ1l7dq1RQNPAwYMMBf/nbVHH31UDh8+nOGpp556Srp16yZ6fMaMGZMhNNWgQQMZMWKEXHXVVZnuvp5UmTlzpqxbt85MY6SvIVvT9fR34bnnnpNSpUplSeipY+FuiGPQoEHyww8/2MemFXtuv/32dGPt2rWr7N271zym70n6mtHphd5++20zrZKtaeUfNdNjUb169WxfMhrYWLRokXz11Veybdu2dHb62rv11lulX79+2f4RrX1MsVwMc7ZhDeR8++232Y5Jf/ds4Tn9Pf3ss89kw4YN5vXhOE2VTieloTln1ZLURo1sTY+Lvs5sTX/Psgq7de/ePV3wLtuBswACBSCgn4ObNm2SNk2ayNv9+xfACJxvcsuePfLw66+bJ59//nnzHkxDwNsETr/7rpyZNcs+rErvvislb701x8NMiY6WqB49JOnvv00fJW64wQQ4/Ljgk2PTglpRK3Gcfv99Of/NN/Yh6JQ4wXffbf6VqF+/oIZWINtNSEiQu+++Ww4dOiRX33qPdBo6o0DG4bjR3zd/I3Nevxgmeeyxx2T06NFeMS4GgUBhE9Cpa/38/EQvntL+FdD3POt5Nf07XM8R0hBAwHMCn376abq/Fd98803R84S07AXGjRsnev7M1mbNmmW+rxW3pucbli1bZt9tPTep10lo/wroOftjx47ZH7BeL/FmJz3fP2PGDHO+2Xqu3zpmvYFar1XQELAKFNXq8nrTs17b0GssFStW5KAjkKVAkQxx6MXMa665Jt2Hgs4z76kUa16GOPTDSi9w2lp+zUOfFyEOre6gcy1n11577TXRi6yZtZo1a2bXRZbPL1myxIQo8rqNHz8+24vfeqF56NCh+f4l1PEDT0v263gzazpO/XJ14403Zlgks+PRpk0b06cGd/bt25dp3/qF3Fm/GmDo37+/7NixI8tDpclcrbJz0003Zbqcp46FuyGOG264IV24YM2aNVKnTp1047QeC50ySavvaFAjs6YBhdmzZ8vNN9+c6TKaxNZ5xFeuXJmlnQZDNLij74+ZNcfpijJbzpU/FPR4fv755/YuNMTx0EMPZTlG/cO1devW6Zbp2bNntvuWVacvvfSS9O3bN6/fAugfgRwLaPiqd+/eUq5MGVk5dqxE5EMFLncGO/bjj2Xqp59KpYoVTTUO7o5wR49l80vg1LhxErdggX1z4dOnS1CDBm5vPiUqSiK7dZPkI0fMuhoG0eoePiVKuN0XK3iPQOLu3XJu5UrzL+XUKfvAgho2NJU5St5xh2i4o6g3/V6m38+8YRoVR2uqceTPq69jx47mDt+77rrL/H2R27+182fUbMWZgJ730kpuesfyb7/9ZkLytqC7/s2sFW307z69MSA/bgzy5qOkN7Hoa97WikuIIz4+3lRetTWtqFeC7zPe/FJ1eWynT582FXW16d34Wr22oNsnn3xizkvZGiEO148IIQ4xwQQNKFib3pC2fPly1yE9vKRWAEhMTDS96nunN1QlLYwXtPUagd4M9Ouvv2Z5hDx5k7SHXwqFrrvXX3/dfD+0tbJly4qGw5xVSdcqSnpNx9b0HHzLli29Zp8L42s+s+/tP/74o3zxxRfmGofjzal6TUlvwO3cuXOB3ADuNQecgTgVKJIhDv2QtV7g1Yugu3fv9thLIC9DHI7J5Q4dOoh+mcvrRogj98IajFi8eLFLHWnI4OGHH3ZpWU8s5PiBpyEN64dFZttYu3ataHUOa8vsRJ9+udaTgq+++mqWQ27atKnMmTMn3TJa2lQDDZmlcZ11qHesV8mkpLmnjoU7IQ7dBz1BZm16ssjxC5L1WKitflnav39/tod51apVTquYaJo5u+CMY+daRaNWrVpOt5mXIQ49caZToWTV9P1aj611OhlCHNm+PFigkAtolSINznVq0UJGdOvmdXtz7sIFU43jt7//luf695fnX3jB68bIgBBQgZPDhslZS3jQ3SBH8tGjEvn006KVOLRppQatwEErOgI6Tc75NWvMvws//WTfMZ+gIAm+4w4p2bSp+a/+XBRb9569ZPXKFXL7wz3kvmey/s6e3/tPNY78EXf8W+66664zNzzceeedopXxaIVDQCtuvPzyy/L111+7NGA9tpMmTZKwsDCXli9qCxXXEIfjNKRU1Ss6r2zH8zYLFiwwF38KshHiyLk+IQ4xFYu1erW1aSBx8+bNOYfN5ZpaGcIaPNizZ4+Z/rogW2G7oK3nrPW4unLem+CX515ZjjMUaM96g6g10Grbml6XsF4j0MCNfl/wllbYXvPO3PT1rzexb9y4MVtWvQFXK5I7uwE625VZoMgKFMkQx59//pmu7JhWg9C7XD3V8jLEoVMNaAlZW7vnnnvMhZ28bnkR4tA7Q1asWCFnz55NN3yd6kGnbLC17CpxaEJNP1BsTYMuOt2GrWlSM7OKH76+vuYCd2BgYF4TigYe9E1ZyxRrSaTz58+bJLGeMNAveo7tu+++k8suuyzPx6UbcPzAs230hRdekPr160tAQICZgsOxOsf9998vU6dOTTdGTUHb5iLTqg62fdOL73ryT+ex1hBV+/btzZeA1atXZ3gN65dw/TJua5oQdQx2aIBJ+9Fj+Pfff2eocqL9T5gwwamfp46FOyEOnTZET6TZ2vXXX2+mD3FsmR0LDZ5oEEa/4P7yyy/mJJu1acUOrUDi2ByDX/q8Tj2jx6506dJmehfHk3vOjqutX62EYpvuxbqtYcOGpQvZ5KQSh60/vfNJTzDo1EJ695i+RqxNX5d6l6it6eslMjLS/rP+EWV9X9QvoeqTWdM0f2GcJzJf3hzYSIEL6HygGm7T95sPXnhB7nO4+6TAB3hpAJMWLZK3Fy+WSmFhsu6777Kdmslbxs04ip/AiYEDzQV6W3M1yJF86JAc69RJUmNjzaoh998vFd98s/gBFqM9vrBtm5xfu9a8XjTcYWtakUMrc5Rs3FhKNmok4udXJFT07xQtza3f4/tMWS7Vrsz76SbdhZv96pOyd9t3ZjX9m0IrCdA8K6B/g+r3fb07z3F6RP07RU+0N2vWTDTcQfNOAQ2865S0rtyUYd0DPWeiVUoLYnrXgpYkxHHxCPTq1UteeeWVgj4cbN8DAo4hDj2fpn9TFmQjxJFzfUIcF+3atWtnzk3bmk5ZrTd1FVRzDHHouUg9z1qQrbBd0HY8V652Gix9+umnzfTz6qnnwvTGSK0oRNVXz7y6nIU49Ny5BjkcGyEOz5hn1ov+3ZVdVXLHdZ3d4Jq3o6R3bxcokiEOPSFhvaCnJyFmzpzpsWORlyEOLTGl47U1vfioH3h53RxDHFqpQS/0ZtY0nGC9MDx27FhThcGV5njRObsQh2Of3vjHSnb7/fvvv5s/lq1ThejckJoyzY/m+CVPPww0YOMYItGyThqesLbMKkDoMlriyVpZQfvVahQ6v6x1+iLHL+LWKVU0oOH4x6b+8ddIT5pb2j///CNt27ZNd7JKAwD6pc+d5s6xcCfE4biPGkzp2rVrhqG5eiwc75rRjhyDP1rW7/bbb083H6K+f+iUJNaTcxp40Dv9rU2Pf1bTqjgOPCfzLjpOp6J9aprUWqZNH9N5zzUQZGvZhdccbTgZ5c5vAMt6m4D+TthCW798+KGEhoR42xDNeHbu2ycPXqq0pFWnsprSyit3gEEVK4Hj/ftL/A8/2Pc5uyBH0j//yLHHHpO0CxfMOqXbt5fy2VQWK1agRXxnU8+ckfgNGyR+40bzX/3Z1vwjIiSoUSMT5tB/PgV8911uDsWUqe/J+LFjpMZVN0ivyZ/mpqs8W3fdJ1Nl9ayxpn93/0bMs0EV4Y537dpl/qbXALxj5VL9W8wW6GDKFe95EWgYS2+ccGx684RWVNGghp+fn2zdutUcW2ulS/07/aOPPiLEISLFZToV/m72nt9dT4/EG8+LEuLI+VEmxHHRTqtMLV261EwRpucF9XuIs+kfci7t3pqEONzzclxab3DVqfusoVM9T67f8fW7Ci3vBJyFOHRrevO44/RbhDjy7jjo93D9fu5YeV6vn+mUNfr7oTeDr1mzJt0N6zqibt26yZAhQ/JucPRcqASKZIjDsZrFk08+KcOHD/fYgcnLEIfOa6h349ua3lGvF9HzujmGONzdHiGO7MVOnTpl5qK1vXHrSRT9cpofzTE4oFOe9OjRw+mmtWSWhixsLatlHUMcus5PP/0kFStWTNf3lClT0lX5mDZtmqmQou39998X/QPU1rQiRb9+/ZyOTcdlLeml/T7wwANuE7p6LFwNcWh1EscxZzbdizvHQqvMWMNSgwcPFn3M1vTknFYksTZ9zNk8jeqk8yTbmo5XrV1tnghx6JQ5c+fOzbBJ/UKvc7/Zmp6EdLwz0LoSJ6NcPWosVxgEnn32WVO1p0m9evLR4MFePWQNcWiYQyvz6J0TNAS8WSCya1dJ2LHDPsTMghxJf/0lRzWInJpqli3TqZOU86Lyod5sXBTHllWgw69ChX8DHbfeKr6hoYWK4P4H28qunT9J6z7D5NYHvfM9/MBv2+SD59sZ1+JykdVbXkR6DkXDHPodXEP2tqYn2bWCiwbF9b+Of+d5y/iLyzh69+6docqsfpfUf44XRPSuVv2+pncOa/j2ww8/LLaV1KjEcfE3hJsfis47BSGOonMsdU8IcXjn8STEkbvjojdj6nlgW9ML11u2bJFSpUrlrmPWzlYgsxCHfl8cMGBAuvUJcWTLmasFHG+s1Sru+n1MK89bm97cqje5Wn9fHEP2uRoIKxdqAUIcOTh8hDgyohHicO2F5Pghql9ofHx8XFs5F0s5Bgf05Jx1vjNr1zp1hbWqSlYhKMcQR2aluTRRaJ0uRafL0OlGtGmFEp2/09b0jrAyZco43dsLFy7IlVdeaX/upZdekr59++ZIxpVj4UqIQwMFOgZrqlIrhjhOh2IbpDvHQiuNdOnSxb5/6j106FD7z45VbbKaJsUxAJPZ9CyZYXoixKF/mDpWesnMJavpWghx5Oglz0peKmALWL3WqZN0z0EoLT93S6dT0WlV9PdYf59pCHi7wNF27STJcjHSMciRuHevHHvkEftuhHbvLmULsGSvt3sWt/Hp1DrxmzbJhU2bzH9TTpywE2iAw0y3otPDNW7s9YEOvRPu2rrXyYX489L33S+kah3vnSpjWNu6cuFsrJQvXz5dFcPi9voryP3V6RjXr18vet7DevJQ/0bTk/F615j+q1OnTkEOs9ht27HirAL873//M3cqZ9bi4uLMNJR6A4dePMlJ0+lxtRJrWFiYlC1bNssu9EKATtmkJ6bz8i7bM2fOmOlrg4ODJdSFQF1WIQ4ds95UoH1WqVIlx045sXVlHa2+qTd7xcbGGlfdX/1d1Clxs2t5/XezjkmPg74urJVYsxtXZs/rayc6OtpMp1yuXLlc96lT1eoY9djq/6ub/svvKYV029r0+DletMmpVWELcej5sqioKPP75enpEtx5j3LmHR8fL3pjo4YUs3uPc1xfv1/pOV19v8vNud38DHHo76x+NmjL7bHw9HtATn8fMlsvt+/vhSnEofuq7596bLXSQm7fk/V9U8OgVatWzfF7puNN1p6qSK77qlVb9L+5fQ07e+0U5HuKp34HMgtx6Huw3uBp/Q6RmxCHVpHQY6Gfq658H8tq//Q1p9839b3YGhrPzRRCuXl/99Sx0H50hgitxq/fybXKkLOm3xW02t7BgwftT//yyy+5dvXkftBXwQkUyRCH41xD2ZXmd5c/L0Mcf/75p7nDxdYKajoV3b5OqZJZc5x/lRDHRSn9cFi5cqX88ccfcvjwYfOHgH7468kAnbpE53a22mUVWHD3dZnV8o4feDqlSGZ/uOofVtYy+ZlVT9DtOYY49A/JRx991K2ha2BEgyO2Zq0C4qyjTp062QMTWV1I9MSxcAxxaPBFk5Hqpx+kWnXEOkWObby6PxEREU4d3DkW+hpq3LixvR/H97J33nlHJkyYYH8+q/kitRyhluqyNa34oxVEXG2eCHHMnz/fVKNx1tz5UpbXJ6NcNWE5BDwhULduXXNyccnw4dLwv//1RJd51sf/bd8unUePNlMx6ZRMNAQKg8Chu+6S1NOn7UO1BTkS9+yRY48/bn+8XP/+UoYKM4XhkBbIGHWqHWugI/nIEfs4CkOgQ7+3tm7d2ox50Mc/SpmKlQvE0ZWNzhv6jOze+LVZ9IsvvpDrrvPewIkr+1PYl9G/dzTQoTcBaIjA2nTqDg1z6PSOjtNjFvb99sbx69/ZGzdutA9NLy699957ORqq3ixgvTnA2olWgtRzBXojhp5wtp5M1nNEepOH3sTgrMT9vHnzRKtHWpteMNApULWctP4NqqETVy6ia8n1vXv3mq60Mo/2q5VMdSpC65hq1KhhpnTVO0urV6/u1MNZiENvupg8ebJolVBr07/j9eJHz549872Mf1pamplGQKvxfvXVV6LT52TVHC+IqY212quez7Cef9JjkdV5vu7du4ueb8mq6V3Us2bNMu8HerHF1mrXri3169c3FUqzmoJJx6PngPTCjza9qcc2Jaxe5LDeHKPvMXo+RKuxuvKa0fNvq1evNnZ79uzJUL7cul86Xq0+lB/NWQUdPQ56DuTGG280/5o0aZJlCEBfk9YbXdTRaqX9ZRXU0il3rVWf82K/nU2nor+b+l6jrxtbs03DrK8DfR9z1vLqPcq2LX19aFVgPSdr/T1TR/37XCvgZnbuyjpex/NY+py+h+jvgh5X7UMrbGfX3Alx6Nj1d9XW9P119uzZ6Tahx9s2Nbvuk1b+1M9zPWfreCx0+jS9ecx67jEv3wO0b33t2qozZ7WtPn36yCOWwL2zZZ29p+h3Enff3/V6jJ7jtjbrZ40+rp83WbV169blaYBRt+34mtPPN/0uoOeqre8J+h6n53H1s1GD0a40/ezRqXP1PLf1s0P3W2/E1L4cp2XPql99DWrVAVvLbNpxV8am5/inTp0qGjS2nofX9xOt7Kzny/V9MrOgXGF5T3HFwpVlrCEONbK+NvS9z3p9wN0Qx9GjR813se3bt8u+ffvsw9H3Pv27Tb8nuvL+qSvq9wi9rvHjjz9m+L6pN+7qd193rhdon556f3fF2Z1lNGBVunTpLFfR9zy9dmhr+n1GvwvRECiSIQ59A9E/AmxNX+z6ovdUy8sQh/5Rbr0I7ukASmYGjtOpZDfVguM0DsU9xKFpOf3jX79QOM5zldXrrqBCHFlVOdB9ufzyy+3D1i9reuLOWXMMcegfDlqNw52mX7YcQ0Guru+s8ocnj4VjiMOVcU2fPt2cZMqsufPlQ7+k/tdyUddxeiWdDkW/YNuafolq06aN000fP37cnDizNf0S505ZLk+EOPSir178ddbccSHE4corkWUKg0BkZKS5+KFt1fjxclXNml497N3//CP3vfSSGWNWnyNevRMMrlgKHLBM2aUA5QcNklOWUpXlBw6U0jqlCq3gBNLSzJQ2aTqtzaV/mf1/gS+XkiI6DU/iX39J0v79ohU7bM0nMFB8S5eWUu3aeVVVF+tJ1JGr9ouvr/fOQ/3NvEmydt7bhjQ3J3sL7sVcdLesVST1Ar/+0/MB1qYn9fWiid5BRqDD868BrcagF2SsTS+2uHJx0NlodGqVN954w+lANbCjJ8D1wnNmLbMKnOPHjxed8jSrphcU9aJudtOiWv8+1BtLtJKkYwlw63b071s9H2H7bm19zlmIQ5/XC/6ZNb1gpRVDXQkPeOKI6x39Ov+5XgR0tWmFFZ3+1tY0eKI3FeW0ZVXpVM+z6IVC600kmW0nq2lvHY+Fhjj0Met5Dcd+9Zyu3r2qN0dltU19/bna8mvqah3PQw89lG1lKX296e+FXvx31rIKxriyz0uWLEl3PsiVddxdxjHEoRej9LGszvdpaEgDWo5VA/LqPUqrvegUv5m9/1n3Waej0tdnZu8BWtHClfdgrdQ7cOBAqVw58wCtOyEO/V2xTo3srCJv//795fPPP7fvjn5eZBeayG7KVE+9B+ig9GKmKxcmX3vt/9m7D3ApxfK7ZAAAIABJREFUqvv/419UQEoAjaAgCjaMoGBFigqxBCsmCmLUWCBiVyzYpdm7iWLB6F+NJaBI1FhQo0ZF+IEajQFbFFBEKQKBiAWQ//OZMJuzh9nd2b2z987e+z7Pw6NwZ2fOvGbu7O6cz3zPJVmBlahzMuqaokH+Yq/vet8rZFTod0KBoHJWodL2/XunOhfyXfv0nqvrp0JFuZrufev4h8GffPup6R40bhWn8sxNN90UhGnC5ocHCnmGP1egU59J3MBA1Gv12UQWUWHFSrimxPWIs5wb4tD7i0zC4GKPHj2yKqIXE+LQd4AhQ4YUHPvS9V+f2aICv2H/9XuqwG6+94grrrgimGLEHWvLdS8yyet7HONyLOOHPhXACyvZl2N7rLNyBGpliMOvJFDsYGWhw1fOEId+OTU/Vdj69++f9824UF/j/pwQR1yptZfTm4SSpfm+dOZaexpDHFHVJ3QjJ6r5IY5S3lyqEuLwnz5K+lgUG+KIM3d3MWEF/4OUH6jREylu5RJV5tDNraimD0Wydlsxg7CEOEq/RvBKBHIJuNNXvTZ6tG3eqlWqseYtWmRdTzop6GMx149y7NTiW26xH2bM+O+qNS1ZODWZ8/+ZGwv+zyNek7VsKet0t7/m9XHXqb4HE6vl2A9/3yKXjdqnMqwzq69R63f+LW4/C67Tsw1cI7zznQOrV6ywhd6TweF5+ZMjj7RGClNFnENFnVfu9HgFQghuOKHGAwnlCEysXp0zjJFzfxXiqEWtXsOGtvnkyanZIw0MaXCzSfOf2qWPvp2afkV1xA1x5Ksyl+RO6P6BbrzrKfjwj75XRP2//s39mf/3Un+WtvXk2w/1VWFzhVFVatu/+aoBL90sDp8M1/IKIOhBkVYp/6yT5HmV5Lr8eeVVObOU+w9hn/INZqjKggbzCz1oEfXd33/IIJ+BBlp0vytXc7836/zRd+NClSm0rqhwiz/Ipwqbcdal/dF5W+6m3xFtSwPtxTRVSlE1jrCVM8ShQW+dN3GbKp1o8NpvUYGafIOt4et1PdFDb1FTBIwbNy44Z4tpce7dFLO+fMsWc89Lg2x+YEvrrsQQh+5f+ZUMopz0IJIeSHJbua5Rflii0DHON/2Df13Oty5dc/RQU65ASDEhDv93UUGTU045JWvzfojjgAMOiBXwuvLKK4NqBlEtqWuA1l3OEIcG8vXgV6HmX98rNcSha2Oh92tZ5Lq26P1Hv4NRVaZzGcYNY/jTPpXy4Kc/XlXouOq6o+PvTzlWCdeUQvtWzM/9EIeCF+7nBRmFD/DGDXEoJKrPGXFbvurp+gym4HehpvP7u+++ixXiSPL6Xqhf5fq5P/aiqmeaXo6GQK0McegNSE97uyktpfUaNGiQyBEvZ4hD1RyuuuqqTD+Vqle6vtyNEEfpwv75oDXpoqtpcTSHV8OGDYN5Qj///HObMGFC1peYNIY4NBWMOz9XvjKtfojjb3/7W1Gl1WTlz9NWTIlHGbuhp6SPRbEhjnwfjMMzrJgQhx+88KdX0o0R98uunmBQ2ceopilg3AohxT55Qoij9GsEr0Qgl4B7E/Pv995rGxYorVfTkitWrrSt10yZVdMhji8OPthWzp1b0yRsHwEEEIgUaLDllrbx//t/QVWONLRw+sJNtviZnXVX7ifP09BXN8Shp68KlfZPos+XXXZZ8GQurbwCKg+sMvW04gVUPvxoZwowfYfWYFupTWXj//nPfwYv12c6PS0bNq37wQcfDP6qAIOmQ9AT2Pqu6U6fod9N/Y66TYNEujGvqTJUWUL3QfQafebVAJnf8t0/iJqmQK/XwJvuGahPmipK34ndpoca9HCD2/zgQPgzPQmu6heqJKMwl4Il/pO+mt6kadOmpVLHet2kSZPsqKOOylpWD6Op3Ln62KxZs8xUGarKoqkYFy1aFFQgdisBKCCucFXYdIz1BHbYNLiZ66EPLaPv/FHVAqIGqzWwogEaDZipwqem0nGbfj558uTgflicY6Ey7OFULLoPozCOP9Vu1PS9uaoh6N6Hnl7VPTlZ6mlgnZNat+w0qJ5rXvpYB62IhfT+on7q2OmPBrA1da7OLfd3SqvU8dS0t/79a00vpoG2sOneolu1RfeBclU20PQCqjCQ1D3xXLvuV+IIl9N5pSf3Nd2R7j1rml13SmUtp6e7t91228yqy3GN0hQAmjrEbTp/dc3beOONg6mw5ez3TQ+16Xzxm+7XKcwWHlf9V+eW7v1qmgG/SnO+QEjcEIfOAVXYdQfto6Yt9kMcYd91HDRwqt8JXat1P9Fdl35vNa2BPwCe5DVAfdG4jUItMnfbm2++aQplha2UShzha7Uvet/UMVZl4qjK2e71/d///ncwdZzbdM1xf0f191xBnBYtWlRLJbJc743nnntuUMlHx06OfnWOqIot2lcdBz8EpN9ZjQU0b948eG/U9d2fxkzTkxS6piQR4tBDs36FEL2XqUKXrquqvB9+ngmPncbV3M9M+vdKuKYU8bZScFE/xKGQqKY4Cc9nvWeE09/FCXHoM5euHX4wT9vROalre1TlJf/aHnZc4TNVO3ObpurTNVpBco2Xqep/VIu6F5n09b0gcBkWWLJkSda0Z0kXJShDl1llNQrUyhCH/MIbVaHl/fffn9ibaTlDHOXsd77zqpJCHH45rkJPcJT798n/cJyvP5q30H3KII0hDr80X76nT/wQh6ZdKTRHoH889PSI5j4Nm76o5yvzlu94Jn0s/BCHbizoS4TK4+kLgW7m6Okh98uZPuzqg0uu0nLFhDj0hcKdp85PsfrHKl/K1f9gXuwcymkKcfg3MaurYlG5ryWsv+4JuE+gfPzII9ZgvfVSjbBs+XLbfs3TfjUZ4tA0Bqu+/lp3f8zWWSf4U0//VSWEYv6+5jXBa8M/qooR8+/+FB2pPnh0Lr9AeNzXXdds3XWtnv6r82rN34N/03kR/sz7edbyOg/1NL+2qHPU/eP9m25gBi3HcsHPwz/+cmtugOZbf5x+FOpDsI5cfVjT/6x+1rKKGlX51Wn90EPWIMY86FXZRtzXaq5z3WzdvOPOdsotE+K+rEaWc0McuZ7kTrpj2o4GbfyBm6S3U5fXl2/wqi67xN13f3BUpfnzTXcSd71aTk/5uQP74dzp/j00P2igAZRiwk96qEA37d2nffOdF/73ZvVL32kVuHCbP9WmfuaHQ6JCHJr2RwEHdxBK4Qh973W/31fHfOS6H6L7ImFT+EC2Cm9UpSU1Dame4FVoIGy656PBl7Zt22b+za0wGP6jXylE/x51LBQU0vnmh2WuvfbaYAoXd7saZHXLs+uemgYnw6bzRIGxqEH3qliW47UaqNK9DT3Z7J5zcZ5y9wdHk7znXeq+RoU4FJLSPTQFScKmsINK7WtwL2z57k8ldY3yKwWpOoWmB9I5EzYdE/3bbbfdlvm3qGBYISNVq9L9OoVE3aapyKIqUsUNcfjXYfX93XffXSt0ERXiuPPOO0377DaFM1Qxxw1yRH32SvIakM9O1xltK2ylhjh0DVXVB/cJdgXcNPhfzPVd56UbEND//6SGA9px3xsVxtE9Yrf5laoUbJOJOzCv92k9TOz+zipso88cem8Nm67PRx55ZPBX3dfSZwK/+RVCdL5GVVPS6/T76YcZFbzQw5tu88codD3ROaP36rDpfr1+V3IFbirxmlLomuP/3A9xKHCm9xa9d6jpWLz11luBUZwQhzs1Z7gthXv22muvzKYVENExdCudRVW90nL6rOW2qOuTwo4KW/qBuKh7kdV5fS/2WMRdXuew+9l+zz33zISq466D5WqvQK0NcfgfaJVQdweKq3JIyxXi8CsgqI+5PuBVpf9Rr62kEIdfKtGfBzRpm0Lrcz/U6U1QA+9RA/hKLYalqsJ1pi3EoSdm9MHLTRrrxkauJxSSCHHoKR99MA+bbqbodzXfvGm5jknSx8IPcURVr3j44YdNpZ7dpjn/NO9pVPM/cOc7B/ybFppPzq08EnWjRE8jKS2d7wOcfqaktT6cx21pCnHMnDkzK5RXbFWRuPvMcghUh4CeOFJ5wBl//KM1WX/96thkydv4bN482/P004PX11SI44f337cvnSdRS96ZSn+hGyoIQyfOv2UCCGGoxQ0dhGGEAq8LQwtZ6wq34a7D3+6an+V6XRh4yAQjvHW5ryvUh7XWFe6n14fv33vPFpx3Xs6jvvGYMbb+rrtW+lmRrv47AZREAy3ay1JCLzGCNfkCLT9+8419N3myfTtliuk6FLYGHTrY+rvvbut37WrrNG6cCbysu8EGVj/iqc2aOkh6ullP9rZotald8OAbNdWNWNt1Qxz5vofEWlmMhfyHKGK8hEWKFNBToZrPOt/UGUWuss4trqcR9RRx2KKm0dQgi77P52qqiBBVUcIfzNDrNfDqDz769zM0SJ5r2tVcfdBT6noSNLwhr8H78ePHRy7uf2/OV6VWT5S6A8J+hcqo4EDUtCvqiKqLuNUr4gyoV/WEvPzyy+0Pf/hDZjVJPaSQRIgj6j7WmDFjsqp8hh33z1MNpGrgyG1RxyLXtLw6n7UOdwDniSeeCJ42D5uOu1uNVA/eaPBOD95USvMfUtG0ue5AdtR+VEKIQ/dHp06dGnndiSqlr3+LOm5JXKP881h903kSVabeH9j2pzUu5rzyH0JU+KlHjx5rrSJOiEOD1XrIy60WlKsqkx/i0H1WBX2imqbQGjlyZOZHGtRXACJsSV8D8vklFeLI9XCg/xBhoet7JYQ48r03+lNw+8tqEN+d9krnpu5xR41p+Pdh3XNPVUw6d+5czK/GWsvqM4c+e7hNYSr9boRNU02p4pffFi9enPW+oJ/7AQP3NZV8TYmLHBXiUEUaVfIJmyrxaCqdOCEOVfHRlGZhi/qcqJ+pQpQ7bYv+TZXYGjdunHmtjk1YBUT/mC+soECr/3nUvxdZU9f3uMciznKqKqPPx27wSSFWXYNoCEig1oY4lO73B1H1wVjl26rayhXi8OeXq+o8p8XsZyWFOKIGrkupAFGMT75l+/btGySfw+a/OYX/rjS3X9YzTSEOfSHQB1q3DKbSq0ra5koaJxHiiCp5pQ8RKn/mvsnHOV5JH4s4IQ59WNCTH255WLnpg0vUkzP+zahcZaLlovCZe8PC/xCqn+kDmLuMPliptK775ddPc8pSKVo/+ZrPOE0hDp2r/jyxfLiJ8xvCMmkU0Ad1lVx9dNQo65qSJ7ZzOb37ySfW98ILgzLLerKjJtqqBQvs3/fcYytmzvxvVQR3sD5PGCArGLBmoD+JEEFWhYaIvsQOMuQIH+QKY9SEfaVu87s337R5gwdnur/JfffZyjlzbOGll2btEkGOSj3C5e339//8py1/4QX7ZuJEWzV/frCxeuutZ43339+a7L+/NYq4EV/eHpW2dj21rydk11lnXbvyuU9LW0k1veqZMVfaa4+NCbamG8k9e/Ys65bzhTj0hL4GesI/GgD3S4xXtXO6Ua51KsAe/tf9/6h/c5+OLLR9Lav90Hr0X/eP+2+FBjy1Hj2tpyco9V/90ecX3dDVQLEePnGbPivo6Tv9KfcxLGRQG36u78aaejdsUU9KR5Ucd/e9X79+wRPmfosazPAHysPXqLKobjSrtWvXrqQpXfzpVPUkeNSAkf+9OdeUBuqLKg2p4lDYdJ9ixIgRmb/7wQF9X9d0B1HNHzBQwOLYY48t62kUNUih6WpUAUAhhlIecFGHkwhx6ElY93dYdhqYj+qTnubWYEzYokqB+8eiULlw/9zX74GmBgmb7sO4f9e/axBaT4ir3+WeCieJE0Ohga233jqzqqgnl/3tVEKIQ/f13Ol//X3w3391Xmlak3Jco/x73oUealK/3amadN6W8nvoD5Lnup4UCnEopKeHutzKzuG1zz13Qjs/xKGAlbyjmsJ1us6EzQ/oJX0NyPc7k0SII8nreyWEOPK9N/rjJ3ov0zkYNgXo3AcFC1X0Ofzww4OpWtQU+Ainw1AVq6pOlxcV4vA/10RNkxLuy9ChQ7Om4omafitcNonPPTV1TYn7nhMV4tBrVQVJ1arUwqBlnBCHPybwwgsvWIcOHdbqjtal91734WB9RnOvU/4Dq/nu5/vO2qAf4kj7sYhzzPwQrMY8dL0v9P0szrpZpnYI1NoQh56kUkkftySUStT5T8znO4z6kOTPwajlP/roo6yB7nCuMHddujhFpWtzbc+f90jLuaWpyn26JR3i0EXbLZPp9l8fEtyggL6c+oEbPSWS6wPAwoULI6fbUFJdr2nZsmUwP6o+iOpNQx9ANUhWrubP46UvXLph0KZNm+Dpan2pVPUQ3YT0m1KxW2yxRbCsphAp5oZcMfvj3wDRDQvdeNPNEt18U5Jbb5r+PHJKX+sLcNh0g0X+YVMAwT3OSsnqyYewKTQV9SXM77s+KA4bNizrn/VlftCgQcGHCqXj9eVbJQl1TJXQV8rXvyGY9LGIE+JQp/Vl03+yzL9xFO5c1PyF2s9DDjkkOA/0BV6hIH2AdROYmt9UH7T8G1xRN3zCuW51Y1bHx32SSP3IVfpW54LmO4xq+rDutqgnpnQu6wtT2Pwvjip/26lTp8j1FzPNjFagGzX+vMo6Btp3nXP6XVIaXEljNb+MYDG/PyyLQDkF9OSDbu6MHDjQjvfKm5Zzu6Ws+6W337YTrr7adt9996wvyKWsi9cgUB0CfoDDnd5i6UMP2WJvMIsgR3UclfRv44cPPrBvX389+PP9P/6R6XD9du2C4IYCHPr/Smruk4eXjH3Tmm7QMrXd/8MFR9knf58U9C9XOD61na8DHVPQXBUMNDisByncpgC+yl7rz3777VcRg6eVcsj873warNDc4W5LKsSRr7poHC99Z3/22WdNlWY1+Kd7Tbq3pu+6mgpF32nd77m5Hmzxvx9qOpZcpdH9QUZVEnW/A/vBgXwVQPyS4VFTgsRxKGYZ3Y/RAxy5mr6/a554/dF9gbiDyUmEOPxBwELT6Cjc47YZM2ZkTVfhH4uoah3u6/1BXT385gZ29ICHrjnuvV/39V26dAnuG8lOD8DkOoeKOV6lLKv7Ejr31U/9Tuhaqvumumeme5YqJR82HWN3aoCo7VVCiKNQUEL3vNwpmXJVZIma+iBXBeRcx8afWkJPkbtTF/uvU4UX95jke3BQn1VUHUDHVH90T22jjTYKrnmankXTqoQtl4kf4lD1Kp0XqrSr/ddDYv6UArmehNe2/HtxDz30UN774vke2kr6GpDv9yeJEEeS1/dKCHHke2/UuagHhMPmX79vvfVW05TwYVOVJZ27uZqWDasx+GEZPTjtn6OPPfZYVpUsfW7JVbFDgQDdU3abH/TKdY3Qa/xxBYUV9LkoqqX9mlLKe4z/mlwhjsmTJ2emwdFrdJ/+Zz/7WdYUZBpf03hV2KIepMxVOUmvUeDXDZz54SD/+uSHPNx9iaoE5Ic4ynl9T+JYFFpHVBjVD6wWWgc/r/0CtTbEoUPnl+fRv6lE2PHHHx/ryPpfBGO9aM1C+T40+OvRF1ilId0B9EIVEIrpS5xlkw5x+IPfcfrgLlOoNKemq1BZujgt1xMncV4bZxm94emDuN/CuWTdf1fFhjDx6C+vmxy55oaL0498y0QFBwqtM8pN055o+pO4LV9K1n9T1kCmW9Gk0Db0e+yW/NPySR+LuCEObTtqzsmo0EIpx0LrV3lV3Qz1W9QUOIXsnnrqqcgPzv4Xx0Lr8X/up2fLGeKIqsiTq7/5kvjF7iPLI5C0gJ7w0ZM+fbp2tTFDhya9+kTXd+1DD9ntf/5zEIpyy1omuhFWhkBCAt9NnWrzTj45s7Y2jz5q9bfaKmvtS26/3f7tlC/XDwlyJHQAKmw1P3z88f+CG3//e1bvVW0jDG+oCkclNrci4Omjn7ZNt9k+tbtx+eFdbPmyJbbzrl1twvj/DXyktsN1pGMKnOrmuf7oicuwKTitAVQFqfXfOAH+OkKW6G5qgFDB/7BFldBPKsQRZwA5aud0o103nTXtiz+Qkw8jbogj31R+Co5oECJs/nSbfnAgX6WDmghxqN96gMwdNMllpodmdC9EfwrdP0oixKGHN1QBIGwaVNMTo7naz3/+8+Chm7D5T+sWcyy0Dn+qEU2d4pZh1zK6l6oBbffJ31z9k5vmnK+ua5Xu9+reZTH30eL8DlZCiCPqyXr3uPgDyLmexvYHXOP4+MdfQYrz8kytWOiCHVWdSEESPXyp6sVxW9wQR6H1acxBYx65qhcXcy9O23IrLOjvMg+nmkn6GpBv35IIcSR5fa+EEEe+90Z/ANyfGki/E27IqNB55/+80BS7/nXKf1C00PZ23nnnrNBnvgr7/niAxl/caejcbaX1mlLIo5if5wpxKFimME8YfNR4pB5E1jhc2PwQh46zHpQPmz6H6J58rubPNOCPDelBbveBYI0FtWjRIuf6Cj30WY7rezHWVVlW7yN6INX93Kzrjh6SLteD3lXpL6+tOYFaHeKImuZA1HHmF9Ry1RHiUEr36KOPzvqSo21Hlccs52lSaSEOVbjQIFKcQf9iAjWlGp977rmmhGm+plCHPvjnesIiLSEO9VMVazQth/+ER7lCHHLTzUCFc9y5YPN55noCJMljUUyII2paGD31oS8hbvkr/8OHnMMSdLn2VzcpdFMiqsysXqMKGkoZF/p90LHVF2PNhxnVKinEof77HwzznS/l/P0q9brB6xCQgKp7KaBVf7317M2777YWTZumFqbfiBE2bfr04IkGXXNoCKRV4Ns33rD5zhPKmz7xhK2XY0rFRddea8vGjs3aFYIcaT2yyfZL0zKFFTe+86aCqL/llrb+7rtbk333tYZOielke1B9a3OnAz345GHW87D/DQZXXy8Kb2n+7I/t5hP/+zT6WUOG2DnOU2CFX80S5RDQAwgKbmgg1m2qyqVqB/oM4z95X45+1PV16iav+9R41PzhuqHuD6hogDGsehF3OhV9V9RTk8U0DQro82Epg0FJhDj8UuD+QFUxwYGaCnHIWxV677nnnuBPoSCMBlx0ryHfwEcSIQ5VlVXll7AdddRRpioBuZrud6mySNhUuUehmrAVcyz0GpXud6uCRgWYtJwqmspDwYBcVTnCPui+iCoTuFNIFHO+x11WlUEVevEriBZ6fZyQQiWEOApVsfHLx8cNcZRyjarqIJ+eKneDYlEDb4WOq36eVIhDv9tbeeF0d/vFhjj8aa70tL4qiaglfQ3I50SIo/BZVGhA212Df0/bf2C2KiGOQlNhqR9Jhzjc89KX0u+oKkCE7YADDsiqpuMu74c40nBNKXzki1siV4hDa7nvvvuC++lhU8Uft0KKH+KYOXNm1jhCoRCHWwFS2/CnkfI/J+SrJqPXFzrnk76+Fydd+tIKyGt2AvfznsYw9fmkUEi39K3yykoVqNUhDh0UfSFU+s5vYUk9pfp23HHHYAoOv5UjxKFgiQYTlTjTlxGVaPO/nOliptKP1Zm48qcoOeOMM/KmlHWB1/QPYfPn11N1gKi5seL+ohSqxKH16EaBSgwq1e4m/f1tFHpzidunfMvpuOrJCfUlKv2vFJ2eXtA0O7lucpVzkDlO9QeZ62aQ5sNzp8Rw91vTp/hTc+RziVuJw12HvuAqxKTfD7fMqr+dXGU3kzwW/nlcKBCklK//VIq8dIMzbP6x0A0O7a9ujLo3O7S8vrzr6QWVNizUdNPi97//fXCT1b9poQ/X+lCqD2n5njjxn4QotE3/54UqceSbq9Et3xjny0C4bX15veOOO4IpbfK1fIntYveT5RFIWmDv3r3tk5kz7Xdnnmm/dOaRTno7VVnfgiVLbNcTTwxWoWtd1Gerqqyf1yKQlMC3r75q84cMCVZXr2FDazNhgq23ySZ5V7/w0kvtm2eeyVqGIEdSRyRd61nx2Wf/C254TxA13GEHW79HD2u0++7WcMcd09XxBHqj778aINxki5/ZWXdNTGCNya/inZf+bGOvOStYsb5babpJWvUL6N5AWHVD91PCpu+y+l6jP+Ue/Kz+vU73FhcvXhzct3JbnO83blWEuCGOUiqZukGxsI/6fqfqLCrNrulyly9fHjx8oEE69/tqEiEO3TfQvT132wpjhK2Y4EBNhjjC/uqehlz0HXfSpEk5n/T/1a9+FVT0y9WSCHFo+wpuhE1Vd/Q0da7m3+/QvcPmzZuXdCz0In9gToOOul+Zr+n+oMqrq+y/yrRHBWJ0n1BTVJRzoERTD+gei9sOPfTQ4L1NVQ70kI6mGtL56d5nqyshDj0U4FYq9gM/oZs/4FrKNUqDZar+Gzbdc9J7WtymqVXCUINe4z9JrvUdeeSRwdPsOrYKlmmKbz1o5U7TnlSIQ/ui+4i5WrEhDn9QVedk+FBf0teAfOaEOAqfkYUGtN01aJzBvR+tsQndtw2b/l9hz7DputiqVavCnTALxg3yvRdoJVUNcfgVYqIq4oSd9avxn3TSSXbxxRdH7ksarymx0ItYKF+Iw/9MqbEet8KVH+Lwq52pG7Nmzcr5oKmqXblTgt17773B58Gwafp5fT4JW75wjpYpdM4nfX0vgrnkRf0qY1pRnHBuyRvkhRUvUOtDHDpC+uCup91zteoY5A+37X8B8fvUo0eP4E2wnF8kKv6sjdgBDbZ/9dVXQYBi9erVwRuJ5rrUgLUCOm4lhHLuv4IluumlyibqU9OmTW3TTTfNlKHTtvV0TP369a1BgwZZ/407r2kp/VdfdNNWb9T6Aqu/a04zbVNPqejLSDm3X0qf9Rrd6JGXnmBQf/V7oS9EMs1VNjDcVlqPRb4PHzpGKgWqp2m22Wab4GZXKU03AhQIkUHbtm2rrVRoKX1N6jX6UPmvf/0rqOii339dB3SObLjhhsH5rd85GgJpFQiT6gpwKMiRxvbslCl28o032k9+8pMggOrexEpjf+lT3RRY/tJLtmBNqeR1mje3NuPH27obbhhe+rJpAAAgAElEQVQLY/5ZZ9m3r72WtSxBjlh0qV9o5eef27eTJpnOj+/efDOrv6q20WjPPa1Rt26m6hu1uSmorYF5tROvH2tbdikcEq5ujwm3XGRTn3nY2m+xpf3tlZere/N1fnvz58+3hx9+OPijedTV9N0rDG7kqihZ5+GqCcAvK37ccceZPkPma6WEOEqZNs8fMNTgtcpDRzV/rvQkQhx+pRJ/HyotxOG76V6IAh0aSH7N+6ySb156f5BAx0THppimgRpVQQ2b7p/qHmvUQ2e6huy2226ZZaMezijmWGhF/hPDxVYt1j0RDWTqyVYN8rkt1zSzxfjkW9a/95MrpKAB/x122CETNokT4tADZKpkG7Z8v3NJ7U+h9fzpT3+yCy64ILNYvkocCirtscceWQ/B6R6W7pP6zR9wLeUa5Qe9oqoZFdq/8Of+OaxKMwp/uWGlcFn/2hQ3xKEBaJ0T+h3SfW0NiPpTQ2ibuR74KibE4Z9//nTESV8D8jmnLcThhwg0dU779u3jniplWa7QgLa7Ub9CgR+C88eo9PurAfikWlVDHH6lkHzX/2HDhmVVEVMwQVUOolrarilJebvryRfi0HKurcID7sPRfohDy/ufQfVZRONJUc2fVs2vZOQfq0LB/ULnfJLX93IcC3edGufS+7f/gLTeR1SFTeNdNASiBOpEiEM7ri+GKgGYq4xdvi8+SZ46DzzwQPBkfVTThzndXFP4gIYAArVToNCHj9q51+wVAgjkE9DNAM1FqalUJt54o20Sc9C5OlUvuPtu+9PzzwdfhPWFmIZA2gS+ef55W3jhhUG31t14Y2vz6KO2TpHTE301cKB9/847WbtGkCNtR7q4/riVWcJXrr/rrtbkwAOtUc+etm5ENcbitlA5SyvAoe+aal0POsp+dVbucvg1sVeLvvrcrj92j2DTmtrx5JNProlu1MltanBIN1j1hGPYdLO2b9++wZ9cVRrrJFYN7nTUvaQXX3wxCP/natUV4tDTvXoYQU2Djhq4jJoKVAO3/hQAcUMcuZbTNvUksft0saqghtc7/byY4EAaKnHkOp7Lli0LqnW6Ld8TrH4JdA0SKEhQTFOAxD/HFIjQALzf/MqkUWEE/1gUCizoGuROG6ugQPfu3YvZhcyy/rpUyVSVMcrR9HCJBuHD5j8B727Tr3RcyESv9ae4yPfUeTn2L2qdxYQ4/GV1jul6FtWSGHDVev17cRrg7tq1a9E8foUbf6oAd4WaLlo/D1vcEIf/5LoeWtL13K38rIFXPVwR9cCSH+LQFFm5plVWRRqFAsMmE3dqrKSvAfnA0xbiOPvss7MqqfjHpeiTJ4EXxL2nrIc3FcBzzxm/UrRfqUOf9/QeEbcaR6HdqWqIQ0E1DXiHLVd1bD2sqgChW3Up3zmftmtKIcdSfl4oxKEZAlRRKKpFhTgUAnUrYOszlj5r+c2fAk0/1+dDPQwWtrvuustUuT1sgwYNMgU7olpUFRB/6sAkr++lWMd9jaoanXvuuWtV8Jet3icYD44rWTeXqzMhDh1efWF88skng5sT+pDiNpXeUZnHcjf/DUxvkCqDpnJw7vx65e4H60cAgZoRiPuBu2Z6x1YRQKCmBPoecoi9+49/2MmHHmoXHXNMTXUjcruT3nvPjlrzpOdjjz2W9YRdqjpKZ+qsgKZC0ZQoavU339xajxtn9SKe5IsDNLd/f1vxySdZixLkiCOXzmW+ee45W3jxxdaoe3dr0Llz8N+GnTuns7Nl7pUqvh1w4IE294svrH7D9e2ce16yFq3S87TPX+4YaZMm3Gudd9rVnvrz+DJrsHpNxagn3/RnypqphVSZUVOmaqBTUybQ0iWgARkNXvtTjmq6Bh2zqFZdIQ5/cFwPT0VVzrzxxhuDKUDdFjfEkeup2rlz55qqxLiDN6q4sNdee2U2U1tCHHLdf//9s/xyWWuhqMFXfwrUOGe5X/pcIQMFOVRBNGyqoqBAhHscNFihwWS3+cdCP8tVocIfLNeyGnxThaBimwIw++23X9bgSa4wSrHrjlreD9z4A+PhazRApQCGQv1hixPi0HV7wIABWZvO92R0EvtUaB1xQxwK5ahatnuu6GHH3/72t5GbSGrANax+6W5EYZjdd9+90K5l/dwPPfihsXBhDTTqGLmD6KWGOLTOqMremi5C54/f/BCHpkK97bbb1grXfffdd8FDGu7gbNT06kleA/Jhpy3EofcrvW+FTUE4jStFVYwp6iSqwsJx7inr2q/z3a0+pPEnXWfcwXSNk+nccB94VqBKodEkKq9WNcTh/+6Lza/GoWpLI0eODKo2hU1hUgUco6rjhO8jboCvlOo+Wk9S15QqnA45X1ooxKEX6vNE1MPuUSEOBYDch7lkPH78eNPvRNj0vnf88cebghxhU7Ugd3o7/buuN361Nk3L165du7X2x68mowWiQhxpPhYKdcrOd9C+XHfddWu9l5fjfGCdlS9Qp0Ic7uHSB2WV+tPUF/p/TWMSVQ4w6UOsOUD1R1869Aaq4Eh1bDfp/WB9CCBQmkCcD9ylrZlXIYBAJQvoC5BuAK3foIH98/77rf5666VmdwZdf729OHVqMKBTaN7T1HSajtQZgf88+aR9PWJEsL8NOnSw1o88YlavXpX2f84BB9iqNVMJhCtqedNN1rh37yqtlxcjUNMCmiZDVS7U9uw32A4cfElNdynY/soVP9hlB/23moCeWtVAG608Airjq/dyhTc0FaGanubVzWwFOPwqCeXpBWstVcB/+j5cj6a80SDxtttuG9wE18CM7jvps2UY+tCDQxqM0uCOnvwP20cffZS5Lujf9LS2BvHCpqlpd9ppp7xdvvDCC+0Rvf+uaX369LERI0YEg0AaJNQggfqua5Df9KTzFltsESy7yy67ZO6P+d+b9To9ranzVMsqiKTBYA3+usEWDYD/5S9/yRqsTHuIQ4OCmvpEZfo1HaqmBNUAiYJVGujW/k2bNm2tz+FxKmtEDdJo8ESf6zVNg+5Havpa3R9V02CW3/wpIcLrho6Hpi/WdAt6YtodlFf/NVCjKYbdFhXi0LIadFboSPdItb8a0HErGGgdUQPgH3zwQTDNjM572ak/2qam4tW5p33T+a7BE3cwXevT+eMGUUr9vcz1Og1eudvUuX7iiScGx1bBSvVLbu6Al9ale8WnnXZaUFZdvxv6vfab7mXr98VvGnxTBRA56DqwaNGioA+6zkdVT0lyn/0Qh8r1q8KDBrw15a/ec/Qksh/k6tKlS/CeFE7xXI5rlPZTfVC4yw/CaTxAvxM6f3Rswt8JDRR+9tlnwbQDbmUhTZ+t17jtjjvuCKYe0z7o5xp89q9NWl7XUl2LdQ3TNW6TTTYJVnP99dcHIYuw5ar4oPCLpjNyW1Q1Hj/EoeUVdlNgQ4P0qt6ha78GxP3zL+oh1ySvAZq+RVUAopqqxrnBA/XXrxagaafdKjflvL7/9a9/tYEDB2Z1VVNKacoRXa81tqPPVTqnFCjcZ599gt/Zcjb/vfHtt98OnuDXOar3fQXqFNYLq2OFfdFnv6iAroKUCnL4Tb8T2h/tr8wVltB+qsKTfqd1LhZqVQ1xaP3+FGz6N4WKdP3TNNqaFksVadymzyR6vwhb2q8phRxL+XmcEIc+t8kq6n1E71du09hpz549s66ful6efvrpwXcHnRsK//ihkFxTpfhTFWldOl923HHH4P1b71s6tv60I+pTVIgjqet7KdaFXvPMM89knY/h8vrupeoyhZreW8L3ikLL8vPaK1BnQxy195CyZwggkGYBQhxpPjr0DYGaFRjQv79NmTrVBh10kA07/via7cyarT85aZKdccstwd/KWXI4FTtLJypO4D+PP25fr5neR9UVNnGewKnqzny2xx62evnyrNX8dPhwa1qmsttV7S+vRyCugJ7YDMvp//bah22rnXrGfWnZlnvlT7fbxHuvtV27drPxj44t23ZYsQUDD5o+RU2D9eGUKVHl2PFKn4AGZRXEUiCi2KYKsBqw041xDS7HbbqxPmPGjLyL57pBrde6A/taiQaLFLKIairtrpv3alEhjjh9jgqClXOQL06fCi1zySWX2IMPPlhosbV+fumllwahgHwtqmJDruUVHtCAYFSLGhTOt12VRlfIw29RIY64O64gi1/mXwEYN3QUd13VEU6XgUr6+y3q90ID+6p46Ldc0wdoOX+qgXz7Hoa44vqUspwf4oi7Dn9aqHJco8K+RFV3KdRPhRwUigmbBo51/mha9jjHVlPphO+77vLu0+5xQxwKXvhBV4XmxowZk9WVYn9fwxfreqLrSjmvAXpP0PW91KZA0ssvv5x5eTmv7zrWRx55ZKZiWaE+33DDDWtVGCj0mmJ/Xsp7Y6Hf/6uvvjoIw8Vt/jHI9bokQhxR53y+fup9TKFItxpY2q8pcd2LWS5OiEPBh06dOq212qhKHFooV+gjV78UHLvnnnsif6xjdPTRR8faJR1TN3wXFeLQipK4vsfqUJEL5fqMHHc1pU79FXf9LFcZAoQ4KuM40UsEEKglAoQ4asmBZDcQKIPA//3f/2Wefrvt7LPtEO8JnzJssuAqf3nppfb3Dz8MnoxzS1QWfCELIFBmgWVjx9qia68NtrL+brvZxnfdlfgWZ+vJiB9/zFrvBkOGWLNjj018W6wQgeoS0BN3/fr3t+++/TYIcCjIUZPt/ckv2IMjT7Iff1xFSdlqOBAaSNITwhoEUuUGWmUK6KlT3WT3AxL59qacIQ5tV1NnRA1Cu33S4LWmN9aN/aiWL8Shp37dah9Rr9fgo6ZkcJ+a13LlHORL4gxyB1virk8ly1VCPk4bPnx47M/x7jFw162nzbWeOAEiBY00GKwqLn7zj4XOBQ3SqeJBrqbzRoPUUZUk9MT5tWs+D8ax0DKq/KBzSestZ9Pvp0JLUYP97nZV1UEBS1Wt8Fu+EIcqjahyiiqKFGr51lPotXF/XmyIo1evXkHFHg0Iu62cA67ajqqB6FpR6LiEfVJ1CL8akX5P9HR0oabfA01fcdNNN621aCkhDq1EFWoUVnObwkIKZobND3EoUJVrMDV8jZ4K16B71FRYWiapa0AlhTi037pmqQJUnPfbXIPfhc6TYn5eTIhD1zhdj/X+GVa6idqWAqL6/b3qqqti7Wfokm+dWiaJEIfWo+ozqvjgV9Hx90XVqfSeUInXlGLOgTjLxglxaD1RYcNc57FCTbrW6LNAoabryZVXXpk1fY//GlXuUMWifE3vi6owo4BG2HKFOJK6vhfat2J/ToijWDGWjxIgxMF5gQACCFSjACGOasRmUwhUoIB7A3z2o4/W6B6cetNN9vTkycETkS+88IJtvvnmNdofNo5AKLD0oYds8Zr5iRvtuae1+t3vyoKzWuXoe/Wy1d9+m7X+FiedZM0j5p8uSydYKQJlEFDJbj31qaYpVTS1Sk20ebM/sjuHHGbffbPMjjrqKNOTgDQEEIgnoOkU9OSsgln6k2uASZ/funfvbr/61a+C/2p6hULTo7g9iFOJQ8trEEhlszVY6U9boZ/raXRN77L11ltHznuuZfKFOFQiXpVE9JlU/+82TaGigYBcFUb84IAsbllTac7XVshEA6Bhq475ygcMGBDrSW8dC4VxVEFHg/LFTM2sARBN+aApTvI1PR272Wab5VxEA9o67/yS6XqB+qTB8XznV1SgRnPZ6z1JT9f7g3QamNbAoqYWiWo6jjov4jRVLNCxVzg9rPgS53VVWUbTuWjwXFUzopoG+XW+KVCgQS+/FQpfaIoDhfP0e5cvlKApEVSVpZwtTohD57CmwtAUFToeUa1c1yh3W5qOKZxaLOpcdpfNNQ2FppVQpUpd9/ymJ8fPOuusYPoSHf8r1lQOdJdzB0pvvfVWUxWHsGnqKU1dENV0Tula7l7zNUWKKpqEzQ9xaBBR02soaOdfA/QeofBbVIgoavtVvQZ8//331qFDh5JPxUKVOMpxfdf0RzrW2vd8QQKFJRRcKGeLE+KQ0Z577hmcgzoX4zbtm65Vr732Wt7riX6PtUyhdfshDl0jdO6W0vSZR+8VOs/9zzu6vun6qc8YmvrFb5VyTSnFJddr4oY4dP3TtGu5rk1R69e1RGGyqPcUXYs0BU7U1GxR69L0TQqk+mFEncMKnJ9//vlBaMStVpYvxKFtJHF9T/JYVDXEoWllOnfunGSXWFcFChDiqMCDRpcRQKByBXSDIfzA2axZs6wbRJW7V/QcAQSSEpgzZ4795phj7NOZM63zVlvZU2W+CZCr32GAQz9/6KGHyj6HclJ+rKf2Cyy9/35bvOZGeOP99rOWRT59WazQ6u++sy8OOshWLV6c9VKCHMVKsnzaBNxpNY644GbbaZ/Dqr2LV/+6qy39ep6132ILe/GFF4I52mkIIFCagAY4Zs2aZatWrTJ9z9TgyoYbbpj36dvStpT/VRpUVl+++OIL02Bd06ZNgwH4DTbYIPNC3YDX73uDBg2y/us+1Zvv4QcNqGkQoUWLFqYBg6hBm3LsWznXqaoK+h6gffvhhx+CPwoaaN+0n/LTE/1R1S2K6Zfmtf/Xv/5lS5cuDSqW6MlaPXmvc6VNmzaxr8PqnwIZWs/GG28cBD/i9K1QVRSdNwrpaGC5Xbt2sdapAJGCQzrvdM6pbzqX9Edu+iPDQk+NF+NY7LLq41dffRX8Xshd/Wnbtm2m6oH6rH3Q74T7R78nccM62ndtQ+vRcdV2GjVqFBwfTQcS5/gUu1/u8tqmzofFixebggY6p9Un7bu2r2PavHnzqmyiLK/VNWvevHnB75+OQ+im3wf1u5C/fqdkrgFwXX832WST4NiG55ss5OIfW/3crxqU1A5GhTjCaRN0XKZPnx70ddttty35mJR6DUhqH2tqPTpPdLx1XmuwWNdovc/pfHHf58rVP/1O6X1Cv2e6t+xe8/Q7pn4kca3T/mlfFyxYEGxH70d6D6qu/cznpz6pepN+N7faaqvgM0+aWlWvKWnal3x90X6qSobed3QMFLwo9fOYrid679f1VOvRZ5KwKYSj65bCQ/pTzPldV45FpZwz9LN0AUIcpdvxSgQQQAABBBBAIHEBPR3Tv3//YL0d27e3R0eNsqaNGiW+nVwrdAMcKls5dOjQats2G0Ign8C/77nHloweHSzS5OCDbaNRo6oF7Mdly+zLAQNs5VdfZW2PIEe18LORMgq4QY5Dz7jCuh3ymzJuLXvVN5+4r82f/d+n6fWEuG7C0hBAAIFQgAqWtfNcKBTiqJ17zV4hUL0C+UIc1dsTtoYAAggggAACVRUgxFFVQV6PAAIIIIAAAggkLPDss8/aySefHKy19U9/amOGDg0qc5Sz/e2dd+zW8eNt2gcfBJs58MADg7LLNATSIPDvu+6yJXfdFXTlJ/362YYXX1yt3Vq1aJHN++1vbcWsWVnb1bQqCnPQEKhUATfI0WfgBdb7yFPLuisL58y0MUOPsGVfzw+2o/mSVfKXhgACCLgChDhq5/lAiKN2Hlf2Kl0ChDjSdTzoDQIIIIAAAlURIMRRFT1eiwACCCCAAAIIlEnAneN5/QYNbOTAgXbkPvuUZWuj7rvP7nn66cy6L7zwQjvllFPKsi1WikCxAgpvKMSh1uyYY2yDc84pdhWJLL9q3jybP2SI/fDhh7Zuy5a2asEC+8kRR9iGF16YyPpZCQI1JeAGOTr17GM9fjnQtuzSLfHuTH7yAXvytssy69Uc8H379k18O6wQAQQqX4AQR+Ufw6g9IMRRO48re5UuAUIc6Toe9AYBBBBAAIGqCBDiqIoer0UAAQQQQAABBMoocNxxx9krr7yS2cIenTvboIMOsr133jmRrT49ebJd89BD9tm8ecH6tt9+e7vkkkusR48eiayflSCQhICCE9+++qo1HzTIWpx2WhKrLHkdKzU38Hnn2Q8ffWTNjj7afnL00bbeJpuUvD5eiEBaBNzgoPq0yy/62T6/Ods22Lhtlbr4w3ff2nuvPh38+XDqS8G6OnfpYrfdequ1a9euSuvmxQggUHsFCHHUzmNLiKN2Hlf2Kl0ChDjSdTzoDQIIIIAAAlURIMRRFT1eiwACCCCAAAIIlFng7rvvtiuuuCJrK4f16mXH7Lef7bDlltagfv2ievDJ3Ln2wrRpNnHqVHv7o4+C17bddFM7/oQT7Ne//rU1bdq0qPWxMALlFli1eLH9uHix1d9yy3JvKtb6V8ycaUtuvTWowrF+t+SrFcTqBAshUAaB9957z26//XZ75plnMmvv2H0/67Dbz23rnXraTzdtH2urK77/1uZ+MsNmTJoYhDcWz5uTed2gQYNs2LBhsdbDQgggUHcFCHHUzmNPiKN2Hlf2Kl0ChDjSdTzoDQIIIIAAAlURIMRRFT1eiwACCCCAAAIIVIPA+++/b5dddplNmzYta2uN11/ftmvXzjq1b287d+hgrX/607V6s2DJEps+a5Z99PnnwZ/P58/PLLPjDjtY7332sbPPPrsa9oJNIIAAAghUgsAjjzximurkiy++yOpuy822sm122dOab9TaGjRqYg0bN7GGjZpaw0ZNbOEXM23Oh+/aVzM/sK9mfWgrf/g+89ptOna2A3+xt+237762ww47VAIBfUQAgRoWIMRRwwegTJsnxFEmWFaLgCNAiIPTAQEEEEAAgdojQIij9hxL9gQBBBBAAAEEarmAyt1PmjTJpk6dWvKe1q9f344++mjba6+9bJ999il5PbwQAQQQQKD2CixdujR4r9EfTev14YcfFrWzLTZqZT/ruL0ddcRhdughhxT1WhZGAAEEbr75Zvvmm28CiGbNmpkGJWmVL7Bw4UK78847MzvSuXNn69u3b+XvGHuAQIoEJkyYYNOnT8/06PTTT7cWLVqkqId0BQEEEEAAAQTiChDiiCvFcggggAACCCCAQEoEPv30U3v99dft6aeftilTpuTtVYvmza1jp0629dZb24477miHH354SvaCbiCAAAIIVIrA7Nmz7eWXX7aZM2faggUL7Mt5C2z+/Pn29cIF1qhxY9ti2062XcdOtu0221inbbe2jttubY0aNaqU3aOfCCCAAAIIIIAAAggggAACCCCAQKoECHGk6nDQGQQQQAABBBBAoDiBFStWBANpGlQL/6v/VxnqDh06WPv27YtbIUsjgAACCCCAAAIIIIAAAggggAACCCCAAAIIIIBAjQkQ4qgxejaMAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgj8T4AQB2cDAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCQAgFCHCk4CHQBAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBAgxME5gAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIpECAEEcKDgJdQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEECHFwDiCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAikQIMSRgoNAFxBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAUIcnAMIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggEAKBAhxpOAg0AUEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQIAQB+cAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCQAgFCHCk4CHQBAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBAgxME5gAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIpECAEEcKDgJdQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEECHFwDiCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAikQIMSRgoNAFxBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAUIcnAMIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggEAKBAhxpOAg0AUEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQIAQB+cAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCQAgFCHCk4CHQBAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBAgxME5gAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIpECAEEcKDgJdQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEECHFwDiCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAikQIMSRgoNAFxBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAUIcnAMIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggEAKBAhxpOAg0AUEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQIAQB+cAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCQAgFCHCk4CHQBAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBAgxME5gAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIpECAEEcKDgJdQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAANXyPYkAACAASURBVAEECHFwDiCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAikQIMSRgoNAFxBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAUIcnAMIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggEAKBAhxpOAg0AUEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQIAQB+cAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCQAgFCHCk4CHQBAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBAgxME5gAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIpECAEEcKDgJdQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEECHFwDiCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAikQIMSRgoNAFxBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAUIcnAMIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggEAKBAhxpOAg0AUEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQIAQB+cAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCQAgFCHCk4CHQBAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBAgxME5gAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIpECAEEcKDgJdQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEECHFwDiCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAikQIMSRgoNAFxBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAUIcnAMIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggEAKBAhxpOAg0AUEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQIAQB+cAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCQAgFCHCk4CHQBAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBAgxME5gAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIpECAEEcKDgJdQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEECHFwDiCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAikQIMSRgoNAFxBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAUIcnAMIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggEAKBAhxpOAg0AUEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQIAQB+cAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCQAgFCHCk4CHQBAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBAgxME5gAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIpECAEEcKDgJdQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEECHFwDiCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAikQIMSRgoNAFxBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAUIcnAMIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggEAKBAhxpOAg0AUEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQIAQB+cAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCQAgFCHCk4CHQBAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBAgxME5gAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIpECAEEcKDgJdQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEECHFwDiCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAikQIMSRgoNAFxBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAUIcnAMIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggEAKBAhxpOAg0AUEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQIAQB+cAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCQAgFCHCk4CHQBAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBAgxME5gAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIpECAEEcKDgJdQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEECHFwDiCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAikQIMSRgoNAFxBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAUIcnAMIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggEAKBAhxpOAg0AUEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQIAQB+cAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCQAgFCHCk4CHQBAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBAgxME5gAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIpECAEEcKDgJdQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEECHFwDiCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAikQIMSRgoNAFxBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAUIcnAMIIIAAAggggAAC1SKwatUqmz9/fmZbzZo1syZNmlTLtqt7I6tXr7avvvoqs9n69evbRhttVN3dSMX2Zs+ebS+88ILttttu1qVLl1T0iU4ggAACCCCAAAIIIIAAAggggAACCCCAAAJpFSDEkdYjQ78QQAABBBBAAIEKEPjhhx9s8eLF1rJlS1tnnXXy9njChAk2ZMiQzDKjRo2y4447rgL2svgufvPNN9axY8fMC7fbbjt77rnnil9Rhb9i3LhxNnTo0MxeHHvssXb55ZdX+F7RfQQQQAABBBBAAAEEEEAAAQQQQAABBBBAoHwChDjKZ8uaEUAAAQQQQACBWifwwQcf2Kuvvmrvv/++vffee/bxxx9n9rFr1662ww47mAILBx98sDVq1Chr///0pz/ZBRdckPk3Qhy17vTI2iFVI9l7773t008/zfr3d955xzbYYIMa2fklS5bYsmXLgm3Xq1fP2rZtWyP9YKMIIIAAAggggAACCCCAAAIIIIAAAggggEAuAUIcnBsIIIAAAggggAACBQU0Fcof/vAHu+qqqwouqwVat25to0ePtl122SWzPCGOulWJQ+eMQj2qSuK2SZMm1Vh44pprrrE77rgj051HHnnEevToEeucZiEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQKA6BAhxVIcy20AAAQQQQAABBCpYYO7cuXbuuefaG2+8UdReNGnSxJ555hlr37598DpCHHUrxKFjfvPNN9stt9ySOW969eplDzzwQFHnUZIL+yGO+++/33r37p3kJlgXAggggAACCCCAAAIIIIAAAggggAACCCBQJQFCHFXi48UIIIAAAggggEDtFli5cqXtt99+a02JoYDGXnvtZZ07d7aNN97Y3n33XXv55Zfts88+y4D89Kc/tccff5wQh1kwxcxzz9W9EMcPP/wQ7LfOjZ122skOPfRQa968eY390hDiqDF6NowAAggggAACCCCAAAIIIIAAAggggAACMQUIccSEYjEEEEAAAQQQQKAuCowdO9bOP//8rF3v1q2b3XrrrdaqVausf1fg46KLLrJx48aZAhyPPfaYbbnllpllqMRR90IcafudIcSRtiNCfxBAAAEEEEAAAQQQQAABBBBAAAEEEEDAFyDEwTmBAAIIIIAAAgggECmwfPly22OPPezrr7/O/PyYY46xkSNH2nrrrRf5mh9//NHuuece22effbICHFo4X4hjxYoVNm/ePFPlhs0228zq169f8lFRmGTOnDnWsGFD22STTaxevXolryt84TfffGOaVkYVSDbaaCNr0KBB3nVq+Y4dO2aWKWclDpkvXLjQVq1aZRtssIGtv/76Je+v1rF48eJgXaqwksa2ZMkSW7BggW244YZBWKiYRoijGC2WRQABBBBAAAEEEEAAAQQQQAABBBBAAIGaECDEURPqbBMBBBBAAAEEEKgAgdtvv92uvfbaTE8VYJg6dao1bdq0pN5HhTh69epl1113nT399NNZ61To4ZxzzrFf/OIXsba1aNEi+/3vf29vv/12MLVL2NRnrUvTeCiAss4668Ran0Il9913n73++uv23nvvZQVZtIJtttnG+vXrZ/37948MEhQb4lAFE20rbFdeeWUwXU3YFKQZMGCAff/998E/XXjhhbbvvvvabbfdFoRmtL2wbb/99tazZ087++yzrVGjRgX399tvv7XRo0cH2//73/+eZbfzzjsHxyCO3eDBg+3999/Pu73u3bsHx7tQGzRokH300UfBYn369LFLL73UHnjgAbvllluyjoWO74EHHhj8vEWLFmutVv2ePXt2lqNrpRCI1pGrybdLly6FusvPEUAAAQQQQAABBBBAAAEEEEAAAQQQQACBxAQIcSRGyYoQQAABBBBAAIHaJaDQwJQpUzI7pYHyE088seSd9EMcQ4YMMU3X8uWXX+Zc5wknnGAjRozIu81JkybZGWecsVbQwn9Rjx497IYbbrBNN9007/oUZBg6dKh9/PHHBfdVIQBNLaPQhNuKDXEoLOFWPHnhhResQ4cOmVV+8skntvfee2f+rhCH/u3RRx/N2UeFOe6++25r06ZNzmUUlDj11FML7qu2Lbt8lS8OOugg++c//5nXrHfv3nb//fcXdFUVkzBsoaCPtj98+PCcr1O/dH65Zlq4Xbt2BbeVbwFNCbTbbrtVaR28GAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQKEaAEEcxWiyLAAIIIIAAAgjUIQE/WKAqC40bNy5ZwA9xbLnllvbpp58WXJ+CCl27do1c7pVXXrHjjjuu4DrCBVRB47nnnss5Hczzzz9fUlDlr3/9q2299daZfhQT4tDUILvuumvWPiig4U5Z44c4VJ1i4sSJBfdb4YY33ngjcoqVL774whRsids233xze+mll3JOdVOuEIeO2X/+85+8YR/tg/blkUceydodQhxxjy7LIYAAAggggAACCCCAAAIIIIAAAggggEBaBAhxpOVI0A8EEEAAAQQQQCBFAppi42c/+1mmR61bt86qylFKV/0QR7iOgw8+2Pr27WutWrWy6dOn21VXXZU1PYgCHFEVJ1auXGn777//WlUkTj/9dFNARE2VRMaNG5fVXVWU0DQoflPwYs8991yroke3bt2CgID6pyodL7744lrLKMCg6WfCVkyIQ9VIzj///Mxrd9ppJ/vzn/+c1T0/xBH+UMdFVUgUVtA2FVB5/PHHs157zTXX2K9//eu19lfb1LbdpooXqnyxfPnyYIobv7KGjs3RRx8defj/7//+z2bNmpX1M1UXcafkKaUSh7tCBXY0PY6mu3n44YfXmr5F+6PjFbannnrKVq1alfn7hAkTTMGfsKmyjCqWRDVNvaPzq0GDBqWc7rwGAQQQQAABBBBAAAEEEEAAAQQQQAABBBAoSYAQR0lsvAgBBBBAAAEEEKjdAn5oIKrKQbECUSGO8847LwghuO2tt96yww47LOvfFA6oV69e1r+NHz/ezjnnnMy/Kbjxxz/+0dq2bZu1nKpHaFqWsKk6xbRp02zdddfNWu66666z0aNHZ/1bVOBDoQBNZxKGQxQa0JQqCnmErZgQx+GHH25vvvlm5rXDhg2zQYMGZfUjKsSh6h2amqRp06ZZyyo04QZKVEHj5Zdfzqrs8a9//cv22WefrNf5x+KHH34wTXmjMIdrp+lrGjVqFOvwf/7557bHHntkli01xNGkSRPT8VaAI2wK8fTr1y8I1oRNU64MHDgwZ98UaLnjjjsyP5ef+kRDAAEEEEAAAQQQQAABBBBAAAEEEEAAAQTSIkCIIy1Hgn4ggAACCCCAAAIpEvCnKVElBw2AV6X5IY58U32oAoKmbwmbQhduSEL/fuyxx9rf/va3zDL5pl0ZOnRoVkWOyZMnW5s2bbJ2p2PHjlkVQBQQOeussyJ3WUGOyy+/3Jo3bx6EUNypT/SCuCGOJ598cq0QS1TfokIcqtahqh1++/7774N/Vx/C9sQTT9iOO+6Y+fttt91m119/febvmrJEFUb8tnjx4qzX6ecKyuy1116xToWkQhwKzZxyyilrbVNTygwePDjz76rUMWrUqJx9I8QR67CxEAIIIIAAAggggAACCCCAAAIIIIAAAgjUoAAhjhrEZ9MIIIAAAggggEBaBfzqFZp+RFUpqtL8EEe+dZ566qlZFSA0TYhbhUH9UAWML7/8MuiSpsRwK0b4/XzjjTeyphR57LHHbLfddssspmk/dt5558zfVflBwRH9t5QWJ8QhY0394oYtVIHk5ptvXmuTfohD/ZoxY0bOrmnak7vuuivzc/2/gjFh86dSyTdNih+AyTU9S1RnkgpxKFS0xRZbrLUJBX3c/erTp4+NGTMmpwshjlLOZl6DAAIIIIAAAggggAACCCCAAAIIIIAAAtUpQIijOrXZFgIIIIAAAgggUCEC/uB4165dTZUuqtL8EIem6jj77LMjV6mfTZgwIfOzZ555xjp16pT5+4oVK2zrrbfO/F2VJy677LKc3VOYwK2qoaCEO2WLP4VLVffXD3Foqpc777zTPvjgA/vHP/5h2p47DUjY8SlTpljr1q3X2g8/xKH9VSWOXE12MgybP83IgAEDTNsKW66qHvq5phzRFC9hO+2000whkDgtqRCH3KKmcPn000/t5z//eaYrhDjiHBWWQQABBBBAAAEEEEAAAQQQQAABBBBAAIE0CxDiSPPRoW8IIIAAAggggEANCSxdutR22GGHzNY19cnbb79dpd74IQ5Ne6HpL6JaoRDHrFmzrFevXiX359JLL7UTTzwx8/rHH388K1ByxBFHZE03UuyG/BBHnNergoRCCFHND3EUCiu8/vrrdvTRR2dWpX3VPodNVUdUfSRsWn6zzTaL3LYCNO5UJgcffLCNHj06zi5ZUiGO2bNnR26PEEesw8BCCCCAAAIIIIAAAggggAACCCCAAAIIIFBBAoQ4Kuhg0VUEEEAAAQQQQKA6BTp27Jg11Ueuaghx+5SmEMcVV1xhv/nNbzJdV5WR8847L/P3vn372q233hp319ZartgQR6FQRrEhjjfffNMOP/zwTL+OOeYYu/LKKzN/90MckydPtjZt2kTu78SJE23w4MGZnx1wwAFBVZE4jRBHHCWWQQABBBBAAAEEEEAAAQQQQAABBBBAAAEE/idAiIOzAQEEEEAAAQQQQCBSQEGGd999N/Ozyy+/3I499tiStZIMcaxcudK22mqrrL506dIldt/OPPNM23fffTPL+6GH7bff3p5++unY6/MXLDbEode/+OKLts0220Rus9gQhx+8UEDljDPOyKxbAQ/tc9ieeOIJ23HHHSO3/cc//jGrisdJJ51kF198cSwbQhyxmFgIAQQQQAABBBBAAAEEEEAAAQQQQAABBBDICBDi4GRAAAEEEEAAAQQQiBQ4//zzbezYsZmfaUoVTbvRuHHjksSSDHGoAwphfPzxx5m+vP/++yX3bf78+bbbbrtl7ddbb71lG220UUn76oc4WrdubZdccomtu+66JsemTZta//79syqddOvWzWRUr169tbZZbIjjvvvus+HDh2fWc/PNN9thhx2W+btCHao+Ejb/524Hhg0bZvfff3/mn/wqJvmA0hbiuOmmm+x3v/tdpss33HBDcBxoCCCAAAIIIIAAAggggAACCCCAAAIIIIBAWgQIcaTlSNAPBBBAAAEEEEAgZQKffvqp/fznP8/q1emnnx5MOxIVNCjU/aRDHKeddpr95S9/yWzWrzZRqD/uz1evXm3t27fPesmvf/1ru+aaa4pZTWZZP8Sx3Xbb2XPPPZe1rocfftguuuiirH9TwOCXv/zlWtv0QxyFKoX4VVRk371798x6tR0FGsK266672vjx49farvZD4Rb9N2wKdPTu3TuWS9pCHOPGjbOhQ4dm+l5MVZFYO8xCCCCAAAIIIIAAAggggAACCCCAAAIIIIBAFQUIcVQRkJcjgAACCCCAAAK1WeCyyy6zBx54IGsXVQFD4YaWLVvm3HVNd6K23nrrZZZJOsThTxmiDY0aNcqOOeaYoOJFsU2VMh588MGsl+nfBg4cmLUfcdYbJ8Qho4MPPthUQSRsqtLxyiuvWLNmzbI244c49EOFQhQO8dtLL71kJ5xwQtY/v/POO7bBBhtk/k1/P/TQQ7OW8atx/PjjjzZy5EhTVY+wNWnSxCZPnmzNmzePw2BpC3FMmTLFBgwYkNX31157zTbffPNY+8NCCCCAAAIIIIAAAggggAACCCCAAAIIIIBAuQUIcZRbmPUjgAACCCCAAAIVLBA1zYh2R4P5qlSxzTbb2FZbbRUEOhYvXmxz5swxhQgUsLj22mvtkEMOyex90iEOrXjw4MHBttymAfnf/va3Qb8UhmjUqJH95z//sc8++8xmzpxphx9+uG222WZrHZUlS5ZYjx49sqpOaCFVvVDgIdzP77//Pljmq6++si+++MJ22mkn23vvvbPWFyfEoRdMnTp1rek8FMAYMWJE1vqiQhw6BmeeeWZQLUXTvnz99df26quv2uWXX5712lNOOcUuvPDCtfY3yk7b3mWXXUyVSZ566il7/vnns16n9Wh9flMQxa3WEf5c3qqQErYuXbqYpmfxm/69fv36mX/u2LFj1vpmz54d+VvkV4vp06ePjRkzJudv3MKFC4P989uQIUNshx12CM5jhWsWLVpkX375pW255Za2xx57VPBvMF1HAAEEEEAAAQQQQAABBBBAAAEEEEAAgUoTIMRRaUeM/iKAAAIIIIAAAtUs8Oyzz9q5554bOUifrytHHXWUXX311ZlFyhHiUJBi9913L0rkzjvvtAMOOCDyNY8//ridffbZRa1PlT+uvPLKrNfEDXHoRQpiPPHEE1mvf+aZZ6xTp06Zf4sKccTt5LRp06xVq1ZrLf7RRx/ZfvvtF3c1piohr7/+ujVu3Hit1/jTt8Re6ZoFFWbZeOONMy8rV4hDG/CnksnX1379+tmNN95Y7O6wPAIIIIAAAggggAACCCCAAAIIIIAAAgggULIAIY6S6XghAggggAACCCBQdwTmzZtnF198sb344ouxd7p169am6SvCVo4Qh9Y9a9YsGz58eDANSZx20UUX2cknn5xzUU1Ton1VZYs4bc8991xrGpZiQhxz58617t27Z21KlSkmTJiQmRbGD3FoShuFMFRdJFdTpQ5VpchXSeKNN96w008/veC+atqW22+/PahMEdUqKcTx3Xff2RFHHGHvvvtuwcO766672vjx4wsuxwIIIIAAAggggAACCCCAAAIIIIAAAggggEBSAoQ4kpJkPQgggAACCCCAQB0QePLJJ4PpSz788EP7+OOPI/dYFRtU6aJXr172i1/8IrOMH+K47rrrbMCAAZHrUNDi4Ycfzvzs5ZdfzhkgCBfS1B933XWX5ZraI1zutNNOs/PPPz/v0dL0K7///e/thRdeME3Zka9169bNxo4dm7WIplzp0KFD5t8KhQFGjx5t8nDb3XffnfHzQxyaNmTUqFF2/fXXm2z8wEnv3r3tqquusk033bTgWakpRrQuBXT8KVEUxNFUMuecc441bNgw57o0tY4CIaW2fJU4FEaZMWNG5Ko1nY2mwAnbr371K7vlllsKduPHH3+0p59+2m666aa8x9cPIhVcMQsggAACCCCAAAIIIIAAAggggAACCCCAAAJVFCDEUUVAXo4AAggggAACCNRVgZUrV9qcOXNs/vz5pkHxDTfcMJhyQ/+tV69ejbIsXrzYZs+ebcuXLw/61qhRI9too42sTZs2Vr9+/aL6pv1UxQuFHbS+9ddfPwg0aD9LWV9RG1+zcFSIQ1U2wqYwg0I1m2++ubVr1y5TwaPYbS1YsCDY13XWWce22mora9asWbGrqLjlFbjRtDxffvmlrV69Ojh3db5oepeWLVuWy/zP/wAAIABJREFUbFlxEHQYAQQQQAABBBBAAAEEEEAAAQQQQAABBFIhQIgjFYeBTiCAAAIIIIAAAgggkFugUIgDOwQQQAABBBBAAAEEEEAAAQQQQAABBBBAAIHaIUCIo3YcR/YCAQQQQAABBBBAoBYLEOKoxQeXXUMAAQQQQAABBBBAAAEEEEAAAQQQQAABBBwBQhycDggggAACCCCAAAIIpFyAEEfKDxDdQwABBBBAAAEEEEAAAQQQQAABBBBAAAEEEhIgxJEQJKtBAAEEEEAAAQQQQKBcAoQ4yiXLehFAAAEEEEAAAQQQQAABBBBAAAEEEEAAgXQJEOJI1/GgNwgggAACCCCAAAIIrCVAiIOTAgEEEEAAAQQQQAABBBBAAAEEEEAAAQQQqBsChDjqxnFmLxFAAAEEEEAAAQQqWIAQRwUfPLqOAAIIIIAAAggggAACCCCAAAIIIIAAAggUIUCIowgsFkUAAQQQQAABBBBAoCYEFi5caHfeeWdm0507d7a+ffvWRFfYJgIIIIAAAggggAACCCCAAAIIIIAAAggggEAZBQhxlBGXVSOAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAnEFCHHElWI5BBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEECgjAKEOMqIy6oRQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAIG4AoQ44kqxHAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgggUEYBQhxlxGXVCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIBAXAFCHHGlWA4BBBBAAAEEEEAglsCMGTNs6dKlwbJTpkyJ9ZqyL7R6tVnUH23Y+/c5c+fa53Pn/vffw5+HHfT/Lfy7u1zU68q+g1XcQL16/1uB+//613x/j/OzcJk8/+3UsaM1a9bsv9vy11nErs2ZM8c+//zz4BWbbbaZtW3bNvh//Tf8/47htopYL4sigAACCCCAAAIIIIAAAggggAACCCCAAALVJUCIo7qk2Q4CCCCAAAIIIFBLBRTaUFhj4sSJ6Qlt1FJrdisZgW7dulmfPn1M/1Wog4YAAggggAACCCCAAAIIIIAAAggggAACCKRFgBBHWo4E/UAAAQQQQAABBCpIQKGNxx57zCZPnmyqfpCrbdqypW3WsmXmx906dYpcdMr06bH2/vMFC+yLBQtiLctC6Rb4SePG1ql9+6I62bZVK2vrnE/+i8PzqJjzRBU6unfvbkOGDMlU6yiqUyyMAAIIIIAAAggggAACCCCAAAIIIIAAAggkKECII0FMVoUAAggggAACCNR2AQU3Hn300bUqbmy3xRbWqV0769i+vXXv1Cn4b1ra0m++sRmzZiXanX+XYZ2JdtDMmjVpUnRIopg+aP1pOs65+q5jP3n6dHt+6lSbMmNGzl3UdC6DBg2ygQMH/ndqFxoCCCCAAAIIIIAAAggggAACCCCAAAIIIFADAoQ4agCdTSKAAAIIIIAAApUksHTpUrv33nuD8EZYdeMnTZpY/169rE/XrsFAvgb0aQhUgsBEhTmmT7eJ06ZFVnUhzFEJR5E+IoAAAggggAACCCCAAAIIIIAAAgggUHsFCHHU3mPLniGAAAIIIIAAAlUWUHBj1KhRpiCHmqbAGHTQQcEfghtV5mUFNSzw6Cuv2M3jxkWGOTp27Ghjx46lKkcNHyM2jwACCCCAAAIIIIAAAggggAACCCCAQF0TIMRR1444+4sAAggggAACCMQQUGhD4Q2FOMI2pH9/whsx7Fik8gTuefrpIMyxbPnyrM63bdvW7r77blOgg4YAAggggAACCCCAAAIIIIAAAggggAACCFSHACGO6lBmGwgggAACCCCAQAUJzJgxw84991zTf9VUfePG004Lpk6hIVBbBZZ+840pzHGLE1zSvmp6FQU5unXrVlt3nf1CAAEEEEAAAQQQQAABBBBAAAEEEEAAgRQJEOJI0cGgKwgggAACCCCAQE0LBNOnjBxpS5ctC7qiAMe4kSOtY/v2Nd01to9AtQhMnDrVzh09eq2qHDfccIP179+/WvrARhBAAAEEEEAAAQQQQAABBBBAAAEEEECg7goQ4qi7x549RwABBBBAAAEEsgRUeWPAEUdkAhzbtW9vN512GgEOzpM6JzBj1iz77XXX2RcLFmT2XRU5nn32WdMUKzQEEEAAAQQQQAABBBBAAAEEEEAAAQQQQKBcAoQ4yiXLehFAAAEEEEAAgQoSWLp0qR3Qp4/NmTs36LUqcLxx++3WrEmTCtoLuopAcgKaXuWIESPs/VmzMivt2LFjEOSgIYAAAggggAACCCCAAAIIIIAAAggggAAC5RIgxFEuWdaLAAIIIIAAAghUkMCAfv1syrRpmR6PHTHCunXqVEF7QFcRSF4gKsgxcOBAGz58ePIbY40IIIAAAggggAACCCCAAAIIIIAAAggggICZEeLgNEAAAQQQQAABBOq4wMjhw+3e++7LKAw88EAbfsIJdVyF3UfgvwJzFiyw/c87z5YtX54hGTNmjPXp0wciBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAgcQFCHImTskIEEEAAAQQQQKByBObMmWM9e/bMdHi79u3tueuvr5wdoKcIVIPAlOnTbcCIEZktNWvWzCZNmmT6Lw0BBBBAAAEEEEAAAQQQQAABBBBAAAEEEEhSgBBHkpqsCwEEEEAAAQQQqDCBc08/3R576qlMr5+9/nrr2L59he0F3UWg/AI3jxtntzz6aGZDw4YNs0GDBpV/w2wBAQQQQAABBBBAAAEEEEAAAQQQQAABBOqUACGOOnW42VkEEEAAAQQQQOB/An4Vjn69e9uNp50GEQII5BAYMHy4TZkxI/hp27Ztg2ocNAQQQAABBBBAAAEEEEAAAQQQQAABBBBAIEkBQhxJarIuBBBAAAEEEECgggRuvvpqu+XOOzM9nnT77da2ZcsK2gO6ikD1CvjTqtxwww3Wv3//6u0EW0MAAQQQQAABBBBAAAEEEEAAAQQQQACBWi1AiKNWH152DgEEEEAAAQQQiBZYunSp9eze3Zb+5z/BAt06drSxI0fChQACBQTcahzdunWzsWPHYoYAAggggAACCCCAAAIIIIAAAggggAACCCQmQIgjMUpWhAACCCCAAAIIVI7Ao2PH2nnnn5/p8NgRI6xbp06VswP0NFLgq0WL7PL777eX//5323eXXez8o46iukrC54pfjUMhDoU5aAgggAACCCCAAAIIIIAAAggggAACCCCAQBIChDiSUGQdCCCAAAIIIIBAhQmceMIJ9vxLLwW9pgpHhR28PN0983e/sydefz2zRJNGjezeCy8MjjEtOQG3Gke/fv3sxhtvTG7lrAkBBBBAAAEEEEAAAQQQQAABBBBAAAEE6rQAIY46ffjZeQQQQAABBBCoqwI7bL+9LV22LNj9Yccfb4MOOqjWUSxetsyG33uvHbbXXtZ7p53Ksn9/fu01++tbb9ktZ55p666zTlm2EXelK1etsq2OPDJYvH/v3vb9ihX25KRJwd//eOmltleXLnFXxXIFBOYsWGA9Tz01WKpjx4727LPPYoYAAggggAACCCCAAAIIIIAAAggggAACCCQiQIgjEUZWggACCCCAAAIIVI7AnDlzrGfPnpkOT7r99lo55cb0mTPtwPPPD6aJ0XQx5WgnXnedPT9tmo0dObLGq13MW7zYug4ebNu1a2fP3XBDsLsPPPecXXbPPcH/33/JJdZ7xx3LwVAn19nj1FPtiwULgn1/7733rFmzZnXSgZ1GAAEEEEAAAQQQQAABBBBAAAEEEEAAgWQFCHEk68naEEAAAQQQQACB1AtMnDjRBg8eHPRz05Yt7Y3/z969wNlU7o8f/yL3UEmIIslx66Zo0Cmp3FOnjEFFrrnkMrnlOoZUSEQUci8aly4OQuU4zqHJrYRxqaNISZKQe/J/fZ+ftf5rL3tm9p5Ze2bvmc/zennF3ms9l/ezZu3dPN/1fSZPDvs+p6WDX//vf/LICy9IuZIl5V8TJqSlilTPaT9qlHy6aZNM6dNHGtxzT6rHh/KA7Xv3SuP+/aVe9eoyrV8/u6kVX3whz14K6lg+erRUuemmUHYj29QdP3OmzFi+3Ix36tSpUr9+/WwzdgaKAAIIIIAAAggggAACCCCAAAIIIIAAAqETIIgjdLbUjAACCCCAAAIIhKVAfHy8zJgxw/StXaNGEte2bVj2M72dStyxQ2IuZeB4ql490S0wDv32m+TJnVsa16wpzzZtmq4m/rp4UVrGx4u2c3fFinLDddfJD7/8IidPn5YiV14pE3r2lOJXX52uNoI5OTEpSWLi4i4L4tA65q5aJYOnTZNWDz0kLz/7bDDVcmwyAs7rq127dhIXF4cVAggggAACCCCAAAIIIIAAAggggAACCCCQbgGCONJNSAUIIIAAAggggEBkCcRER0vihg2m01P79pX6NWpE1gBE5MJff8me/fvltxMn5I5bbpGC+fLJnxcuyNj33pNte/fKvkOHZP+hQ8mOK6ZuXRndpUvQ4/5yzx5586OP5Jfffxf9e3KlaJEiMmfgQKlarlzQbegJOr5cOXMGde7GXbuk2ZAhfoM4fv/jD7m9bVsTuDLw6aeDqpeDkxeo2qaNnDh1SqJq1JCEhQuhQgABBBBAAAEEEEAAAQQQQAABBBBAAAEE0i1AEEe6CakAAQQQQAABBBCILIEyZcrYHd4XQQvPB48ckZUbNsi6bdtk3fbtJuOFlia1asmk2FjZ+u230nTAAL+T8UzDhlKtQgWpeOONcnOpUnJFrlxpmrS2L78sq7dsuexcDdZoWru23FqunPztxhulaOHCydavwSWaxSH3FVdIVJUqUrJoUZ9jJ3/4obzx/vuyccoUKZg/f0D93Lx7t+z47jsZMn263yAOreSXo0elcMGCki9PHrvOYydPmuwkxa+5RooULJhiW8EcG1Cns8BBvSdNkkVr1piR7Nu3LwuMiCEggAACCCCAAAIIIIAAAggggAACCCCAQGYLEMSR2TNA+wgggAACCCCAQAYLWEEcUZUrS0J8fAa3nrbmXl+0SF5LSPA5WbNdXHfVVRL9wAPSvnFj0WwTrUeOlHPnz0vDqCgpdtVVMuBSIETSnDmpNqzBIR8nJprsHhrQUPmmm+TpevV8zlu4Zo3EzZghD1arJg9Uqybv//vf8p+vvzZblOhWJSmVs+fPy+h58+TtpUt9DuvZrJk8HxNjXrt48aLc1bGjHDl2TPYmJASUjeP8n39K+ZYt7To1KEQ9bildWspdf71cf+21PkErmuVj8Zo1MmP5ctnpCDy4/447zBga3HOPXVcwx6YKnAUP0Ouhz6RJZmQff/yxVK5cOQuOkiEhgAACCCCAAAIIIIAAAggggAACCCCAQEYKEMSRkdq0hQACCCCAAAIIhIGAFcTRrlEjiWvbNgx6lHIXNPihQqtW9kG6FUqnpk2lfKlSKZ6o26vc3KKFOeb7BQskR44cfo//6+JFeWnuXJn2z39e9r4GWPSMjk42mGLi4sXy6nvvyeDWraXjI48k2x8NtOg8dqx8ummTOaZW1aqi7WpGDi1rJkyQm0qWNH+P6txZqtx0k0zv3z/guXlqxAgTTJJcub18edH5rl6xonQbP95nK5hKZcrI/l9+sTObaODKsHbt5Ndjx0yfndvGJHdsWjObBDzAMD0w6fvvpWHfvqZ3CQkJEhUVFaY9pVsIIIAAAggggAACCCCAAAIIIIAAAgggECkCBHFEykzRTwQQQAABBBBAwAOB48ePy6233mpq6hUdLbHNm3tQa+ir0EAJDZjQoluMdH3sMWnbqJEUzJcvxcbLREeb93e/+67PNiLOk16YMkXmf/qpqbdfy5ZmO5J8efPKne3amcMm9Owpj957r992NKvGiNmzU7Ucm5AgExYtMm3MHjjQBFOcOntW7u3WzWTdmNq3r9SvUcO0odk4kgs4SWmwa778Utq89JI55KG775az585J0r59pn6rdGjcWN5etsx2nNqnj9x7220moORfW7bIsJkzRbd7adOggdxdsaJ0Hz8+oGOHt28f+osgTFuwrjGCOMJ0gugWAggggAACCCCAAAIIIIAAAggggAACESZAEEeETRjdRQABBBBAAAEE0iOQmJgoMZe27kgYNkyiqlRJT3UZem5iUpKMmT9fNu3aZdrV7VR6NWtmtlPJnzev375YC+w733lHCvg55rPNm6XdK6+Y4Iplo0bZ2TB0WxXNQqFFtydZO3Gi5Mmd+7I2pixZYrJ4dH/iCelzKeuH+6Cffv1VanbpYr9crmRJqVqunKzbvt0OsPhiyhQpcc016fLUrU/KXZrbfQsX2nWdPHNG9v/8s0iOHPLb8ePSavhw895HL78sd5Qv79Pmj4cPS62uXc1rGmxiBYWkduw38+b59UnXgCLkZPVSt1dffVWiLwUNRUjX6SYCCCCAAAIIIIAAAggggAACCCCAAAIIhKEAQRxhOCl0CQEEEEAAAQQQCJWAM4jj4zFjpHLZsqFqKmT1asaJSR98IBt27jRtaADGC61aydP161+WwcIK4tgyfboULVzYHN/vzTdlx/ffy9JXXpHBb78t76xaJW/ExsojtWqZ9/84fVoe6d9f9h48aI9hRPv20rpBg8vGNHvFChk6fbp0aNJEhrRpY97/5sABeXTgQJnQo4fJiKHbtLw4Z44JmNGsGPq+VTRA5KVOnaRutWr2a1rnknXr5LXnnpMyxYsH5Zha5pH127dLy/h4ubF4cfnPG29cVrf27aHYWPP6O0OGiG7TEsix/3vvPcmuW6rExMWJBhj16tVLYi/ZBTVpHIwAAggggAACCCCAAAIIIIAAAggggAACCDgECOLgckAAAQQQQAABBLKRgDOIw5mtIRIIvv/5ZylbooTdVQ3iGLdggWhggpan69WTFzt29BnKAz16mGCMlWPHSsUbb5Qz585JtQ4dzDHbZs2SPpMmyftr10r7xo3l+ZgY2b1/vwydMUO2791rghduu/lmWbp+vQkUmfHCCxJVubJP/VbGjsY1a8rk5583701dskRGzp0rusWIbkvScfRoWbVxo8wbOlRqVq1qgk/2/PCDFCtSROrceadPFpGz589LhVatTD06Fh1TMEUDMDQQ49Nx4+SW0qUvO1XHV693b/P6qrFj5W833mj+/ueFC7Jp924Z8NZbxuu5xx+XprVrB3xs35Ytg+lmljq296RJsmjNGoI4stSsMhgEEEAAAQQQQAABBBBAAAEEEEAAAQQyT4Agjsyzp2UEEEAAAQQQQCDDBawgjkply8qKMWMyvP20NqhBBje3aCF3VqhgtlC57447JGeOHKa6NV99JW1GjjR/XxAfL/c4Ai00k8R/vv7aZMpoFBUl05ctk2Wffy7N69aVMV26yMoNG6STH4dKZcrI3MGD5epChaT9qFGi2T+0aGDGkw8/bGed2Lx7tzw+eLAJ8pgzcKB89/PPEjdjhpw8fVrWTJhgtmeJHjrUBG70adlSuj/+eIoEJ06dkqqXMnpsmDpVil99dVBkVkDB1L59pX6NGn7P1UwcVuBLjUqVJGfOnJK4Y4d97FMaDNOhg8lqEsyxQXU0Cx2sgUTjFy6Udu3aSVxcXBYaGUNBAAEEEEAAAQQQQAABBBBAAAEEEEAAgcwQIIgjM9RpEwEEEEAAAQQQyCQBK4hDM0okxMdnUi+Cb/avixfl/u7dZf+hQ+Zk3YakTIkSkjtXLknat89sU6Jl5oABPluTvPXRR/LyO+/4NKgBF2snTpRrixSRixcvyoTFi+W1hAT7mGcaNpQ+LVpIoQIFzGunz56VzmPH2oEc6yZPltLFipn3NFij+rPPmv86i2b16NmsmXlJA0eGz5pl/j4/Lk5qVa16GcCxkyfl199/l5tLlTJBH1oWDh8eNNTarVvl6Rdf9Nkexl3JL0ePyuh582T5F1/49FuDPjRziPZPAzi0BHNs0J3NIidYgUBRUVGS4LiOssjwGAYCCCCAAAIIIIAAAggggAACCCCAAAIIZLAAQRwZDE5zCCCAAAIIIIBAZgpMnz5dhg8fbrYFiaQgDjX77cQJmbZkiUz+8MPLCDUwo3X9+tK/VSs7AEEPOnnmjDwxeLDs3LfPbI8SXaeOyaRRtEgRnzpOnT0rR48fl+LXXGNn2XA3onVcU7jwZdkxPli7VnpNnGgO10CIVg89ZLZJsYpmEdFsHVu//da81KxOHal9662SL08es/XJZ5s32+8tHz1ayl1/vTkuf968abpUDh09GlAGDw2M+e34cdFwDR2XFbjhr9Fgjk1TpyP4JM1iEjNsmBDEEcGTSNcRQAABBBBAAAEEEEAAAQQQQAABBBAIIwGCOMJoMugKAggggAACCCAQaoFx48bJ+PHjIzKIw7LRwIzvfvpJfvz1V8mbO7cUKVhQKpYpk2zQgxWAoJk3QlX+OH3abEtSIJnACw0SGTR1qry/dm2yXdDMHV0eeyzNwRuhGhv1pixgbadCEAdXCgIIIIAAAggggAACCCCAAAIIIIAAAgh4IUAQhxeK1IEAAggggAACCESIQFYI4ogQar/d/PbHH+WTjRvNtjAa9HHDddfJHeXLy50VKpiAFErkCRDEEXlzRo8RQAABBBBAAAEEEEAAAQQQQAABBBAIZwGCOMJ5dugbAggggAACCCDgsQBBHB6DUl22FyCII9tfAgAggAACCCCAAAIIIIAAAggggAACCCDgqQBBHJ5yUhkCCCCAAAIIIBDeAjExMZKYmBjR26mEtzC9y24CVhBH6dKlZd26ddlt+IwXAQQQQAABBBBAAAEEEEAAAQQQQAABBDwWIIjDY1CqQwABBBBAAAEEwlmAII5wnh36FokCVhCH9n3fvn2ROAT6jAACCCCAAAIIIIAAAggggAACCCCAAAJhJEAQRxhNBl1BAAEEEEAAAQRCLWAFcfSKjpbY5s1D3Rz1I5DlBQjiyPJTzAARQAABBBBAAAEEEEAAAQQQQAABBBDIUAGCODKUm8YQQAABBBBAAIHMFSCII3P9aT3rCRDEkfXmlBEhgAACCCCAAAIIIIAAAggggAACCCCQmQIEcWSmPm0jgAACCCCAAAIZLGAHcTRvLrHR0RncOs0hkPUECOLIenPKiBBAAAEEEEAAAQQQQAABBBBAAAEEEMhMAYI4MlOfthFAAAEEEEAAgQwWsIM4YmIktlmzDG6d5sJNYMz8+bJp9255o1cvKXbVVeHWvYjoD0EcETFNdBIBBBBAAAEEEEAAAQQQQAABBBBAAIGIESCII2Kmio4igAACCCCAAALpF7CDOFq0kNgnnkh/hdQQ0QJRnTvLwSNH5O3+/eXhu++O6LFkVucJ4sgsedpFAAEEEEAAAQQQQAABBBBAAAEEEEAgawoQxJE155VRIYAAAggggAACfgXsII6WLSX28cdRClJg2969Mn7hQhnerp2UKlYsyLPD6/BTZ89KpaeeMp2a/Pzz0rhmzQzt4J8XLsgVuXJlaJuhaKzj6NGyauNGU/W+fftC0QR1IoAAAggggAACCCCAAAIIIIAAAggggEA2EiCIIxtNNkNFAAEEEEAAAQQI4kjfNTDr448lbsYM6R0TIz0ifDuaXfv3S/3evQ3IyI4d5al69dKHk8rZGrTx7iefyPxPP5Wdl4IdihYpIjEPPCA9o6MlX548IW0/VJXHxMVJYlKSqZ4gjlApUy8CCCCAAAIIIIAAAggggAACCCCAAALZR4Agjuwz14wUAQQQQAABBBCQ2rVry4EDB6RXq1YS+49/IBKkwNtLl8qI2bOlbaNGMqxt2yDPDq/DV27YIJ3GjDGdGtG+vbRu0CBkHfzj9GnRjBXrt2/320bdatVkat++kvuKK0LWh1BVTBBHqGSpFwEEEEAAAQQQQAABBBBAAAEEEEAAgewpQBBH9px3Ro0AAggggAAC2VSgTJkyZuS9nnxSYh97LJsqpH3Yry9aJK8lJEjJokXlvttvl32HDsmxP/6QgvnzS2x0tNx7221przyDz5yyZIm8NHeuafWN2Fh5pFatkPXActMGNOOH/imYL5/JzPHWRx+ZdmcOGCAazBFphSCOSJsx+osAAggggAACCCCAAAIIIIAAAggggEB4CxDEEd7zQ+8QQAABBBBAAAFPBewgjqeekthHH/W07qxY2eHffzeBDj8dOSLfHDggR44d8ztMDeIY2qaNtHjwQfv9C3/9Jbly5gxbljHz58sb779v+rcgPl7uqVw5ZH21gjgqlSkjy8eMkZw5cthtPTFkiGzatUtGdOggrevXD1kfQlUxQRyhkqVeBBBAAAEEEEAAAQQQQAABBBBAAAEEsqcAQRzZc94ZNQIIIIAAAghkUwE7iOPppyW2adOIVjh+8qTky5NH8uTO7Xccf164IGu3bpUDv/wilcqWlTvKl79su46/Ll6UM+fOSYG8ef3WMW3pUnlx9uzL3itapIg8+fDDcvvNN8vfbrxRShcrJjkcgQkbdu6U6KFD5cORI+XOChXS5Xzk+HG5ulAhn8AHq0Lt//cHD5pxaXaQK3LlCrgtHZeOT8vXs2ZJkYIFfc4NxC/QxnQ7lYTVq6VK2bISVaWKfdrFixelZpcucvDIEXnl2Wel5UMPBVpl2BxHEEfYTAUdQQABBBBAAAEEEEAAAQQQQAABBBBAIEsIEMSRJaaRQSCAAAIIIIAAAoEJ2EEcrVtL7COPBHZSGBz15Z498t/t26Vdw4aSP18+Gfr22zJ31SopV7KkfPDSS3LVlVf69FKDKAZOnWqyZ1hFgxwS4uOlTPHi9mtDp0+X2StWyLJRo6RquXI+dRw4fFjGL1ggi/79b9Fgg4FPPy2/HD0qby9dKk1r15aJvXolKxM7caK8v3Y8+BocAAAgAElEQVStLHn5Zbm9fPmABT9Yu1bOnj9vMnocO3lS2rz0kujYm9SqJW/06mUHiuw/dEjGLVggKzdulJOnT5v6NbCkRd260rpBAylxzTU+bW799ltZ89VXcuLUKWlcs6bcecstMuTtt2XOypVy/x13yJxBg9LkF/DAkjnw6//9Tx554QXzrr85SG/9GXE+QRwZoUwbCCCAAAIIIIAAAggggAACCCCAAAIIZB8Bgjiyz1wzUgQQQAABBBBAQOwgjjZtJLZJk4gRGTxtmgnamN6/vwnMeOXdd+2+P/f449K3ZUv7359v3y4t4uPNv3Wbk4fuuks+3bzZBDs8ft99Mq57d/vYlvHxsn77dpPF4uMxY0zGi1+PHZNR8+bJgtWr7Tp6NWsmnZo2lS+SkqR5XJzUrVZNZg4YkKzfC1OmyJJ162TztGmSP5ksH/5O/vtzz4kGaGx5+23pM3myrN6yxT5s7uDBct/tt5vACw3AsIqO8fqiRe2AFQ3mmD1woNx6KShl4vvvy6vz5/s099HLL8s7K1fKwjVrZHCbNtLRcS0E45feC0i3qpmyZImZp22zZoX19jPJjZUgjvReBZyPAAIIIIAAAggggAACCCCAAAIIIIAAAk4Bgji4HhBAAAEEEEAAgWwkEKlBHBq08eaHH0qNSpVEs2xo0QwXmmFCX1s4fLh5Tbce0UAIK2BjVOfOZruVGcuXS/zMmXJL6dLy6bhx9oxv3r1bHh882Pz77ooVpXX9+jJg6lRzvgYW9HjiCXmqXj25Mn9+c4yVOUKPXTxiRIpXjmbvcG6xEshl1rh/f9m+d6/UqlrVBJdo0T5r4MrzMTHSs1kzMz4N9NCiGTrGdO1qtoPRLCGTP/xQZi5fbt5bN3my7PnhB2n78svm3/WqVzdbmezav99sLTNy7lwzTg2A0UCYtPgFMqbkjvnx8GGp1bWrebv/k09K18ceS091mXYuQRyZRk/DCCCAAAIIIIAAAggggAACCCCAAAIIZEkBgjiy5LQyKAQQQAABBBBAwL+AHcTxzDMS27hxxDD1ffNNOzOGdrrzo4+a4IPb2rY1gQh7ExJMFgdrexQ9RoMwqt1yi+S+4go7o0WHJk1kSJs2PuNeuWGDdBozxuc1DaLQ7Us0q4Wz6NYmjw0aJHdWqCAfjhzpuV+1Dh3kyLFjdr0zXnhBShUrJvV795aH7r7bZCJ5YsgQ2bRrlwnKmNK3r+TMkcOnH4OmTZN3Vq2Sfq1aydqtWyVxxw6TaWNQ69Z2UIl1jJ7oHEta/AJB+PPCBVmemCj/2rJFjp86Jef//FO+O3jQDkbZMHWqFL/66kCqCrtjCOIIuymhQwgggAACCCCAAAIIIIAAAggggAACCES0AEEcET19dB4BBBBAAAEEEAhOwA7iaNtWYhs1Cu7kTDy69ciR8u+vvjI9aFyzpkzs1csEbfSaOFE+WLtWVo8fL2VKlJCbW7Qwx8TUrSsJl7ZDsbodXaeOxLVtK4UKFPAZyeHff5f7e/QwwSBaNFvFu0OGyBW5cl024h3ffSeN+vXzyeihAQoP9OwpDe+5RwY+/bQ5R7ckeTUhQbo8+qgJvgikXPjrLykXE2MfOrx9e2nToIH5twZ3nDl3TpLmzLGDOCY//7yxcJcer78uH/33vyaIY/S8eebtjVOnynWXgiQ+TkyUzmPH+pymWTtKXHNNmvxSG9tfFy9K38mTZdGaNSke+mzTphLbvHlQ28+k1nZGvE8QR0Yo0wYCCCCAAAIIIIAAAggggAACCCCAAALZR4Agjuwz14wUAQQQQAABBBAQO4ijXTuJbdgwYkQe6NFD9h48KOVKlpTlY8bYC/3Tly2T4bNmyWvPPSd/u+EG0e1IrK1ODh09arJQnDxzRu4sX14qlS172Xi///lnafvSS6ZuZxnRoYM8+fDDJlDEWTTg4+6OHU2Wjx2zZ5vMFl9+8408NnCg1K9RQ6b27WsOjxk2zLStQRYabBFI0f7W6NTJHKoBJ69262af1n7UKPl00yZZ+8YbJjBj6fr10rxuXdHtYqxMHL8eOyZvL11qtp3RDCKaKUS3XtHy1YwZcnWhQjJ1yRKzjYqWwa1by4lTp+T1RYvMVi0PVqsWtF8g49q5b5806NPHHKoeZYoXN9u++Cu6dcysgQOldLFigVQdFscQxBEW00AnEEAAAQQQQAABBBBAAAEEEEAAAQQQyDICBHFkmalkIAgggAACCCCAQOoCdhBH+/YSeynLQ+pnZf4RGoyw/9AhmT1okNS54w67Q18kJUnzuDh59N57peWDD0qL+Hjz3o45c+TK/PmT7bhmh3hj8WIZm5BgjqlRqZKM695dZi1fLtOWLjWvaaDG8tGjpWyJEnY9mnXDyvYxoWdPKVKwoLw4Z458c+CAOf/x++4zxzYdMEC2fvutTOnTRxrcc09AgD/9+qvU7NLFHLv57bflWsdWLhMXL5ZX33vPBG2Uu/56iR461Bx3Y/HiUuGGG0QzhBw8csTu9wcvvih/u/FGs/WLbgGjY7m+aFHTTy2t69cXzfShbdbq2tUEfUzo0UOeHDEiIL+ABnTpoAOHD0vtrl0vO0X79O8JE8x2Nyu++EKGz55tsqFYQTjBtJGZxxLEkZn6tI0AAggggAACCCCAAAIIIIAAAggggEDWEyCII+vNKSNCAAEEEEAAAQSSFYjUIA7N5rB6yxbp9o9/+IxNgzF0Eb1UsWIyskMH+Xv37nLk2DGzhcmk2FjJlyePz/EahKHBDv/5+msZMGWKea9W1aoy44UX7OweC9eskbgZM0xAwZoJE+SmkiV96nBu7WK9oVuwzI+Ls7NiaHaL1xISZNusWVK4YMGAr8hln39usn+4Az80y8Z93bvL0DZtpMWDD5rtUjTjhrpYRbOUaHaO5g88YIIytCxYvVr6vvmmfYwGTvRv1crepkXfsLKZrH/zTXnkhRcC8iuQL58ULVw44HEtWbdOJixaZAeRaMYNDXC5uVQpuw7NctIyPl5+OnJEts+ebVsG3EgmHUgQRybB0ywCCCCAAAIIIIAAAggggAACCCCAAAJZVIAgjiw6sQwLAQQQQAABBBDwJ2AHcXToILH162cJJA3MuCJXLjOWlRs2SKcxY8zfSxYtKm0bNTKZNI6eOCEbd+2Sj7/4wgRn1KxSRT7fsUNuL19e5g0dmmLWDjeSBk48MWSIqefOChWkRd268sT995uMEla5ePGi/P7HH2YLE6+Kc5xWndqHP86ckcIFCthBKO72/vfjj7L7hx9M1pCq5cqZ/7qLBk5opo5A/ZxbxwQzvj9On5Ycl7Kc+Dvv+MmTcvzUKbZTCQaVYxFAAAEEEEAAAQQQQAABBBBAAAEEEEAgSwkQxJGlppPBIIAAAggggAACKQvYQRwdO0psvXpZkmvt1q3Sa+JEk1HCX9HAjfi2bU2GjNLXXSd5c+cO2uH8n3/KyTNn5Korrwz63HA/IVA/DWChiMkEk5iUZCj2OTKjYIMAAggggAACCCCAAAIIIIAAAggggAACCKRFgCCOtKhxDgIIIIAAAgggEKECdhBHp04S+/DDETqK1Lt99vx5k1Ui6fvvRbfpKHbVVaJbeNxTuXJEZXlIfaShOQK/wF0J4gjciiMRQAABBBBAAAEEEEAAAQQQQAABBBBAIHUBgjhSN+IIBBBAAAEEEEAgywjUqlVLfvzxR+mVxYM4ssyEMZCwFyCII+yniA4igAACCCCAAAIIIIAAAggggAACCCAQUQIEcUTUdNFZBBBAAAEEEEAgfQIxMTGSmJgovZ59VmIfeih9lXE2AgiwnQrXAAIIIIAAAggggAACCCCAAAIIIIAAAgh4KkAQh6ecVIYAAggggAACCIS3gB3E0bmzxD74YHh3lt4hEAECZOKIgEmiiwgggAACCCCAAAIIIIAAAggggAACCESQAEEcETRZdBUBBBBAAAEEEEivAEEc6RXkfAR8BQji4IpAAAEEEEAAAQQQQAABBBBAAAEEEEAAAS8FCOLwUpO6EEAAAQQQQACBMBewgzi6dJHYunXDvLd0D4HwFyCII/zniB4igAACCCCAAAIIIIAAAggggAACCCAQSQIEcUTSbNFXBBBAAAEEEEAgnQJWEMfU11+X+tdfn87aOB0BBAji4BpAAAEEEEAAAQQQQAABBBBAAAEEEEAAAS8FCOLwUpO6EEAAAQQQQACBMBewgjgSZs2SqIIFw7y3ae/e6i1b5KW5c+XlZ5+V6hUrpr0izkQgFQGCOLhEEEAAAQQQQAABBBBAAAEEEEAAAQQQQMBLAYI4vNSkLgQQQAABBBBAIMwF7CCO2bMlqkCBMO9t2rvX7803JWH1aunYpIkMbtMm7RVxJgKpCBDEwSWCAAIIIIAAAggggAACCCCAAAIIIIAAAl4KEMThpSZ1IYAAAggggAACYS5gB3HMmSNR+fOHeW/T3r3HBg2SL/fskdb168uIDh3SXhFnIpCKAEEcXCIIIIAAAggggAACCCCAAAIIIIAAAggg4KUAQRxealIXAggggAACCCAQ5gJ2EMfcuRKVL1+Y99a3excvXpQcOXIE1OfKrVvLydOnpUmtWjIpNjagczgIgbQIEMSRFjXOQQABBBBAAAEEEEAAAQQQQAABBBBAAIHkBAji4NpAAAEEEEAAAQSykYAdxPHOOxKVN29EjPzs+fPS/pVXJGnfPlk8YoTcVLJkiv0+cvy4VGvf3hzTMCpK3urdOyLGSScjU4AgjsicN3qNAAIIIIAAAggggAACCCCAAAIIIIBAuAoQxBGuM0O/EEAAAQQQQACBEAjYQRzvvitRefKEoAXvqzx28qTc9swzpuJyJUvKkldekUIFCiTbkG6jotupaHm6Xj15sWNH7ztFjQhcEiCIg0sBAQQQQAABBBBAAAEEEEAAAQQQQAABBLwUIIjDS03qQgABBBBAAAEEwlzADuKYN0+icucO897+/+5t/fZbmbNypazbtk0m9OwpNSpVSrbva7duladffNG836dFC+n+xBP2sRf++kty5cwZMeOmo+EvQBBH+M8RPUQAAQQQQAABBBBAAAEEEEAAAQQQQCCSBAjiiKTZoq8IIIAAAggggEA6BewgjvnzJeqKK9JZW3ie/smmTdJh1CjTudmDBkmdO+4wf5/84Yfyxvvvy8YpU6Rg/vzh2Xl6FXECBHFE3JTRYQQQQAABBBBAAAEEEEAAAQQQQAABBMJagCCOsJ4eOocAAggggAACCHgrYAdxJCRIVBbISPHTr7/Kig0b5PuDB6X2rbfKg3fdJSs3bJCur71m4Ha/+67ky5NHLl68KHd17ChHjh2TvQkJZOPw9rLK1rXFz5wpM5YvNwb79u3L1hYMHgEEEEAAAQQQQAABBBBAAAEEEEAAAQTSL0AQR/oNqQEBBBBAAAEEEIgYATuI4733JCpXrojp95lz52TuypXycPXqUrZECdPvNV99ZYI1Tp4+bY9jcOvWclWhQtJn0iSpW62azBwwwH4vqnNnqXLTTTK9f/+IGTcdDX+BcQsWyPiFC01HCeII//mihwgggAACCCCAAAIIIIAAAggggAACCIS7AEEc4T5D9A8BBBBAAAEEEPBQIFK3U/nmwAF5KDZWOjRpIkPatJGDR47Ig7GxJoCjXMmS0rZxY/n2wAEpdvXVsubLL2XTrl1Sq2pVmR8XZ+tpNo4cOXJ4qElVCIgQxMFVgAACCCCAAAIIIIAAAggggAACCCCAAAJeChDE4aUmdSGAAAIIIIAAAmEuYAVxvDpmjESXLRvmvf3/3fv+55/l/u7d7ewaExYtkrEJCXJ3xYoyd/BgKZA3rzl4ybp10n38ePvE7bNnS6ECBSJmnHQ08gQI4oi8OaPHCCCAAAIIIIAAAggggAACCCCAAAIIhLMAQRzhPDv0DQEEEEAAAQQQ8FjACuLo1bOnxN57r8e1h666P06fliqtW0vB/Pllx+zZ0uall+TfX30lU/r0kQb33GMa1mwdMcOGyZFjx+yOvN6jhzz297+bf89escIEebz23HNSpnjx0HWWmrOVAEEc2Wq6GSwCCCCAAAIIIIAAAggggAACCCCAAAIhFyCII+TENIAAAggggAACCISPgB3E0aOHxF4Kbgif3qXckzLR0eaAtW+8IUPeftsEccwcMMBk51i3bZt0HDPGbK9Sr3p1ebJePWkzcqTUqFRJFg4fLmfPn5cKrVqZ81/s2FGerlcvqGFv3r1bElavlqa1a8u9t91mzj1z7pxMWbJEzp0/L50ffdTO+OHv2KAa4+CIEiCII6Kmi84igAACCCCAAAIIIIAAAggggAACCCAQ9gIEcYT9FNFBBBBAAAEEEEDAO4FIDuL4+3PPyf5Dh2T95Mky/7PPZOLixQamUpkysnPfPvP3OytUkLmDBkmBfPmkfu/eJjvHv15/XYpddZVUbdPGHLNh6lQpfvXVAaMeOHxYanftao7XTCBfz5wpV+TKJYOmTZN3Vq0yr49o315aN2ggyR0bcGMcGHECBHFE3JTRYQQQQAABBBBAAAEEEEAAAQQQQAABBMJagCCOsJ4eOocAAggggAACCHgrYAdxdO8usffd523lIa7txdmzZd5nn5kgim9++EEa9O3r06Jm1xjUurXkz5vXvP7lN9/IYwMH2tk6oocONa9rZo5gyo7vvpNG/fqZU5xBHJ3GjJGVGzaY1+PatpV2jRpJcscG0x7HRpaAFcRRqlQpWb9+fWR1nt4igAACCCCAAAIIIIAAAggggAACCCCAQNgJEMQRdlNChxBAAAEEEEAAgdAJRHIQh6ocPXFCri5UyAD9euyY6NYleXPnlvKlS0vpYsUugzt09KhcW6SI5MqZU06fPWvet4I8AlXW7VJeW7DAZPXQbVOqV6xoTk1MSpIZy5ZJ2RIlpE+LFpInd26ztYq/YwNti+MiT8AK4oiqUUMSFi6MvAHQYwQQQAABBBBAAAEEEEAAAQQQQAABBBAIKwGCOMJqOugMAggggAACCCAQWgE7iOO55yT2/vtD2xi1I5ANBAjiyAaTzBARQAABBBBAAAEEEEAAAQQQQAABBBDIQAGCODIQm6YQQAABBBBAAIHMFiCII7NngPazmoAdxFG9uiQsWpTVhsd4EEAAAQQQQAABBBBAAAEEEEAAAQQQQCCDBQjiyGBwmkMAAQQQQAABBDJTwA7i6NZNYuvUycyu0DYCWUKAII4sMY0MAgEEEEAAAQQQQAABBBBAAAEEEEAAgbARIIgjbKaCjiCAAAIIIIAAAqEXIIgj9Ma0kL0ECOLIXvPNaBFAAAEEEEAAAQQQQAABBBBAAAEEEAi1AEEcoRamfgQQQAABBBBAIIwECOIIo8mgK1lCwA7iuPtuSVi8OEuMiUEggAACCCCAAAIIIIAAAggggAACCCCAQOYJEMSRefa0jAACCCCAAAIIZLiAHcTRtavEPvBAhrdPgwhkNQEycWS1GWU8CCCAAAIIIIAAAggggAACCCCAAAIIZK4AQRyZ60/rCCCAAAIIIIBAhgoQxJGh3DSWDQQI4sgGk8wQEUAAAQQQQAABBBBAAAEEEEAAAQQQyEABgjgyEJumEEAAAQQQQACBzBYYN26cjB8/Xnp17iyxDz6Y2d2hfQQiXsAO4qhRQxIWLoz48TAABBBAAAEEEEAAAQQQQAABBBBAAAEEEMhcAYI4Mtef1hFAAAEEEEAAgQwVsIM4OnWS2IcfztC2aQyBrChAEEdWnFXGhAACCCCAAAIIIIAAAggggAACCCCAQOYJEMSRefa0jAACCCCAAAIIZLiAHcTRoYPE1q+f4e3TIAJZTcAO4rjnHklYsCCrDY/xIIAAAggggAACCCCAAAIIIIAAAggggEAGCxDEkcHgNIcAAggggAACCGSmgBXE0S46WuKaN8/MroS87aMnTkjcjBny+H33SZ077wx5ezSQPQUI4sie886oEUAAAQQQQAABBBBAAAEEEEAAAQQQCJUAQRyhkqVeBBBAAAEEEEAgDAWsII6o22+XhMGDw7CH3nVpx3ffSaN+/SSqShVJGDbMu4qpCQGHAEEcXA4IIIAAAggggAACCCCAAAIIIIAAAggg4KUAQRxealIXAggggAACCCAQ5gJ2EMdtt0nCkCFh3tv0de/r//1PHnnhBSlXsqT8a8KE9FXG2QgkI5C4Y4fEDBsmUVFRkpCQgBMCCCCAAAIIIIAAAggggAACCCCAAAIIIJAuAYI40sXHyQgggAACCCCAQGQJ2EEct94qCUOHRlbng+yttbiupz1Vr54cOHxYDv32m+TJnVsa16wpzzZtGmSNHI7A5QIEcXBVIIAAAggggAACCCCAAAIIIIAAAggggICXAgRxeKlJXQgggAACCCCAQJgL2EEcVatKQlxcmPc2uO79eeGCjH3vPdm2d6/sO3RI9h86lGwFMXXryuguXYJrgKMR8CNAEAeXBQIIIIAAAggggAACCCCAAAIIIIAAAgh4KUAQh5ea1IUAAggggAACCIS5gB3EUaWKJAwbFua9Tb57GqChi+e5r7hCoqpUkZJFi8rWb7+VpgMG+D3pmYYNpVqFClLxxhvl5lKl5IpcuS477ufffpPVW7bImXPnpGaVKlKpTJmI9aHjGSdAEEfGWdMSAggggAACCCCAAAIIIIAAAggggAAC2UGAII7sMMuMEQEEEEAAAQQQuCRgB3FUriwJ8fER53L2/HkZPW+evL10qU/fezZrJu0aN5bWI0fKufPnpWFUlBS76ioZMGWKFMyfX5LmzElxrNOXLZPhs2b5HNOjWTPpHRMTcUZ0OGMFCOLIWG9aQwABBBBAAAEEEEAAAQQQQAABBBBAIKsLEMSR1WeY8SGAAAIIIIAAAg6B6dOny/DhwyUqAoM4zv/5p3QeO1Y+3bTJjKhW1ary18WLJiOHljUTJshNJUvao9XtVW5u0cL8+/sFCyRHjhx+r4UJixbJ2IQE854GfOTLk0eOHDvmt04uJgTcAgRxcE0ggAACCCCAAAIIIIAAAggggAACCCCAgJcCBHF4qUldCCCAAAIIIIBAmAskJiZKTExMRAZxaKCFBlxooMXsgQOlesWKcursWbm3WzcTdDG1b1+pX6OGzwyUiY42/9797rsmOMNd1m3bJq2GDzcvP12vngx46ikpkC+ftIiPN8Eh8+PiTLAIBYHkBAji4NpAAAEEEEAAAQQQQAABBBBAAAEEEEAAAS8FCOLwUpO6EEAAAQQQQACBMBeI1CCOn379VWp26WLrlitZUqqWKyfrtm+3s2Z8MWWKlLjmGp8ZsII4dr7zjhTIm/ey2ekzaZIsXLNG6lWvLlP69pWcl7J1fP/zz7L2q68k5sEHJW/u3GE+q3QvMwX0+tHrqF69ejJt2rTM7AptI4AAAggggAACCCCAAAIIIIAAAggggEAWECCIIwtMIkNAAAEEEEAAAQQCFYjUII5p//ynvDhnjkRVqWKCNr45cMAecsmiReWlTp2kbrVqlzFYQRxbpk+XooULm/f7vfmm7Pj+e1n6yit2xg09/8mHHw6UkeMQsAXGLVgg4xculF69eklsbCwyCCCAAAIIIIAAAggggAACCCCAAAIIIIBAugQI4kgXHycjgAACCCCAAAKRJWAFcRQuWFC2zZoVMZ3vOHq0rNq4UeYNHSo1q1aVDTt3yp4ffpBiRYpInTvvlPx+smzo4B7o0UP2HjwoK8eOlYo33ihnzp2Tah06mHHr+AdMmSIJq1ebLVre6t1b7rv9dk9MNDvD199+K+0aN5abSpY0dW7evdu01bR2bbn3ttvMa9qfKUuWyLnz56Xzo49KoQIFPGmfSjJOoPekSbJozRqCODKOnJYQQAABBBBAAAEEEEAAAQQQQAABBBDI0gIEcWTp6WVwCCCAAAIIIICAr4AVxKGv7lu4MGJ4oocONYEbfVq2lO6PPx5wv58aMUL+8/XX0qFJE2kUFSXTly2TZZ9/Ls3r1pUxXbqYjB6PDhwoJ0+fNnXeWaGC1L3zTrNVS6UyZUSzfARblqxbJ93Hjzen1a9RQ6b27SsHDh+W2l27mtc0YOTrmTPlily5ZNC0afLOqlXm9RHt20vrBg2CbY7jM1kgJi5OEpOSZOjQodK+fftM7g3NI4AAAggggAACCCCAAAIIIIAAAggggECkCxDEEekzSP8RQAABBBBAAIEgBJxBHJqJQjNyRELR4IvhlzKHzI+Lk1pVq17W7WMnT8qvv/8uN5cqZb/31kcfycvvvONzrAZRrJ04Ua4tUsS8vvenn2To9Okm2MNdihYpIp2bNpVOTZsGzDR7xQpTn5Z61avLtH79ZMd330mjfv3Ma84gjk5jxsjKDRvM63Ft20q7Ro0CbocDw0NAg3M0SCchIUGioqLCo1P0AgEEEEAAAQQQQAABBBBAAAEEEEAAAQQiVoAgjoidOjqOAAIIIIAAAggEL+AM4kgYNkyiqlQJvpJMOOPPCxfk8cGDZeu335rWm9WpI7VvvVXy5cljsml8tnmz/d7y0aOlyk03meNOnjkjTwweLDv37ZMbixeX6Dp15MmHHxYNznAXPWbT7t2y9ZtvzNYnug2Llo5NmsjgNm0CHvWPhw/LuAUL5M+//pL+rVqZbB66XcprCxaYvuq2KdUrVjT1aQaHGcuWSdkSJaRPixaSJ3fugNvhwPAQKBMdbTpCEEd4zAe9QAABBBBAAAEEEEAAAQQQQAABBBBAINIFCOKI9Bmk/wgggAACCCCAQBACkRrEoUM8dfasDJo6Vd5fuzbZEfds1ky6PPaY5M+b1z7mr4sX5bfjx+3MG4FyaXtHjx+XUsWKBXoKx2UzAec2OR9//LFUrlw5mwkwXAQQQAABBBBAAAEEEEAAAQQQQAABBBDwWoAgDq9FqQ8BBBBAAAEEEAhjgQMHDkjt2rVND1/t1s1kpoi08u2PP8onGzfK/kOHJGfOnHLDddfJHeXLy50VKkheMllE2nRGdH8Td+yQmO+uiswAACAASURBVGHDzBj27dsX0WOh8wgggAACCCCAAAIIIIAAAggggAACCCAQHgIEcYTHPNALBBBAAAEEEEAgwwSqVq0qJ06ckGYPPCBju3bNsHZpCIGsJqDb5oxfuFAqVaokK1asyGrDYzwIIIAAAggggAACCCCAAAIIIIAAAgggkAkCBHFkAjpNIoAAAggggAACmSkQExMjuq1K6RIlZN3EiZnZFdpGIKIFYuLiJDEpSdq1aydxcXERPRY6jwACCCCAAAIIIIAAAggggAACCCCAAALhIUAQR3jMA71AAAEEEEAAAQQyTGDcuHEyfvx40966yZOldLFiGdY2DSGQlQTKREeb4UydOlXq16+flYbGWBBAAAEEEEAAAQQQQAABBBBAAAEEEEAgkwQI4sgkeJpFAAEEEEAAAQQyS2DlypXSqVMn0/yr3bpJdJ06mdUV2kUgYgUSd+yQmGHDTP+3bdsmhQsXjtix0HEEEEAAAQQQQAABBBBAAAEEEEAAAQQQCB8BgjjCZy7oCQIIIIAAAgggkCECBw4ckNq1a5u26tWsKdOefz5D2qURBLKSwLgFC2T8woVSqVIlWbFiRVYaGmNBAAEEEEAAAQQQQAABBBBAAAEEEEAAgUwUIIgjE/FpGgEEEEAAAQQQyCyBWrVqyY8//iiFr7xSts2cmVndoF0EIlag47hxsmr9emnXrp3ExcVF7DjoOAIIIIAAAggggAACCCCAAAIIIIAAAgiElwBBHOE1H/QGAQQQQAABBBDIEIGFCxdKnz59TFsJw4ZJVJUqGdIujSCQFQSOnzwptbt3l+MnTkhCQoJERUVlhWExBgQQQAABBBBAAAEEEEAAAQQQQAABBBAIAwGCOMJgEugCAggggAACCCCQ0QLHjx8XzcZx4sQJiapaVRLIJJDRU0B7ESww/bPPZPhbb5ngDQ3ioCCAAAIIIIAAAggggAACCCCAAAIIIIAAAl4JEMThlST1IIAAAggggAACESYwbtw4GT9+vOk12TgibPLobqYK1O7ZUw789JNMnTpV6tevn6l9oXEEEEAAAQQQQAABBBBAAAEEEEAAAQQQyFoCBHFkrflkNAgggAACCCCAQMACBw4ckNq1a5vjycYRMBsHZnOBhZ9/Ln1ee01KlSol69evz+YaDB8BBBBAAAEEEEAAAQQQQAABBBBAAAEEvBYgiMNrUepDAAEEEEAAAQQiSKB3796yaNEi0+N1kydL6WLFIqj3dBWBjBdoOGiQJO3ZI0OHDpX27dtnfAdoEQEEEEAAAQQQQAABBBBAAAEEEEAAAQSytABBHFl6ehkcAggggAACCCCQssDx48elefPmsnPnTomqUsVsq0JBAAH/AuOWLZPxs2ZJoUKFTBaOwoULQ4UAAggggAACCCCAAAIIIIAAAggggAACCHgqQBCHp5xUhgACCCCAAAIIRJ5AUlKSCeQ4ceKEtGvUSOLato28QdBjBEIssHL7dukUH29aadeuncTFxYW4RapHAAEEEEAAAQQQQAABBBBAAAEEEEAAgewoQBBHdpx1xowAAggggAACCLgEFi5cKH369DGvvtqtm0TXqYMRAghcEjhw+LA0fOEF0cw1lSpVkgULFpCFg6sDAQQQQAABBBBAAAEEEEAAAQQQQAABBEIiQBBHSFipFAEEEEAAAQQQiDyB+Ph4mTFjhum4ZuPQrBwUBBAQaThkiCTt2mUoPv74Y6lcuTIsCCCAAAIIIIAAAggggAACCCCAAAIIIIBASAQI4ggJK5UigAACCCCAAAKRKRATEyOJiYmm85qNY+gzz0jhggUjczD0GoF0Chw/eVL6zJghK9euNTUNHTpU2rdvn85aOR0BBBBAAAEEEEAAAQQQQAABBBBAAAEEEEhegCAOrg4EEEAAAQQQQAABW0C3i6hVq5acOHHCvFa5bFkZ262b+S8FgewkoFuodBw/XpL27DHDjoqKkoSEhOxEwFgRQAABBBBAAAEEEEAAAQQQQAABBBBAIBMECOLIBHSaRAABBBBAAAEEwlkgKSlJmjdvbgdyaCaO9o0bm+1VyMoRzjNH37wSSNy5UzqOGSPHLwUzNWvWTOLi4qRw4cJeNUE9CCCAAAIIIIAAAggggAACCCCAAAIIIICAXwGCOLgwEEAAAQQQQAABBC4T0ECO559/Xnbu3Gm/RzAHF0p2EJjx6acSP2WKPdRevXpJbGxsdhg6Y0QAAQQQQAABBBBAAAEEEEAAAQQQQACBMBAgiCMMJoEuIIAAAggggAAC4SigW6v07t1bVq1a5dM9gjnCcbboU3oFFq1ZI+MWL5YDP/9sqipUqJCMHTtW6tevn96qOR8BBBBAAAEEEEAAAQQQQAABBBBAAAEEEAhYgCCOgKk4EAEEEEAAAQQQyJ4C8fHxMmPGjMsGr8EcNatUkXrVq0tUlSpSulix7AnEqCNawB28oYOJiooy26dUrlw5osdG5xFAAAEEEEAAAQQQQAABBBBAAAEEEEAg8gQI4oi8OaPHCCCAAAIIIIBAhgskJibKuFdflcSNG5Ntu3LZsiaoo1mdOqJ/pyAQjgIHDh+WxB07zJ/Pd+2yM29oX5s1a2a2TildunQ4dp0+IYAAAggggAACCCCAAAIIIIAAAggggEA2ECCIIxtMMkNEAAEEEEAAAQS8EjDBHGPHSuKGDalWqYEcN1x3nQno0CwdpfXvZcqIZvDIjHL85ElJ2rdPJEeO/2s+Z87U/54ZHU2tzYsXRaw/emxy/7bec/43tbrT8L6Z2zDLwpL0/fdy/NQpezQasKGv7fjuO9EgDmfRbVOio6Olffv2BG+kYf45BQEEEEAAAQQQQAABBBBAAAEEEEAAAQS8FSCIw1tPakMAAQQQQAABBLKFgAZzrFyxQj7/739l5zffZIsxM8isIaBBGzVr1jRbpeh/desUCgIIIIAAAggggAACCCCAAAIIIIAAAgggEC4CBHGEy0zQDwQQQAABBBBAIEIFDhw4IJ9//rloYMeB/fsDytIRoUOl2xEkUKlSJSlSpIjpsW6PYgVt6H8pCCCAAAIIIIAAAggggAACCCCAAAIIIIBAuAoQxBGuM0O/EEAAAQQQQACBLCCggR3uogvq+sffe14P+dixY5KUlOR1tdSXikDhwoWlSpUqGeKkbWlghs4zARoZQk4jCCCAAAIIIIAAAggggAACCCCAAAIIIBBCAYI4QohL1QgggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQKACBHEEKsVxCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIBACAUI4gghLlUjgAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAKBChDEEagUxyGAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAiEUIIgjhLhUjQACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIBCpAEEegUhyHAAIIIIAAAggggAACCCCAAAIIIIBAhAscPnxY/vzzTzOKfPnyydVXXx3hI6L7CGScwKlTp+TYsWN2g4ULF5aCBQtmXAdoKSiBCxcuyC+//MJ8BaXGwQh4J7B582b56quvpEGDBlKqVCnvKqambC3g/iz2h3HNNddI3rx5s7UTg498AYI4In8OGQECCCCAAAIIIIAAAggggAACCCCAAAKpCvzwww9y77332sfVr19fpk6dmup5HIAAAv8nkJCQIP369bM5hg8fLm3atIEnTAU++OAD6dWrF/MVpvNDt7K2QGxsrLz//vv2ICdOnChNmzbN2oNmdBki0KlTJ1m5cmWKbc2fP19q1aqVIf2hEQRCJUAQR6hkqRcBBBBAAAEEEEAAAQQQQAABBBBAAIE0CKxfv15eeeUV+8wnn3xSYmJiAq5pxIgRsnHjRnO8PoU4c+ZMufLKK+V///uf1K1b166HII6ASUN64O+//y4nTpwwbeTIkUNKly4d0vaoPO0CBHGk3S4zznzvvfekf//+dtME3WTGLNBmdhQ4ePCgREVF+Qz99ttvlyVLlmQaB5+1mUbvecMaPLlmzZoU6yWIw3N2KswEAYI4MgGdJhFAAAEEEEAAAQQQQAABBBBAAAEEEEhOQAMwmjVrZr+tv6zWxcdAS+PGjWX79u324bt27ZL8+fMTxBEoYAYfpwE7b775pt0qCw8ZPAFBNEcQRxBYYXAoQRxhMAl0IVsK7NmzRx5++GGfsZcsWVISExMzzYPP2kyj97xhgjg8J6XCMBUgiCNMJ4ZuIYAAAggggAACCCCAAAIIIIAAAghkT4H9+/fL3//+d3vwwWbMqFatmhw5csScX7BgQUlKSjJ/JxNHeF5P7oWl2bNnS506dcKzs9m8VwRxRNYFQBBHZM0Xvc1aAk888YRs2rTJHtSAAQOkc+fOmTZIPmszjd7zhvU77tmzZ33qfe2112ThwoX2awTEes5OhZkgQBBHJqDTJAIIIIAAAggggAACCCCAAAIIIIAAAskJnDlzRv72t7/Zb995553y4YcfBgT2559/ys0332wfW7VqVVm2bJn5N0EcARFm+EEsLGU4eZobJIgjzXSZciJBHJnCTqMIGIGjR4/K4sWLZceOHVKvXj2TmeOKK67INB0+azONPkMa1ox106dPt9siiCND2GkkxAIEcYQYmOoRQAABBBBAAAEEEEAAAQQQQAABBBAIVqBy5cpy8uRJc1rRokVly5YtAVXxyy+/SPXq1e1jnVk8COIIiDDDD2JhKcPJ09wgQRxppsuUEwniyBR2GkUgLAX4rA3LafGsUwRxeEZJRWEkQBBHGE0GXUEAAQQQQAABBBBAAAEEEEAAAQQQQEAFmjZtKlu3brUxvvvuO8mZM2eqODt37pQGDRrYx7Vv316GDh1q/p1SEMeFCxfMFizHjh2T66+/3mzDkp7y888/i2YUKV26tCdP3p4/f14OHTok586dkxtuuEFy586dnu55fu6pU6eM3fHjxyVfvnxy1VVXyZVXXim5cuVKta1QLizpvOrT0Prf4sWLp9qXQA7QsZ44ccIc6kWdXtZ3+vRp+fHHH+Xaa681c5DWol4//PCD/PXXXz7XG0EcgYvqz8Phw4elVKlSkj9//sBP9PDIlII40npP0WtDrwu9Hwfy8+3hcNJcVTjMhXY+Eu203+qn96kCBQpIkSJF0jwPVl2h+rnQz0e9/+lnUIkSJSRHjhxB91Xr+P33381nmV7jOt7ChQuHxWfuxYsXzWePNR+FChUyfdPvK4GMNZSftQrt9fceDeTVwNw8efJIyZIlA/oOmNKEa30//fST8dLPSK03rSVc7inO/nsRxBGJ96hQzoUX95S0XmOc938CBHFwJSCAAAIIIIAAAggggAACCCCAAAIIIBBmAl27drW3QdGuffXVV3L11VebXs6bN0/efPNNu8djxoyRqKgo8++1a9fK008/bb83ePBg6dixo/m3vyCOcePGyeuvvy5TpkzxEdAFg6eeesrsXx9I+nPdxkXTWK9Zs8YEn1hZRLTSSpUqyb333iu9evUygQ3Jlf/+978yYMAA++13333XLJaOHj3ax8Kq8/nnnzcp2jO66OLv559/LsuXLzfjPXjwYLJd0MWSl19+WR599FH7GHXdt2+f/W8NnnF6aeaVlIJo3njjDbn99tuTbVMDGSZNmiTq+eWXX9rHaZ3VqlUzZtqHlIKCtA0NWNCi/dHtfDZv3iy6CLZhwwafOmvWrCnt2rWT2rVrJ9snr+tzNqSBS/rzsG3bNtm7d6/9lvb71ltvNde/Xn+BlAULFsgHH3wg69ev9zm8YcOGMmjQIPN6v3797Pd00ahNmzaBVJ3pxyxZskT0XmGVuXPnStmyZc0/x44d67Nl09KlS+3F6rfeekv0Z9Eqr776qtxzzz1+x7NixQpZuHChue70urbKjTfeKLotlP7MWm1mBIi/II77778/XfcUddP7qrPoz1b58uVNFiT92dRtI1IKXNFrtlOnTnYVGuymqf9TKrqw/o9//EP0XmsVvVZ1MdZfCbe50D56YReq60YDHvfs2WOq1wxWOse6Fcj48eNl//79Ptfy3Xffba5lDSgMpKRnLrRP2jd/RT+/tS+7du2SuLg4SUxM9DlMg0H1HmV9d3DXoUERutWJ9k+3XXPeP/21p/c6rc9d9PPLGTyanEm3bt2kRYsWgZCZYzSQZPXq1aZv+vnjvKe4K9H7/fvvv+9zfwn1Z60X33v8fTauW7dORo0a5RPIq+P9+9//LkOGDPHZbi8lTP2uMmvWLPNdQD8f3X633HKLNGvWTKKjo83nfGolPddxanV78b4XQRxe3KN07vQz1Cp6L9F7Skrljz/+kEceecS+v+v37o8//tgEZHl9fw/lPcWLeaQOXwGCOLgiEEAAAQQQQAABBBBAAAEEEEAAAQQQCDOBF198UaZNm2b36tNPPxX9hbsWDXTQQA6rjBgxQlq3bm3+qYt6GixhFV0g0F8Ma/EXxKGvr1y5MtnR68KrLi6mtCCpC1w9evTwCRjwV6EGhkyYMEFq1Kjhtz33guuMGTPMwnlKQRJt27aVYcOGZdjsff/99/L444+nuJjk7oyO48EHH7RfLlOmTLr6u2jRIp8tc5yV6S/nNQDom2++SbGNunXrii7GJ7dwo/P50Ucf2XXo4k1qi3Tx8fHyzDPP+G3X6/q0EQ3wmTNnjlm8TK1ov1544YVkr2Nd7NLr6J133km2Kg1E0EXBl156yT4mkoI49OdYDayiAStWMIaO6z//+Y/9ngYoValSxfy7d+/eotecVT755BOpUKGCj5Mu4ur8W4E/Kc2HBjW1bNkyoCfnU5vX1N5331P03qh9TM89RX9uJk6cmGLT+nOl15Muovsr6qVbZjnLqlWrUlycdd/bq1atellwm9YXrnOhffPCLrU5T+v7zi3MNNBHA+80UCO5ooE7M2fOTDagyau50CCLRo0a+e2GBjjWqlUrxSA1vRb/9a9/XZZBRO95HTp0MIGIgZZnn31WBg4ceNnhmh1Dr8fUin6eO4OXUjpeAw+efPLJ1Kr0ef/rr7/2GWcoP2u9+t7j/mzUgMnHHnssxXE7v9cld6AG0vXt2zfV7wJ6vl4jek9LLhAznO8pzvF7EcThxT1Kg4liY2PtrmnwTUrfLfRA/Y7vDNbSwGx/n6dezEWo7ilB/bBycMACBHEETMWBCCCAAAIIIIAAAggggAACCCCAAAIIZIyAZrVwPvGqv8y1sm3oU5PObAi6EKNPZ2rRjBrORWZ9klif1NXiDuIoV65cqk/e6nl9+vSR7t27+x24poXXBS9nJonUhDSLhW7Z4i7uBVcNNNCncFMr+uR/coEhqZ0bzPu68Nu4ceOgAji0fueCuP47VAtLmkZfF/QCLRqUoL7+tqZxLyxpJgp9KjS1MnLkSBPo4C5e16f1a1YJXcwKtCT3FLmer4tdGtSQWtGsMppFwSqRFMShi7XOrCGaYUPnVYveW5yBDXofsYJ2NODCmZlEn/p3BnXp0/yaIcKZ9SU1R82cktzCdGrnBvO++54S6D0vpXuK3g/1/UCKLgjq/dpfcdejwTL6c5Jc0cVvZ8Cdv6CpcJ4LHZdXdoHYB3uMM4hDAyZ1W4XUMlNoGxrgpvcFd/FqLlJacH3uuedEAwudT/37G7c7eEL7pnPhDM4KxCu5+53XQRwpjTmlfjozXOlxofqs9fJ7j/uzMZDvPRpApN+jktvaRwPCrAxsgcyrdcxnn31mMgo5i1fXcTD9SOuxXgRxeHGP0q2X9Hu383uxBiWllLlHs3VoFhCrOIOzrde8motQ3FPSOmecl7oAQRypG3EEAggggAACCCCAAAIIIIAAAggggAACGSqgC/9dunSx23Q+eelcbNID9Jf++kSwFncGD+cvjt1BHFbl+gStBoLoNgeHDh0yT0u7MznoL339bYUydOhQmT17to9N8+bNTVCFbtfx3XffXfbUuqbv1u0b3MW94Gq9r9sT6IJy8eLFJSkpSd5++22fU7WtQBdV0zOJmlFDF06dRReFNYhFF/3UR1Nf6y/az549K7pP+W+//WaerixUqJB92j//+U+zQGgVfcLe+TS0Lr4k91SzmqqFv73sdZsP95Obem1o/3RRQVPSb9++3af/GvDj72ln98KSdZIu6D/wwANmuxdd4NStBpwp2vWJ3i+++OKywBCv6/vpp59Et3FxFitThl4nmppcnd3bC+gT6TpnzqJPVOuTss6i15wGPOjPhAbHaICHM1OFdWwkBXFo8Ikzm4reK3TrpTNnzlyWAUKftten7rXofFuL2Tq/W7Zs8bFy36v0TQ0K0YAnXWTUe4ouTrm3pNAFQ3/XcXp+RgO9pzRp0sRkybjuuuvMdhL6c+BccEvpnqJPTKuH/oxrNgP92dIAGL2/OgN8rL78+9//9ruFjDvTgF6Xen36K/4yd2ggn17rzhLOc6H99MrOy2vEqsv9uWq9rou6ej/QrTM004NuYeIsmrFDM0y5i1dzodvoOD8fevbsaTel17FeM3p96OeqZnzSrVM0SEqvO6vovdF5/9LtOlq1auXTZb2na2CVfvYULlzY3tLr3LlzZlsT/Sx76KGHkg1Y0fHqfddZNm3a5BMcF2gmjieeeEL0XGfRn0m9r+jWQwUKFJC8efOaOdH7l/YtR44cl207E6rPWi+/9yT32ajbb2hQpgbM6b3SnTEtuaAvvRb088y9dYraaX16z9OAO/1ZdB+j9+zJkydH1D3F2Vkvgji8ukdpJibre7n2MaUgPf3OeNddd/nMhwZOlipVKiRzEYp7SijuydT5fwIEcXAlIIAAAggggAACCCCAAAIIIIAAAgggEGYC+kt2Z0pt3TKiXbt2ZjHl1ltv9emtc4HGvSCg22voYocWf0EcderUMdu2OBdTtQ39hb9zUVMDANyBBRqgoec7iwZiuBfX/W1B4u+JT39BHLpNjI5d9we3imaP0G1UnEXb0EWcUJZu3br5PPGsW3RoBhRn39LS/iuvvGIW3ayiQTFu19Tq/fbbb322bNHj3RlUdDFOt5PQubSKLsrrgp57uxx/C0vOzA3W+f7mVhc5dcsZZ/G6PvfTsppRQgODdCHSKrrdir7mzNbhb8HVvSCnT9DqNi3OunSRRbcucC9wRVIQhy506vZIVtF073o9aECCBmo4i2ZT0awqWpxPs+sioG7LYhUNYtBAIWeAhm7ZogEgGnBkFV3c1W1+nAvLo0aNkhYtWqR2aafrfX/3FH+ZhTZv3nzZNZuWe4pmKdHxO7OSJJcBRhegdWHauZDq776oALqA69yGwl96/nCfi9QmMhi71OpKy/vuIA79+dfABA3kchZ/nz/uQJ1QzoXz51H7qJ/T+nPs3L7BX2YM/TnPlSuXGYo705feF/Sep8EbXhb3FkCBBHFogKM70C6Q7UMC6bcXn7Vef+/x99mowZGa3chZdBsq/Qy2Sr169Xy23LNe18+pSZMm+ZzrLyOQOuu9yspApd/5dEsVDfKIlPu7e869COJI6ToK5h7lDprU7QT1u5b1M+hsR+vVoB2r+NsqK9zvKYH8/HFM2gQI4kibG2chgAACCCCAAAIIIIAAAggggAACCCAQMgF3pgFdAO3fv795atzahkB/6W5lGtDMGRqI4dxqRRd4NHOFVfwFcSSXCt6d0cPf9gf6mi6KWCWlbVfce4TrYoE+Ce8s7gVX7b8+be4vA4g+EezMFrJx40afxYdQTIx7W4mUtkoIpn0vFpZ0kUu3F7GKZgbRJ0rd5ejRo3LHHXf4vKxZEu677z6f19wLSxpU4s64Yp3gzlDizAxjHeNlfbr4ffPNN9v91etEF0f0CXR3cS98uJ9I1+Pdi7d6repTse5y+vRpqV27ts+ieyQFcWgginNB2grUcG6zogEs+gS83ls0q4sGX1SpUsWm0Mwdem+wijv4QYM85s2b5zegyr346QwUCebnJZhj3fcUDVrSJ5w1Y467aJYSZyaNtN5TNFjm3nvvtYPg1FS3tfJX3D/7uq2PbpHhLvoUt3PrC3/3nnCfi0DmLRi7QOoL5hj3fcCZjcZdj2ZL0i0rrKJbITi3rwjlXLi3CEnuXh8TE+OTiUj7dO2115ou61YNzoxW+r1BrymvS1qCONzBZtonvb9rBo70Fi8+a73+3uP+bNTMWRpQ4y4a7FWtWjX75eQy97iv4+eff16c2Vuc9Wogh14LmjFJt8xzB6SG8jpO71z6Oz/UQRzaZjD3KP2Ou3XrVrur7777rvlscBcNpHZ+rup3ff3O7yyhnAsv7imhmE/q/D8Bgji4EhBAAAEEEEAAAQQQQAABBBBAAAEEEAgzAV18du5Nbm1B4kzRrr+cf+2110zPdSH2pptuMmm0rafiNQX8kiVL7JG5gzj8bY1gHayLCJplwir+9ufWpzidT+Vv27Yt2Sd53Vs2+FusdC+4ajYHd+p6qz+dO3eWjz/+2O5fcsEoXk6rPgnvTGmuwQOacUCDanSu0poJxIuFJfdWKsltk6Ieam89fav/1vY1QMVZ3AtL+nSvLgr6K+5FN3+LS17Wp9ubaLCAVXTbIb0Wkyv6VLPzOtKfA2uxyh2koH3XJ+2Tm0v3NR9JQRzq49waRZ/8nTp1qlkwtH7WNVhAs5dY9wbNRqGLilZxL1Z/+OGHPguEqWWRcW6T4M7q4eXPqlWX+56S0mK1Lpo5s9Sk556iASrO7SuSy+rhflrb34K8ZtDRwCtnZiTd1kMXXp0l3Oci0PkN1C7Q+gI9zr347W/rJasuzZiimbGsopmhdPsEq4RyLtwLru6fSasPusWLBkFqyZ07t9n6yrpm3J/veowGaGmmIs3Kkd7sUlYf0hLEocFmGjjmvN7150KNNXjTvYVQoPNrfdalN+uV19973J+NGoypW9L5K+5rdN++fT6HMU0vCwAAIABJREFUuQM99DuKBqM5s0oF4xXK6ziYfgR6bEYEcWhfAr1H6TZ/GtxsleS2XnIHXGkArl7zGXV/9+KeEugccVzwAgRxBG/GGQgggAACCCCAAAIIIIAAAggggAACCIRcQJ+6tFLtW+nzdTsH3YZAiz7xbu1rby2eOn8Z697f3B3EkdIT4voUvgYGWMXfYrX7F8+awSClootE1sKMLlI4M0foee4FV316VANV/BVNH68LRFbR4BZnxoBQTI4GPmgAhL+iiyQPPvigyWCgi9MaUBNo8SKIwz0Xuvji3DrD2Re9VnQLEavoNjHOudbX3QtLyT1BatWh4z548KBdp3txycv6vvjiC59Frg4dOtjZafyZ6xPzzjT0uriuGTm0uLehSW6RxapX09RrQEtKPxeBzntmHKfbE1lbmuj1odeJ9VS+pnDXQAbrCWBN8b59+3bRADKr6BPDmsbfKppRx/kEvwaFWE/7+xufHquZMLSkFETmlY37nuLedsLZTjD3FM3KokFku3fvlgMHDogGFmlA0PXXX2+ynSxdutQnY0tKAW7urELu4IH//ve/8uSTT9pddd/XI2UurH56aefVdaL1uBfI9fp3bzNltadzrll5rOLe2iKUPxfuBdfktuBJyUazWOl1l1zRwC3dFk3/6H0hrUEdaQni0D7p1jDJfZ/Qe7dmjrI+a/U+EmgJxWdter/3BPPZmFoQhztbg27XpIEEaS2hvI7T2qeUzvMqiMOre5R+39U5cxbNzHHVVVfZL7m3SPSXLUwPDuVceHFPCcV8Uuf/CRDEwZWAAAIIIIAAAggggAACCCCAAAIIIIBAGAo89thj8uWXX5qeWU9o61N9+kt5XbjQp8Z1IUOLLsRq5gpnIIOmd9endK3iDuKwnsT3N/RAgjicQSbB8vnbcsO94JpSloNgFlyD7Vtyx+sTwvq09axZs1KtUrOgaJYOXXBNrXixsOSeC134veGGG/w27czmogc0adJENDjBWdwLS6kFyTgzLGg9X331lc/2Jl7W5366NTVf9/sfffSRvaWMe4Hc/TPjPjeYazTYfmXE8c6nyEuWLGm2W2jfvr3ZekcDWDTbjHXN6mu62KuZTqzizk5h3Y/S2nd3sE9a60nuvGDmK5B7im7lM2XKFPPz4swUkFq/UwricKfSHzBggGimIatolhTn9goaKKP3bncJ97kIhV1q7sG8n9oCubMuXeStWLGi/VKlSpVEfzasEsq5cC+4+svKEsi43VucJXeO3ieeeeYZ88ffNkQptZXWII5jx46JBudZmURSakN/FjQQUT9zUyuh+KxNrU3n+4FsNZbSZ21q16h7Tv0FywbT31Bex8H0I9Bj0xvEEYp7lAbMOrei021TNKDZKprdTT93raLb2jizd0TSPSXQeeK44ARCHsShF75GE+nelbovZ6jL2bNn5cSJE6a9YD9UQt036kcAAQQQQAABBBBAAAEEEEAAAQQQQCBQAf1lrrUdimZ6SEpKEiuwQ7NoaKDFzTffbKrThVh9yt659YH+8lhft0o4BXH4e5rc6wXXQJ2DPW7v3r3mqcjUnsDVenVPdE1rn9JWK6FYWPr8889NVgB/xb1o0LBhQ59MFXpOsEEX7vTi7va9rC+9QRw6fmsBVrN0aOCGVVIL4ggkuCnY6ykjj9drUbdLsYoGUVhbMGnWG12ove2228zbM2fOlB9++MEna4veg5yp+dOzyGfd00I5fi/vKX/99ZfJWJOWJ9tTCuL46aefTMYDqzgDAi5cuCDVq1f3yeqh2T/8rXuE81yEys7Laye1BXJnWzovuvWSVdxPz4dyLtxBHMlt1ROIze+//y7Tp083f1ILStLxalCGM4tAam2kNYjDqleD7PSzVoPNUivuxXF/x4fisza1fjnf9/e9J5jPxtSuUfdno37/UL+0llBex2ntU0rnpSeII1T3qB07dvhkCnMHfGnQnmbVs4ozyNQ51lDOhZf3lFDMa3av0/MgDk0bplG6+iSApu+xUj6m9gXYq4n45JNPTJSeFv0iWKFCBRM93KBBg2Sjz71qm3oQQAABBBBAAAEEEEAAAQQQQAABBBDwSsC94KCLd5pxQRdb/vGPf5g97q1tLOrUqWMW3jUbh1V07/dGjRrZ//Y6iMO9cB/Ik7BWZ3TrEd0uxVm8XHD1ag5Sqkefxtb95nWBSRebNE22v6Lbb+h2J8kVLxaW3JkwklsI0D7MnTvXJ0OLZgwZOHCgT/eCWVjSE91bQui15kzB72V97pTx+jvg8uXLBzzlurWKFeCic6YLXVbR7YlefvnlZOuK9CAO9yKfZvqxtt3RAA/NxmEtFOqC2M8//yy6hZMWf9ufOLd30mP0qf3rrrsuoLnQ+jRQJJTFy3vK2rVrfZ6g1n7r/VfvZbqFTN68eeXUqVMm8EUXr/fv328PLaUgDj2oZcuW9jYz+m/d8ka3ZXFf63ofcW7n47QL57kIpZ1X109qC+TOdnTNSz+LraLXgd4brBLKuXAuuHq1JZE+iK3XqGa+WLdunb3lktvW+t4RqHl6gzisdn799VfRbbQ0OFB/Npw/W86+6NqgrgeG8rPW6+89wXw2pnaNbtq0SfS7gFV0Kxxdp01rCeV1nNY+pXReeoI4QnmP0vVp3ZrMKla2FQ0c0YBsaw1df551DnPmzHnZMEM5F6G4p4RifrNrnZ4GcegNQdN7WRedE1UjhfTpgVAX9xdvZ3vavqZWSm4vs1D3LZLr16hs/RDUyN9g/oc8ksesff/ll19Eo1n1jxa9keof/R+S4sWLR/rw6D8CIRNw7oObXCMlSpRI8UmkkHWOihFAAAEEEEAAAQQQQACBCBHQFMyaTcMqS5cuNVtfaLFSLluLf/q7ivj4eJ+0zB9++KG9QKvneB3E4f6FuWamuOuuu9Ks6+WCa5o7kY4TNQX86tWr5bXXXvNZZNIAB33SObmix7/++uv226+++qpER0cH1RP3U5rjxo3zCehxVpZaem89NpiFJX0q/dZbb7Wf5Pa3sOhlfe4FVM0k8c477wTlZR186NAhqVGjhn1uanVFehCHe/sYDeixUrtb9wu99nQxt23btibj9aJFi4yPe6FaX3Nndenfv7907do1TXMRipO8vKe4r+GUfk41Pb7aWCW1IA73Ngi6DZY+FOsO8NIntmvXru2XKpznIpR2Xl03qS2QO9txP13v3rYilHOREQuu586dM/cADXj7z3/+40Osmahy5coVELtXQRzuxjR7jd6v3njjDZ8MIro2aT3g7a+DXnzWev29J5jPxtSuUV3L0vU7Z9FAMA0yS0sJ5XWclv6kds5LL71ktruyigY+BLKlnb/vPF7e3xcsWCB9+/a1+6UZ8vR72M6dO03yAavoZ65u2eevhHIuMuKektrc8X7yAp4EcQSyH2Sw//OhUauazkkjqYsUKRLwHLq/eLtP1HQ1+mU7mDoDbjyLHui+yWhqTt1nNasWjTzVvQg11VRyacT8pb7Kqh6MC4G0CLjTcPmrY8+ePeYpBQoCCCCAAAIIIIAAAggggIB/AfcvbTVIIy4uzhw8atQoadGihUnvbz0BrAsYzt/ZuLe08DqIQxfOBw0aZHdes4FosIIzA0Mwc+vlgmsw7Xp97Jo1a6RNmzZ2tRpgk1I6ePfv3vxlxkitjxoEogtUVtGnOxcvXnzZafq7Ll3kcf7OS4OFdO6cxb2w5O8Y63j3eDUowr3lhNf1uReztD1nMEZqXtb77m0R9HVdvEzu4S23sy7oOec60HYz67hvvvnGZE2xim6hYl03mpXjmmuuESu9u14Tupi7fv16c7i/LCWaHahevXp2fRrAs2LFioCzcYTawct7ivNpal2z0IV8f9sk6e+WrW2urPGlFsShwTL61LxV9O8atKfbrFgPSqmtXpvJ3V/DeS5CaefVNeS+p6Q0Z/r5a2Wo0fb158iZWSqUc5GRC67u61LHmtJWXe65CFUQh9WO8/tPcvcoZ5+8+Kz1+nuPl0Ecuk6rGXycRQN9NRgsLSWU13Fa+pPaObqmp9vqWCW1oB5nfaG8R+n3Lb2/WEU/P7Zs2SKzZs3yyfw1f/58qVWrlt9hhnIuMvKektoc8v7lAp4EcWgKr0mTJl1Wu+6Tdc8995gIfE0rpl8CkytnzpyRzz77TDTVn0YEO/9HQv9HR/fi0x8kTW+X0h6S+sVbt3PRL536P0f6X3fRFHEatVqgQIEMuSb05vHPf/7TbmvkyJEmOv3/sXcm0HIU5d8u9jUX8LAJFxNkT9iU7WJYgkjCqiwJQRbBBAIYPCSGXUwIq0JiwioSEpD1CwnwZw0JIKAEwiYIJCLiB5GAAgoSFgU+9Du//ltjTd1eZ7rn9sw87zkczZ3q6qqnqmt66v3V+6YxLbyDBw82n332WVBc+RqjQqalqS9rGd3/61//upHC0rXnnnvOrLbaaqmqU2hJhbyyppB6ZXXc6ofMqFGjqsIbhXWyUemBUgGmEARKSAARRwkHhSZBAAIQaHICes/XyRJrHR0dVfm4m7x7pWm+xPQ6RQzn0gwJDYEABNqcgPZflN7A2qBBgyqnu3WCfpdddgkOoejwlMz9XP9+5ZVXzDLLLFO5Pm8Rh07DysnomsKt6zRkLftueTpce3LqXHfddUG0YmtJIc21h+mnW9Hp5y996Uupu+HPFV3oR+NQ6G4JgeQ4sCZngpxy/oE337GkCDA69ezvy2pPV5Ec5Fy2ZqPEuI3Puz7/NLTuJQed9qKzmp/KIuo0rPar9Txq/9BaWhHHq6++auSgsSZHvByQjbbFixdX7Usr8ojmmubBggULguZYR5jmn9pp94WVckcCI9ckWNDc0IliaxtttJHRM2BT1jS6j+798lxT5JdwUyapz2Hr3MSJE41S07iWJOJQWf8ZURSE4447rlJN0n50mceiaHZ5zDFfxCFnsI1S49av7z0JoVz/lf0+tuWKHItGOlz9SAHqX9S8DxuDIkUc+j7Td43ETtb0vEiEFmV5fNfm/d6Tp4hD/Zaw1o9Mpb8NGzYss8C2yHmcxzPr1yEf7AknnFD5s969FEkqTWaGotcoRVfSOmFNIjC9i9l3J30HP//885FjVORYNHJNKWLcW73OukUcYQufoOkEgEKspTHlG9JCEpXLyq1j1113DUQMCsOfxrTRq8gR7oukrjv++OPNaaedlqaKusvoB85FF11UqcfPRxp3A22gSsBiTQIUhYpqlPnhEO19lRuts7MzVTMURlI/fqyNHj06EEqUzbQQ7rHHHt0EK2HtTPsDrWx9pD0QaBQBRByNIs19IAABCLQPAX8DiPexYsa+2UOEF0OFWiEAAQj0HIG//OUvVU5pbfJax5EOMclZ6obhdz8PS2mRt4hDZPyUL/qb2qFw0drH0iGglVde2eiQj06UyyGsva6wlAB5OlyLGDWJZXQyWb955aCWqFROXAkbNC6LFi0yjzzySJVTSe048MADA0FFlOnwU1gaGu2f6SDYGmusYbRv9e677wYMdXBup5126ladn8JBBbQnp7p1UEsOjjlz5lRdp/1R7ZP65juW9Lkcl3Jqat5JHKQIm+qXcri7Fha+Pe/6Pvzww0DE5Kf11ilWpQPRvqXmoXLLa39VqaK196y0M74QRZEmJORwTXUcdthhgZBGYy7nisK0u3ntVT7tO6nvXBJDPcM9YWF7Nm7kFqXUDktJcNVVVwVCMd8kULBpnnyGOtipA5o60Cenq8ZLgpZll122G/MiWOS5puhZcYU4YqHQ91oLJGaS/0FCIh0e9U374euvv35QVs+j5qVvfkQbdz1X2TvvvDMxzXlZx6JodnnMHV/EoTr1PbbffvsF46ZDthLxSKDnrjs2aoq/ruQ1Flp7FBHH2kEHHVT5/5ojEky51q9fv0SnteaSDlIraoPWSh2+Vl0Sbem7TP176qmnzDXXXFNVt6LcK9KOa/IfhR2kVhn5sVzHtb4/9t9//6rrtTa4B571XafvC6296623XhAVqVevXsF3rT7TeqzvnlmzZnX77pEPTqltoiyv79o833vyFnEou4G+B/0I85qnEiEqSpDeKT755JOgjN4z33jjjeB9TYe5m2l999uqZ0XPq2sSKu61117B+qvxf+mll4IoSoqg5fa36DXKXw/0LLk+a71zWEF21Pwt85qSxxpMHeEE6hJxaNFUzh5XfazFXuHr9GWRxnxlepprknIT+nVIYSylqh+2UJE/NtxwwzS3rKuMn9NOYS0lLElj+mG72267VYpKEaYTFo00/RibPHly5ZYS0vgvB3Ht8UUcjRTQZOHkb1jrWs21o446KpgnelnQF9s777wTvNxEhVXMck/KQqBVCWhjST9gXdOpIlesRzqVVh19+gUBCEDABKFl/c2drFzkeHI3jbJswGa9F+X/SwARB7MBAhCAQLkIhIXlty3UJrTEEVEHrMIOAhUh4lAbJVJwT6gnUdReiyJC+Jbl+14CB4k8rd17772p9yOT2hf1ufaJ0hxCc6/XXqna5oc49+/hp+mIa6Oi9uq0v2/6na0DSmlN71ty5IVFEwgTXaSpNypaQN71qS3+nmOa9klwIgeWb3IsRjki3bJi5jpw04o4JIBQdGZriljj7remaXteZSTGcffzVa8cn/YQoh+23d5X7/dyPIXZBRdcYBQ5Iq1JiPTQQw+lLV5zuTzXFD3HYYInX2yhxkrU4kYIcDsgvssvv3y3PmktlcAtLL23HNo6CBsXodxWWMaxKJpdzRPEuTBMxJGm3quvvjpy3c1jLLJ+70iEtfHGG8c2PSxaQ5q+KpqA1njX/FQRaepxy/hrQVikizR1brXVVoGIKuzZcq/P47s2z/eevEUc6qvvj0zD7/DDD6/6jnKvyWMep2lDHmX8iBpRdZ588slVUTsasUa5KVv8dsWtI3mPRRFrSh5jRx3hBOoScfh5OXULvTz7Od+i4EuVrR95vmnhlkpXCjw5zG+88cZu0REU1s3Nt5c0wHIm6mXcVTfVkw8q6X7u576aOyykYFR9CqcjFZa1nhBASOmpl3S9WGsDQIo9P8RiHI9mEHFISatwi+6PMClt9UKz1FJLZRluykIAAhEE/E0CRBxMFQhAAAKtS6DWTSGXiH96OMsGbOuSLb5niDiKZ8wdIAABCGQloEi3ir7gmpv6QBEGFJHAt7CDQEWIOHRfHaCSY0Sb0Gks6oBQlu/7Ros44gQ1cX32w+xHldXepRzpacQwbtQEvz7tQyqcuB+hwi8nZ7yEt9qHDTPfsaR9sqlTp8YOr/YMf/zjH6cShdRbn22IogXLseingo5qqE6Ga3/TNzkOFYo/jr+eOx3O+8EPflC5PK2IY9y4cVVpbKIioKR5fuoto+gs2q91zW2PouYopbdvikKiQ25hpudDz69SKYWJEMKu0Xqkk/9FWt5rypgxY4Lw/HGmeaKU8doHC7MoEYfKan6FraO6r57JNFbWsSiaXRo2cWV8EYd8R27klbBrtfYoak2UuCaPsSjC4SqHvdIoZbEo8WXeIo4on2FcW7V3cM899wRRf5Isr+/avN57ihBxiIH8eUqBlfQuYHnFHZzPYx4njUten0uYqihaSabDpsr44FrRa5T/feTeWxFC0qR9yWMsilhTknjzee0E6hJx+CH6pDC9/PLLU7dGjnMJGhT6SKYXHP14GDBgQFUdKve9732vKtxfLREpFCFEIfNqeThSdyqkoB9Nw1U2J9XrK8DS/jBIqreRnzeDiOO1114z2kCwprkoAY1OtGAQgEA+BBBx5MORWiAAAQg0AwFEHM0wSuFtRMTRvGNHyyEAgdYloNDpfroKhcWWw0KmkNhhp27DDgL5Io64aAByQrpOQ212a9M7znR4yqbXiHMcRKUL9je44+6pvPdu2gIdPooSJOQxOxRxUilM0jio5UiSA1BhvbO0SekmNK4//elPY0UJqt+POOz2USHDtYeodB1+e3WtxBYSIiiMfZSFOZbkxJcD2+Zwt9cqSoAcmQpP3qj63Pto71gR3HT62E+p7bdH5cJCxttn6Sc/+UmQAsCfv7pG+9Prrruu2XHHHSvVpt2r1el1N5VNXDvymK9xdcjx7KY4UFmlilHEbWu+eMwVjsXVLW4SdMlBHCesUX0qI+drkZb3miIHmuaZnlFfXKd+6KS1ni1FdY5KNRwn4ghLB6B6a1nfyjYWRbOrdx75Ig5Fq9H3mSJb+JFr9B2stCp6TtJYPWOh5zJpXXPbkCYSh77L475DbH16TnUIW744iQfD0gBFvYOk4aIyfiQOP61QXD16l1BkKqXLyLKW5PVdq7bV+97jf9fGPevuupxmTVbasUsuuSSYw0lCR9WtvYBmWt+j2qq0I0ph5T+3trzegw499NBuwrii1yilAtLa4VuYoCTp+SnbmpLUXj6vnUDNIg4tAH7KFIUrUjSDLGZzXOnBuvbaayOjeChUoRRC1twfq2nvJxWxcs65P17ShqlJe4+wcr4aUSIV5c1KY366GT/3oPJZ6oeKvkAVMSJNSLU0982zTDOIOKTa18JtTT869SOsXtNLzHvvvReo6LJEL0l7Xz2H+sGgMJCrrrpq2styKad5p/lW5LzTPd5+++0gT6Zy89UbFeXjjz8O8ubJ8k6How0S5ZzTj/k0qkl/EKTeVfs0jklh33IZwIhKilxTEHEUOXLUDQEIQKBcBPQOG3WyRydr3E3xqOh6ylmqkyPWspyiKxeN5moNIo7mGi9aCwEIQKDMBPQbV1FC3n//faMor/qtu9pqqwW/m8PSd5S5L27b9Ptd+eO1v6B+yRmkfQv1Sf3Tf3kcCtKeknLVa99Hv9W1B6P9Bu1naB8o7R6JohxrX1V7h4qe3NHRkQp13OlgnWRWOp/PP//cbLLJJqn2vPKuL6oTGo+33nrLLFq0KBgfy22dddYJuIU5IcPqsnVoXDfaaKNKxAj1WXXLgabPNCZp9mN9R6xSY0Q5+VMNUBMU0r6/WGkOan9ca4AieWgs9Jw0s2meaS9Qa4GeVT3zWtvcfmn9W2aZZYL1wf3foqOPhHEt01iUlZ0v4tD4WdOer0Rs2rfVehAngEua12UZC63jej7VN62V9ntafVM/NZf1vKb9rknqd5bP9Z2ndUN+AbVTz5hdZ9UutU//1bIH77cjr+9a1Vvm9x7NO70LaN1SO7Uea6zlc9GarDUqi5VlHse1We9rEi9rDum7X+8/a665ZqLgp+g1yj/0pD2YtIKwsq/vWeYQZdMRqFnEoRMAOglgTV9eUnSleWn1m6YHXs7apEXX/yJV9ISs95OaWtE+rOkHhMLkFG1u2xWu0M0RrvxLrvJRn+mHgGzChAnm0ksvrTRPpyC23nrryr8VZmfQoEFVzde1+kEndeRXv/pVs9tuu5m11147VRcVXSVJ2Sm1uR9qyK1c+RxvvfXWyp/0ku5u1Kt9ccpIteGII45I1d68Cvmb1WPHjjUK61iLKfyiGPzmN7+pUvtJ4ae8ht/5zneCkxtR9uCDD5qzzjor9GMp9vWc6FmTyMTNwyqmqlshMxvxYyAsT6D6qPkpsZT6GJUn0+2cQlzp9Iw1pU9S+5WHU8p21/RlJkW75kfUs3/ZZZdVVKNiotMTchYpnKd7UkTzUHN52LBhpn///qG8lV9W1/umVE9aR7RuTZs2LThh4IrDdAJFfdp7771jp5Dao+ufe+65KvW+1lNxVKSiqB/0cmS5kY90isaPNOTf3Getum+44YaqYnmvKW7liDhqWVG4BgIQgEDrEdAJRntyWL1zN8fieouIozFzARFHYzhzFwhAAAIQgEDZCWQJ8Z6mL3nXl+aeZSrj76PpVHRPOEfLxIS2QKBMBOJEHGVqJ22BAASal8Czzz5r9t9//0oHFIlG/sC0AtPm7Tktr5VAzSIOhVxT6DVrykOpEDVFmdR3ivzhOkpredn1c2opFJ7C1xVtrtraD3Xkh6eTiMM6v0855ZSqMEZPPPFElSBDqu00ggcJVRS2L0koIwe5VKVxlhRJRPkjbYqcWrhK1CIhQiNNIfDkiLf2s5/9LNEBH9Y+iSz0LCSF1hw5cmQQWi9MbKGINMqTGWYKpyWRjZwfUdaIOS21ZhqBhsKtnXrqqbEiIt8ho7VFApWocFfqt+q94IILQiNW+JsCep7ccJBh3MaPH2+U1883P9Sl/dw+wwqbp5PGUaY1UnX4JuGaRCASiSSZRFwKWeeb1gKlZnLbpJCLcQIefz0JC62b95rithsRR9Jo8zkEIACB9iBQhIhDwkqdltTpofXWWy/zKZI48vVGPlM0QJ3QW3311TNHTisy8plOkb7++uvB6WGXGSKO9ngO6SUEIAABCEAgiUDeoou860tqf5k+90Oob7XVVubOO+8sUxNpCwTangAijrafAgCAQKEEJOA47LDDqnyHU6ZMMVHRaQttDJU3DYGaRRyKVOCmBNEpd+V6LMoU3cDNN+hHs0h7X21UulEQdFJfEROKNkV1UB5Ka6+88kqwuRyWM8xNmaK0HsoDZk3hf1wn7YwZMxJP39trhwwZEkT2iLN2FXFo/kq4Ya2WvJQSrkjAktbkgFe0Cd/iRByK2iCRS1xeWdWn6BHKCVeUKQrOrrvumqp6qQnvvffeSAGRL+JQDrs0IqB99923KhKFbYy/KZC2vvPOO88cfvjhVX2KEnGokKKESEwSZxJ7KGqRHyZWIh2Nc1pT/kX/XnK8KIKIm38zLvSWhCOKBOMKjDQuflqsvNcUt4+IONKOOOUgAAEItDaBPEUceh9RhDg3sofo6beCBLNRP4aLjnwm0a3eLZUy0s09q98eiuild4y4yGx2BuQV+cydUUqBefvtt5vHHnusaqLpnUlhPfV3CT+tpc3z3tqzlt5BAAIQgAAE2o9A3qKLvOtrphHRQSXtiVjT/pP2oTAIQKA8BBBxlGcsaAkEWoWA/Hjar5Lfxj88r8P98o1lzTbRKmzoRzoCNYs4/BfvWpze6ZqeAsTvAAAgAElEQVT4v6W00aq0B9aUOuCSSy7JUkVQVvmPlKvRtbQhnDPfzLnAF73YiBra1FW6E9fc0/tuBA+lqnDTruga5Z/URqtOHeqknvqnU4hKsyHnsW86/S+hRpSpXXLQu6aFRmlorCVF4lAblbPTmhYnKcqsKVKExi/KtHilTf9Sz5i419Yr4pCDXOPopjdR/fpRphdAnb7UguyLLxS5w5+PEvjYBV1zU1FCrKk+m/5CqTaUMkf31pxxnfmKznLuuefmhadbPeqHhCI2X57+99133w1Oc0oU5UcikRhJDoAw80UctozmgYRhyleq/HcSjUmt6JrWhQ033LDqb/7aZD9UXRojCSv03CnljTsecqpo/rv539y5rHu5pyTsWOi5lEhLDhmJrM4444yq9ii9y3777Vf5W5gARveWqEdpWBYsWGAUjcQ1ff744493y7foR5D57ne/G5mKR30ZOnRopVqJaxTZxbe81xS3fkQchT2SVAwBCECgqQjkJeJQ9DP9EHbfgXwQUd+NRUU+U1QLRemKiqrmtk9RwE477bRIoWuekc90X/1WUMo+P5Wa2ya9i+gd5/zzz6/8GRFHUz1eNBYCEIAABCCQG4G8RRd515dbRxtQkdLb6vSttXPOOSdIiYxBAALlIYCIozxjQUsg0MwEbr311sCPJF+he6jH7ZP8PbNnzw58XxgE4gjULOLQhugvf/nLSt1333134MQsyvy0BTodppQUtZj/hexHt6ilzqRrrrzyyiD9gzWprzbffPOAoVi65qqx3bbKYa8FIK3J8S0n780331y5JMpxG1enH70kScTh1+X3MSyFQ9o+1VtO4QvDIkj44go5+pdffvnQ25100knm0EMPrfrMDzutD+WI32WXXSrl5GDQde7CPWjQIKPIK1H23HPPVQle1C4JJCRo0DhYmzt3blWb1Me4NB/1coy7XiHDFc1Bz6xrTz31lFlzzTW7XRom4jj66KODk6BuLjDVKyGXe2o0LJpJmIhDz59Ol7omMYWiW7hjHxbxwl4jIZIrjLFzRF/InZ2dlapVhwQi1uSc0Zy3JoeTTr9ak7NEz6hbhy+4UNkwB4p/kkNf/uIcllNVGwRXX3115b61rKH1rimIOIp88qgbAhCAQPMQyEvEoffaqB/ELg29l2y//fZVgIqKfKYoaxJwprU4oWuekc/UHkVzUxSOJFMUE0USsYaII4kYn0MAAhCAAARak0Deoou862sm6noH07uYNe2FuRGnm6kvtBUCrUoAEUerjiz9gkBjCciH5B5q9++uvSx97h9ObmwruVuzEKhZxHHQQQdVRXp48sknzVprrVVIv3UyfO+9966qW6fS11lnnZru50a3UAXPP/+8WWWVVWqqK+1Fd9xxh9GPFWvWCe9uIGtzWRwVgUCiAJ2Wcx/kAw44oMo5nObeSrlwyCGHBPVae+mllyJP/IXV2Uoijvfffz9IKVGPSZwgkYFrivLgigv0uS9iUHmlxtFmvWvaJPfTbdjPfRGH/h5Wt6JxbLDBBpVqaxHr1MMk7Fo/SoSECl/72te6FfVFHBJHaL6uvPLK3coqQokfSebVV1+tEnv4mwJxoiOlpxk/fnzlPooSo6hCYeaLOFTGTX1kr1E0D4lLrLkngP1xiqpDf1do+Msvv7xSj9LjKPqJb34KpJkzZ5rtttuuqphOBUsE5gpWHnnkEdOnT5/Mw17PmoKIIzNuLoAABCDQkgTyEnFYOEqx9s1vfjMQi+p3g6JIuFHB9I4tIYdrRUQ+89M/6n42soV+J3344Yfmrrvu6hZZT5Gx9O7mW56Rz3QCZOedd666hXKx671U7wOKGifnwq9//etu7UDE0ZKPIZ2CAAQgAAEIJBLIW3SRd32JHShRgUsvvbQqxXXUQacSNZmmQKDtCCDiaLshp8MQKITAxRdfXBVd395EB3C1ByP/nnxgGATSECi9iEPOR52Wd9MoxJ1YS9PpnhBx+CfrJ0yYYIYMGWJsmhU9wBKqKHqD/r9SUiglyQ477FDpkiKPuPmp0/RVZZRCxU2Hct999wV5wtNaK4k4Fi9eXHfEmDARh4Q3bijv+++/32y88cbdEMsB3r9//6qyYSlB7IVhIg4JgrbeeutudY8YMcIo7Lasd+/ePZ5b85lnngmeXWtRoSJ9EUeSWMl/fnWf1VdfvXIff1NAYgg3jYgLTilgJI6wFid+CYvEoXVpueWWqxoLPS+nn3565W+KAGJDZi5atCgYf/eLW4KVpZdeutt4+s4WfbEr1YpvirjiCobCRD6//e1vA+eWtShBSNo1odY1BRFHWsKUgwAEINDaBPIUcShCmlLMuea/g+gzRbWIyjOaV+QztcUVi+gdYOLEiVU/zvXbRn9zo3XUkiYya+QzP7WjxJ16h3A3Dv79738HIlJ9z7uGiKO1n0d6BwEIQAACEIgioCiiEshaO+GEE8yqq65aM7C866u5IT1woQ6VKf21tbA9wx5oFreEAAQcAoqubA8DdHR0VB3IBRQEIACBtASUwnbq1KnBoR5FX5fPSSIxHbwN8wOlrZdy7UmgZhGHhBSKKmDNpgfJG6MmvNIquCZBxBe/+MWab9UT6VT8cMinnnqq0Qa2UqfoxJs2UuXg/PGPfxz0S85aXeNGIFEYniOOOKJbv7UZ/Ktf/cpow1onAOUo1sk9RRdRdAZF3pAT15oiDSjiQFprJRGH+qw8lO7pTP1N0QvmzJlTQaIfplERO/RDa/3116+U/fTTT81GG21UhVOhvcNSWqiQxBbKd2XNT43iVhTmVNAP6CgnRNoxzaucoog88MADwbzTf/pBKkGFouRoXrqOjKg0Or6IQyKMMWPGRDZRQiZFqolae3wRx4033mh22mmnyPp8Ac7ChQtDy/oijlocLr6YKyntjcQ4rmld8FWaSnHiRt6QCOzpp5+uik4iZ9Ell1xSqSop92pRawoijryePOqBAAQg0NwE8hJx6DtPkdDCUuD5os+40455RD7zo23p+1rp7lZbbbVug6Voe3oXl2BTph/2YREw0oxy2shn/u+f2267zWyzzTbdbiFxiASnbvQuRBxpRoIyEIAABCAAAQhAAAIQgAAEIAABCEAAAhDIj0DNIg6deLvzzjsrLckqDEjTBTmAdaLNtXo3ET/55JNuERKinLZp2pi2jDZEN91000rx4cOHB1E4vvrVrwabpIpYsNtuu1VOEipahhzibuoNqbfkBHVt1qxZwWm+P/zhD2mbEqSLaGcRRxgoiWd+9rOf1TSfNX922WWXyrUSGMlZH2Xjxo0zSqNjTSG/baQG/xrfqbD55psbCaZ62iQkUXQXpeRIa2lFHEnPuO+suPrqq80ee+xRaUbW8Jx+aigxD3O4+CKO4447ririRhoOt956q/nBD35QKaoIITrxGmVaEyQIshYV4UUpW375y19WyintihthxK9HIo811lgj9LZFrimIONLMEspAAAIQaH0CeYk4FNVO0e3CzL9HXCS6PCKfKR2JmzYu6r3HtnXy5MlGJ72s/fGPf6zpREaayGdK49KvX7/KvXQKRO8NUaLg0047zSgNnrWkd7PWn7H0EAIQgAAEIAABCEAAAhCAAAQgAAEIQAACjSVQs4hD4fsVgteaHLqHHHJIbq33UwSo4mOPPdacccYZdd3D32C1qUvqqjTlxe4JuH322SfYdLZpTU488USjU/k2/cRVV11llPrDFbHcfffdValAlLf65JNPTnn3/xZDxNEdWT0ijldffdUMGDCgUmmSiEMb4RLkWIuLiuA7FXQfRe7oSZOAQ04TP5pJUpvyEnFcfvnlVcIH5RV1U4VkFXHYaDi2/Y8//ngQScQ3X8ShCEGKqpLF/Gf20EMPNRdccEFkFb7oIcoBdddddxlFj7HmrpUSeLnir7g5VPSagogjy2yhLAQgAIHWJZCXiGPUqFFm9OjRoaD0mUJ2W7v33nurhAzuRXlEPnviiSfMwQcfXKlW6c3ciHp+IxUB7sorr6z8WZE4FJEjzOqNfPbKK6+Y3XffvVJ1UjQx/10LEUfrPov0DAIQgAAEIAABCEAAAhCAAAQgAAEIQKCcBGoWcfgiC50ulxChXlMuZkVEkCjENTlpL7744qoUAbXc69lnnzX7779/5dJGOsUl3HjxxReDeyt9iiIwDBw4MPi3TuPvvPPOZscddwz+LQexwjK7HNww0Mql6Kf70Kk6bcrKAa0QzgrVrBQXDz30kHnyyScrfUbE0X3m1CPi8KOsqPa4vOu+42LatGlVG+tu63ynwuDBg4PIKz1pen70HFnTXJOAS/NPESw+//xz8+677wYpfBSq21peIg5fBCPhwQ477FC5T1YRhy8siDoJ64s4JMKSmCWLKay6hBvWFBFHz2OU+aHPn3/++SBNkm8ff/xxRRCmz9yUKspr764jOvl7wAEHdKujEWsKIo4ss4WyEIAABFqXQF4ijjhxQT0ijloin4VFEMwygnfccYfZeuutqy7JK/KZUgm6Ud+OOeYYc+aZZ0Y2z091h4gjy0hSFgIQgAAEIAABCEAAAhCAAAQgAAEIQAAC9ROoWcThnzbbaqutqtKr1NI0RclQpI2HH3646vJ9993XKIXCcsstV0u1VddccsklVU7wkSNHmlNOOaXuetNUoFP7s2fPDooqWoMiMOiUnuz6668PQjBvsMEGwb/l6F1hhRWqIjYorcJSSy0VfO5vrurknxy1Sy65ZLemKHKDUrdYa7SIw984jgt9nYZjEWXqEXGoPTYtjm1b3GlKP7WF5oSbasftny/i0DhfdNFFRSBIVacEDm4qHkWSmT59eqiwQI4H9wRqXiIOOR50ejWKdRYRhwQnW2yxRSWqSFxkHl/EoRDoNnJOKnj/Efco4o41rQOPPfZY6HP79ttvm+22265SVmKZBQsWRN5KUXkkaLFmnUGueEyfSUjWq1evbvU0Yk3Zc889jU4TW5O4bK211kqLj3IQgAAEINAiBMou4qhF5F2viMN/H8wz8pnem/T+ZC1JxKF3O/f3ESKOFnnw6AYEIAABCEAAAhCAAAQgAAEIQAACEIBA0xCoWcQRdmpbIf396BBpSMiReuONNxqlaPFNm4bf+c53InM2p6nfllFki+2339787W9/q1ymqB9xoY6z1J9U1o8goGgb5513XnCZ8lJLwNHV1WX+/Oc/B+1cc801jVKoyPwUHb7oIC7P9/Dhw80DDzxQaV6jRRx+uhE5/tXeMlm9Ig4JU9xoJ4pKo+g0vj399NPmoIMOqvpzlFNdhcom4tA8/e53v1tpf1wqmKuvvjoQKllLK+KIyyH/3nvvdTulqnQhyy67bOU+vohDIiY33Y0LX4KxI488svInPXdywoRZHiKOTz/91Gy00UZV1Wvt22mnnbrd0g9lnnQqWGKQb3/721W8lSqmf//+lb9JEKd6w6wRa4rmjuaQtVq/M8q0dtAWCEAAAhDITqDsIo5aIp8988wzVeJOiS833HDD1HCUWsVN55Zn5DNFR3NTzyWlc0PEkXrYKAgBCEAAAhCAAAQgAAEIQAACEIAABCAAgUII1CziUGvk/HSjZgwdOjRIC5LFFF1CJ8jl3HZNJ+KnTp1qvvKVr2SpLrbsrFmzzHHHHVdVRifbtcnaCPOdwIMGDapE5rDtEMN58+YF6RDWX3/9CheJO7Shak1RN5QmwZo+UxnffKe7Pm+0iCPMca22K0JAWaxeEYc/tppTt956a1WKiw8++MAcddRRVXPdH1efR9lEHL7oISqN0sKFC43msgRJ1tKKOJQP/p577jEdHR3dpoc/Tlof/ud//qeqnC/ikHDhsssu6yYE++c//2mOOOKIKvHN97//fXPSSSeFTss8RByq2BcySJwhIceqq65aua+EKUqN9NFHH1X+NmbMGKO+RZkvUpPwS8zdKDxaU5XSJMwasaYodLuiDlmTQM8V+pRlPaAdEIAABCBQLIGyizhqiXwmkbgis1lTmsQbbrihJpB5Rz576623AoF42rYh4qhp2LgIAhCAAAQgAAEIQAACEIAABCAAAQhAAAK5EahLxKFw/b5TUafQVl999dQNlINRJ+V9kzNVkSiSTCfNw1KI+Nf961//CpzKbrQEOUmVXqVRplPnJ5xwQuV2cvTLSeumSXBTItjPdYF/IlCOa0V7sPblL3/ZKL2Dcmkrsskrr7xifvWrX5lzzz23W/cOOOCAIHXLuuuua5QGZ+WVVw7KKM2B6zS2FyqShuvY1jWuY9iW09+XWWaZUJx+GgUVUvQKpeZQOgWNoaK7KIWETJvnjbR6RRz/+Mc/gogHbpQXjZ/GWxFW9PfrrruuKpWE+nfbbbeZbbbZptJVCV6ef/75yr9ffvllc/rpp1f+rYgSejasKb1OnkKnJOZKeaS545qi2QwcONAsvfTSRp9LeKKoOi4LlVc7NY91yrRv375m7bXXDqrx03job4pWoVRHukapP/70pz+ZmTNndnOGhAmSfBGH6pNwQYIN1as5Kq56XnzxmLt+qf2a+9a03mkMrWlslRrHmkQYaU7c+mlmdL2eX0XMWWONNcxrr71mLr744qpnUXNJa5d9VqPGyRdiuGuI/v+zzz4bmZaqiDXFb6cfnUWf6zSwHEt9+vQxixYtCtK9aA6JgZ0jSfOSzyEAAQhAoLkItKKIQyOg9xv3XVrRvVzxRNpRyjvymX4b6F3DtbiUZvoOVipLa6RTSTtylIMABCDQ/AQ+++wz8+CDD5rFixcHUWuTfoMW0WN9b9m9IdWvAx6NOnxVRH+S6nznnXeMDmXIll9+ebPaaqslXcLnEIBADxLQHvDf//73Sgu0l6c90VY0fRe4v2+0PmmdakfTnrH2K+XjkE8Faw0CZXjvaQ2S9KInCTCPe5J+8feuS8ShlxY5Md3T9nKS6lS5HPNpLErEkeZaldFJtaQXJf0YOu2007qlSZDTspEO8LBUGuqDxA933nln0GV/09RykGNaJ/GtydnppkmI46VN2xVXXDFwjvp20003VepRmGWFW67V4jaDFV1EIpo0pigkv/nNb9IUza1MvSIONeTmm28O5llak7BAkRFc07MUFlElqk5XAJT2vvWU+/e//x0IbxRBxzdXMGA/U7QVRdXwbdSoUWb06NHBn8NEHGnaqLQ8iq6zxBJLVBUPE3Gkqc/PD69n0hXMJNURl6rEvzZrG7VOSuSRZBJi6cdEmEnwZtM3hX1exJri3+fdd99NveZKtLPddtsldZnPIQABCECgCQm0qojDT52oobnlllvMDjvskGmUioh8ppRrSr1mTZHBzjrrrG7t0iathO6KCmYNEUem4aMwBCAAgaYloA1gRZJy9/geeeSRQHDfSLv99tuN9gza4Xvo9ddfr0qvqoi9V111VSNxcy8IQCAjgVNOOaUqWva9995r+vXrl7GW5ih+0UUXBdGNrU2bNs3svvvuzdH4HFupPWwdxLR26aWXVqWrzPFWVNVAAmV572lgl7lVCxJgHrfgoHpdqkvEobruu+8+c+yxx1ZVqzD+CsPbu3fvRIJFiziUMkEO09mzZ1e1pZYwyYmdSSjg/zizxV3nr1JwKEWFbxdccEFwYt01ne6LSv3gllMaCP3nRiGxnzdKxKH7jRs3zlx77bWpMP7+979vqLI3DxGHBA6KKqN+Jpk2x+VQV5QJ18ou4lBbNTaKvJFkEkWof+5JTntNnIhDYoOk8OMScGhjQ6lXfPMFEhI/+GIZ/xqNh+aAxE7WihRxfPzxx8E8kWMnyRSJRSwVdSWNhUW90XVRKZeKXFPC2jt58uQgCkqSqZyiBmEQgAAEINB6BHpaxFFU5LMPP/zQ7LLLLt2ikSmKmSLQdXZ2BieJbQQ6pZ9TtDG9z7ui1CIin0nAISGHa2rTYYcdFrxPKe2fosH9/Oc/7yb8RsTRes8gPYIABCAQRkAHMPQd7Zr+feqpp6YGphRe+p6VLbfccqki7PqV+wc9yvo9pINtf/3rXyvNVzRh9TmL+SnUEHFkoUfZMhJQhAq9V8r0fqv331Yzf98REUerjXB1f8L26t0DuT3R+zy+a3ui3WW7Z1neeywXZRLQXoC1VVZZJTTdfNk4lqU97fpclG0el2U+tFI76hZxCEbYqXJtUCrSwLbbbhvkh950001DI2bUK+JQugM/nYo2RBXeSmGuHnrooWBz1DWJTDS5FfGhkfbJJ5+YjTfeuNstjz/++EoEh8cff9wccsgh3cqEpY1QIW3ITpw4sVtaCH2mFwoJQpSCQ6ftFJrZN1fE4Z/Qy8omLhKHrUttUPqNMEGJe79HH33UrLfeelmbUHN5X8ShTYMdd9yxpvoU8eScc84xij7imyLVjBgxIjJdTJZIBaq70ZE4bH/03CkVkatCtp/puVKqH6UvkXgiLKVPnIhDGzQKR37llVcaPQ9u2D7196CDDjJnnHGGWWGFFULHJ+zHlMZEkR38eSenxdFHH22OPPLIbnXdf//9wWdpLUskDlunogGpn4qg4ZvWzjPPPDN15Ap7fVjKEo3JU089lUoIkueaEsVOqWkkTglL36Rr9Jwoqo2+QzAIQAACEGg9Aj0t4ihSNOunQkkzeorWpzDM1oqIfKa6999//yC1WpLpvcFNi1dW51lSP/gcAhCAAASyEVBUXf3Wdk37RNovSWuKxulGgdVvXfewRJp6mkXE4X/n66S2G0EkTV8RcaShRJlmIuDvrypqsZ+WuZn6E9ZWRBztFYlDKbn32GOPqqkg31LYvn+j5nYe37WNamuZ71OW9x7LSOmLtthiiwoy+QZ04BtLR6Bdn4uyzeN0o0WpLARyEXEoZIsc02EiAdsYOXx12r1o04ajRCNRpk1JOU7DTvAX3bYi63///ffNm2++afS/yyyzjNHLxDrrrFO5pZRoGqdll1226r+kVDRFtVknFl555ZUgz6qU2dqs1g/7L3zhC0G71YdmN6knFX3lL3/5S6CaVFqbrKcyys5A4yhHiJ475a1de+21A5W9nVeajxrjsHlnT5zGbdCoToXz1umWDTfcMKg/yeJ+TCkyz/z584O2brLJJkaK1jKYTipp80aslIpKAqa0kTeKan8j1hStS6+99prRs6I5osgtmj9ZN/mKYkC9EIAABCBQDIFWFnGI2Ny5cwMhZlj6uTCiYSke8458pvvqt8Jxxx0Xmz5RglmJkd3IgIg4inkOqBUCEIBA2QjoN+CWW25Z1aysaYj9DXQJOvwIpEn9blYRh3tAK6mP9nNEHGlJUa5ZCPgiDkUs1uHCVjJEHO0l4tDc1YFCCe+t6WCaflf1lOXxXdtTbS/Tfcvy3mOZ+CKOzTffPDRNfZkYlqkt7fpclG0el2lOtEpbchFxCIaiTCjCQlSYfKn5/bQrRUCUyl/pBMJMp7oVFUACBwwCECgHgbw3aNrpx1Q5RpBWQAACEIAABLIRyEvEceGFF5qhQ4eG3lwba4o4Z03R+SSolTUi8pnE04qkp6hlYRG33EZHRdzLM/KZvZ9+s/3kJz8JRO1utA19/vWvfz0Io7/uuutWRaRDxJFtflMaAhCAQDMTkABRqTh1YEMHsbbZZptM3cljAz3vPYJMHchQ2I/EgYgjAzyKtiwBRBytNbQXXXSRueyyyyqdmjZtmtl99/YTcbz33ntBRAQdDFSKcUXm6KmDsRqMPL5rW2um1t6bMrz32NYj4qh9HNv9uSjTPK5vFLk6jEBuIg5buaIrKG2BNgZ1Qt+a0nmcddZZhY/Cww8/3C01woEHHhj8+Gw15W/hMLkBBBpAIO8NGkQcDRg0bgEBCEAAAhCAQGoCijil6FOLFi0yir6laGRKC6foc0qj4qeG9CvOI/JZWGNtmxQBS6nM7EakIpaprYrKoc/UVhtBLXWnKQgBCEAAAm1JIA/HUt57BEUNBCKOoshSbzMTQMTRzKPXve2IOMo5nnl815azZ83XqjzHAhFHfeOf51jU15Lmuxp25R6z3EUctrtKj6EUCPpPakVtUvbp06dwGlrsnn/++SBcozZF9V8rpOYoHBw3gEAPEch7gwYRRw8NJLeFAAQgAAEIQAACEIAABCAAgbYmkMcmcNwegSJdSYQoUaTSkPbkfl/RIg6JKhU1S2GytacqcWU9plS/SjHrpsCtp768r9XYSkQq4aj2cuvtb97ts/VpXMRS7c2DpebyG2+8YZZffvkghXBW4ez/+3//L+Cm9M21XB/G6e9//7t55513gpTXSkuexZpNxCGxtcZTounVV189SIedNAZx+44fffSRefvtt4OUwYoEniTWjmOrNmluqF2rrrpqlmGILKs1Rf+tttpqwX9J0SQaKeL4+OOPzQcffBC0Xamm6zFFH5Q/SmL0sqTSdvtT7/qex3dtPXzLcm3e63Et/cpzLIoWceS9ptQ7j2vhHXdNnmPh36fsa0q9LItkV2/buN6YwkQcwIUABCCQhgAijjSUKAMBCEAAAhCAAAQgAAEIQAAC7UbgzjvvNHKiWbv++usrB6QmTpwYRMG1dvfdd1ecVVdeeaW58cYbK59NmDDB7LDDDpV/K9XXiBEjEnFeddVVZrPNNgstp0i8irrr2p/+9Keqf3/pS1+KvYei6S611FJVZcL2CHbddVejNGr33HNPVVm17Qc/+EEQ3r5omzx5chBO35qctW5qMokO4hze4n3EEUdUNfOPf/xjkM7M2qBBg4I01RdffLH5+c9/XlVWDuHDDz/cHHfccYmOV10o5/7UqVONGP/2t781aq81cdtpp53MqFGjzMorr1w0usj677vvPqM5rvmoUOCuiaUiKx988MFm44037laHRAb63Nq2224bmeL73nvvNRdccEGl7Lhx44xSbrv27W9/OxBD+HbkkUeao48+OhhrpaRTuiHXdF+l7nafk5dfftkMHz48tN8aX13z0ksvGbVj3rx5VeW++c1vGqWyk4M9ypQa8JJLLjG/+c1vgrG1pjmodigateZKnIBA7VM7ZZp3Z2BMbtcAACAASURBVJ55prnuuuuM5rk/r/fee+/g8zAhge6zcOHCSht0rTvXNI5xghyl6thqq60aOgc13/Rs6H9ffPHFbvc+4IADzODBg4NnJMzCRBwSvmh+uOOha3feeWfzox/9yGyyySap+qg2KV39Cy+8UPVMiOMWW2xhjjnmmMh2hd1A46H61C6lAnHHRuW/9rWvBc/R/vvvHyqKyyLi8L9XNtxwwyC9pGsab/sMqU/6DnvmmWeMxD9PPvlk1VzecccdzbBhw0z//v1TsXvzzTeD+avn4g9/+EPlGq2dW265pfnOd76TyE589txzz8T7jRw50hxyyCGx5cReqT/l/JWddtppQZT4rOt7Ud+1iZ1MWaCI95Q812PbjTK+90gMqu8B17K8R8V977n9rmdNyWsep5xOqYs14rnIY01J3aGUBcs4j1M2nWJ1EEDEUQc8LoUABOongIijfobUAAEIQAACEIAABCAAAQhAAAKtR+Dmm28OHD/WbrnllooYQ87TX//615XP5Kju169f8O8xY8YEqY6t3X///VWO8LBUxGH05GD7yle+EgpWG8lpnF1xoyLHfZKIQ0IDOf3clM1+nY1I4SzxxKxZs2qeZCeffLI54YQTqq4PE3GowOzZsyPvo/HQvNAJ8yiTE0iO5meffTa2vXJuSgyw/fbb19yvWi7UWI4dO9bMmTMn1eUq64siFD3BFSbJGS0uYXbFFVcEDnZr6rOEDq717t079Fo59CWC0lx3HcN+4dtuu81ss802wZ/lLJfwIcwkRlJbowQCukbO7Yceeig0gsDcuXPN97///Sqh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/fY1dV3iHkW2dE2imv3337+m+nwRh7+m6/mSOOLPf/5zpf6459pnJ3GNmxLFbeTDDz9sjjzyyMqfxMRNFaMPrIDRFjrxxBODNGO+Pf3000ZOSteUplPRRNNY2UQceXzXpul32jJFvqeUXcSR91j4IoLf/va3ZtVVV007FEG5PNeUvN9TMnUkY+E8xqJRa0rGriUWL8P7e2IjKVAzAUQcNaPjQghAAAIQgAAEINC8BOREGzp0aHB6etSoUYlpRZq3p7QcAhCAAATKRMCmidEmmU7HxqVwKVO7aQsEeoqAH15bJ7V1ElUnoW1qK6VnOvfcc82XvvSlwGFvox3IeSonalqrdxNYzvGJEydWbidhw5133mmWXXbZtE0wzSLikFhmo402quqX0tjss88+qfuat3PkzTffNEpn5toBBxxgzj///LqiNqTuUEJBzQVfePCtb33LnHPOOUHEv6zmO7sUpWaXXXapqsZPL6EPm1HEoagBEsG4psgrShWy1FJLZUXXzcm3cOHC0Dqyijh0QEC/MV3L++R81s6qb/68UIQKiRuypC6x981bxOFH0NF9JIbZYYcdsnY1SL0jEYebgkTfFZdddpn5+te/nrm+JBGHKgybm1HfPT67fffdN2jbEkssUdW2f/7zn0HEKUWYsqa1Q+Il1+x3n/2b+nrrrbcaffdYU3Sqo446ykjIYS1rlKqyiTjy+K7NPBliLijyPaXsIo68x0Lrpxv5UEImrRFZLM81Je/3lCz9yFo2j7Fo1JqStW9J5cvw/p7URj6vnQAijtrZcSUEIAABCEAAAhBoSgKugEMdGDZsmBk3blxT9oVGQwACEIBAcxGQc0EnRWU6KSaHL1E5mmsMaW3jCbjpGOzdt91228BZJbv//vvN0Ucf3a1hV111lRk0aFDV35UCyXXwuR9q41+nPq3J+b/JJptUXb/66qubPn36hEJ48MEHg/dK1xQhQeksdM1qq61mPv74Y6Nw3xIc7L777mb99devKt8sIg412l3PbCckUJOzVKkGlMJAvN9+++3g44MPPriqr0U4R3SyXQI51+TYHD58uPnKV74SjMHKK69sdIJep+flpN9yyy1N//79C5/Y//73vwPHrJz6rilkvBxVcqivu+66RmkU1L533nkniNyktCFqv28SMPh1ycmryBty3CoyihsZxl4voc3AgQODuS1n72uvvWb++te/VqqXIEpRbqzJyax5bG299dYLxjfKnn/++SAijjU3AoDGQpEhXOvXr59ZYYUVEvn7kUx0gYRbevY32GCDQBSpej788EPzpz/9yShajO6t9vqWJkKErskq4hDHsBQ+OjSg1BhrrLFGIDR49913g/mnqA077bRTYt/rLaAxlCDBNzn3JejQOiQxjObde++9Z9544w2jlD2KbOOLZPIWcWi8JDLRuuja1772tSDShNKaat7Y9USiFI2v5rovftD1Ej6EpbDRd4FYa67YNUDPicZBz9khhxwSjIdraUQcKv/tb3+7EgHKXv/444+bddZZp6o+n50+VKQprQsSxSkqz8svv2wmTZpUJbpQuWeeecbo+8c1jZfWLpedWJ1wwglBP/V3PW/2vdNeG5ZqSuuO+9y791HqMonErKm9fnST5ZZbLpjj1opY323deXzX1vtM+dfn9Z6S93qsdpb9vcdlqfeun//851V4FYVGkdX0PaTvQz23eq/QGqXvRl8om+eaUuQ8znsO5vFc5Lmm5N2/ZprHefe93etDxNHuM4D+QwACEIAABCDQVgR0YlOnoLVRIxs8eHDVicm2gkFnIQABCECg4QQkJBwzZkwQQl8mp5McjmEOh4Y3jhtCoKQE5OTyhRcSBFin5O9///vAKe2bnNjuiWR9/qtf/SpwmNVqcadC5aSXI9A9RRp3nwkTJnR79ptJxBEWdSCqv2G57YtwjshBfuCBB1aJcZLGWo7s8ePHJxXL5XNfFJCmUgkVfLGGrnv00UfNYYcdlljFN7/5zSAijG9WCCVHvVLRpDU52eLuq2g5crKnNYmwNt5448Ticthljc5w5ZVXmr322qtb3UWJOHQjRbiwKZ+SOtWo36KffPJJILqyUYqS2mU/1zPuCnj097xFHKrzl7/8pVHEgSymyBISxYSZUtoomkcWu/TSS42eFdfSijgkvNhjjz2qrpVoREJC18JEHGnaqP2LM888M7TozTffbE477bQ01QRl9H2qNFO++SmaUlf4n4ISwDz00EOVy4pY323leXzXZu1fUvm83lPyXo/V7rK/97hsJXCT2MpNARbHPio1VF5rSpHzOGlOZf08r+cirzUla/uTyjfTPE7qC59nI4CIIxsvSkMAAhCAAAQgAIGmJeBH4GjUplnTAqPhEIAABCBQGAGdspw8eXKl/lmzZhGRozDa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IEGSiiiwi4AJEMN5/hXRC3oG9PT0TJyYUYISl6gILEtGogoSlxw35508nf+v77eqentm08DMBnY+dbfMTHf1r6re1Tu8fPXD82VDAAEEEEBgUwv8/ve/V9TCscsuu2jmzJmb+pQ4PgIIIIAAAggggAACCCCAAAIIILDJBAhxbDJ6DowAAggggAACCGxcAfsvnO2/dLbNmjhuueWWjXsCHA0BBBBAAIF+ArX/bpo0aZIHOAgZ8jZBAAEEEEAAAQQQQAABBBBAAIHhLECIYzjffa4dAQQQQAABBIadwDnnnKNrrrnGr3vatGn60Y9+NOwMuGAEEEAAgU0v0N7e7u0b0QiVpqYmzZgxg3Ffm/7WcAYIIIAAAggggAACCCCAAAIIILCJBQhxbOIbwOERQAABBBBAAIGNLXDMMcfomWee8cMeffTRHuTgv3re2HeB4yGAAALDV2D27NmyUKF9tY0Ax/B9L3DlCCCAAAIIIIAAAggggAACCCCwugAhDt4VCCCAAAIIIIDAMBOw//p5+vTp1SCHjVa54IILNHny5GEmweUigAACCGwKgd1331327yLb9t9/f/93EGHCTXEnOCYCCCCAAAIIIIAAAggggAACCGyOAoQ4Nse7wjkhgAACCCCAAAIbWMA+PLP/CnrWrFl+JAtw3H///Rv4qCyPAAIIIICAFDVCfeMb39CZZ54JCQIIIIAAAggggAACCCCAAAIIIIBAjQAhDt4OCCCAAAIIIIDAMBY499xzdeGFF2rSpEl64IEHhrEEl44AAgggsLEELEhof2iA2ljiHAcBBBBAAAEEEEAAAQQQQAABBN5KAoQ43kp3i3NFAAEEEEAAAQQ2gMDs2bO9xp4P0zYALksigAACW7iA/Ttk7ty5sq/25+mnn/Z/n1x11VVb+JVzeQgggAACCCCAAAIIIIAAAggggMCGESDEsWFcWRUBBBBAAAEEENiiBL797W/7B3O77rqrBz7WtD344IM6+uijdcYZZ6z12u2/vLa15syZs06fAw44QF/84hcHvY6dr9X1r22z8/nyl7+stra2Ne5iH0jaPnZdv/3tb9e5zsknn+wfYK5rW9869kHoWWedtd513va2t+mWW25Z66EGus76zseufSiuy070U5/6lG699dZB+QzV+UT3vf/57L///n3Or6WlZZ33Pbqutb1/osW22mor/ehHP1rn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AQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAgYEJEOIYmBN7IYAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACG1SAEMcG5WVxBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEBgYAKEOAbmxF4IIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggMAGFSDEsUF5WRwBBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEBiYACGOgTmxFwIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgggsEEFCHFsUF4WRwABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEBiZAiGNgTuyFAAIIIIAAAggggAACCGwSgUqlolgsJvs61Juty4YAAggggAACCCCAAAIIIIAAAggggAACm48AIY7N515wJggggAACCCCAAAIIIIBAH4ENGeDoT02ggzcfAggggAACCCCAAAIIIIAAAggggAACm16AEMemvwecAQIIIIAAAggggAACCCBQFejfuGE/259SqahCoahisah8Ia9ioahyuayK/ZFkpRrBvuFSYclGIh5XLBaXfU0kk0qlUkqmUkolk0omk97yYZv9M1gn+DkKkHBrEEAAAQQQQAABBBBAAAEEEEAAAQQQQGDjCRDi2HjWHAkBBBBAAAEEEEAAAQQQcIF1jUbxkEY+r97eXvX29Kg316vOjk4tX7FcK5YtV1tbm5avWKHOzk7lcjkVC4U+quWKBTsqHvCwZEcU1sjWZdXU1KyW1la1trRozOjRGjFypBobG1VXV6e6+jr/mkym1niXaOrgzYsAAggggAACCCCAAAIIIIAAAggggMCGFyDEseGNOQICCCCAAAIIIIAAAggg4AL9x6PYzxbasDBGrrdXXd3dWrp0qRYuWKC5c+Zozpw5WjBvnpYsWaKVbW3q6elRsVTycEYikfCARjyeUDwRVzwW8yYNa+YolUq+bin8vlAoqFIqVZs2Mum0WlpaNGrUKI0bO1bbbruttt9hB22z3XYaP3GCmhoala2rUzqdrjZzRLeQMAdvZgQQQAABBBBAAAEEEEAAAQQQQAABBDacACGODWfLyggggAACCCCAAAII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Ir/6Rb6LR2SHipi0aVUs8yUugY1lskM4LoU+vyrFkiypknC5gBdJRZ5fVgf8slaiEonGpGN1XLYPi0QgcoE3BiqfJOhAbgKHjihKtYRjUhGvkCUDT5E2f7tMYu+9I/LwE1IVCsmHAy4wRBylLVQ5FYg2BIIZnygRhx/uI7Go+AJByS/IN4QYJgjlQ2KUeTGcOJRNikRjUQlXV0owHpYT999O9u3ZISkMqe3xweVIgARIgARIgARIgARIgARIgARIgARIgARIoKERoIijoe0RjocESIAESIAESIAESIAESMAzAqaIY9GKDTL3l7VSXh2XYCgkfr/hxKGEBVBxQJ2QEG+oEixwf1CjiCuHiHC42hAiQFagRBwi8SgcO1DmIy7hqipZ/uW7snLRDxIMQ77hk4jEJQLRgxJ+GK4cbX1+OSKYL50lIGXo29BsqNUbxVwMVw6UVoE7xabCAlldXS1tqsLSOu6T3/MCsikak+KAyGbxSfO4SIeoSCgWk8qCkPzmi0thVVhKCwpkJTarqkpaR0XyLUSNURsR8PkkGvRLJBiQynhcNkXCUhCOS2vVwJBQwB3DkFL86U6Cki/Y7up4RNb02keKjzhcovN+EP/770s4GJKfdh4g0mE7ad68QG2H4XpicFaOHBCsxOLiDwUkEAwqCD58mCChdkdit0hCNAPBTCQSFolFpFe3VrLjNqVG6ZWEk4lnBw07IgESIAESIAESIAESIAESIAESIAESIAESIIEtSIAiji0In6smARIgARIgARIgARIgARKoXwKmeMGQIziPpDlHpkX+tPDI2LHbdTsf5RZsCSGFZfsNDYizLXXWyti22u6/LUiGqyYBEiABEiABEiABEiABEiABEiABEiABEiABVwQo4nCFi41JgARIgARIgARIgARIgAQaKwGHGos6bJ4jqYfq32L84Xh9mZYxhRDOR+B4tc4aaiKOPxdyI9FwtirFLzfdOh8AW5IACZAACZAACZAACZAACZAACZAACZAACZBAjghQxJEjsOyWBEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEhgyxIoKyuTcDgsLVu23LID4drrncDatWtVmd8WLVoYpZUbSVDE0Uh2FIdJAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiSQmcC8efNk6tSp8vbbb8uCBQuSjb/66itp1aoV8W1FBI4++mj54Ycf1BZ37NhRDjroIDnmmGOkf//+EgwGGywJijga7K7hwEiABEiABEiABEiABEiABEiABEiABEiABEjAWwIVFRWyfv36ZKdt27Zt0C8vvd36pt3bhg0bpLy8XG2kz+eTDh06NO0N5taRAAls1QRWr14tkUhEMSgoKJDS0tKtmgc3ngRIwCCAa8Odd94pr7/+ui2ShQsXNuln35UrV0osFuPzoGXv/+Uvf5EPP/ywxvHQvXt3ue+++2TvvfdukKcPRRwNcrdwUCRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiTgPYFrrrlGXnrppWTHU6ZMkV133dX7FbHHeifQt29fWb58eXK9ixcvrvcxcIUkQAIkUB8ElixZIgceeGByVUcddZQ89dRT9bFqroMESKABE/j555/lxBNPFJROsYvWrVvLl19+2YC3oO5D22WXXVK2v6k8D0ajUVm3bp0S77Vp08aVEOfmm2+W8ePHp4V7//33y6BBg+oO3+MeKOLwGCi7IwESIAESIAESIAESIAESIAESIAESIAESIIG6EhgxYoQgSWXGK6+84vhl5fz58+Xqq69OLnv66afLkCFD1M9/+9vfUmYmUsRR1z3VcJZvqi/tGw5hjoQESMALAnCEWrNmTbKrdu3aSX5+vquuMZP+0EMPTS5DEYcrfI2mMRwFqqur1XhxjOBYaaoBl7RNmzapzYObVqdOnZrqpuZsu3777Tc5+eST5Y8//qixjoMPPlj23XdfgeC1T58+Nb6fOHGiPP/88ymfP/TQQ9KlSxfb8UIU8M0336jvDjjgALn22mtztl1uO25Kz4MQ5bz55pvyxhtvyC+//JKCAu4ZvXr1kgsvvDCr+9yiRYvko48+ktmzZ8uMGTNsj5HHH39cjj32WLe4c9qeIo6c4mXnJEACJEACJEACJEACJEACJEACJEACJEACJOCewJlnnimffvppckG8dHSavIBdMGyDzYBw48orr1Q/UsThfl80liWa0kv7xsKc4yQBEnBPQL9HXX755TJy5EhXHVHE4QpXo2183HHHyXfffZcc/w8//CDNmzdvtNuTaeB///vfBUlkM1588UXp169fk9zWXGxUPB6XM844Q2bOnJnS/fHHHy8PPPBAVqHYY489JqNGjUpZdtiwYXL99dfbDtf6nA5xyKRJk3KxWbXqsyk8D27cuFHgjvHcc885YoCSKKeddpqjtmgEwc5NN91Uo72b37ccr6wODSniqAM8LkoCJEACJEACJEACJEACJEACJEACJEACJEACuSAAJ40JEyYku3777bdl5513drQqLGd14rj33ntl8ODBalmKOBwhbJSNmsJL+0YJnoMmARJwRUAXcVx88cVy3XXXueqDIg5XuBptY13EAUFHcXFxo92eTAPXRRxIXh9yyCFNcltzsVFwarj00ktTuh46dKjcdtttEggEsq7STsRRWFioSq8UFBTUWJ4ijqxIa90ATioDBw6s4byRrUMIaSCocRqTJ0+W4cOHpzQ/9dRTZfTo0U67yHk7ijhyjpgrIAESIAESIAESIAESIAESIAESIAESIAESIAF3BB588MGUl4iYMda/f39HnTzyyCNq9poZ//rXv5K28xRxOELYKBtRxNEodxsHTQJbHQGKOLa6XV7rDaaIgyIOpwfP4YcfLgsWLEg2hwjgn//8p9PFxU7EgYVRUgUlWvSgiMMxWtcNzzrrLPn4449rLId9jLI4zZo1k6+//lpeeOGFlDa77babKrviRLRjLmgn/oET4rbbbut63LlYgCKOXFBlnyRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRQBwIvvfSSXHPNNckeMCsMs8OcxC233JJiPzxlyhQ3uWjxAAAgAElEQVTZdddd1aIUcTgh2DjbUMTROPcbR00CWxsBiji2tj1e++2liIMiDidHD8rsHH300SlN3333XenZs6eTxVWbdCKOdKVSKOJwjNZ1w1mzZsmgQYOSyx111FFK2A5nFGvMmTOnxu9G77//vnTv3t3xOiORiBx44IGyfPny5DIooYNSOg0hKOJoCHuBYyABEiABEiABEiABEiABEiABEiABEiABEiABC4Hp06fLOeeck/zkhhtukIsuusgRI7x4nDp1arItrKBbt26tfs4k4igrK5NVq1ZJXl6edOzYUfx+v6P12TXCS9GlS5eqGuQdOnQQn89X677MBdevXy+rV6+WVq1aJbenzp267AA118PhsGKDmX5ebJfLIaRtnknE0RDY6QMHy5UrV0ppaWmNWvW//fab+qx9+/Zpt7e+9oWX50Vd9jWOOxxvuTzusA7zGoDzzM1sVrtt87o/6zo2b96ski5t27aVli1b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nSukx0TkePfFjUKuRo0aydSpU4WUh2pKQAkoASWgBJSAElACSkAJKAEloASUgBJQAukJqIhDZ4cSSJDAunXrTLSA//73v6lab7zxRunbt2+CZ9lYFalDjj/+eEGMYI1IC0RciGOkfyENjGvz588XBCiFMEQk7BIkDYxrRAP585//nDE1DAxq164dOI4oHldeeWXqM/oxadKkQIqWNWvWyIABAwLsiAjiRq6wFeRLxPHjjz/K9ttvH2g7Oct79uyZCPZiEHEMGTJEHn/88VR/zjrrLDnvvPMC/QsT06QTcRAZZPz48YHjH3nkEenSpUsizLQSJaAESpeAijiKb+xSIo6ddpKJTqq54muptkgJVC4CpFskbcmLL75oOnbsRbdK+317VWgnbz79UPnq4/mmDYWIVFihndWTKwElUJQEli9fLrx7wNhks+WWWxZlO7VRVZMAc5M5am2zzTaTBg0aVEoYCExJe8wPttVWW5kfBJ5bb711pexzqXdq1apVsnbtWtMN0lU3adKk1Luk7VcClZrAzz//bMT81urVq1cwP0+hwW7YsEGWLFmSOu2mm24qDRsWNvpkofuc7nyff/65PPPMM9K5c2fp0KFDsTRL25EAARVxJABRq1ACLoHhw4fLQw89lPqIRXPy5MlSvXr1yKAuvvhiIzAgGkW7du2kcePGZucaxk2Y73D4u2IRvsNBjqM8qq1fv16OPvroQOSK3//+90J6lUKaH8HEnhuRAwKP7bbbTtq0aWMeOFasWCFEGyFqBS+nX3vttcAfEAg7unXrFogswnFnnnmmqYOII6TvIMS0a4gNdt999zLdzpeIgxPRN78dRBI54IADzB+v1apVE/5Ysg9eRx11VKB9fOeLX2wBBA9uFIyrrrpKdthhh8DxPNS0atUq9VnS6VRuvfVWue666wLnPOaYY1Khvd9++21B5OTbzjvvLCeccIJpG5E24IB999130r1798DY8vlee+0lcCONEGNtufHw8sUXX5jrgj801ZSAEqi8BFTEUXxjGxBxIOjzRJfF12JtkRKoHARuueUWGT16tOlMx4P6Sf/zf02ZWFE9XLn8S7ntzD6y5tvlJurdlClTZNttt62o5lSZ85JyU6OeVJnh1o5mILBw4ULZe++9UyUOPvhgufPOO5WZEigaAqT5Jd2vtco2RxGpsOGKFNT+e0zbZzY08Z5T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rVs3EwVATQkoASWgBJSAElACSkAJKAEloASUgBJQAkogeQIq4kieqdaoBJSAElACSkAJKAEloASUgBJQAkpACSgBJaAElIASUAJKQAkoASWgBJSAElACSkAJKIHYBFTEERuZHqAElIASUAJKQAkoASWgBJSAElACSkAJKAEloASUgBJQAkpACSgBJaAElIASUAJKQAkogeQJqIgjeaZaoxJQAkpACSgBJaAElIASUAJKQAkoASWgBJSAElACSkAJKAEloASUgBJQAkpACSgBJaAEYhNQEUdsZHqAElACSkAJKAEloASUgBJQAkpACSgBJaAElIASUAJKQAkoASWgBJSAElACSkAJKAEloASSJ6AijuSZao1KQAkoASWgBJSAElACSkAJKAEloASUgBJQAkpACSgBJaAElIASUAJKQAkoASWgBJSAEohNQEUcsZHpAUpACSgBJaAElIASUAJKQAkoASWgBJSAElACSkAJKAEloASUgBJQAkpACSgBJaAElIASSJ6AijiSZ6o1KgEloASUgBJQAkpACSgBJaAElIASUAJKQAkoASWgBJSAElACSkAJKAEloASUgBJQAkogNgEVccRGpgcoASWgBJSAElACSkAJKAEloASUgBJQAkpACSgBJaAElIASUAJKQAkoASWgBJSAElACSiB5Av8POSQ0hKDx8iYAAAAASUVORK5CYII=" - } - }, + "attachments": {}, "cell_type": "markdown", - "id": "51466c8d-8ce4-4b3d-be4e-18fdbeda5f53", + "id": "ed746260-7027-4399-bbab-a0cdb1e53ec2", "metadata": {}, "source": [ - "# How to add breakpoints\n", + "# Use breakpoints\n", "\n", - "!!! tip \"Prerequisites\"\n", + "## Requirements\n", "\n", - " This guide assumes familiarity with the following concepts:\n", + "To use breakpoints, you will need to:\n", "\n", - " * [Breakpoints](../../../concepts/breakpoints)\n", - " * [LangGraph Glossary](../../../concepts/low_level)\n", + "1. [**Specify a checkpointer**](../../../concepts/persistence#checkpoints) to save the graph state after each step.\n", + "2. [**Set breakpoints**](#setting-breakpoints) to specify where execution should pause.\n", + "3. **Run the graph** with a [**thread ID**](../../../concepts/persistence#threads) to pause execution at the breakpoint.\n", + "4. **Resume execution** using `invoke`/`ainvoke`/`stream`/`astream` passing a `None` as the argument for the inputs.\n", + "\n", + "## Setting breakpoints\n", + "\n", + "There are two places where you can set breakpoints:\n", + "\n", + "1. **Before** or **after** a node executes by setting breakpoints at **compile time** or **run time**. We call these [**static breakpoints**](#static-breakpoints).\n", + "2. **Inside** a node using the `NodeInterrupt` exception. We call these [**dynamic breakpoints**](#dynamic-breakpoints).\n", + "\n", + "## Static breakpoints\n", + "\n", + "Static breakpoints are triggered either **before** or **after** a node executes. You can set static breakpoints by specifying `interrupt_before` and `interrupt_after` at **\"compile\" time** or **run time**.\n", + "\n", + "Static breakpoints can be especially useful for debugging if you want to step through the graph execution one\n", + "node at a time or if you want to pause the graph execution at specific nodes.\n", + "\n", + "=== \"Compile time\"\n", + "\n", + " ```python\n", + " # highlight-next-line\n", + " graph = graph_builder.compile( # (1)!\n", + " # highlight-next-line\n", + " interrupt_before=[\"node_a\"], # (2)!\n", + " # highlight-next-line\n", + " interrupt_after=[\"node_b\", \"node_c\"], # (3)!\n", + " checkpointer=checkpointer, # (4)!\n", + " )\n", + "\n", + " config = {\n", + " \"configurable\": {\n", + " \"thread_id\": \"some_thread\"\n", + " }\n", + " }\n", + "\n", + " # Run the graph until the breakpoint\n", + " graph.invoke(inputs, config=thread_config) # (5)!\n", + "\n", + " # Resume the graph\n", + " graph.invoke(None, config=thread_config) # (6)!\n", + " ```\n", + "\n", + " 1. The breakpoints are set during `compile` time.\n", + " 2. `interrupt_before` specifies the nodes where execution should pause before the node is executed.\n", + " 3. `interrupt_after` specifies the nodes where execution should pause after the node is executed.\n", + " 4. A checkpointer is required to enable breakpoints.\n", + " 5. The graph is run until the first breakpoint is hit.\n", + " 6. The graph is resumed by passing in `None` for the input. This will run the graph until the next breakpoint is hit.\n", + "\n", + "=== \"Run time\"\n", + "\n", + " ```python\n", + " # highlight-next-line\n", + " graph.invoke( # (1)!\n", + " inputs, \n", + " # highlight-next-line\n", + " interrupt_before=[\"node_a\"], # (2)!\n", + " # highlight-next-line\n", + " interrupt_after=[\"node_b\", \"node_c\"] # (3)!\n", + " config={\n", + " \"configurable\": {\"thread_id\": \"some_thread\"}\n", + " }, \n", + " )\n", + "\n", + " config = {\n", + " \"configurable\": {\n", + " \"thread_id\": \"some_thread\"\n", + " }\n", + " }\n", + "\n", + " # Run the graph until the breakpoint\n", + " graph.invoke(inputs, config=config) # (4)!\n", + "\n", + " # Resume the graph\n", + " graph.invoke(None, config=config) # (5)!\n", + " ```\n", + "\n", + " 1. `graph.invoke` is called with the `interrupt_before` and `interrupt_after` parameters. This is a run-time configuration and can be changed for every invocation.\n", + " 2. `interrupt_before` specifies the nodes where execution should pause before the node is executed.\n", + " 3. `interrupt_after` specifies the nodes where execution should pause after the node is executed.\n", + " 4. The graph is run until the first breakpoint is hit.\n", + " 5. The graph is resumed by passing in `None` for the input. This will run the graph until the next breakpoint is hit.\n", + "\n", + " !!! note\n", + "\n", + " You cannot set static breakpoints at runtime for **sub-graphs**.\n", + " If you have a sub-graph, you must set the breakpoints at compilation time.\n", + "\n", + "??? example \"Setting static breakpoints\"\n", + "\n", + " ```python\n", + " from IPython.display import Image, display\n", + " from typing_extensions import TypedDict\n", " \n", - "\n", - "Human-in-the-loop (HIL) interactions are crucial for [agentic systems](https://langchain-ai.github.io/langgraph/concepts/agentic_concepts/#human-in-the-loop). [Breakpoints](https://langchain-ai.github.io/langgraph/concepts/low_level/#breakpoints) are a common HIL interaction pattern, allowing the graph to stop at specific steps and seek human approval before proceeding (e.g., for sensitive actions). \n", - "\n", - "Breakpoints are built on top of LangGraph [checkpoints](https://langchain-ai.github.io/langgraph/concepts/low_level/#checkpointer), which save the graph's state after each node execution. Checkpoints are saved in [threads](https://langchain-ai.github.io/langgraph/concepts/low_level/#threads) that preserve graph state and can be accessed after a graph has finished execution. This allows for graph execution to pause at specific points, await human approval, and then resume execution from the last checkpoint.\n", - "\n", - "![approval.png](attachment:e47c6871-a603-43b7-a8b0-1c75d2348747.png)" + " from langgraph.checkpoint.memory import InMemorySaver \n", + " from langgraph.graph import StateGraph, START, END\n", + " \n", + " \n", + " class State(TypedDict):\n", + " input: str\n", + " \n", + " \n", + " def step_1(state):\n", + " print(\"---Step 1---\")\n", + " pass\n", + " \n", + " \n", + " def step_2(state):\n", + " print(\"---Step 2---\")\n", + " pass\n", + " \n", + " \n", + " def step_3(state):\n", + " print(\"---Step 3---\")\n", + " pass\n", + " \n", + " \n", + " builder = StateGraph(State)\n", + " builder.add_node(\"step_1\", step_1)\n", + " builder.add_node(\"step_2\", step_2)\n", + " builder.add_node(\"step_3\", step_3)\n", + " builder.add_edge(START, \"step_1\")\n", + " builder.add_edge(\"step_1\", \"step_2\")\n", + " builder.add_edge(\"step_2\", \"step_3\")\n", + " builder.add_edge(\"step_3\", END)\n", + " \n", + " # Set up a checkpointer \n", + " checkpointer = InMemorySaver() # (1)!\n", + " \n", + " graph = builder.compile(\n", + " checkpointer=checkpointer, # (2)!\n", + " interrupt_before=[\"step_3\"] # (3)!\n", + " )\n", + " \n", + " # View\n", + " display(Image(graph.get_graph().draw_mermaid_png()))\n", + " \n", + " \n", + " # Input\n", + " initial_input = {\"input\": \"hello world\"}\n", + " \n", + " # Thread\n", + " thread = {\"configurable\": {\"thread_id\": \"1\"}}\n", + " \n", + " # Run the graph until the first interruption\n", + " for event in graph.stream(initial_input, thread, stream_mode=\"values\"):\n", + " print(event)\n", + " \n", + " # This will run until the breakpoint\n", + " # You can get the state of the graph at this point\n", + " print(graph.get_state(config))\n", + " \n", + " # You can continue the graph execution by passing in `None` for the input\n", + " for event in graph.stream(None, thread, stream_mode=\"values\"):\n", + " print(event)\n", + " ```" ] }, { + "attachments": {}, "cell_type": "markdown", - "id": "7cbd446a-808f-4394-be92-d45ab818953c", + "id": "b7d5f6a5-9e59-43e4-a4b6-8ada6dace691", "metadata": {}, "source": [ - "## Setup\n", + "## Dynamic breakpoints\n", "\n", - "First we need to install the packages required" + "Use dynamic breakpoints if you need to interrupt the graph from inside a given node based on a condition.\n", + "\n", + "```python\n", + "from langgraph.errors import NodeInterrupt\n", + "\n", + "def step_2(state: State) -> State:\n", + " # highlight-next-line\n", + " if len(state[\"input\"]) > 5:\n", + " # highlight-next-line\n", + " raise NodeInterrupt( # (1)!\n", + " f\"Received input that is longer than 5 characters: {state['foo']}\"\n", + " )\n", + " return state\n", + "```\n", + "\n", + "1. raise NodeInterrupt exception based on a some condition. In this example, we create a dynamic breakpoint if the length of the attribute `input` is longer than 5 characters.\n", + "\n", + "
    Using dynamic breakpoints" ] }, { "cell_type": "code", - "execution_count": 1, - "id": "af4ce0ba-7596-4e5f-8bf8-0b0bd6e62833", - "metadata": {}, - "outputs": [], - "source": [ - "%%capture --no-stderr\n", - "%pip install --quiet -U langgraph langchain_anthropic" - ] - }, - { - "cell_type": "markdown", - "id": "0abe11f4-62ed-4dc4-8875-3db21e260d1d", - "metadata": {}, - "source": [ - "Next, we need to set API keys for Anthropic (the LLM we will use)" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "c903a1cf-2977-4e2d-ad7d-8b3946821d89", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "ANTHROPIC_API_KEY: ········\n" - ] - } - ], - "source": [ - "import getpass\n", - "import os\n", - "\n", - "\n", - "def _set_env(var: str):\n", - " if not os.environ.get(var):\n", - " os.environ[var] = getpass.getpass(f\"{var}: \")\n", - "\n", - "\n", - "_set_env(\"ANTHROPIC_API_KEY\")" - ] - }, - { - "cell_type": "markdown", - "id": "f0ed46a8-effe-4596-b0e1-a6a29ee16f5c", - "metadata": {}, - "source": [ - "
    \n", - "

    Set up LangSmith for LangGraph development

    \n", - "

    \n", - " Sign up for LangSmith to quickly spot issues and improve the performance of your LangGraph projects. LangSmith lets you use trace data to debug, test, and monitor your LLM apps built with LangGraph — read more about how to get started here. \n", - "

    \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "id": "131fd44d-c0f8-473a-ae80-4b4668ad7f47", - "metadata": {}, - "source": [ - "## Simple Usage\n", - "\n", - "Let's look at very basic usage of this.\n", - "\n", - "Below, we do two things:\n", - "\n", - "1) We specify the [breakpoint](https://langchain-ai.github.io/langgraph/concepts/low_level/#breakpoints) using `interrupt_before` the specified step.\n", - "\n", - "2) We set up a [checkpointer](https://langchain-ai.github.io/langgraph/concepts/low_level/#checkpointer) to save the state of the graph." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "9b53f191-1e86-4881-a667-d46a3d66958b", + "execution_count": 16, + "id": "9a14c8b2-5c25-4201-93ea-e5358ee99bcb", "metadata": {}, "outputs": [ { "data": { - "image/jpeg": "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", + "image/png": "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", "text/plain": [ "" ] @@ -131,28 +219,36 @@ ], "source": [ "from typing_extensions import TypedDict\n", + "from IPython.display import Image, display\n", + "\n", "from langgraph.graph import StateGraph, START, END\n", "from langgraph.checkpoint.memory import MemorySaver\n", - "from IPython.display import Image, display\n", + "from langgraph.errors import NodeInterrupt\n", "\n", "\n", "class State(TypedDict):\n", " input: str\n", "\n", "\n", - "def step_1(state):\n", + "def step_1(state: State) -> State:\n", " print(\"---Step 1---\")\n", - " pass\n", + " return state\n", "\n", "\n", - "def step_2(state):\n", + "def step_2(state: State) -> State:\n", + " # Let's optionally raise a NodeInterrupt\n", + " # if the length of the input is longer than 5 characters\n", + " if len(state[\"input\"]) > 5:\n", + " raise NodeInterrupt(\n", + " f\"Received input that is longer than 5 characters: {state['input']}\"\n", + " )\n", " print(\"---Step 2---\")\n", - " pass\n", + " return state\n", "\n", "\n", - "def step_3(state):\n", + "def step_3(state: State) -> State:\n", " print(\"---Step 3---\")\n", - " pass\n", + " return state\n", "\n", "\n", "builder = StateGraph(State)\n", @@ -167,29 +263,92 @@ "# Set up memory\n", "memory = MemorySaver()\n", "\n", - "# Add\n", - "graph = builder.compile(checkpointer=memory, interrupt_before=[\"step_3\"])\n", + "# Compile the graph with memory\n", + "graph = builder.compile(checkpointer=memory)\n", "\n", "# View\n", "display(Image(graph.get_graph().draw_mermaid_png()))" ] }, { + "attachments": {}, "cell_type": "markdown", - "id": "d7d5f80f-9d8c-4a39-b198-24fe94132b41", + "id": "ef321c80-2677-4bb7-86a4-d2bd2439b4fb", "metadata": {}, "source": [ - "We create a [thread ID](https://langchain-ai.github.io/langgraph/concepts/low_level/#threads) for the checkpointer.\n", - "\n", - "We run until step 3, as defined with `interrupt_before`. \n", - "\n", - "After the user input / approval, [we resume execution](https://langchain-ai.github.io/langgraph/concepts/low_level/#breakpoints) by invoking the graph with `None`. " + "First, let's run the graph with an input that <= 5 characters long. This should safely ignore the interrupt condition we defined and return the original input at the end of the graph execution." ] }, { "cell_type": "code", - "execution_count": 7, - "id": "dfe04a7f-988e-4a36-8ce8-2c49fab0130a", + "execution_count": 17, + "id": "b2d281f1-3349-4378-8918-7665fa7a7457", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'input': 'hello'}\n", + "---Step 1---\n", + "{'input': 'hello'}\n", + "---Step 2---\n", + "{'input': 'hello'}\n", + "---Step 3---\n", + "{'input': 'hello'}\n" + ] + } + ], + "source": [ + "initial_input = {\"input\": \"hello\"}\n", + "thread_config = {\"configurable\": {\"thread_id\": \"1\"}}\n", + "\n", + "for event in graph.stream(initial_input, thread_config, stream_mode=\"values\"):\n", + " print(event)" + ] + }, + { + "cell_type": "markdown", + "id": "2b66b926-47eb-401b-b37b-d80269d7214c", + "metadata": {}, + "source": [ + "If we inspect the graph at this point, we can see that there are no more tasks left to run and that the graph indeed finished execution." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "4eac1455-e7ef-4a32-8c14-0d5789409689", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "()\n", + "()\n" + ] + } + ], + "source": [ + "state = graph.get_state(thread_config)\n", + "print(state.next)\n", + "print(state.tasks)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "f8e03817-2135-4fb3-b881-fd6d2c378ccf", + "metadata": {}, + "source": [ + "Now, let's run the graph with an input that's longer than 5 characters. This should trigger the dynamic interrupt we defined via raising a `NodeInterrupt` error inside the `step_2` node." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "c06192ad-13a4-4d2e-8e30-f1c08578fe77", "metadata": {}, "outputs": [ { @@ -198,264 +357,193 @@ "text": [ "{'input': 'hello world'}\n", "---Step 1---\n", - "---Step 2---\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Do you want to go to Step 3? (yes/no): yes\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "---Step 3---\n" + "{'input': 'hello world'}\n", + "{'__interrupt__': (Interrupt(value='Received input that is longer than 5 characters: hello world', resumable=False, ns=None),)}\n" ] } ], "source": [ - "# Input\n", "initial_input = {\"input\": \"hello world\"}\n", - "\n", - "# Thread\n", - "thread = {\"configurable\": {\"thread_id\": \"1\"}}\n", + "thread_config = {\"configurable\": {\"thread_id\": \"2\"}}\n", "\n", "# Run the graph until the first interruption\n", - "for event in graph.stream(initial_input, thread, stream_mode=\"values\"):\n", - " print(event)\n", - "\n", - "try:\n", - " user_approval = input(\"Do you want to go to Step 3? (yes/no): \")\n", - "except:\n", - " user_approval = \"yes\"\n", - "\n", - "if user_approval.lower() == \"yes\":\n", - " # If approved, continue the graph execution\n", - " for event in graph.stream(None, thread, stream_mode=\"values\"):\n", - " print(event)\n", - "else:\n", - " print(\"Operation cancelled by user.\")" + "for event in graph.stream(initial_input, thread_config, stream_mode=\"values\"):\n", + " print(event)" ] }, { "cell_type": "markdown", - "id": "3333b771", + "id": "173fd4f1-db97-44bb-a9e5-435ed042e3a3", "metadata": {}, "source": [ - "## Agent\n", - "\n", - "In the context of agents, breakpoints are useful to manually approve certain agent actions.\n", - " \n", - "To show this, we will build a relatively simple ReAct-style agent that does tool calling. \n", - "\n", - "We'll add a breakpoint before the `action` node is called. " + "We can see that the graph now stopped while executing `step_2`. If we inspect the graph state at this point, we can see the information on what node is set to execute next (`step_2`), as well as what node raised the interrupt (also `step_2`), and additional information about the interrupt." ] }, { "cell_type": "code", - "execution_count": 2, - "id": "6098e5cb", + "execution_count": 20, + "id": "2058593c-178e-4a23-a4c4-860d4a9c2198", "metadata": {}, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "('step_2',)\n", + "(PregelTask(id='bfc767e3-a6c4-c5af-dbbf-0d20ea64501e', name='step_2', path=('__pregel_pull', 'step_2'), error=None, interrupts=(Interrupt(value='Received input that is longer than 5 characters: hello world', resumable=False, ns=None),), state=None, result=None),)\n" + ] + } + ], + "source": [ + "state = graph.get_state(thread_config)\n", + "print(state.next)\n", + "print(state.tasks)" + ] + }, + { + "cell_type": "markdown", + "id": "fc36d1be-ae2e-49c8-a17f-2b27be09618a", + "metadata": {}, + "source": [ + "If we try to resume the graph from the breakpoint, we will simply interrupt again as our inputs & graph state haven't changed." + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "872e7a69-9784-4f81-90c6-6b6af2fa6480", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'input': 'hello world'}\n", + "{'__interrupt__': (Interrupt(value='Received input that is longer than 5 characters: hello world', resumable=False, ns=None),)}\n" + ] + } + ], + "source": [ + "# NOTE: to resume the graph from a dynamic interrupt we use the same syntax as with regular interrupts -- we pass None as the input\n", + "for event in graph.stream(None, thread_config, stream_mode=\"values\"):\n", + " print(event)" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "3275f899-7039-4029-8814-0bb5c33fabfe", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "('step_2',)\n", + "(PregelTask(id='bfc767e3-a6c4-c5af-dbbf-0d20ea64501e', name='step_2', path=('__pregel_pull', 'step_2'), error=None, interrupts=(Interrupt(value='Received input that is longer than 5 characters: hello world', resumable=False, ns=None),), state=None, result=None),)\n" + ] + } + ], + "source": [ + "state = graph.get_state(thread_config)\n", + "print(state.next)\n", + "print(state.tasks)" + ] + }, + { + "cell_type": "markdown", + "id": "f2000f6c-029e-4c0a-8db5-7504dc185d01", + "metadata": {}, + "source": [ + "
    " + ] + }, + { + "cell_type": "markdown", + "id": "4eb3ebb1-cf26-4082-977e-796eadb6f654", + "metadata": {}, + "source": [ + "## Use with subgraphs\n", + "\n", + "To add breakpoints to subgraph either:\n", + "\n", + "* Define [static breakpoints](#static-breakpoints) by specifying them when **compiling** the subgraph.\n", + "* Define [dynamic breakpoints](#dynamic-breakpoints).\n", + "\n", + "\n", + "
    Add breakpoints to subgraphs" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "3c3edfe3-4633-46d2-9723-db7f7be28830", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "StateSnapshot(values={'foo': ''}, next=('subgraph_node_1',), config={'configurable': {'thread_id': '1', 'checkpoint_ns': 'node_1:dfc321bb-7c91-ccfe-23b8-c2374ae3f1cc', 'checkpoint_id': '1f02a8d1-985a-6e2c-8000-77034088c0ce', 'checkpoint_map': {'': '1f02a8d1-9856-6264-8000-ed1534455427', 'node_1:dfc321bb-7c91-ccfe-23b8-c2374ae3f1cc': '1f02a8d1-985a-6e2c-8000-77034088c0ce'}}}, metadata={'source': 'loop', 'writes': None, 'step': 0, 'parents': {'': '1f02a8d1-9856-6264-8000-ed1534455427'}, 'thread_id': '1', 'langgraph_step': 1, 'langgraph_node': 'node_1', 'langgraph_triggers': ['branch:to:node_1'], 'langgraph_path': ['__pregel_pull', 'node_1'], 'langgraph_checkpoint_ns': 'node_1:dfc321bb-7c91-ccfe-23b8-c2374ae3f1cc'}, created_at='2025-05-06T15:16:35.543192+00:00', parent_config={'configurable': {'thread_id': '1', 'checkpoint_ns': 'node_1:dfc321bb-7c91-ccfe-23b8-c2374ae3f1cc', 'checkpoint_id': '1f02a8d1-9859-6d41-bfff-872b2e8f4db6', 'checkpoint_map': {'': '1f02a8d1-9856-6264-8000-ed1534455427', 'node_1:dfc321bb-7c91-ccfe-23b8-c2374ae3f1cc': '1f02a8d1-9859-6d41-bfff-872b2e8f4db6'}}}, tasks=(PregelTask(id='33218e09-8747-5161-12b1-5dc705d30b51', name='subgraph_node_1', path=('__pregel_pull', 'subgraph_node_1'), error=None, interrupts=(), state=None, result=None),), interrupts=())\n" + ] + }, { "data": { - "image/jpeg": "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", "text/plain": [ - "" + "{'foo': ''}" ] }, + "execution_count": 21, "metadata": {}, - "output_type": "display_data" + "output_type": "execute_result" } ], "source": [ - "# Set up the tool\n", - "from langchain_anthropic import ChatAnthropic\n", - "from langchain_core.tools import tool\n", - "from langgraph.graph import MessagesState, START\n", - "from langgraph.prebuilt import ToolNode\n", - "from langgraph.graph import END, StateGraph\n", - "from langgraph.checkpoint.memory import MemorySaver\n", + "from typing_extensions import TypedDict\n", + "\n", + "from langgraph.graph import START, StateGraph\n", + "from langgraph.checkpoint.memory import InMemorySaver\n", + "from langgraph.types import interrupt\n", "\n", "\n", - "@tool\n", - "def search(query: str):\n", - " \"\"\"Call to surf the web.\"\"\"\n", - " # This is a placeholder for the actual implementation\n", - " # Don't let the LLM know this though 😊\n", - " return [\n", - " \"It's sunny in San Francisco, but you better look out if you're a Gemini 😈.\"\n", - " ]\n", + "class State(TypedDict):\n", + " foo: str\n", "\n", "\n", - "tools = [search]\n", - "tool_node = ToolNode(tools)\n", - "\n", - "# Set up the model\n", - "\n", - "model = ChatAnthropic(model=\"claude-3-5-sonnet-20240620\")\n", - "model = model.bind_tools(tools)\n", + "def subgraph_node_1(state: State):\n", + " return {\"foo\": state[\"foo\"]}\n", "\n", "\n", - "# Define nodes and conditional edges\n", + "subgraph_builder = StateGraph(State)\n", + "subgraph_builder.add_node(subgraph_node_1)\n", + "subgraph_builder.add_edge(START, \"subgraph_node_1\")\n", "\n", + "subgraph = subgraph_builder.compile(interrupt_before=[\"subgraph_node_1\"])\n", "\n", - "# Define the function that determines whether to continue or not\n", - "def should_continue(state):\n", - " messages = state[\"messages\"]\n", - " last_message = messages[-1]\n", - " # If there is no function call, then we finish\n", - " if not last_message.tool_calls:\n", - " return \"end\"\n", - " # Otherwise if there is, we continue\n", - " else:\n", - " return \"continue\"\n", + "builder = StateGraph(State)\n", + "builder.add_node(\"node_1\", subgraph) # directly include subgraph as a node\n", + "builder.add_edge(START, \"node_1\")\n", "\n", + "checkpointer = InMemorySaver()\n", + "graph = builder.compile(checkpointer=checkpointer)\n", "\n", - "# Define the function that calls the model\n", - "def call_model(state):\n", - " messages = state[\"messages\"]\n", - " response = model.invoke(messages)\n", - " # We return a list, because this will get added to the existing list\n", - " return {\"messages\": [response]}\n", + "config = {\"configurable\": {\"thread_id\": \"1\"}}\n", "\n", + "graph.invoke({\"foo\": \"\"}, config)\n", "\n", - "# Define a new graph\n", - "workflow = StateGraph(MessagesState)\n", + "# Fetch state including subgraph state.\n", + "print(graph.get_state(config, subgraphs=True).tasks[0].state)\n", "\n", - "# Define the two nodes we will cycle between\n", - "workflow.add_node(\"agent\", call_model)\n", - "workflow.add_node(\"action\", tool_node)\n", - "\n", - "# Set the entrypoint as `agent`\n", - "# This means that this node is the first one called\n", - "workflow.add_edge(START, \"agent\")\n", - "\n", - "# We now add a conditional edge\n", - "workflow.add_conditional_edges(\n", - " # First, we define the start node. We use `agent`.\n", - " # This means these are the edges taken after the `agent` node is called.\n", - " \"agent\",\n", - " # Next, we pass in the function that will determine which node is called next.\n", - " should_continue,\n", - " # Finally we pass in a mapping.\n", - " # The keys are strings, and the values are other nodes.\n", - " # END is a special node marking that the graph should finish.\n", - " # What will happen is we will call `should_continue`, and then the output of that\n", - " # will be matched against the keys in this mapping.\n", - " # Based on which one it matches, that node will then be called.\n", - " {\n", - " # If `tools`, then we call the tool node.\n", - " \"continue\": \"action\",\n", - " # Otherwise we finish.\n", - " \"end\": END,\n", - " },\n", - ")\n", - "\n", - "# We now add a normal edge from `tools` to `agent`.\n", - "# This means that after `tools` is called, `agent` node is called next.\n", - "workflow.add_edge(\"action\", \"agent\")\n", - "\n", - "# Set up memory\n", - "memory = MemorySaver()\n", - "\n", - "# Finally, we compile it!\n", - "# This compiles it into a LangChain Runnable,\n", - "# meaning you can use it as you would any other runnable\n", - "\n", - "# We add in `interrupt_before=[\"action\"]`\n", - "# This will add a breakpoint before the `action` node is called\n", - "app = workflow.compile(checkpointer=memory, interrupt_before=[\"action\"])\n", - "\n", - "display(Image(app.get_graph().draw_mermaid_png()))" + "# resume the subgraph\n", + "graph.invoke(None, config)" ] }, { "cell_type": "markdown", - "id": "2a1b56c5-bd61-4192-8bdb-458a1e9f0159", + "id": "e509da54-8805-4a54-a07c-1b7805fa6b95", "metadata": {}, "source": [ - "## Interacting with the Agent\n", - "\n", - "We can now interact with the agent.\n", - "\n", - "We see that it stops before calling a tool, because `interrupt_before` is set before the `action` node." - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "cfd140f0-a5a6-4697-8115-322242f197b5", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "================================\u001b[1m Human Message \u001b[0m=================================\n", - "\n", - "search for the weather in sf now\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "[{'text': \"Certainly! I'll search for the current weather in San Francisco for you. Let me use the search function to find this information.\", 'type': 'text'}, {'text': None, 'type': 'tool_use', 'id': 'toolu_011ezBx5hKKjVJwqnECNPyyC', 'name': 'search', 'input': {'query': 'current weather in San Francisco'}}]\n" - ] - } - ], - "source": [ - "from langchain_core.messages import HumanMessage\n", - "\n", - "thread = {\"configurable\": {\"thread_id\": \"3\"}}\n", - "inputs = [HumanMessage(content=\"search for the weather in sf now\")]\n", - "for event in app.stream({\"messages\": inputs}, thread, stream_mode=\"values\"):\n", - " event[\"messages\"][-1].pretty_print()" - ] - }, - { - "cell_type": "markdown", - "id": "1bca3814-db08-4b0b-8c0c-95b6c5440c81", - "metadata": {}, - "source": [ - "**Resume**\n", - "\n", - "We can now call the agent again with no inputs to continue.\n", - "\n", - "This will run the tool as requested.\n", - "\n", - "Running an interrupted graph with `None` in the inputs means to `proceed as if the interruption didn't occur.`" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "51923913-20f7-4ee1-b9ba-d01f5fb2869b", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "=================================\u001b[1m Tool Message \u001b[0m=================================\n", - "Name: search\n", - "\n", - "[\"It's sunny in San Francisco, but you better look out if you're a Gemini \\ud83d\\ude08.\"]\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "Based on the search results, I can provide you with information about the current weather in San Francisco:\n", - "\n", - "The weather in San Francisco right now is sunny. \n", - "\n", - "It's worth noting that the search result includes a playful reference to astrology, suggesting that Geminis should \"look out.\" However, this is likely just a humorous addition and not related to the actual weather conditions.\n", - "\n", - "Is there anything else you'd like to know about the weather in San Francisco or any other location?\n" - ] - } - ], - "source": [ - "for event in app.stream(None, thread, stream_mode=\"values\"):\n", - " event[\"messages\"][-1].pretty_print()" + "
    " ] } ], diff --git a/docs/docs/how-tos/human_in_the_loop/dynamic_breakpoints.ipynb b/docs/docs/how-tos/human_in_the_loop/dynamic_breakpoints.ipynb deleted file mode 100644 index 28893dda7..000000000 --- a/docs/docs/how-tos/human_in_the_loop/dynamic_breakpoints.ipynb +++ /dev/null @@ -1,446 +0,0 @@ -{ - "cells": [ - { - "attachments": {}, - "cell_type": "markdown", - "id": "b7d5f6a5-9e59-43e4-a4b6-8ada6dace691", - "metadata": {}, - "source": [ - "# How to add dynamic breakpoints with `NodeInterrupt`\n", - "\n", - "!!! note\n", - "\n", - " For **human-in-the-loop** workflows use the new [`interrupt()`](../../../reference/types/#langgraph.types.interrupt) function for **human-in-the-loop** workflows. Please review the [Human-in-the-loop conceptual guide](../../../concepts/human_in_the_loop) for more information about design patterns with `interrupt`.\n", - "\n", - "!!! tip \"Prerequisites\"\n", - "\n", - " This guide assumes familiarity with the following concepts:\n", - "\n", - " * [Breakpoints](../../../concepts/breakpoints)\n", - " * [LangGraph Glossary](../../../concepts/low_level)\n", - " \n", - "\n", - "Human-in-the-loop (HIL) interactions are crucial for [agentic systems](https://langchain-ai.github.io/langgraph/concepts/agentic_concepts/#human-in-the-loop). [Breakpoints](https://langchain-ai.github.io/langgraph/concepts/low_level/#breakpoints) are a common HIL interaction pattern, allowing the graph to stop at specific steps and seek human approval before proceeding (e.g., for sensitive actions).\n", - "\n", - "In LangGraph you can add breakpoints before / after a node is executed. But oftentimes it may be helpful to **dynamically** interrupt the graph from inside a given node based on some condition. When doing so, it may also be helpful to include information about **why** that interrupt was raised.\n", - "\n", - "This guide shows how you can dynamically interrupt the graph using `NodeInterrupt` -- a special exception that can be raised from inside a node. Let's see it in action!\n", - "\n", - "\n", - "## Setup\n", - "\n", - "First, let's install the required packages" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "2013d058-c245-498e-ba05-5af99b9b8a1b", - "metadata": {}, - "outputs": [], - "source": [ - "%%capture --no-stderr\n", - "%pip install -U langgraph" - ] - }, - { - "cell_type": "markdown", - "id": "d9f9574b", - "metadata": {}, - "source": [ - "
    \n", - "

    Set up LangSmith for LangGraph development

    \n", - "

    \n", - " Sign up for LangSmith to quickly spot issues and improve the performance of your LangGraph projects. LangSmith lets you use trace data to debug, test, and monitor your LLM apps built with LangGraph — read more about how to get started here. \n", - "

    \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "id": "e9aa244f-1dd9-450e-9526-b1a28b30f84f", - "metadata": {}, - "source": [ - "## Define the graph" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "9a14c8b2-5c25-4201-93ea-e5358ee99bcb", - "metadata": {}, - "outputs": [ - { - "data": { - "image/jpeg": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from typing_extensions import TypedDict\n", - "from IPython.display import Image, display\n", - "\n", - "from langgraph.graph import StateGraph, START, END\n", - "from langgraph.checkpoint.memory import MemorySaver\n", - "from langgraph.errors import NodeInterrupt\n", - "\n", - "\n", - "class State(TypedDict):\n", - " input: str\n", - "\n", - "\n", - "def step_1(state: State) -> State:\n", - " print(\"---Step 1---\")\n", - " return state\n", - "\n", - "\n", - "def step_2(state: State) -> State:\n", - " # Let's optionally raise a NodeInterrupt\n", - " # if the length of the input is longer than 5 characters\n", - " if len(state[\"input\"]) > 5:\n", - " raise NodeInterrupt(\n", - " f\"Received input that is longer than 5 characters: {state['input']}\"\n", - " )\n", - "\n", - " print(\"---Step 2---\")\n", - " return state\n", - "\n", - "\n", - "def step_3(state: State) -> State:\n", - " print(\"---Step 3---\")\n", - " return state\n", - "\n", - "\n", - "builder = StateGraph(State)\n", - "builder.add_node(\"step_1\", step_1)\n", - "builder.add_node(\"step_2\", step_2)\n", - "builder.add_node(\"step_3\", step_3)\n", - "builder.add_edge(START, \"step_1\")\n", - "builder.add_edge(\"step_1\", \"step_2\")\n", - "builder.add_edge(\"step_2\", \"step_3\")\n", - "builder.add_edge(\"step_3\", END)\n", - "\n", - "# Set up memory\n", - "memory = MemorySaver()\n", - "\n", - "# Compile the graph with memory\n", - "graph = builder.compile(checkpointer=memory)\n", - "\n", - "# View\n", - "display(Image(graph.get_graph().draw_mermaid_png()))" - ] - }, - { - "cell_type": "markdown", - "id": "ad5521e1-0e58-42c5-9282-ff96f24ee6f6", - "metadata": {}, - "source": [ - "## Run the graph with dynamic interrupt" - ] - }, - { - "cell_type": "markdown", - "id": "83692c63-5c65-4562-9c65-5ad1935e339f", - "metadata": {}, - "source": [ - "First, let's run the graph with an input that <= 5 characters long. This should safely ignore the interrupt condition we defined and return the original input at the end of the graph execution." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "b2d281f1-3349-4378-8918-7665fa7a7457", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'input': 'hello'}\n", - "---Step 1---\n", - "{'input': 'hello'}\n", - "---Step 2---\n", - "{'input': 'hello'}\n", - "---Step 3---\n", - "{'input': 'hello'}\n" - ] - } - ], - "source": [ - "initial_input = {\"input\": \"hello\"}\n", - "thread_config = {\"configurable\": {\"thread_id\": \"1\"}}\n", - "\n", - "for event in graph.stream(initial_input, thread_config, stream_mode=\"values\"):\n", - " print(event)" - ] - }, - { - "cell_type": "markdown", - "id": "2b66b926-47eb-401b-b37b-d80269d7214c", - "metadata": {}, - "source": [ - "If we inspect the graph at this point, we can see that there are no more tasks left to run and that the graph indeed finished execution." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "4eac1455-e7ef-4a32-8c14-0d5789409689", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "()\n", - "()\n" - ] - } - ], - "source": [ - "state = graph.get_state(thread_config)\n", - "print(state.next)\n", - "print(state.tasks)" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "f8e03817-2135-4fb3-b881-fd6d2c378ccf", - "metadata": {}, - "source": [ - "Now, let's run the graph with an input that's longer than 5 characters. This should trigger the dynamic interrupt we defined via raising a `NodeInterrupt` error inside the `step_2` node." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "c06192ad-13a4-4d2e-8e30-f1c08578fe77", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'input': 'hello world'}\n", - "---Step 1---\n", - "{'input': 'hello world'}\n" - ] - } - ], - "source": [ - "initial_input = {\"input\": \"hello world\"}\n", - "thread_config = {\"configurable\": {\"thread_id\": \"2\"}}\n", - "\n", - "# Run the graph until the first interruption\n", - "for event in graph.stream(initial_input, thread_config, stream_mode=\"values\"):\n", - " print(event)" - ] - }, - { - "cell_type": "markdown", - "id": "173fd4f1-db97-44bb-a9e5-435ed042e3a3", - "metadata": {}, - "source": [ - "We can see that the graph now stopped while executing `step_2`. If we inspect the graph state at this point, we can see the information on what node is set to execute next (`step_2`), as well as what node raised the interrupt (also `step_2`), and additional information about the interrupt." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "2058593c-178e-4a23-a4c4-860d4a9c2198", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "('step_2',)\n", - "(PregelTask(id='365d4518-bcff-5abd-8ef5-8a0de7f510b0', name='step_2', error=None, interrupts=(Interrupt(value='Received input that is longer than 5 characters: hello world', when='during'),)),)\n" - ] - } - ], - "source": [ - "state = graph.get_state(thread_config)\n", - "print(state.next)\n", - "print(state.tasks)" - ] - }, - { - "cell_type": "markdown", - "id": "fc36d1be-ae2e-49c8-a17f-2b27be09618a", - "metadata": {}, - "source": [ - "If we try to resume the graph from the breakpoint, we will simply interrupt again as our inputs & graph state haven't changed." - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "872e7a69-9784-4f81-90c6-6b6af2fa6480", - "metadata": {}, - "outputs": [], - "source": [ - "# NOTE: to resume the graph from a dynamic interrupt we use the same syntax as with regular interrupts -- we pass None as the input\n", - "for event in graph.stream(None, thread_config, stream_mode=\"values\"):\n", - " print(event)" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "3275f899-7039-4029-8814-0bb5c33fabfe", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "('step_2',)\n", - "(PregelTask(id='365d4518-bcff-5abd-8ef5-8a0de7f510b0', name='step_2', error=None, interrupts=(Interrupt(value='Received input that is longer than 5 characters: hello world', when='during'),)),)\n" - ] - } - ], - "source": [ - "state = graph.get_state(thread_config)\n", - "print(state.next)\n", - "print(state.tasks)" - ] - }, - { - "cell_type": "markdown", - "id": "a5862dea-2af2-48cb-9889-979b6c6af6aa", - "metadata": {}, - "source": [ - "## Update the graph state" - ] - }, - { - "cell_type": "markdown", - "id": "c8724ef6-877a-44b9-b96a-ae81efa2d9e4", - "metadata": {}, - "source": [ - "To get around it, we can do several things. \n", - "\n", - "First, we could simply run the graph on a different thread with a shorter input, like we did in the beginning. Alternatively, if we want to resume the graph execution from the breakpoint, we can update the state to have an input that's shorter than 5 characters (the condition for our interrupt)." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "2ba8dc8d-b90e-45f5-92cd-2192fc66f270", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "---Step 2---\n", - "{'input': 'foo'}\n", - "---Step 3---\n", - "{'input': 'foo'}\n", - "()\n", - "{'input': 'foo'}\n" - ] - } - ], - "source": [ - "# NOTE: this update will be applied as of the last successful node before the interrupt, i.e. `step_1`, right before the node with an interrupt\n", - "graph.update_state(config=thread_config, values={\"input\": \"foo\"})\n", - "for event in graph.stream(None, thread_config, stream_mode=\"values\"):\n", - " print(event)\n", - "\n", - "state = graph.get_state(thread_config)\n", - "print(state.next)\n", - "print(state.values)" - ] - }, - { - "cell_type": "markdown", - "id": "6f16980e-aef4-45c9-85eb-955568a93c5b", - "metadata": {}, - "source": [ - "You can also update the state **as node `step_2`** (interrupted node) which would skip over that node altogether" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "9a48e564-d979-4ac2-b815-c667345a9f07", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'input': 'hello world'}\n", - "---Step 1---\n", - "{'input': 'hello world'}\n" - ] - } - ], - "source": [ - "initial_input = {\"input\": \"hello world\"}\n", - "thread_config = {\"configurable\": {\"thread_id\": \"3\"}}\n", - "\n", - "# Run the graph until the first interruption\n", - "for event in graph.stream(initial_input, thread_config, stream_mode=\"values\"):\n", - " print(event)" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "17f973ab-00ce-4f16-a452-641e76625fde", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "---Step 3---\n", - "{'input': 'hello world'}\n", - "()\n", - "{'input': 'hello world'}\n" - ] - } - ], - "source": [ - "# NOTE: this update will skip the node `step_2` altogether\n", - "graph.update_state(config=thread_config, values=None, as_node=\"step_2\")\n", - "for event in graph.stream(None, thread_config, stream_mode=\"values\"):\n", - " print(event)\n", - "\n", - "state = graph.get_state(thread_config)\n", - "print(state.next)\n", - "print(state.values)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.4" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/docs/docs/how-tos/human_in_the_loop/edit-graph-state.ipynb b/docs/docs/how-tos/human_in_the_loop/edit-graph-state.ipynb deleted file mode 100644 index 35b5f6c41..000000000 --- a/docs/docs/how-tos/human_in_the_loop/edit-graph-state.ipynb +++ /dev/null @@ -1,568 +0,0 @@ -{ - "cells": [ - { - "attachments": { - "1a5388fe-fa93-4607-a009-d71fe2223f5a.png": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAB8cAAAWwCAYAAADAIUCbAAAAAXNSR0IArs4c6QAAIABJREFUeF7snQmcTeUbx58x+zAztkEopVBJQqEsbeYv2SJS1uypECktlKIkW1LZtyylRFFUiEgohRKVlCJjxjbGmBnGzPw/v5dzO/fMufu5M3dmfs/nM5+Zufc97/J9zz33nPf3Ps8TlJOTkyM0EiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEijEBIIojhfi2eXQSIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAEFAGK4zwRSIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAECj0BiuOFfoo5QBIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgAYrjPAdIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgAQKPQGK44V+ijlAEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABiuM8B0iABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABAo9AYrjhX6KOUASIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAGK4zwHSIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAECj0BiuOFfoo5QBIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgAYrjPAdIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgAQKPQGK44V+ijlAEiABEiABEiABEghMAud27pRz+/ZJaOXKEnbDDRJcunRgdpS9ckkgdeVKOT1rlgSFhEhMz55SolUrkWLFXB7HAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiSQlwQojuclbbZFAiRAAiRAAiRAAiRgI3B85Eg5+9lndkTCataUsBo1JKxaNYmoX19Cr7qKxAKcQOaBA3KkY0e7XkbFx0vZ0aMlKCwswHvP7pEACZAACZAACZAACZAACZAACZAACZAACRQlAhTHi9Jsc6wkQAIkQAIkQAIkEEAEMn78UVI/+kguHD4s537+2bRnkY0aSXTnzhJ5660B1HMRycqSzH/+KZDi/fl9+yR5xgwpPXy4hFx2mc9cUxYskFNTpkhw+fIS3b69pLz7rmSfPSuYu7gJEyQoPNznNlgBCZAACZAACZAACZAACZAACZAACZAACZAACVhBgOK4FRRZBwmQAAmQAAmQAAmQgNcEMg8elCPt20vJRx+VqLvukguHDsn5Awck7Ysv5Pz+/are2F69pOTjj3vdhtUHpm3YIMeefFLKT5+uPNzz3LKzvQ5bfub99+Xk669LyQEDJLZvX5+7fnLcODmzdKmUmzxZIm+/XbISEyVpyBA5/+uvFMh9pssKSIAESIAESIAESIAESIAESIAESIAESIAErCRAcdxKmqyLBEiABEiABEiABEjAYwIZO3ZIYr9+EvPww1Jq0KD/js/OlrOffy7HR4xQr5UaOlRiunb1uH5/HJC+ZYskDRyoBP3YPn380YTDOpOnTVP5veGVjc0EnlrK4sVyauJEiX7oISn91FOeHp6r/LGhQyVt40a5bMkSCbv2WvV+TlqaJD7+uJzbtUuKN28uZceO9bkdVkACJEACJEACJEACJEACJEACJEACJEACJEACvhKgOO4rQR5PAiRAAiRAAiRAAiTgE4H0zZslafBgiX7gASn9zDO56tK8tINLl5bK69b51JZVB5/fu1cSunaV4i1bqtzaeWkJ3brJ+V9+UU3qBWl3+3B65kxJnj5dhUFHuHqEtc8+fVqCiheXkv37S0SDBu5WpcphYwM2OBj7kp2SIgldusiFf/+VSqtXS0iFCh7Vy8IkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkYDUBiuNWE2V9JEACJEACJEACJEACHhHQxO8SbdpImVGjch2LMN2HW7RQr1f54QeRoCCP6vdHYYR7T+jUSSJuuUXKz5jhjyYc1gkeKe+/L+kbN0qJdu0kpnt3p+1nnTghp954Q4U7z/zzT8k6edK0fLHixZV3Pur0xBL795eM7783FeqR2/z0jBlqUwM2N9BIgARIgARIgARIgARIgARIgARIgARIgARIID8JUBzPT/psmwRIgARIgARIgARIQNK//lrlqDYLv4384yfGjpWMbdsk6u67JW78eBuxc7t3S+qKFXJ+3z4JioiQsOuuk+gHH5TQK6/MRTU7NVXSv/lGhfsOv/FGCb36ap9Edk0cD7/pJqkwd66tPbx+duVKuXDkiJQaMkRCKle2vQeRGsJ0aJUqEhQW5njms7Ml859/JCg09KK3dXCw52dJVpZgzMViYyVl0SI5NWlSrjogVpe4/34Jr1lT8QipWNEjJtlnzqiw6ckzZypPdlMv9uxsuZCUZO817sb4cjIzJWXePMEcX0hMlJBKlSTqzjulROvW3vHwnCCPIAESIAESIAESIAESIAESIAESIAESIAESKIQEKI4XwknlkEiABEiABEiABEigIBHQ8neHVaumBPBiMTFK2IXQnLZ2rW0oEKEhRsMgiCNkt5khNHt0x442oTd1+XI5NXmyZJ89ayuOcOJxEycqUV2znAsX5Ozq1XLuxx8lOz1deTpHNm2qQo8bTS+Ol5s6VdLWr5czH35oC3eO8mVGjrzohZ2dLWfef19OTpigqoGHNvJ9w+O7WIkStqoRfhzhzuERrvVVCdj33adCzgeXK2c+rdnZcnr2bAmvU0d5sp//9VdJevxxJcSDBTYD4P/Q6tUl6o47BBsOkHfc11zgaDP5nXdsfYJwHVG/vtqcEHLFFVIsOtquv56M7/jzz8vZNWtyjRfzjzD2EMtpJEACJEACJEACJEACJEACJEACJEACJEACJOApAYrjnhJjeRIgARIgARIgARIgAUsJZGzfLokDBjits/SwYRLdubOtjBbKG3mzYzp3Vp7J537+WXlJw0o9+aTEdOkip+fNk+SpU9Vr8NiGQKwJ7gjhjlDuMIjxx4YOVbmz9QYhu8xLL0nUXXfZva6J48ZOo3zJQYOUyK+FET85bpycWbo01/iwGaD8zJnKu/vMBx/Iyddes5VBPRgbwqDDUBdEeHjHw85+/rkElyql8oNnJSXJ4XvuEdRXbvp0SejY0S50+uUbN6oNB5pl/PijJPbpI5FNmki5KVO8nktX86Y2F9xxh8T27CnYAOHu+OCNfrRXL9UvzA8E9+y0tIsbF3btUpsLKq9da7exwetB8EASIAESIAESIAESIAESIAESIAESIAESIIEiRYDieJGabg6WBEiABEiABEiABAKPwLmdO+Vo795OOwZP4fLTpyuPYYTZ/vdSDnLk+4a3tGZZx48LcpiHXnWVSFaWTXRX3uQPPKCKQQRP27hRieqlhg1TXtqJffsqj2sI6BC34W19fu9eSRo8WB1TadUqO29lM3E85uGHJbZHDyV22/pz4oQcjo+3/R/RsKHEdOsmJ199VeBJDa/wMi+8IP+2bq3+h0XFx0vZUaMkKDJSMB4I/Gfee+9iPz79VIU/P9SkiRLPKy5bpoT9Q02bKtEY76Fv4JSdnKzGBgE+4uabbX3AuBK6dlVe+PqQ8N6cGdkpKQIvb4jfaDOsenW5kJCgWGoGpvDKd3d8KfPny5lly5QnfIXZs/8L9Z6TI+lbt0rm/v0S3aWLBIWEeNNlHkMCJEACJEACJEACJEACJEACJEACJEACJFCECVAcL8KTz6GTAAmQAAmQAAmQQCAQOP/775Lw4IOqK/AIRqhxeEOf/+MP5Q2e+uGHSuSFJ3KllSuV+Hu0Z08lxkK0NrWsLDnSqdN/ntfly0v49dfbCbcIq4481qemTJGUBQsk7NprlVishVo/+frrKhw6rPi990rZMWNsTWUePChH2re3/Q9hutLnnyuBWm96L2i8fvmGDUo814vrlT75RI6/+KLyikbY8ziEXy9WzK4eiOkQjEs+/rjE9uolh5s1U97hVXbsUGOCuK4Z+nDZ++9L+rffysmxY9UGAGwE0AxMj/boIeG1akmFBQt8PgVOz5kjyW+/rUK4axsQEEoeucYh7odefrnKKe/u+M798IMSwePGjVMbBWgkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkYBUBiuNWkWQ9JEACJEACJEACJEACXhHQe4JXXr9ehQvXW/aZM5LQubPyPC4zYoQUK11aeX+HVq2qPKfN7NyePXK0e3clqIfXrq28yfVWavBgienRQ72keW1XWrNGQsqXV69l/vGHHLnkaa4dd9mSJUpAh6EvmiANMRriPURriNd6Qyjw4yNGqJfgQV1xxQrb2xCoIVSXe+stlTMc4rEjQVjLwa2J4wnduqn85spz/OxZJXZrVuHddyX8hhtEE/CLt2ghZV95xfY+vLrBU88Pnt1H2rWTqGbNBGw8MeQvPzVxosT27y8l+/c3PRRh0t0dH5ghnHzcpElqswCNBEiABEiABEiABEiABEiABEiABEiABEiABKwiQHHcKpKshwRIgARIgARIwCmB7Oxseeihh+SKK66Q8ePHkxYJ2AjkZGbKPw0aqP/h8YzQ3EY7MWaMpC5frgTo0GrV5Pizzyrhu/K6daYkzyxZIicnTLAJthC7IZgHhYaqMOzB5crZjtO8sOEZjtziaZs2ycnRo5XoHNmokWSdOHEx5HrVqlLu7beVgA4xGKIwXovt00eOP/ecqg95ziNuvVUJ8hDNT8+cKcnTp9vagrhfon17yT59Wo7cf7/y/oYHO3KIIxd6ibZtpczIkTbPcbSNdhBqHOOF8I3Q6UlPPCHpmzZJ2ZdflqDwcDk2fLhqQ59HHd7bf998cy5OqBOh3tG/yzdtUmHLtc0E8KRHfzwxhKjHZoXizZtL2bFjTQ9F/9wdH/LJq40QupzwnvSHZYsuAX7PFN2558hJgARIgARIgARIgARIgARIgARIwF0CFMfdJcVyJEACJEACJFCECKSmpsrcuXOlS5cuUqZMGUtGfvjwYWnUqJGqa9euXVLK4B1sSSOspMAQgECbPG2a6i/yYZ+aMEEJxeWmTJHIJk0ujiMnR4UMh6iK0OcwiNPZp07ZvLEh7iIMu9E0URpCOPKSOzO0nbJkSa4iJdq0kdIjRqj2Erp3l6zERCU0lxk9WpKnTlWCeXSnTlJ6+HAVVhzhxTWL7dtXSg4YICfHjZMzS5cqER3e0DDUgbHCVDj2Tz9V72l51xEuPvTqq+X8b7+pNrVyFebNk9BrrlH/n3ztNTnzwQcXQ70HB6vNAipM+vz5/+XoFpHEfv0kY8cOqbh8uYReeeXF7mVlyd+X8rSXffVVKRYdLacmT1Z9KDt6tBRv2dKj8+jCoUPyb9u2zj35dXnlXY3vcIsWatyxPXtKyYEDPeoLCxccAvv375fNmzdL9+7dJcSi/PH8nik488+ekgAJkAAJkAAJkAAJkAAJkAAJkEB+EaA4nl/k2S4JkAAJkAAJBDCBd999V0aOHCnDhg2TgRaJU998840S22HfffedlL8UvtofGDIzM+X999+X66+/XurVq+ePJlinjwTS1q2TY08/nasWCMfB2JARHCwQXeG9rVmpJ56QmO7dbV7OEJYRhj0oLCxXPef37pWErl3V6yUfe0x5nMNDWm85GRly4ehRJa6fHD9eifAw1Ivw5dEdO9o8uNGXo/36KdEW4dEj77xT5UJHmPTgsmUFXtpnPvpI5fiGGcXx8tOmqRzqKYsW2UT2yDvuUP2CJzgM3uMp8+apfOSaoS14kxdv00aJ6ppp3toVP/hAidKn58+XqKZNbeK5Vi5j+3ZJHDBAVLlLwjreS3rsMZXXW2/YpFAeXu6GfOfuTDXCpmcdO+Y4B7wH40saPFjSN2+WUkOGSEy3bu40zzIFkMAjjzwia9askQ8//FDq169vyQjy8nvG2OGcnBzJysqyTOi3BAgrIQESIAESIAESIAESIAESIAESIAESyEWA4jhPChIgARIgARIggVwEXnjhBVmwYIH07dtXRlzKl+wrpoULF9rq+vLLL6VGjRq+Vml6PMLqQnT54osvZPDgwTJ06FC/tMNKfSMAj/CkRx+VzL//dllRVHy8xDz4oITXqWMrC/EUonjEpXDsZpVooc/xHo5F7m0I2ReOHBGIxqgDBs9veIAj1HnO+fMSHBdn3qesLCXMh9WoIUEREaqsUZjHuDL375eI226ToJAQm+d4+VmzJAIbNbKzlde4ErodiNDYEJCTlqY8utGOI8tOTpZiJUu65AdPcWw20BsE+MRevdTmA3icl7jvPineqpUKO++NgQU2GxSLiXF5uKvxYVzIO168bVu1UYFWOAnceeed8ueff8rs2bMlPj7ekkHm1feM1tkTJ07IrFmz5OOPP5aEhAT1crVq1aRfv37ywAMPWDImVkICJEACJEACJEACJEACJEACJEACJGAtAYrj1vJkbSRAAiRAAiRQYAhgIf/xxx+Xrl27Srt27ez6jYV9iMsQyO+44w5LxjR69GglgsA+//xzue666yyp11jJ1KlTZcKECepliuN+QWxppRBKIYbmpKdLdnq6+h0UGSnBsbFSDD/R0V55MqtO5uRIysKFcuqNNxz2GXmySz7xhMoj7g/TwqpXmDPHTtz3R1ue1olc70qEj4319FCWJwG3CMCTe/LkyTJq1CipVauW3TFVqlRR///0008Sa9E5mFffM+g3wsJ369bNJoobgTz99NPy2GOPucWJhUiABEiABEiABEiABEiABEiABEiABPKOAMXxvGPNlkiABEiABEggoAgglC3CphcvXlz27t1r17cmTZrIP//8Y6lo0aNHD9m4caNqZ/v27VKhQgXLeWzbtk06depkq5fiuOWIC2SFWadOSdq6dZL5119KDEYY89Bq1ZQntzuezr4MOvmtt+T03LlSbvJkibz9dl+q4rEkUOAIPPnkk7Js2TJp2bKlvPPOO7b+JyYmqlDq2CSFzVJWWV58z2h97dixo0oRAhszZow0atRIzp07J6+99prtu2737t1S0p3oDlYBYD0kQAIkQAIkQAIkQAIkQAIkQAIkQAIuCVAcd4mIBUiABEiABEigcBLQ8opjdD/++KOUQZ5nETl+/LjK043/8bpV1qZNG4FQADtw4IBf8rL27NlTvvrqK1uXKY5bNXusx1sCZz74QE6+9pqUfu45ie7QwdtqeBwJFEgCjz76qHz22Wcq1Pi6detsY4Ag3r9/f+nQoYNMnDjRsrHlxfeM1llNHO/du7cgFYlmaWlptsgo/oySYhk0VkQCJEACJEACJEACJEACJEACJEACRYwAxfEiNuEcLgmQAAmQAAloBJ555hl577331L8rV66U2rVrq78hYGCx30y0QD7vgwcPSmhoqFx22WUeCdz33HOP7Nu3T7WD9ox24cIF2bRpkxw+fFgJCzfddJNqxxPLysqS1NRUmT9/vkyaNIlh1T2Bx7J+IZC+ZYskDRwoEQ0bSnmd56xfGmOlJBBgBBo2bGgLO/7XX39JsWLFVA/haY1c3UiBAZFZb4H+PaP1Fd+FEP5bt24tV1xxhW0Ihw4dksaNG6v/169fL9dcc02AzQq7QwIkQAIkQAIkQAIkQAIkQAIkQAJFmwDF8aI9/xw9CZAACZBAESUAEfmWW26REydOKALTpk2Te++9V/2N3LDz5s2TN954w5aLHCHWkTcWecjPnj2rysGz/MEHH5Tu3bvbhUjPyclRgsD333+vQra3b99eKleuLFqo9meffVYeeeQRO/IITfvcc8+pHK6aQXxfunSpaHlpPZkqTXgZOnSoEshpJJBfBHIyMuSf225TzVdauVJCKlfOr66wXRLIUwJ//vmn3HnnnbY28Z1Qrlw59T9ex/tbtmxR3w+wgvY94wjm7NmzBbnP8f2HfOohISF5yp2NkQAJkAAJkAAJkAAJkAAJkAAJkAAJOCdAcZxnCAmQAAmQAAkUQQIQo/XeeiNGjJC+ffsKvLdvvPFGJYBv3bpVKlasKPrw60CFBX+8rgnZEMkXLFggtWrVUvlWEUZXHz4X5Xfs2KE86SDG673UUR/agciu1d2sWTN1PPoAYR2ivKcGAX7JkiXy/PPPS79+/Tw9nOVJwFICx0eMkLOrV0v52bMlom5dS+tmZSQQqASmTp2qPMM1++STT1REEEQQQSQRbIDatm2bersgfs+YccfmsFatWsmePXty5VkP1Hliv0iABEiABEiABEiABEiABEiABEigqBGgOF7UZpzjJQESIAESIAERlR8VgrZmEKTnzJmjwpp369ZNhTVHrlSY5vGNv7HoP378eImKipKkpCR55513lJc5DB6ACxculOnTp6v/4R1eokQJlV8cgsiLL76oXl+2bJnyWodBLEf9mhA+btw4CQsLk7lz58pLL72UK0+tu5M3aNAggRDzyiuvSNeuXd09jOVIwC8EslNSJH3rVikeHy9yKay0XxpipSQQQAQ073CtSyNHjpQ+ffqo75C33npLbcjCxqyC+j1jhnr16tUyYMAA9dby5culXr16ATQj7AoJkAAJkAAJkAAJkAAJkAAJkAAJkAAIUBzneUACJEACJEACRYyA3jt88eLF0qVLF0UA4V+feOIJ+eqrr5Qw/fDDD6vX77//fuX5/b///U9mzJhhyxmrYYN39qJFi2TIkCE2L++ZM2dK8+bNVRG0Fx8fr0LowgYOHCjDhg1Tf+tFeniY161bV+UZRx9gEFIgqHhqEF2+/PJL03y2ntbF8iRAAiRAAp4R+OWXX1SqjmrVqkmPHj2UCF67dm1577331IYobIyCkFyzZs0C+z1z+vRp+eijj+SHH36Q1NRUNQ6EjsdmrxtuuEFt0GJIdc/OG5YmARIgARIgARIgARIgARIgARIggbwgQHE8LyizDRIgARIgARIIIALbt2+XBx54QOrXry8ffvihLfcrhIvdu3ernmKxv2zZsnaiBbzEW7ZsmWskmpc2PLQhkletWlU2bNigymVnZyvvbeRg1eyKK66Qr7/+Wr139dVXq5c7deqk8ovrDWHf4W0eHR3tMT30ZfPmzXZ50z2uhAeQAAmQAAl4RUALqT506FCVNgPfNzDtewaiuT79hrYJq6B8zyQnJ6txIUS8I0PKkWeeeUalMAkKCvKKIw8iARIgARIgARIgARIgARIgARIgARKwngDFceuZskYSIAESIAESCGgCCHs+duxYefnll5VH35tvvikTJ0609Rke4rNmzbL9/9hjj8mnn36qBHWEPS92KSz08ePHleg9bdo0gQiAOpHfGx5zKJ+RkSFPPvmkfPbZZ6ouhJh99dVXlRc6hHCEXIfYfvPNNyvvu8TERJV/Fl53derUUaHdvTVNaEHo3tatW3tbDY8jARIgARLwgkD37t3VJijNOxwboLT84qhOH50E/xe07xl9jnRsAECOcUQrMTOkI0Hu9cjISC9I8hASIAESIAESIAESIAESIAESIAESIAGrCVAct5oo6yMBEiABEiCBACfQu3dv5bGHnON33HGHIDTsrbfeqkRpmD4nOP7/7rvvlOcbDF7f1atXF4TMTUhIUK8hHPqKFSukcuXKcv3116vXIJbDEDoXBgG+bdu2smbNGpWLvF27dspbHJ53MNQHsdwq03Ld6sO7W1U36yEBEiABEnBMIDMzU3mI4ztl79696jtC/z2C7wd8B5UuXdpWSUH7nsF3HtKQGO22225TEVSOHj2qfsMTHoa0I2bleR6RAAmQAAmQAAmQAAmQAAmQAAmQAAnkPQGK43nPnC2SAAmQAAmQQL4SQF5vY77XrVu3Kq9weId37tw5V/+QOxUe4voQsgifjvL40cRweIpDXNcMYjrqhWCgGcR5CAcffPCBLfdss2bN5O2335aIiAi7tpGvHCJ8VFSUrQ134GniODzUGzZs6M4hLJMPBC4kJEhwXJwEhYTkQ+tsUhHIzha5FA2CREjACgIHDx6U22+/XVWFv7WQ4vPnz1cRROA1juggRitI3zP4bpoyZYosXrzYtgkMUVcmT55st9Fr586d0qVLF2natKkgaguNBEiABEiABEiABEiABEiABEiABEgg/wlQHM//OWAPSIAESIAESCBPCSC862+//abE7hAPRUl4AqampkpMTIxpiNicnByVrzwpKUni4uKUAGJsA6LCqVOn1PtffPGFCsUOu+yyy6Rnz55y5ZVXqve///575WmONps3by7wAnfXcCxC+A4YMMDjMbrbBsv5TiChc2eJaNBASg0e7HtlrMFjAumbNknSE09IzMMPS6lBgzw+ngeQgBkBeI5jE9Qtt9wiAwcO9BhSQfme0QaG/OPY2GXc3KW9j81gYWFhdp7yHkPhASRAAiRAAiRAAiRAAiRAAiRAAiRAApYRoDhuGUpWRAIkQAIkQAIk4A2BTZs2qXCzWgh2Yx0Iz+vI09Cb9nhM4BCAOJ6Tni4VV6wInE4VoZ4kT50qp+fNUyMuM2KElGjfvgiNnkMtSgT4PVOUZptjJQESIAESIAESIAESIAESIAESIAHnBCiO8wwhARIgARIgARLIdwLnzp1TXuTIT3vs2DHlVV6tWjVp0KCBymVOK5wEjvbqJed27ZIrtm2ToLCwwjnIfBhVdnKypG3YIFF33SXFYmNNe5B99qwEiciZjz+Ws59/LiFxcRI3aVI+9JZNkkDeEOD3TN5wZiskQAIkQAIkQAIkQAIkQAIkQAIkEOgEKI4H+gyxfyRAAiRAAiRAAiRQSAkkDRwo6Vu2SKXVqyWkQoUCP8qcjAzJycqSYsWLezWWc7t3S+qKFXJ+3z4JioiQsOuuk+gHH5TQK6/MVV92aqqkf/ON5KReZLKQAAAgAElEQVSlSfiNN0ro1VeLBEHuFjkxapSkrlypji399NO5jr3w77/yb+vWEhUfL3HjxjntK8pm7NghQaGhElGvngSXL29fPifH1q6zijCm5LfekuiuXSXy1lu94sODSIAESIAESIAESIAESIAESIAESIAESIAESMBXAhTHfSXI40mABEiABEiABEiABLwicOyppyRt/Xq5bOlSCatW7WIdWVkCr+ZiMTG2OiEAnxg7VoJLlpRSTzwhEhxs1152SorkZGZKcJkypv3IOX/ezjM9fetWJfQavdVzLlyQs6tXy7kff5Ts9HQJLl1aIps2NRVzs44dkzMffigl2rSRkMqVlRgNURpW4d13JfyGGzxiAvE4oUsX02NKP/OMRHfsaBOhU5cvl1OTJytOmkFwjps4UYnqx4YOlbSNGyXs2mvlsiVLctWpiefOxHEwQ9j1lMWL7Y6P7ddPSj7yiHoN409+802J6dFDYvv0cTjeC4cOCULoo7/oY9Sdd3rEhoVJgARIgARIgARIgARIgARIgARIgARIgARIwCoCFMetIsl6SIAESIAESIAESIAEPCJw/Pnn5eyaNTYx+fz+/ZI0aJBkJSZKTNeuUmroUFVf+ubNkjR4sPq78vr1ElyqlF07ENkztm2TyzduFIi6KQsXKq9piOiJjzwi53/5RcpPmyYRDRoo7+XTc+dKSKVKKtd5UEiIqgue2BCV4SWtN3iBl3npJRWiXG9nv/xSjj/zjMR066bEXoSI1yysZk25bOFCj1gk9u8vGd9/rzyzYzp3Vp70537+WVIWLVL1lHrySYnp0kXlCIdoDQutUkVCq1eXtLVr1f9lRo1SYn3Gd9+pccOqYDzFitn6cuHwYfm3TRv1/2Xvvy85587J+d9+k+gOHWxlsNEATNM3bVKvRdxyi0hOjo1NpY8/lpArrlDe5/AsdzZebDhI7N1bjQUbDcohdLuuPx5BYmESIAESIAESIAESIAESIAESIAESIAESIAES8JEAxXEfAfJwEiABEiABEiABEiAB7wicePllSf34Yyk/e7YgJHnS44/bVVR+5kyJuPlmSVmwQE5NmaKE48pr1tiVgbj7z6Uw3ZVWrZKs48flaM+eUnr4cIEwe2riRFW+ZP/+6ni0qVm5qVMlslEj5dGc2LevnP/1VyU4lxw0SIUqP793r02UR90Q1DVDOHiEhYfH+4UjR1Qd8NRGHbArtm6VoPBwt8BcSEyUf1u0UGXLz5hxUYy+ZBgP8oeHXnWV8qpPHDBAvaO8yR94QP2teYpDVC81bJh6LaFTJ8Fmg0qffCIhl19uqw+bDLDZIPqhh6T0U0/J8WeflbNffCGV161TnvKw5GnT5PSsWSo8PBiF33ST5KSnKzE86+RJm/f3kQ4dJPPPPy+K3m+8oRhknzxp1x483LFZAezgxV4sOtotJixEAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAv4gQHHcH1RZJwmQAAmQAAmQAAmQgEsCJ19/Xc68/77y8sZvmBKr09Lk3M6d6m+Is5q3d/GWLaXs6NF29Wqe1BBfIWAjbzfEcYjWEIc1g8B7btcu9S9EXwi5JR97TGJ791bCOwR4iNsV5s5VoclhWv/wd/F775WyY8bY6jv72WdyfORIu/rLT5+uXoMn92WLF6uc4e6Y1mdtDKbHZGXJkU6dlBgNg9Affv31ciEhwSbI60OWJ8+YIadnzJAyL7wgJe67Tx2jhX6HCF5x+XIVul4Lsa6Fgr9w9Kj8e++9ti5gswC4wKsdwjis8uefS3C5cspbHkzhsR5x000qLDy4apsaILpDfIdV/OijiwI/jQRIgARIgARIgARIgARIgARIgARIgARIgATykQDF8XyEz6ZJgARIgARIgARIoCgTODl2rMpbrVls//5SEh7cv/+uclTDqnz/vZyeP1+S337bJpZr5eGlrZULr1NHKsyZYxPHHXFFzuzwmjWVR3iJ9u2lzIgRtvDgldaskZDy5dWhmX/8IUcueWZrdcHzGUIxTPNmx9/KK3rRIikWG6s84eGdXmbkSCnRrp1b04v84PD+Dq1aVSouW2Z6zLk9e+Ro9+7Kuzu8dm3lTa63UoMHq9zfmmmCO+pE+HSwwvEwbADAZgEYQrRjgwE4gAe8vOHtDY99iOGaGI+yEOTLPPecRDZpoo7VxHEI66kffiipq1ap19EPHA/PeljcpEkSdccdbrFgIRIgARIgARIgARIgARIgARIgARIgARIgARLwJwGK4/6ky7pJgARIgARIgARIgAQcEtByjqNAVHy8xI0bd7FsTo4cjo9X4iwEaS3sOd6CCBzVvLmc27FDjr/wgl3dl2/erERteI7DICQj9Hjy9Onq/+ItWkjZV16RzIMH5Uj79qIJ6oebNVNtwTMcucXTNm2Sk6NHq3bhvZ514sTFkOtVq0q5t99WAvrJcePkzNKlql54YYdeeaX6+/y+fcqDGrm/4VHtjmke1ugvwpub2ZklS+TkhAmiNhD076/GCcE8KDRUhWGHJ7edZWdLwkMPKe95CPoXDh266C0/YIDE9u1rK5qyZImcmjDB1l8tRDu84CFwZ+zcKZkHDkhwmTKKheZVjwoS+/VTeciRc90o1msNlBoyROVlp5EACZAACZAACZAACZAACZAACZAACZAACZBAIBCgOB4Is8A+kAAJkAAJkAAJkEARJACvb4jO8Eiu+MEHdvmotVDqpYcNk+jOnW3hv42Yojt2lLT16y+K26NHS0jlyjZxvNyUKZJ17JicGDNGCdsVFixQIdVhh1u0kKzERKmyY4ecmjRJIBIbDQJ36REjJPvUKUno3l2Vh4BdZvRoSd+wQc4sWyaxvXpJSV2udC0HuhK6v/xSpFgxlzN7dvVqOT5ihCp3+aZNUqxEiVzHnJ45U4n8EMKRl9wdy/jxR0ns08dWFCJ23Pjxdn1CCPhjw4fbvOiP9u6tQtprIeedtXPipZck9ZNPbEXCa9WScz//bPs/ukMHKf3cc+50lWVIgARIgARIgARIgARIgARIgARIgARIgARIIE8IUBzPE8xshARIgARIgARIgARIwEhAC6sOsReir96yT5+Wf1u1kuKtWknp4cOVNznE6NQVK5SgDqEX4nXk7bcLRGB4eiOcd2TjxnL4f/8TLT85vKXPLF4sJTp0UMK2ZhCk0T5CqaNuCOgQimEQ0CF4Q3jXxG14Xh/t108J5MjDDaEd4d5je/a0E/VxPPJ9I8x45S++EAkOdjnxWsh0tFt5/XoJCgvLdcz5vXsloWtX9boSrnv1EgkKsiuXk5EhyBkeUqGCzcMbecaTp02T4s2aScnBgyUoJMTuGGweONy8uZR+9lk1Xs2THIXM5gWvZ6ekqM0IWcePK+9x1aeBAyX24YdV+PvUzz6TEq1bC0LYG9tzCYMFSIAESIAESIAESIAESIAESIAESIAESIAESMCPBCiO+xEuqyYBEiABEiABEiABEnBOICspKXdI8EuHnNu1S4LCwyXsuus8w5iVdVHUNojHuSpBOZ14DUE+5/x5CY6LM28vK0uFMg+rUcMuvHiuwjk5SnB3x2tcOzZ982Ylikc0aOBwrKcmTpSUxYvV+wgJjzDxwWXLyoUjRyRj+3ZBHTBsJoju1MltZthAAM4QsnMuXFCe9+d/+UUdD5E7on599T7yj6dt3mx7DyHvBQxDQyWsenW322NBEiABEiABEiABEiABEiABEiABEiABEiABEsgvAhTH84s82yUBEiABEiABEiABEiABTwjk5EjKwoVy6o03HB5VvHlzKfnEEyovureWk54uJ159Vc5+9pnDKuAVDk9xfQ5yb9vjcSRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiSQVwQojucVabZDAiRAAiRAAiRAAiRAAhYQyDp1StLWrZPMv/6SnLQ0CalYUUKrVZOIevWkWEyMBS1crAL1p3/9tWQePixBxYpJSKVKElazpoTfeKNp6HfLGmZFJEACJEACJEACJEACJEACJEACJEACJEACJOAnAhTH/QSW1ZIACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACQQOAYrjgTMX7AkJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkICfCFAc9xNYVksCJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJBA4BCiOB85csCckQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAJ+IkBx3E9gWS0JkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkEDgEKA4HjhzwZ6QAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAn4iQDFcT+BZbUkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAKBQ4DieODMBXtCAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiTgJwIUx/0EltWSAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAkEDgGK44EzF+wJCZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZCAnwhQHPcTWFZLAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiQQOAQojgfOXLAnJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACfiJAcdxPYFktCZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZBA4BCgOB44c8GekAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJ+IkAxXE/gWW1JEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACgUOA4njgzAV7QgIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIk4CcCFMf9BJbVkgAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJBA4BiuOBMxfsCQmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQgJ8IUBz3E1hWSwIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkEDgEKI4HzlywJyRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAn4iQHHcT2BZLQmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQOAQoDgeOHPBnpAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACfiJAMVxP4FltSRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAoFDgOJ44MwFe0ICJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJOAnAhTH/QSW1ZIACZAACZBAUSWwb98+OXDggCQlJUliYqIcO3ZM/URHR8utt94qN910k9SoUUPCwsKKKiKOmwRIgARIwGICycnJcvDgQQkPD5e4uDgpW7asxS2wOhIgARIgARIgARIgARIgARIgARIggcJAgOJ4YZhFjoEESIAESIAEAohAlSpVXPYmJDhYateqJXfffbd0fPBBKVeunMtjWIAESIAESIAENAKbN2+WHT/tk/VrVsrPP/8soaGhkpmZaQcIAjmE8qpVq0rv3r2lXr16BEgCJEACJEACJEACJEACJEACJEACJFDECVAcL+InAIdPAiRAAiRAAlYQ+O6772TNmjXqJyEhweMq4++6S+6Kj5fOnTt7fCwPIAESIAESKBoEUlJSZOfOnbJ77+8y8bUxHg8aXuXNmjVTP+3bt/f4eB5AAiRAAiRAAiRAAiRAAiRAAiRAAiRQ8AlQHC/4c8gRkAAJkAAJkEC+EVi/fr0sWbJE1q1bZ9eHapUrS8tbb5Vba9Y07dvBo0dlw86dsnHnTsk4f95WplbNmtK5a1eK5Pk2o2yYBEiABAKPwOTJk+Xbb78VbMTy1MpWrirX1G0sR//4WQ7u3Wk7HAL5oEGDpHbt2p5WyfIkQAIkQAIkQAIkQAIkQAIkQAIkQAIFmADF8QI8eew6CZAACZAACeQXAUei+F1168p9TZpI28aN3epacmqqrP3+e1m5ZYts2r3bdkytG26Qzl26UCR3iyILkQAJkEDhJLBnzx4ZP368bNy40W6Al9e4SZp07CeXVb1OSparJCFh4W4BOPz7T7L7q4/l542fyOmTxyUiIkIJ5I899phbx7MQCZAACZAACZAACZAACZAACZAACZBAwSdAcbzgzyFHQAIkQAIkQAJ5RuDAgQMydepUWbFihV2bjWrVkm7Nm0uLBg287st3+/bJ0q++kmU6EQSefRBGSpcu7XW9PJAE/Eng/L59cuyppySsZk2JGzfOn03Z1Z22caOcmjBBIhs3loh69SQqPj7P2mZDJJAXBBYuXCivvz5eUlJO25qrWruh3Ny8k9Rp5ltI9FNHD8mX8yfIrq8+VnXfdttt8vLLL0u1atXyYmhsgwRIgARIgARIgARIgARIgARIgARIIB8JUBzPR/hsmgRIgARIgAQKEoF58+YpYfzEiRO2btepVk2633OPtG/a1LKhvLdunUxculSOJSerOuvUqSMTJkyQa665xrI2WBEJWEUA4nhCly6quuL33itlx3ieB9nTvmTs2CFJgwdLTnq6BJcqJVmnTkmlTz+VkIoVPa2K5UkgIAkMHTpUPvroI1vfatS/U25u/oDc0OReS/u7bdVCWTt/gqSdSVbC+LvvvisV+TmylDErIwESIAESIAESIAESIAESIAESIIFAI+B3cfzChQuSkpIiJUqUkLCwML+P/9y5c3LmzBnVHsLk0UiABEiABEiABHwnMHv2bBk9erStooply8ojbdtKj3vu8b1ykxr2Hz6sBPI127apdy+//HKZNGmS1K9f3y/tsVIS8IVA6vLlcuKSKF6ibVsp8+KLvlTn9NjMgwclsX9/yTp2zFYuomFDKf/OO35rkxWTQF4S6N6jh3x9KYLIFdfVlcb395FaTVv6rQsJB/bK4jED5MS/B6VBgwYCj/XwcPfCtPutU6yYBEiABEiABEiABEiABEiABEiABEjAbwQsF8dTU1Nl3bp18tlnn8kPP/xg8y7r27evjBgxwm8D0Speu3at9OnTR/1bvHhxqV69urRs2VLuuecetbBOIwESIAESIAES8IwAvPfgxacZBHEI4xDI/W2vL1kib18K4R4VFSWTJ09W3+k0Egg0AnqBPLpDByn93HOWdzHnwgVJeOABgUCuWXCZMlJ57VrL22KFJJDXBM6fPy/3tGgpB/74XUqWqyi3dxogDVt3z5NuIBf5whf7SMqJRLnn3lYyY9rbedIuGyEBEiABEiABEiABEiABEiABEiABEsh7ApaK4xDER44caRduVRvSsGHDZODAgX4f4e7du6VNmzam7aD9xx57TCIjI/3ej/xu4PTp07J69WqJi4uTO+64Q0JCQvK7S4W6/fT0dEm+FP4XAwV3MndvyhFZ4uzZs7bCpUqVKrJRH7ChaNeuXUr4q1SpknsAWYoE/Ezgq6++kt69e0t2drZUq1xZXuzZU5rceKOfW7Wvftg778iHGzaoFytXrixLly5Vv2kkEGgEzn76qRx/4QXVreiHHpLSTz1laRePdu8u5/bssdUZFBkpV2zZYmkbrIwE8oPA/v375dFHH5Xff/9dYuMuk+4vz5GKV9fM0678+dM2WfhiX8k4myJde/SUV14elaftszESIIGiR+DYsWOCaIswRD7EszCNBEjAOgJZWVmSlJRkqzAmJkY5UtFcE0Bk1pMnT9oKghv4FUXjWp3zWS8Ma+JYmz548KD6geNnmTJlbD9XXXVVUTztOWYnBBITE9UaKSwoKEgqVKhAXgWUgCXieE5OjowaNUrmz5/vEANyhXbs2NHvmHByOgu5et1116lF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AAIIIIAAAggggAACCCCAAAIIIBCjAOF4jFBshgACCCCAAALJIbB37177448/rGTJkpk2uH///jZjxozwdvPnz7datWplul8ybvDhhx9ax44dw03v3r27DRgwIBlPJVtt7tOnj7366qvhOp566im7/PLLs1UnOyOAAAIIIIAAAggggAACCCCAAAIIIIBAcggQjidHP9FKBBBAAAEEEEhHQKHvypUrbe3atbZ69WrbsmWLs2WpUqWsTp06VrNmTatXr541b97c8uXLF1HLHXfcYW+88Ub4a4TjqX2Z6dpo1KhRxEnqGpkzZ06unbhmLtizZ49zfF2fFSpUyLW2cGAEEEAAAQQQQAABBBBAAAEEEEAAAQRSXYBwPNV7mPNDAAEEEEAgRQUUKA4ePDhiFHBGp9qgQQN7+umnrWzZsuHNCMfz1sjxr7/+2i688MKIy6RcuXK2ePHiXPspefjhh+3ZZ58NH3/69OnWuHHjXGsPB0YAAQQQQAABBBBAAAEEEEAAAQQQQCCVBQjHU7l3OTcEEEAAAQRSVGDZsmXWq1ev8CjxWE/ztNNOc8L0QoUKObsQjuetcFx9fs0115iun1C577777NZbb431Ekr4dt5wfMqUKXbeeecl/DhUiAACCCCAAAIIIIAAAggggAACCCCAAAJmhONcBQgggAACCCCQVALff/+9NW3aNE2bNQL4nHPOsdNPP93y589vS5cutYULF9q+ffvC25511ln2r3/9ywoXLux8jXA874XjO3bssFdeecWZhr9ly5bOSPICBQrk2s8A4Xiu0XNgBBBAAAEEEEAAAQQQQAABBBBAAIE8KEA4ngc7nVNGAAEEEEAgmQV69+5tr732WsQpdOnSxQYMGGBHHnlkxNe3bdtmN954o61Zs8Y0rfqLL75oxYoVC29DOJ73wvGgXfuE40HrEdqDAAIIIIAAAggggAACCCCAAAIIIJDKAoTjqdy7nBsCCCCAAAIpJvDFF1/YpZdeGnFWjz/+uDNVdnpl7969NnHiRLvlllsignFtn1E4rhHnv/76qxO4a1T6EUcckWXNv/76yzZv3uxM53788cdbvnz5slxXaEe176effnLO6bjjjkvzYID3AB9++KF17Ngx/OXu3bs7DxT4Uf7888+wXcmSJZ2R/FktBw8eNI32LlKkiB199NFZrca3/f7++2/TQxi7du2yE044Ic01ltmBCcczE+L7CCCAAAIIIIAAAggggAACCCCAAAIIJE6AcDxxltSEAAIIIIAAAj4L3HDDDfbRRx+Fj9KsWTObOnVqlo8aLRzfuXOnPfLII/b5559H1Kup3AcNGmSnnHJKTMfbvn27Pfnkk7ZixYqIuhRm16hRw6644grT+cQauitw1sj3jz/+2PSQgAJZd6lWrZq1adPG2rZta6VKlUrTxnjC8UOHDjlTjiuYDpX//Oc/dswxx4T/r3Zove5Q0XT1mp780UcfddZ1d5dGjRrZJZdc4oTzsTwYoNB/7Nixjt0333wTrkoPKWjafM0GoCn0Myp6eOCiiy7KtK969uxpHTp0yHA7Wbdv3z7sce+99zrrgj/xxBM2YcKEiH3VRvWr1jGPNl27vrdp06bwPqrbPfW/+s49u4G3YU8//bTVqVMn0/NiAwQQQAABBBBAAAEEEEAAAQQQQAABBBBIK0A4zlWBAAIIIIAAAkkhoHC4atWqEW2dM2dOtoJCbzg+YsQIGzhwYIYeTz31lF1++eUZbvPJJ5/Y7bffnibA9u7UuHFje+yxx6x8+fIZ1rdy5Uq7++67I4Li9HZQuKo2NmnSJGKTeMLxjRs3mh48CBWFtevWrYuo7+WXX7Z77rkn/LVp06bZsGHDMmzj1VdfbQ899FB4zfdo56B14jV1vjswjradQu277ror3fXC9+zZY6eddlqm1/b999/vzCqQUfnf//5n559/fngThePqkwULFqS725lnnmnTp093Rry7S6VKlTJtU0YbzJ492+rXr5+tOtgZAQQQQAABBBBAAAEEEEAAAQQQQACBvCpAOJ5Xe57zRgABBBBAIMkEvIHtWWedZa+88kq2zsIbjlepUsU2bNiQYZ0Kij/99NN0p/hetGiRderUKeZ2acT3W2+9lW7Iq7C4W7duMdcX2vDdd9+NeJggnnD8zTffdEY+h0q0EfrecLx169am/TIrmhb/mWeeibqZ97iZ1dWuXTtnpHq04mc4rqD8vffey6x51q9fP+chCXchHM+UjQ0QQAABBBBAAAEEEEAAAQQQQAABBBDwTYBw3DdaKkYAAQQQQACBRApoNPZ1110XrlLTXI8aNSpbh/CG46HKevXqZQ0bNnRG/SoEHTduXMRxNGL5zjvvTHNsrS2uqbzdU4FrI9Wn4F1l8eLFNnPmzIh9NXpc06F7i0ZPazp37xTqmqZco87LlCnjjGB+55130myjaczd7Y4nHNfI7ddeey3cHDn17ds3onnecDz0TbXt2muvtdKlSzvrjk+ZMsVpo7t4g3t9T3bNmze377//PmJbTUNes2ZN+/HHH03H9Fro4YFoU90fPnzY5s+fb1pz3l2WLVsW4Z+VkeOh+jRK//rrr7eKFSs656rQ3zvife3atVa8ePFwEzQ9vdYpDxU564GKUNGDEOmNeNcU/Lq+jjzyyGxd9+yMAAIIIIAAAggggAACCCCAAAIIIIBAXhUgHM+rPc95I4AAAgggkGQC3jBW04wrdM5OiRaOz5gxwxTwusuzzz5rDz/8cPhLWo974sSJaQ6tkewKzkNFgbimG69QoULEtgrcu3TpEv6aQtalS5da/vz5I7ZT+O8dZR0tSFfYqqm+Q6G72q+p1RWeh0qs4fiuXbucdb3dZe7cuVa7du2Ir0ULx2+++WZT2OxeR/3AgQPWtWtX++9//xveP9qIb7n3798/4hiyO/fcc8Nf27Jli/OAhHt0f6tWrey5556L+TJQGK3wP1SyGo5r2vQXXnjBjj322HBdP//8szP9ujsgnzdvXobTu+u60vUVKnqYQOuZUxBAAAEEEEAAAQQQQAABBBBAAAEEEEAg8QKE44k3pUYEEEAAAQQQ8EHAGxQ/8cQTduWVV2brSN5wXFODjx8/Pk2dO3bssDPOOCP8dYXe77//fprtbrzxRvvggw/CX581a5Y1aNAgahsV7rtHkGuq9hNOOCFiW42Ydget6Y1Y104KyIcPH+5M966pvAsUKBBRV6zhuMLil156KbyvRkVr33z58kXU5w3HNd38kiVLIkZJh3ZYs2aNaSS7u3z33XcRIbpGm7sDdAXtgwYNSmMXbdr69evXW9GiRWO6FhIVjr/66qtWr169NMfUuuuTJk0Kf13B98UXX5xu2wjHY+o2NkIAAQQQQAABBBBAAAEEEEAAAQQQQCAhAoTjCWGkEgQQQAABBBDwW+Chhx6KCK7Tm4o8nnZ4w/GM6vQG1Zs2bUpzKI3Y1uhmFU2NrVHD6RUFwQqEQ2X27NlWv3798P81fXjdunXD/1f4rNHl+jsrJbNw/NChQ84odRm4i9b01khvb/GG41dddZWNHTs23aZpOnCF2KGyfPlyO+6448L/d9vpi2+//bZVr149TX16CKBJkyZhZ20QbZr29BqSiHBcI/1XrFgR9RBTp06NCPX1wIIemkivEI5n5WpmHwQQQAABBBBAAAEEEEAAAQQQQAABBLImQDieNTf2QgABBBBAAIEcFvCGjhmNoo61ad5w/N///rcTvEYrmYXjf/75p1WtWjW8q6bdjjbyObTBDz/8ELFu+ZgxY+zqq68O76/w2P1/jUDXSPSsFm84rjXbtZ63RnWvWrXKNHLdu953jRo1nIDfO9272uANx6OtS+5uq6ZM19TpoeKebvyPP/6watWqRZyapk6PdlxtdMstt9iCBQvC28czFXkiwvGzzjrLNIV+tOKdHl4jyTt16pRutxGOZ/WKZj8EEEAAAQQQQAABBBBAAAEEEEAAAQTiFyAcj9+MPRBAAAEEEEAgFwS863S3bds2zSjneJvlDcfnz59vtWrVilpNZuH4xo0brVmzZvE2Ibz9wIEDrVu3buH/a9ruPn36hP8fbZ3ueA7mDccz21ejoxUAn3TSSVE39YbjmYXAjz/+uGkq/FB5/vnn7cILL3T+q1H47rXFy5UrZ4sXL063iUOGDLEXX3wx/P0HH3zQrr/++sxOyfl+IsLxjNY5JxyPqRvYCAEEEEAAAQQQQAABBBBAAAEEEEAAgVwRIBzPFXYOigACCCCAAALxCnz11VfWsmXL8G4Zjd6Nte4gheMjRoywjh07hpuuUeL9+vUL///yyy+3p556KtZTS7NdvOF4ZtOBxxuOa8p2rRsfKjoXnZOK1h8/77zzwhRx1GwAACAASURBVN/LLBz3ruudWVvdGITjWb6E2BEBBBBAAAEEEEAAAQQQQAABBBBAAIGkFyAcT/ou5AQQQAABBBDIGwJ79+5NM6r7rbfeMk39ndWSyHD8r7/+spNPPjmiKXXq1Im5aWpLixYtwtsvW7bMrrnmmvD/M1vDPLMDxRuOV6xY0Vn3u3DhwlGrjjcc9wbaM2fOtIYNGzp1HzhwwE499dSI42gkfr58+aIeu0ePHhHruU+ePNkuuOCCzAic7xOOx8TERggggAACCCCAAAIIIIAAAggggAACCKSkAOF4SnYrJ4UAAggggEBqCjRq1Mi2bNkSPjmNJJ84cWKWTzaR4bgaoXD7m2++Cbdn/fr1VrRo0Sy179dff7X69etH7Kt1yI877rgs1ecNx88//3xnTfMjjzzSypQpYz///LPdeuutEXVntK57vOG4poxfuHBhuP6PPvrIFMCHSt26dW3btm3pft/dsObNm5vWJA8VrT/uDdfTQwpaOO6dbv6xxx4zLRlAQQABBBBAAAEEEEAAAQQQQAABBBBAAIHECxCOJ96UGhFAAAEEEEDAJwHvVOM6zJQpUyKm5I7n0IkOx3v27Glz584NN0HTot9+++3xNCm87eHDh61y5coR+1577bX28MMPZ6k+bzjevXt3GzBgQERdauucOXMivvbBBx+kaYc28Ibjt912m917771R27Zjxw4744wzIr6nhwgUzIeKAuElS5aE/3/nnXeawnlv8Y6o1/fXrFljRx11VEwuQQvHNYL+7rvvDrc9Wr/EdGJshAACCCCAAAIIIIAAAggggAACCCCAAAKZChCOZ0rEBggggAACCCAQFAFNXX7RRRdFjM5W2xRK9+7dOyJs9bZZU3cXKVIk4suJDsc1gvmWW26JOIamE7/hhhssf/78cTPef//99tJLL0Xsp6917drVChQoEFd9sYTjP/30k5199tkR9WotcD2A4C3ecFyjwOfNm2clSpRIs60C/WeffTb89TPPPNNef/31iO00A4DWXQ+VYsWK2SuvvBIxbf6ePXusc+fOpoA8VDSbwIwZM2K2CFo4vnjxYmvfvn1E+72j6mM+OTZEAAEEEEAAAQQQQAABBBBAAAEEEEAAgQwFCMe5QBBAAAEEEEAgqQTee+8969KlS5o2V6tWzQnOq1at6qz9rXD1t99+s//973+mtckXLVpkn332mR1//PHhfRMdjqtiheMKyd1FwfHNN9/stEvhsUJ6raH+/fff23fffeesLX7iiSemOaedO3da48aNbd++fRHf0/rjV1xxhVNf6dKl7eDBg842mhr9xx9/NIXPmjbdXWIJx7X9008/bY8++mjEvhMmTHBs3cUbjut76gM9qKDjayS3zm/27NlpAv4XXnghTfv08EKTJk0iplZXH/bq1cs5T025PnXqVNNU9e7y6quvWr169SK+9vfff9vKlSujXtcK5adNmxb+XseOHe3KK6+M2LZQoUJWu3bt8Nd0Dbk9W7VqZc8991zU+hXU9+/fP/w9PRzRqVOndH/GdI1626+N9bCH2qD+1UMh27dvd5YUqFKlip1zzjlJ9TNLYxFAAAEEEEAAAQQQQAABBBBAAAEEEAiKAOF4UHqCdiCAAAIIIIBAzAKjRo2yZ555Jubt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Qw8C6O89+/dHeDSqU8f69OhhjVq0MCtQIE9bcfIIIIAAAggggAACCCCAAAIIIIAAAghkV4BwPLuC7I8AAggggAACOS+wf7/Nfv55GzN1appR4hoZrtHgLRs0cP6uULp0zrePIyKQRQGF5WNmzjTvqPJGp51mE594wkpUrZrFmtkNAQQQQAABBBBAAAEEEEAAAQQQQAABBAjHuQYQQAABBBBAIKkE1n32mXXr2TNqKH7TJZeY/mgKcgoCySygkeST5s2z2YsWhU9D1/WMxx6zmppqvXjxZD492o4AAggggAACCCCAAAIIIIAAAggggECuCBCO5wo7B0UAAQQQQACBrAjMmjDB+j34YMSu5UuXtrbnnUconhVQ9gm8wOatW23oCy/YwqVLw219rFcva9u5sxmzIgS+/2ggAggggAACCCCAAAIIIIAAAggggECwBAjHg9UftAYBBBBAAAEEogjs3r3bhvXrZ7MWLIj47uDOnZ1QnIJAqgvMWrTICclDa5LrgZDHRo40q1Ah1U+d80MAAQQQQAABBBBAAAEEEEAAAQQQQCBhAoTjCaOkIgQQQAABBBDwQ2Dz5s3WrXNnW/fNN+HqNVr8+f79rWblyn4ckjoRCKSAplq/edQo+3HrVqd9vdu2tT49e5qddFIg20ujEEAAAQQQQAABBBBAAAEEEEAAAQQQCJoA4XjQeoT2IIAAAggggEBYQCPG27dpY+u++ir8tZb169vonj1ZV5zrJE8K7N63z7qNGmWL161zzv+5u++2VhdfbFalSp704KQRQAABBBBAAAEEEEAAAQQQQAABBBCIR4BwPB4ttkUAAQQQQACBHBXo16ePzXr11fAxnZGy7drlaBs4GAJBFLjo7rtt/caNzkMiMx54wGqed55ZmTJBbCptQgABBBBAAAEEEEAAAQQQQAABBBBAIDAChOOB6QoaggACCCCAAAJugUmTJtmwYcPCX2pz3nnOiHEKAgiYbd661S7q189Zg1zLC8wYMcJK1KtnVrQoPAgggAACCCCAAAIIIIAAAggggAACCCCQjgDhOJcGAggggAACCAROYN26dda6detwu2pUrmxvPfpo4NpJgxDITYHFa9da+wcecJrQqkEDe+6RR5hePTc7hGMjgAACCCCAAAIIIIAAAggggAACCARegHA88F1EAxFAAAEEEMhbAlpnvEmTJqa/VcqX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CCCAAAIIIIAAAggggAACCCCAAAIeAcJxLgkEEEAAAQQQyFUBwvFc5efgKSgw5s03bezkyYTjKdi3nBICCCCAAAIIIIAAAggggAACCCCAQPYECMez58feCCCAAAIIIJBNgVA43rJ+fZvYv382a2P3ZBY4dPiwXTt0qFUsW9Yeve22ZD6VXG37mIULbezEiYTjudoLHBwBBBBAAAEEEEAAAQQQQAABBBBAIIgChONB7BXahAACCCCAQB4SCIXjjWrWtBlDh+ahM+dUvQKbt261Jj16OF9eNXmyHXvUUSBlQWDMu+/a2PHjCcezYMcuCCCAAAIIIIAAAggggAACCCCAAAKpLUA4ntr9y9khgAACCCAQeAHC8ex10esffWTvLl9uY++4w/IfcUT2KsvlvT9evdquHz7cacWS556zsscem2MtOnz4sP196JAVyJ8/x47p14HGvP++jR03jnDcL2DqRQABBBBAAAEEEEAAAQQQQAABBBBIWgHC8aTtOhqOAAIIIIBAaggQjmevH7uNGmULly51Rt1r9H0yl2kLF9rAiROdU1g4erSdUrGir6ezbdcumzh3rukBgy3btjnHqlahgt1y2WXW7vzzfT22n5V3Gz/eFr77LuG4n8jUjQACCCCAAAIIIIAAAggggAACCCCQlAKE40nZbTQaAQQQQACB1BEgHM9eX970yCP2zrJlNqFfP7uoYcPsVZbLew+fMsWenzvXacVbjz1mNSpV8q1F32zebB1HjAiH4t4D9b/uOut51VW+Hd/Pits/9pgt/uwzwnE/kakbAQQQQAABBBBAAAEEEEAAAQQQQCApBQjHk7LbaDQCCCCAAAKpI0A4nvW+PHT4sF07dKgtXrvWzjr1VDuxTBn74ddfbd+BA3Z08eL25J135ujU5Fk/k//bs9ODD9qilSudf382YYIdX7JkdqtMd/+2gwfbkvXrne+P6NbNmpx2mh388097+F//Crfh8xdesGOKF/etDX5V3H70aFu8eDHhuF/A1IsAAggggAACCCCAAAIIIIAAAgggkLQChONJ23U0HAEEEEAAgdQQIByPrx9Xfv21PfvGG/brzp2mf6dXSh19tE0dMMBOq1IlvInW1A7yuuSX33efff7tt057//fyy76u/x0Kx2+65BIb3Llz2Gj/wYNW44YbnP/7PXo9vp6PcesCBaz9I48QjsfIxWYI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CEAAAhCAQEUR+PbbbyNRx9mOO+5oU6ZMSdTGG2+80c4555xM2fHjx1uvXr2i33OJ44sXL7Z58+aZwlWus846tuyyyyY6X1yh//73vzZ37lxbfvnlbc0117RmzZoVXZc78KuvvrLPPvvMVlttNVt99dVLri/NCpYsWWILFy40hZH97rvvopDoLVu2tJVWWilR38spji9atMi+/PJLW3HFFa1Vq1apdNv1U3nRS63z559/jsKj/vTTT7bqqqvaCiusUFIbP/nkE/vhhx+sbdu2tswyyxRdl/r48ccf269+9avonzPE1uRI0xqL5GesWzLXeBV7T9H9TbbUUktF/6rBKmEsxKka2enZ+Omnn9pyyy0XPX+WXnrpkoa8nGPxzTffRPet1q1b2yqrrFJUO/UM0/1PYrLux6pn5ZVXLrnfRTUmOEjzR+1S+/SznrP6p+dbPiu3OC7v+A8//DB6XhTLPuxDsfeobCwkIOufnrX6V8ozspzzON9Yxn2fljiu613vrLrO03h3LaYvhR5TzrFI456COF7oiFIeAhCAAAQgAAEIQAACEIAABCAAAQg0YQK+qLPJJpvYX//61wyNQYMG2cyZMzO/6zsJsbKLL744k2Ncv9999922xRZbRN/FieO//e1v7aKLLqqTe1PnPOWUU2z33XdPNArK93jFFVfYCy+8YC+//HLmGLVLdSmk6mGHHZZTTDrqqKPsn//8Z3SsBP2zzz7bJPZfdtll0YKuM9W51157Rd+ntQidqJO/FNIi++OPPx4x+8c//lGrbWE9EvKVQ75du3bRV2+//bYdccQRtYq9//77tX5fd911czZnxowZOYWKjz76KGKmsfjXv/6VqWuttdayLl26RPnrt9tuu5zniBuLO+64I6rXb6/aqvClmivaVBFnGruamhqTUC9TmP9dd93VrrrqKps4caJpM4gz5YHt2bOnDRw4MJHgIYFEdYiJ5p1fl+ad+jlgwIBI3MlnEpXGjh1rzz33XK0+agx1zSnVQTWL44oi8cgjj0QYJIzcc889GSTqmza0yDp06BAxdXbsscfaG2+8kfn9oYceMm2MCC3Nscg3Vkm/jxuvUu8pxx13XJ37peaIzqWw0fq3/fbb5xRWdC8eN25cphu6P+ZLnfH3v//dzjzzzMwx6623nt18882xKCpxLNTQNNglHftCyoVsb7nllkg4HDNmTHT/9q1Hjx5RbuM//vGPicSzUsfiscces+HDh8d25+GHH47uk7qudX3792bNSd3rTzjhhKwiqITAZ5991hRxRvdQ3QOzmZ67559/fvQsD033B90n8pk26+m+nNQkNut+o2etzuHf38M6NtpoI3v00UczH+sZPWzYsFrFCnnW6rl26aWX5myq2nTNNdfYq6++GoWQdyb2m222mR1zzDFFPWtLvUe5dujZq/bp2fj666/X4bftttva/vvvb/vtt1/eDZGlzuOkY15subTE8fCZofbo3Unv0bq3650i1xzW+9ehhx6a2Qj061//Onr3zie069q46aabMt3Xe+KRRx5Zlvt7Oe8pcQ1GHC92VnMcBCAAAQhAAAIQgAAEIAABCEAAAhBoggT22GOPjCClRek5c+ZkKGhx3l/EljjuFutOP/30KMenMwl98t6WheK4REOVzbUgrgW6bAvz7hxPP/20KS+6L2DHDZkWYiXer7322rEj6i9KSrTfeeed6yxu+wdqAVp9kphXXyYRRQufhdgrr7yS8bDWYrrGthTTInw270WJJRrXXCKCzn388cdHgnY2z7FwLCSIqHw20xy94YYbbOutt65T5N///nc0ls4kjuuz22+/PWt9EsknTJhgWljOZhI6TjrpJHvxxRdz4tTCtjZudO/ePWs51aENAbnm8LnnnhuJQz7b9957r5ShrNdjxUqbZZxpDDT+Ej3at29fqy3vvvtuZjFfeVwdl/Be5A5KcyzShBIKHSNGjCj5niIhKd+c69q1a3TfdBuTwj7pvqx0Gc7EVfeJXJ6c4b1d6TN0LYVWqWOhdqbBLs354eoKn40SqSQ2+5uLwvNKVNT9IFe0izTGYvLkyVnn7BNPPBG9J2jTQTbTvVf35tB0jasP+Z7b/nGTJk2yXXbZpU5dEtb79euXd2juuusu07WRxK688srofSGphZsIwyg6Setx5fS+ctttt8Uepognqj8U3+MKH3744dF1ms27vRzvPYpmc+edd0YbCPO9C6jNm2++ebRZLdvGvDTmcaH8Cy2fhjiuqAlJNm/ouhk8eHDm3dpvq6LgaIOf/16tjYXabJHL/Hd+lZs2bVrs+1QaY1Gue0q2/iGOFzqbKQ8BCEAAAhCAAAQgAAEIQAACEIAABJowAQl1vheUPI4V6lzet6EY7IdO1wK1FqqdOQFMv4cCwAYbbFDL2ykbbomY2YTFpIvirm55d0nMjxOB/EVilXPhHHNNg1wL2GlPH3leyWO9UPMF1HKK4w8++KD1798/cfNy5bIPx0ILvr5nXLaT+Bs1/Dnoi+OKCiBvwHymzQ/PPPNMrPikEPvaQJFk4d+dRx6ScWK7+rXTTjvla04Uzl8h26tVHL/gggsiL0Jnzz//fBR++YMPPqjj3aiICAoPHArnErYkcPmW5ljkHYQCC4TiuDZK5NoMpOrz3VP8zQL5mqN7uO5locUJKNqopI1PcaZxUNQHf+7J27dz585VMxZqaBrs8jEv5vvw2bjnnnua7qf5bO+9964VAaAc10UuIUtitaJa5BO4Q1Fa14C83/MdF/Y/bs6pTNL3gKTiuIRB9asQ03NF70LOyimOK6KAxOSkpvcybbaIs3K892gjlzaXFWJ6H9T4hiJ+Jd/f/f6lIY5rw4jeK5JYNl46Vs9ZPW+dKXKOIjRlM4VF9zcWZtssldZYlOOekosZ4niSGUUZCEAAAhCAAAQgAAEIQAACEIAABCAAgYjA0KFDa+UZdx7gcUKevIMUvlPme59ICPLDr4cCgEOtBf599tnH2rRpE4XePO+882qJMBLG47x8JdjofKF3ncK4auFQpvNrods3eYP16dOnzkjHhbNUIS0sy5tHIWBvvfXWWiGe9X0uUSnN6XTAAQeYBEXfxEaClnJcK9S08qyLi0RUhZpXKE1tdHCmXKny9vNNi6i+YKffs3mZKYy8ctCHpnNK4A3DxiqUvbgqPK3GPxRD5Gm+8cYbJx4LhX6Wl5nOJ0/XMOysPMzlpe1b6DnuvtP8VMQBhYeW6CdhPQxhLBYK+R1aeH3oe4n9Gg/lgX7nnXdqpRfQ9717947Cpocmr77QQ1BzeJtttjF5CCpkbraF7WryHA/FIm1Q6NixY7QBIWTsRKx58+bV2hij6zb05kxzLNK8XlVX3D1FwoPGXPNe9xRxCTdr5LqnqLw8DH/88cfo38KFC6OQ9Lp3hsK77lsKX6981aFdcskldvnll2c+zhWlQ/dRCSzOdH8N7yP6rpLHQu1Li13a8yTbs1H3dl0b2kSivONTpkypEzVAIYo33HDDst2jtDHutddei+rX/Ubzxpnu7y60vu6l8k7VvVnvBP5cVAh4CabOJKorioJvmlMSBrWZQ+91a4kAACAASURBVGko5BEvD2RtyNNzS88zPctatGhRp68KJf23v/2tzud69vvPzCTieDbvXYnf2pyjTTu6hrXBTtevnh1qm9rvp4HRc0f3bmfKCe5HWtDzJy7ygiuvMVUEk9DUVz0bfJPHtcZijTXWiDb13XvvvbXevVRW16t7L/KPTfu9J9smPj2bFepd9yJF+1EUnHBz2ahRo6JQ/L5V+j3FtTUNcVx1aI66e7v+19zSBjKlqQl5Zdv0ED431UZFf3Lpj8I5pfdrP62G7jm+uO7KpzUW5bin5LonI46n/cSiPghAAAIQgAAEIAABCEAAAhCAAAQg0IgJXHvttVHIVmfKuamFWuXRDHNWa1F29OjRUVF/oVUL5Qrn6CxOANCCnBbVfZPXqMJG+uaHWXafq24/1LYWfhWOVkKxb2Gb5YE7e/bsOqHBw0ViLSTqHH6YSy38S+T0wxortGm23IxpTRF5eoYL2/Ic+/3vf1/yKeTB58QPVaaf4wSIXCeSmKewy75pLHbYYYfMRxJLDjnkkFoe4KG3nSscNxbyKnO50125uPn45JNP1ioXJ45rbkpoCnOBX3jhhXb11Vdn2izRQaKCH2lAwne4QUBzOxQs4sIGh0KWmITeurr25Dnqm8RPCS/h4ng1iePaCOE20ahv2hAgL+m4uaOQxtowEwot8ubUxgFnaY5FyRdSTAXhPNa9Rx7BErF8kyCkeeusmHuKNlJIcFL0Bn+eyIswLuKENhXtuuuumXNmuy+qgESr66+/PlNW17pSI/hW6WORa3wLZZf2XIl7Nh599NF21llnRZttnElg1bNGG0qcxUXgKNdYvPTSS7VyfusZqbmme6l/T5T4qXu9M4ne2pjgTHPnvvvuy/yu0N/nnHNOzrD+xTAPUwEkEcclaGvDnjP1UW2NE5YLadOCBQsicdiZ3qf0XlWo6Z3J3yyoZ4U2XfnCp+azPvO9y+M2juncab736Lx6d/Pfj7QJQPegMJz9l19+GQn67t1DGx+0WcDfyFOueVwo8yTl0xDHc51H177GXdeJb3qX1cbS0PQc8KNPZNsUquOUFsGfi0qD4EfbUZlyjUVa95Rc7BDHk8xgykAAAhCAAAQgAAEIQAACEIAABCAAAQhEBJQbWDmCnbnFbz8corxkZ82aFYl7ErjkReV7sP3hD3+wyy67LFNHKADkClsd5j+MWwAMBaVc4dclqvke5HEhrsNFYi3UKq9uaPLyPPbYYzMf5wpZmtZ0kvdQuLgsASLcCFDM+dIQx+Vp5As2EnbCRVy1LS78rUK9y+vdt3AshgwZYn/6059iuyfBVcKrMz+SgT6LE8eziSTyUhRnX1zUteDnbg5DlsZt8HBtkSf6wIEDM21zoq/7QBsI1F5n22+/fcYTM+xsXJjeahLH5envb+ZwLNyGBG1EEHeJDI5pOF/CDSFpjkUx106+Y8J5HOcZqToeeeQR0zXjrJR7igTyQw89NFOX5t+AAQNimxpe+9OnT7du3brVKivBS5tJ/KgP4QYUHVDpY5FvrPR9IeyS1Je0TPhslNCpZ2u4eUf1SUzUuPkm4coX0cs1FqGQpTbE3evDdAhhpIHweZFLuEvKMK5cMeJ4uIlH4q6etUsvvXQpTbE0xPGQq+aJ2rbqqqvWaZvexyRwumguur/Geden+d4Tl7YlVxQMRQTQvUlRKfTOF1q55nFJA5nl4HKL4+60YcQPt8ksbNZTTz1litjgLNys6j4P39v1+VtvvVUnnUy5xiKte0quMUUcL8eMp04IQAACEIAABCAAAQhAAAIQgAAEINBICYRhdN3itQurKGFb3ogS9/SzQj6GeQvlHeZ7E4cCQFyIZIcz9GSJyyUtUd6Fbs3nhRWGbo4TgcJFYglz66+/fp0RDheAs3k/pzk1FF5W+X190VbhZ+XFL+/P0BO1kHOnIY77Y6FzS+wLc9Pr87hcx3FhgcOxyBYSVnXqeN9zPwwPHYrjEhQUYjSbKaz/ddddl/laP/sL92EYdHkatmzZMrY6hbf3w8aHns+hp7q81kPhy1Ws0PTytPatmsTxMNSrcuBKBHbXuuaxQhrrWnX3hjDcq0KEK6y+szTHopBrJmnZcB7HicqqK817Sih25Lo/hRsu4oTOl19+OfLidxaX913fVfpYJBmzQtglqS9pmfDZGG4sC+sJN48p2orCfZf7uogTssLNQ64N2kCm61mm1BUuuox+13d+KgHdk7X5Se8U2mCndCBpWDHieJzAK5H5oIMOsp49e8ZuWEjS1jTE8fAZoM17uUKza3Oin3pEz0I/CoraneZ7T7hxMIwYkISTX6aa7in1JY6HkZWybbhK+q6llEmKPuFM93ptXAutXGOR1j0l19xCHC/0yqM8BCAAAQhAAAIQgAAEIAABCEAAAhBowgQUEloLm84GDx4ciVgKgynvI3mhSMxyeQklNuoYP3yvcoz6niuhACCPId+r1set7+68887MRwqpLXHYWShiSLCJ81R25ZWz8eSTT84crwXjMHR7uEj85ptvxubeDvOu14c4roaLVZgT23VIXmEKYS6RWgKqNiwktVLFceXFlFDvmxhl87QLhZEwJK/qSToWKquQ4xItnCn8+IQJEzK/h+J4NnHPHaB553vahiGu5eWmzSPOso2J+17XgNvUEIZAVnQGiUvOsuUP1veh16A+qyZxPGy/0inIQ1z3EYX4VhhYiWkSbN0YyVN8zJgxGT4K17vaaqtlfk9zLJJeL4WUC+dxnEee6iv0nqL80wr1LK9QCWbKQywxZJ111onCPys0v7NcG4dUj+8prvuGcjT7XsgKz3zFFVdk6ssmxlT6WLgOpMWukHmQr2z4bNR94dRTT816WCj6urQn7oByjUVcCGSlPihUzFYUF20UijMJ5bvsskvmWRa3QS0fT/d9MeK4nmc6v/O4Ds+lzTl63iiNhq6dFVdcMVFz0hDHQyFTm1niUia4BskL3r8X6N1N7wq+JX3WJrlHhd7FSnvjv3clAuUVKtc8LrQdScqnKY5rg8ajjz4a3df1TxvLtPnl17/+tSmShx9WP9cGiXHjxtlFF12Uab7e4fUu75u+Vzln2TbolWss0rqn5BojxPEkM5gyEIAABCAAAQhAAAIQgAAEIAABCEAAAhEB5Tfs2LFjhobyQcprfMstt4zC60pY3mmnnTL5wuXZrQU8eYI6mzhxYq2ctqEA4DxH45DnE8dD8b7QYQtDb+v4cJE4m/CYZJG40PYkKa8QpFoMV7jdfCbBXp77vpdttmNKFcfFyc8trjC0vngcnldis8LzO5Onth8GupCxiJuryhGv+egsFMfzbWYIQysrbLsf+txdA/nGIO57eSAqn6ez/fbbr1Z+VnnprrLKKlmrTjpHi2lbfRzjRxjQYrs21zjxSz/rvjNixIgof6423LhIFWpbnMd/mmNRjv4nHa+k9xTdexVW9+abb07c3HxRNRRp4fHHH8/UF6Yc0H1e7XMm8bx169Z1zl/pY1EOdokHIU/BQp6NqioMrax88LvttlvmLOUai1DIyje3snVbkVCGDx9e6zmQrayeYfIqzxZRIxfaYsRx1afQ9XrWusg0uc6hfOkSHfNFb0lDHA8jaRQ6/+K8/NO8R4Xpa+I2IRbS5nLN40LakLRsGuK4NpoomowijCS1XOJ4GM1Jz1ClN/GjB7jNae582SLhlGss0rqn5OKFOJ50NlEOAhCAAAQgAAEIQAACEIAABCAAAQhAICLgL5pqYVqh1SU8yuQNJM9y5309fvz4KKemPEGdybNxs802y/xeiABQbnE89GoP+6vfK00cdyAl3irsZS4B2pWN62c4vUsVx5Xvdscdd8xUm08c16YIbZxwFueJmnTBXnXIY1bess7C3KqFiuMS/w444IBMfYqW4IcELmWRWKzlmeUsXJjOFq3AlS+ESyXexnzvM20UkCDevXv3qKm6P0gcl1gr0yK+xBYXflkimcKq+5bmWJSDV9LxSiKOa3OM+MmrsBDLJ2Dee++9dsIJJ2SqlBA5ZMiQ6Hd59GuOOtN1rkgPcVbJY1EudoWMQ66yhTwbVU/oEarngR/6vlxjEQpZueZDEjaa92p7vugbqkv9UwSDQrzUixXHdT5Fp1EUEbUvmxe566NEx1tuuSWKeJHNKkEc173U3/SotqZ5j9L7n+/VfP7559shhxySZCpU3T0lbHCp4riEcaUT8VPnJAGXL7S+NvcpgoAzf9OqvNIVAcFZuHmvPp61ad9T4piVXRxXWBxd4CuvvLItt9xyScatpDKLFi2yhQsXRudbYYUVSqqLgyEAAQhAAAIQgAAEIAABCEAAAhCAAATqEvBFU4VRl4evQlbLFIpx++23zyysnXXWWVHYZ3m9OJs9e7a1adMm83shAkA+cTwuxHQSL2nXGIWt9UUffZ7mInF9zKf58+ebwqw+++yzkadRtgX8bPm/XRtLFcfDKAOqV5792USMMJ/8pEmTojC2viUdCx0TLkrLO3nq1KmZ6goVx8O8qVrwVwhwZy61gPu9kHmnfvphZkOvXY2lQqdms0K41MccLPQcChU9ffr06DCJttoo4TbYqO+aS1qglymVwplnnmnyppepnJ8/V5+lORaF9iVJ+aTjlUQc1+akMBfsvvvua1tttZWtuuqq0fX2zTffmOa7n1YgnziuUPZu05P65IdW10YO/56uHMbKhx1nlTwW5WKXZA4kKVPIs1H1hRuMFKZ86623Lss9ym9/KGT17t3bFHa/VNN1r/cFbfjS5i93zYf16r1DG0SSWiniuH8OXZ961j7zzDOm1BdxAqY2hc2YMSOrVpWGOB7mm5YorxztSU0h1sPnS5r3qHDThlJl6B5erFXyPSXsU6nieBhFRmOrPPfa+Kf7uzYBfvHFF9G14W8mySeOa076EZ38tDN6T9I14kwpTPz8434fyzUW5bqn+G1PXRzXg1Zx75XPQhelBl8WhhkqduLnO04v9QptIdNE6dChQxRaY4899ohyq2AQgAAEIAABCEAAAhCAAAQgAAEIQAACpRHwc0Nr4Vcevm495qabbopyW7dv3z46ibyDlHvT9wgO804XIgDkE8d1ztDrVh6VzZs3L7rTaS4SF92IEg6UF5BCIitPs794r1zsbtziqpeXtLylnUlob9euXUEtCT0V43KbugrDMM2leLOpTnlc+XlXw7zehYrjCvmu0O/OwtCwoTClhWoJlMWYHzZcx+erK+kcLaYt9XGMn79aIqzmpsvvrvuFNr1onVd23XXXRR7Mbt1Zwro2tfiW5liUo/9JxyuJOB7WpdQBvqjt2i8RRRE73D0gnziu48JwyC78ciEbZyp5LMrJLo15U8izUecLvUHD+225xiIUssJ7bRosVIc8/RXqX+Hj/U1feub77xj5zpeWOO6fRzmf33rrrchTXO9BvikKQ5cuXWKbFW4i0/3vhRdeyNeFWt+HAqw2KBaSYiHuZGneo7ShSWKtM917xGSppZYqqJ+ucLnmcVGNyXOQ5qw/9hK1n3jiiUSnCt9RdF+XcN2qVas6x4fvO/nEcT1TFZ3FPUdVodu46r/j6/NsKTP0XbnGoj7uKamK4xLE9eLiA3WjFO6kTDT6RRTSDgk/VIhfhXZyKqeS/iDDCiOgcGHaeNCtW7dEOakKq71yS3/66afRjmb9k+nhpH/6wz9fvpDK7RUtS4uANgDpRq3NN2uvvXZa1VIPBCAAAQhUCQH9EfvVV19lWqv8en6OpirpRsU3U4zF2hmcK37IaCAEINBECISLYfIOd+GltXAtYdzlENbim7zEFUpdFhdauxABIIk4rvUfdz6ds9R1qTQXiRtyioSCgDYuKLxpNhs4cGAtT6Q4T+58/VE4UD8XuryjTznllDqHhSHLVUD5XVu0aFGrbDgW2fJg6iB5tvqhynVe3zs7XHjOJxZqzdH3XNS89UOPSozQteBMoYUl2BTzjigBWBEZnB111FFRnu04i/PQzxb6P994NdT3t956ay1PQo3T5ZdfbhtttFHkiCVz9xTNY3mKOlNIZXlK+5bmWJSDSVr3lNDrNAzP77dd4eh///vfZz7KN99VUB6xBx98cOYYCS7yFOzZs2fms7333jsK553NKnUsys0ujXkTPhtzCV5ffvmlbbHFFrVOq/D3fjTfco1FfQhZfsdCr9d8KTvCsSiHOO6fI3xWxN2j/PLhJjI9Z1ZZZZWCplB4T1EYc5eaoqCKfimc1j1K1WmDotbPfdP9XV7RxVi55nExbcl3zJIlS+psKswVQcevT+/TLp2IPo9LNePKX3/99dH3zvKJ4yqniCOKnuHs7LPPtr59+2Y2oulzRYe644476v3+Xh/3lFTEcQ3w8OHDTbsns5kg62U4qSlsixbC5P0dtxMiWz3z5s3LedHn2l2RtG1NrZzCr2iXoDNdIP6F1th4aNeMQgzp5pAtl0OuF83GxoP+xBMIFwjCHD5wgwAEIACBxk8g/INau6E7d+7c+Dtezz1MIoDUc5M4HQQgAAEImEV/NytntbNevXpl8v/OmTMnWs9xOYS1yXz99dfPeCCHoa1VR9rieBj+WueQoC9RZ+mlly54DNNcJC745CkdIK82OY74mwbyhTbVgr4fGlfrasrtXEjqxHCuaG5oodX3bFWKxMMPP7yWl3rcPBGKcCyy5U6Xt7y8Cf21HXnz7bDDDhmioTiuL7J53YaL1CqrxVuFNXUW5unU5wo1LZG70MgF2lAQrqU+9dRTtt5669WZERJBtAHEt6TiuEQmCaDOFIo3W/jUlKZibDUhX3k+yuvVF15dqHltOlC7nSkqQpjTN82xKEe/07qn6NqRyO1MYpif29d9rg0Uyhmu6A/OkojjoXehREiJLv5GDT9XbRyrSh2LcrNLY96Ez8Z11103itjbsmXLOtVfcMEFds0112Q+1zWha8O3co1FfQhZfj9uvPHGyEmzkLnsH19OcVzzarfddrOPP/44c0p5k2+33XZZp4R7X3IFFO5a7yyFWLhpUceGYfULqS+te5TOqfuIxHFt1nCmdwFFs3HpMgppW7nmcSFtKKSsnmd+pANt2pO+lM/CTSDhBj93vJ73mkP+nEsijocc5dWudyo/H7yi5Rx55JFZm1qusaiPe0oq4rh26sXtDhNM5bRQ+CDlzVlttdWyQvzhhx+ivAwKzaL8Ef6Lqx66Cj2gCaNdN9nyEqlyhYfRbsIXX3wxykWh/0PTg0G7EQt9Kc03WbN9rz8CFCbCmXZSK4RNEtPGA+XoWLx4cVS8Y8eOtXZGJqmjlDI6v25QCuHjW/jyn+scevlSritn2i2+/PLLl9Kssh2rG7QWYLUzOZfVV5qAsnWUiksioAeN/kj3TXnEtECAQQACEIBAZRJQWKhPPvmkpMbpnciFdlRFCt2od1dniOMl4c16MOJ4ebhSKwQgAIFSCWid44QTTshUo0VOreXof4njMj8cr/ten8flIk1bHNd5wrCQ+kzCgsKIy7Nd4oKiCypFoBYt33nnHVMY8bi0fGkuEpfKPjxei856L1Hf1HZFupO3tda99J0W6v/5z3/agw8+WEt8Vj258kjqe63VhYuiWqdTbnCFV5cwLAcXRZHUAqnW/7QRwjetC8nL1I80qfmg+aNx0OcSOuRZ5lu2MOLhWOgYeVXLI1Y5U7WGJq+7MLqlhEBtDPDXFePEcbVNPBXi/Ve/+lXUPonSoaNItoXnKVOm1PHwVp1qo9YkxWzllVeOIuNofUFrblr39D1xHYcwrL3qkQAm79AVVlghOl7Xop9H2h2bVByXp5gfAjiXh3rac9evL86zUN/7kQa0aB/XV4Ug1iac0NIci7T7nuY9xXnUuzbKoUNrl5ovcj6Tx7i8NP0UCSorZoqyoWiIum433njj2G6GERj8+7l+1vp7vrXeSh2LcrMrdd6Ez0bVp2gKGjfdT3Sv1/Nr+vTpdcJo33DDDbHCYxpj8eOPP0bzypmeMX4OaW1g0WYsZ9qUFm5giWMjB0s9s7QJSPdzPaf1LNN9W+8Yc+fOjTZ4+Ju8VM/+++9vSnPhm8JZ+2Ks/52EZD8KiDYwhfNf938/jcibb75pys2ttrVt29YU0Uz3ct2LpW3pfGKisNe+SKnz5vME1/kVLcQ3bXSRSKlnrhiIi6Lcal1D9+lwk5reZbT5K4zqrDQ32milNut6VShztVXPCM0dbayK09vSvEepX3EbvvS5Nldq44DeB9yzUX0VQ423y69dTff3sK0aLxcBxX0noVtan+bZ22+/Hc0dja//jPvwww+jNEW+aQOM8oMrIo2+l04XF81b15vet3UdaSzXXHPN2NtR2Da9K/naWLZNeX5llXxPyXUPLlkclwCtXQmh6SYQikfZGiLACjnk757IVva3v/1tJA5nG8zwOE0oeTqHL9hJdk6U+vByx2sHjP7YcKYJ7Oc7ynWeMCdB3I6vtNoZV0+Yi8aVefrpp6MbahILd37qBc1fWE5SR32U0R+M2tUVbgSIO7ceoNrBhTVNAnrh01zxrdDwPU2THL2GAAQg0HAEwp26xbQkXMhHHC+GYuHHII4XzowjIAABCNQHgbgQ2Dqvv3FYYozygoamZ6hyBPtWDnFcC8hy2ijEtPC955571jkk7UXiQtqUr2yc106+Y9xYyatMC/vZTE4TWpjW+l8SyxY58rbbbrMzzjgjSRVRmVz5Y+PE8SQVK+Ro+Ld8nDiepC6Vcbk5w/JaX5JQ4wsv+eqU1/yIESPqFJMD0aGHHprv8Oh7CZ2+KJJUHNf6lu+FrXXXuLXeRI0ooVCYM9dV5ed1D0PpujLZ+prmWJTQtdhD07ynhPnp3Ql9Edt9pr9pJKSGlit0braNC6pD0ThcSo1cjCp1LMrNrtR5EyeOJ6lTkTm0ISpO9ExjLOIch3K1y984l6tcMX+3q25tVPeFbJ1DmtMf//jHJLhiy4Te23KK8gX/pBVrk702KuSyL774IhKIs0WxDY/VBoGwvyoTF+EkXzuz5ZNO8x7l2uBvmszXLvd9tmitaczjpG0otVwhc1HvJS4VSzbHVbUn7v4u52JFlghNayrS5OIs15zRfUTRdPJZGmNRrntKrraXJI5nC4eg0C1JQ0qGITDygdb3uknqZSipKX+IdsuFL/La/apQQeU27XT1J1+u3ABhWyTUaqeqM3nO64ZQn6aX0MsuuyxzSm1Q0LgltfACq8+NCUnbqHLa0KGQKr5prukPFM0T7cTTA+qzzz6LNgaQc7wQuo2vbLh7W7sjFY4OgwAEIACByiRQzB/ZYU8QxxtmbBHHG4Y7Z4UABCCQj8AHH3wQGyLUD4Gs0NlxuaWV49oP2ahzlUMcV73K66iQkL74l6tv2f62K8cicT7GSb//xz/+EYmxhZiEVC2gaqN3PtNCrbyykyzaZ1uA1QKvPIs0FvlMuaMltoW5xt1x4VgoH7LE91wm72hFDAiFolAclyivDfG5HHi0ID1+/PicIXK1FqnNIRLkk1iutbYka6cScXRNag3OWVJxXOuOvqNINo/9JP0opYzC/odRB1Sf3564zQL5QoOnORal9C88Ns17iq5N3XvzOfzIA1Gh1eMcfvLllVVI5ND5TH0qxEGuEseiPtiVMm/CZ6M2I+TTRSRo6R6laCLZrNSxKIeQJa1J3sOFWpguwx1fiCAZd85QHFcobEVRKMS0YVDPJz038lkYkSdXeUVFjos2omPk1KhnXr77gas/Li2FvkvzHuXOpYgD8ozWJqykNnjw4ChaTZyVOo+TtqHUcnoHUroSec/ns9Ap9a233oo8xfOZ9E+9N8VtSs0ljoepM/zzaDODHyUqVxtKHYty3FPyMStJHI/L36SXsKQ3sWwv7wrHrjBMCj0uIVI5GcKLWRdRkknhACi0xX777VfrIa6XZ4UiKrcpb4/O5Uw7jMI8QNnaEIabaAhhWTct7RB54oknovAn+iOlkDzw1SCOK+SWdpP7O2wVUkIRDYrJRVbuOUX9DU/gyy+/jHKkvf7669G9SLvP3a6uhm8dLYAABCAAgZCAnumKKBRnDz/8cOZj/dGa7Y9MeZH5C894jtfPPEMcrx/OnAUCEIBAoQQWLVpkHTp0qHOYv27x7LPPRl7HocWFeg0FgFzeqxKwtTDsTOsVWkvKZXreK2SpxJ1cIq9C1YYb51Wvv0icywMuDIGpfNO+w0GhnJOUD3NS5jrGhdnUe01cGOpsxyo0s/KPaxE9DNnqH5NvrU2hOuU0EueJrlDBCoWfL991uGCvsLly7HjkkUfqhNCVcKpwo9miW4biuMK7KlqgIkBqXoV9Vahghb9VGOokpvmmtskzLxe3fJEitYYqz/LQG13zXusRmrPaeOCLZknEcS3Yh96HCu1ayLpfEg5Jy8RtaFXfFXZWFrcpR+uUmpv5LK2xyHeepN+nfU9R9FHl/tamjDiTcKK/X7TGLmah5RPHtdEjTC2ge4giKBS6dlppY1FudknnRFy5uI1jmjuKcqJnrP8807NJzjxDhgyJUoYksWLHQp7OScKkuzYk8RwvxHtaG7v0vNHGrWzP/2xhvJNwUZlQHNezPAzdnq0uPUv0/Nfmo1zRWcLj3fNMz/Vc7yq6zqV1ZTNpHXrX0uaiuE0t/nHZwu+nfY/yz6mNi3rOag7nejbqmCRRiIudx0nnQhrlNCaaP3HpqV39ug9L3Fboft+U9kfPOY1naLoPK/2IoiToGaD0I6HlEsdVNlukJ21Ii0s1lItHsWNRjntKvnErSRwPczf5u4PznVjfa0JIKFaID5luktqBoxdN31ROu0P8hctiPKjl0R6K0soVkfRhkaRPcWVC72+95Pth1nPVq5Ag+sPSWTWG864GcVw3ZO3Sdaa5qAeo8lxgEIAABCAAAQg0bgL+H316D5VXUxJDHE9CqfQyiOOlM6QGCEAAAhCoTUCbnSUcKle2vFW1LiTxTXkZl1122arEJZFTDibaDCgHEW1ecF7SynG9yiqrRP/SWANT72HsQgAAIABJREFUDlB5+MjbSGt2yjWs9RPx07mSmLhL6FToe+WUlbiRL2exqzeXN5tEfAnw6qvE9nx1xonj8rh0ps0OEivkganF6kJFQJ+F5pvmnYQ4OaJIMBEvCe3KJ5vEdJzao3zlYrbaaqtlDtPCssZea1r6l2QDv64F5S93pkV25e9u7JbGWFQqI12Xuq40d3UP0LWgCJhujmkO6fpVvmL/n+59ykVc31ZJY1GJ7HJFVVE6VN0P5s+fH0U9TZqGNtsYV8pYyANV81d5pzVf9bzQXNUc1j1T/xpqzV5zRNePmOs5q/bpXqt/rm265pLcf3NdaxpbPZ90X1f/dV71XxuX9KxN4onu6tfx8+bNi/J3q726L+hdQPUob3pDXPd+37UJQNFa9Px27xR6Pmo+F9O+SpnH2cZXY6mx0PuaxkNjqXHVe0a+eaNnv+afNhRojoiR7u/uOL1f6PoJ7+/6Pi7Fgt9GjYE2qDnTpkJFBinFKn0sihbHv/nmmzqh05WnqNBcTpoMWlh89dVXbfLkyVm9zsPByRcyJ27QNHm22mqrWrtu4vINlTLgccfqAteLu7NCFl3D0El6QdfOI2f640c3Dd3E9IKeb5Kn3bck9VWDOK5wFX5It3BnWJJ+xpXRQ1J/aOiBU45dt7oOdUPUg0IP3koy3aD1Mq756d+kC2mjjtcfdsUeX8i5Grqs7k968dOCTKWNZUOz4fwQgAAEyk2gHOK43v/0x47+KNGu9jT/4NQf4vrDUQupxSxwl/LM0XNd75vleO/Ue5Pe+d0f6o4Z4ni5rwDqhwAEIAABCFQXgaShXpP0Kp84nqSOai4T5pLOleu9mvtJ2yFQrQQKSTlSrX2k3RCAQMMSkEarlBuPPvpopiFyYlYO88ZsRYvjCgekMB3OtBtT4YuKEWfdTtN8i3vhy6+8fQs9n/JCaGCdSZg/9dRTyz7GftvDRPaK3e+Hk1IIc7f75+KLL66VY/zuu++utaNTnu++WK6O6Fjlw1YYhi233DIK35F055iiAeQLtbHNNtvkzAuhECMKN+1Mi8N+eAy1L1foLrVBYSDq08J840OHDjWFVS/GPvrooyhkmnbaaveeMy2Md+nSxfr27ZszL9Vjjz1mw4cPjz21oifoOtG1pigCfg4sMVXdygORb5dRMf1yxyhkjXY3haYNBcrfpbHWdRbuLNJ8VFgPzf9spnuBwn8odIxChfnhY3TcdtttZ1ogj9sdqMX6MAfa9OnT8+aGP+KII+ztt9/ONEkhovzoFWqD8irlM4XeiwsXmOs4XWvXXHNNtDnITx2hsVRaCYW8Up/jTOOveSDTzsR77rknU8wfI4U5FFNn4TWu9BhJd6jnY8D3EIAABKqVQJriuERrPQfDkJfagauQnhtvvHEsprFjx0ZhSkPT80DvrnrOTZo0KQp35T8ftbtYoWX32muvnPhLeeb4FYfv4/pO7zjyONImVD23cj3rw0ZKEFd4sL/97W91mCl6kqJMKST+nXfemTlUkZU6d+5crdONdkMAAhCAAAQgUCIBxPESAXqHhyH5taakdUoMAhCoDAKI45UxDrQCAo2VgJwnlJbF13K0pqN1lzSdPCqRX9Hi+E033WRnn312pk/54taX2nl5SGsRzF8MlJhUaDijMM/5zjvvHOVfKLdJXHOic5hjQyEK5P3rTOK4W1RUziB/Yj733HO1hO6nnnoqkZCsDQAS2vJtQNBuEIWfymX5PN/79++fCZVfDFe9hOtlvD5NuRz8nDwSLPMtMse1T+K1roVcOUF0nITUU045JVbEVgQF3ZDiTPmuNI+UZiCblXtOhzkvXDuUR0WbOTTX/U0BYTuVG0OL56FJ6NdmlRdffDHn0GsBXovo3bt3r1Oupqam1kaT0aNH22GHHZa1Pon8YV5ZiRm+57ZC+ChSRT7Twr2E5ySmcDaKCpFtnP06Dj/8cDvjjDPqXLthKF/tdtemCG0waN++fa1m+BuJtGHGbVZJku8nSX8oAwEIQKDaCaQljmsTmP9+HMflyiuvNKUHCk3vaX4KIfe9u1dLWNezI5vpvKojtDSeOa5OhcRKInwrL/vgwYPzbs6UZ72enbme/Xo3lfc94ni1X2W0HwIQgAAEIJAeAcTx9Fjeeuut0UZLZ9neVdM7IzVBAAKFEEAcL4QWZSEAgSQEtE4k52ets+g9ILTbbrvNtt122yRVVXWZosVxedb6+RgvuOACk7diuUzeuPJYdhZ6Xyc9r/IZ+Z6Y9ZVLR17IflgCeaoql4u8ZeTZ6ZsfOl3euNrF6cwJYO73uDzq2Vj06dMnEi9zWVMVxzV/JYg704YJicyF2IMPPmjaGJDUsuWezyWOy2NMmwd8T/y488nzrGvXrkmbUlC5bOL45ptvbhKnhwwZkrO+uM0VyoumnO/5NhX4FT/77LNRbhTfwushX26MMG3B7rvvbhMmTKhVZznE8TFjxthVV12VmHtcmP9wzuqBpvD64T1OJ9GmIIVrD4VzzZE4L8XEDaMgBCAAgUZCIC1xXHkf/UggcXgkdusZFqZbySaOqw5tLJPgnMtUr54FYTSQNJ457rzabKXndRITC+00zrYxU88kRTfyo+Bkq1fv/X5kIzzHk4wAZSAAAQhAAAKNlwDieHpjq+hFckBw5jvspHcWaoIABIolgDheLDmOgwAEfALKRy6nivfeey+KoptNh2kIx9WGGqmixfHQa7EYMbGQTivU9JFHHpk5ZN9996318pa0LuUvDsNZakKU28LNBM4DXAuoWhj0zff88T3O5THrh1/XMa+//ro988wz9uOPP0bhNtW/efPmRQuNWiANLV+uALVLC5++uTDZ7rN8nuNqo3JFO5Mnui84SnTW+GUzCZpJw8CnNW6liuPZFnjltaw/2pRLWi8zoagtD7FwPurm5Lz3NTfl1e5M9d18883RrwozqlDlOrfmjB99QGHp5b1WDlP4bu0ukl177bW1IiJoLt93332RV3fv3r1NC+MK2x0Kzpojms/OwutDn2vzgOpR+I533nmnVnoBfa/69UecbwsWLIjCkfvmROM4FtowMmvWrMxXcREDFLVCi/DK7x7WO23atMxHST3Hw40+qkAhcTW2Soeg89x77711rnVFDRBPZ6GwL84dO3aM7gfhRiW3WUL3Bt/jPsmGmXLMIeqEAAQgUGkE0hLHXb8UAWfrrbeOhOHHH3+8VkoflVH0mJNPPrkWBv/9Se+9froM9/zXs1MbLvWs04bJcEOaNl4pxYiztJ45rj69x+iZovdO9++LL76INmYpnUz4x1Xc5i5Xl+oJGey9996RV73Shegdedy4cbHiOeJ4pV1BtAcCEIAABCBQvwQQx9PjPXDgwGgjprO33nrLVlhhhfROQE0QgEBJBBDHS8LHwRCAwC8Evvzyy1rpmuPAaK1KmlNjD6fu+l60OK48vVrscyZBLBSl0px5YShJhRtXaOpiLHyJDr2xi6kz3zESEc8///xMsfvvvz8K1SyGYumbFkAVDlrmt1VCqJ/LO985FapSwqrCIDiTuCaRrRALPVHzieNh3WEflT9SYaIbwuQFHOfxFIrW8r7K9sfAaaedZoccckit5oc5y/WlUg/ssMMOmXISr3Wc71GmfPGKFJDNXnrppVobCdQuLTwraoOfF/vpp5+u1Sb1MVfo1bTYh/cBtU/zVH3y+R1wwAG1Nmv4odUlfPt9Udv04udHitBn2rQhrzl/rCQebLjhhrW6oxu4Lyhki2oxf/78OuHd33zzzbypB9zJFHZEIfSdJRXHNX/k4e5szz33jER+sXOmzQf6zPcuDzcEaWOFHz7XhTuJm4suLJo20/jpAprSTrC05jz1QAACjZNAmuK47sPa6OebNl/peeQsLlKJX16byvxNbu69RM+3tm3bZopeeumldtlll2V+1/uV3rOcpfXMSTLqylOl55ve2X2bPXu2tWnTptZnes6JgZ+GRaK/jm3WrFmmrMK463Nt/PINcTzJiFAGAhCAAAQg0HgJII6nN7Z+erpi1gzTawk1QQACcQQQx5kXEIBAGgTk4LDRRhvFVrXrrrtGKe/k5NGUrGhxPBS75H0pr8dyWCjo6BxxIZWTntv3xtYxr7zySp3QlknrSlru7rvvjvIpO3Piph9CWx6d4uhCQcsT3Bf+lNPZXwBNcu6ffvrJDjrooFresYUIgDpHYxLHFT6iS5cuSdBlLaOF26OPPrrW9/LU9Rdu9X24OKwDFCJfXlS+KUxoGALVfR+K4/o8ru4wXHZ9/UETiuNqnwvh7fdR4qwf0v+6666LcpPLQsFAC/kSuONMorp2NTuLy4UVbsZQfgx/g4g7NgzBXqgXdTHieDhOEju0sUEecqHp+leUBRduVt7lf/vb3zLFdN/yvQMdiwsvvDDyUFR5baTQZgLHNJx/oYdhSRcGB0MAAhCoYgJpiePa8KQNkaGFO3TzPadDcVz1+Wl3XP2K+KNIK870XB4+fHj0a5rPnEKGVhszL7/88swhcbmq9C6qDYJJ3ofi/g5AHC9kRCgLAQhAAAIQaHwEtEHQRaxp2bJlrfW2QnurjfP++5vWjBTJpqmYHDnkSCLT2pS/EbOpMKCfEKhkAi+++KLJyc6Z1gKV2hKDAAQgUCiB7bffPnJeUKraddZZJ4po3K1btzqpawutt1rLV7w4Ls8SeYvqQeAsV4jGJAPREOK4QmVqN6YzCYUS41w4aeU+l0envI1dHnSFJvd3a8hTXh7zhZqEMglmzgrNH9SYxPG4sNuF8owTx7WhwQ9r/sgjj9TJJa/zaLNCz549a5WN8352bYoTx7XRYosttqjTbO3ukYeVTHnBXfSBQvtXSPlQHJeYqxQLoYmHNoQ4O/XUUzM50eXl5ovXr776qumP2zgL0yLEeT5LVNZLoh/aVaFedV35FrY99PTPx6EYcVzh9SXWO8sXRUGbYfRHvzM/ykUYIn3kyJHRxovjjjsuemnWji/NB23acMJ/uCFAHoi8UOcbab6HAASaAoG0xHH3fhfHrBAPpzjPcb0LL7/88rWq1jvamWeemflM4vyhhx4a/Z7mM6eQOaBNcn5+9FGjRlnfvn1rVRFu1tL3KpfNwvcsxPFCRoSyEIAABCAAAQhAAAIQgAAEIAABCEAAAj6BosVxiTBa2HLmwoSnjVf5lRWu2LcwX3Gh52yIsOoKCe2H8x48eHAkYimEurxBFYpaYpYLuTlnzpwojLQfAlnhNZVLOjRtIHjqqacij13llpw7d27kLdqqVStr3769yTvn5ZdfzhxWaH74xiSOC8Lf//73Ojkxp0+fbgpT7Uy5QrN5mHfo0MHWX3/9TNm4kBQKnb700kvHTk2J2MoP7SwMke4fFBdWXR5UfsjRQud/muVDgTlbCPNc5/RDeKmcn+sq7jhdA074lrfcmDFj6hSTUDxx4sTM5yrje9ZpV7TSGjiTB7c8sZdZZpnEeIoRx0MPP0UB8K/x8OSak/4Odt0r5BEuCz0C5W0vD3HdRxSmtn///pE4rvD6Xbt2jXLEylPc5yWhZbXVVkvcZwpCAAIQaKwE0hLHb7311mgTXJyVIo6HqTWSjEOaz5zwfIp68+ijj0bvnfqnDVu/+tWvot3Gei/104fEbQTTpjg/xU6+9wf3vuzagTieZAZQBgIQgAAEIAABCEAAAhCAAAQgAAEIQCCOQNHieJjXt1DBNclwhF6OOsZ5RyY5Pq7MokWL6nj0vvfee8VWl/g45WHs2LFjprzyJ8prfMstt4yEbHnY7LTTTplw0vLu1kKjH4JbYp+EL98efPDBKDexn7MxX6MKHavGJo7H8dGirMJ7OyuEkeaPn1t8rbXWMm3gyGbDhg0zhdN3dt5552W8vMJjQnFcgq4fSiffWJf7+1AcL4Sba5u7BoppazZP9ZBbmINdDLU5xZm7HgtpQzHieNw9rZBzhlEDfE86bTLQPHYbN/Sz7jsjRoyI8plrw42LVKFzus8KOT9lIQABCDRWAmmJ47lE21LEcW148j3Ek4xD2s8cnVMb9BSN6Mknn0zShKhMnDiud9crrrgiU0fcO65/AqUm0jPQGeJ4YvwUhAAEIAABCEAAAhCAAAQgAAEIQAACEAgIFC2OK7S0PBKdaaFMua3TMtUd5mz+05/+ZEOGDCnpFGGISRfCvKRKEx7sL4r+7ne/i3Iwb7LJJtHRJ598cuRZ7sJQKq+kQoDLE9TZfffdZ5tttlnm92nTppnCShdqhQqYiOO5Cb/zzju24447ZgrlE8dDr+a4cKOuslDk1Xn88OSFjn3a5UNxXN7J8lIuxEoRx3UdKW1AaEuWLIk2LLh83fre95ION/cU0+6GEMcVccDfZON73WujgATx7t27Rzj+7//+LxLHNUYyecbrfuGiFiicusKqYxCAAAQgYFbp4riiKCnyTCFWqjgePnMkjCtNh5+2JEl74sRxvftcf/31mcPzieMDBgwwPXedIY4nIU8ZCEAAAhCAAAQgAAEIQAACEIAABCAAgTgCRYvjoXh9yimnRAJvqSZRSx68fo5s1bnPPvvY5ZdfbksttVRJp5BAtt9++2XqqE+xUULea6+9Fp1bYdTlMbz77rtHv1900UW2/fbb2zbbbBP9rkVQhU32OcyePdvatGkTff/111/XCfu9wQYbmMJuKqSlvEKVe1mhLp944gmbNWtWps+I43WnUCme42FUANWukPjZQp+7nNCuFZMmTbJddtkldl6H4njv3r2jSAGVYqE4Lk+ydu3aFdS8MFRqITmwxS3bfScMIe7ywIZ5y7WZ4dlnny04VH0x4niYh1XX6YYbbpiYl0Ks6/p2ptztSgkgU1QBbbxwG2zUJ81NieYyCQnyOnQpFlTOz2eeuBEUhAAEINAICVS6OJ4rl3m24Uj7maP3Z71HO9MzTBtj9f656qqr2k8//WRffPFF9JzxU6TEieNhTnV5kesdNpshjjfCi44uQQACEIAABCAAAQhAAAIQgAAEIACBBiJQtDge5jFMwwtRXt3yDPdzmYvL3nvvbZdccoktv/zyJWPS4psvLh5//PF2+umnl1xvkgr8XNMS5OQ1o5zDsptuusm23XbbKEe47JBDDrEVV1yxVt5kP4+1vEKVt9yZ8ilLSI/bPCBPY4VTdlbf4rhyfB966KGZ88vrSIu8lWSliOPqR+j97OeGDvup8PkaS2ehZ5ZfPhTHs+XYbiiWoTieq9/Z2hh60mtBfauttiq5S2G4exeC/fHHH894U+skWnAfOHBgwecrRhxXCgXNFWfaEHPzzTcXfG53gB+WVlEwFG1D/ZFpjmmDTYcOHaLfr7vuuuj+qjbIJKwrTC0GAQhAAAKV7zmuzUxu81PS8UrzmfPvf/87s9lK51fko6lTp1qrVq3qNEce5nvttVfm8zhxPExvondaP91JWCnieNJRpxwEIAABCEAAAhCAAAQgAAEIQAACEIBAPgJFi+Nxnsv33ntvHW/mfA3Q9/I0ueWWW+qEUdd3Es769u1bsFdn3HklFCnksBOHVEZe6v4CXpL2FlsmFAHlHT569OioOgl2EsZdDmG1U17iCqUuC0N1h2KucpS7EO1h+5RP+dFHH818XN/ieBh2XO1UeyvJShXHJfj73vnyZlY0hdCef/55O+CAA2p9rGgCLVq0iMXRFMRxicO6FpwpmoPCqy6zzDIlTxGxFnNnCi1+/vnn22233Zb57JFHHskIyIWcsBhxXPWHOWcV9taFQi/k/Cp766231spBq3mnCBsbbbRR5pp39xRtAlKECmf5vPQKbQvlIQABCFQzgUr3HC9GHE/zmRNuLMuVEkbh0vW9szhxPIzk5D+34uZR+J5FWPVqvtpoOwQgAIHiCGgNSvf/1q1bR2nN0vh7sdCWqA3fffdddJgixa255pqFVlE15bVO9+mnn2ba27JlyyhCIQYBCFQugaZ0j5o/f34UMdXZGmusUXK02cod2ewtq4RnYzVyq4Y2y+lLa9bdunWzQqKsVkPfaGPTIVDp96iixXENYb9+/Wp5eSv/rS++JBlmeTcqD64vYOk4eUFKICs0f3Gucz744IPWv3//WkXmzJlTby/4YQjJXr16ZfL/una4HMLq//rrr5/hIoFLHjrO5CXu51rWdyoTWriYqe/rWxz/8ccfI7HON7VdYeYrxUoVx8Ox1R+Nd9xxR60NCwsXLrTDDz+81lwPxzXk0RTEcYX+d+kEXP//8Ic/RGkHmjdvXtIUCSMsjBkzxoYPH57Jl1rKRo1ixfFwk4w6OG3aNNt6660L7mt4fcsTXd77irYxbty4qD7n3a8FJD8qRzF51gtuIAdAAAIQqBICjVUcT+uZo+eH3vv/H3t3AmVZVZgNe+OIAVpiQPNJI8Qp2oDz0NjOGqA1g1ODYzRMzgqCoqhAYxxBwaWiQUGc03RrBEUE46d+CrQYcQAaZ0EbUcGorZCoif7rPXrrP3X6TlV16lbdW89eiwV0nXvO3s8+99zq++6hU3ptp5S/wOd32WuuuWbq2G7h+K9//etqYFh9//JsHbJ69eqt7phvf/vb5ZGPfOS0PxeOj8kbSzUJECDQksA3vvGNku9POiVbemQCwI1vfOOWrjDcaToDjztH53NvUkvz77v5naL+u8Cktlu7CIyzwFJ6RmX71c62gemzTIbptqrVOPfnoLovls/GQfX085kL5Hvi5GWdkomj9QHoMz+jVxAYvcA4PKPmFI6fddZZWy3Lm/0Nd9ppp6G1s9x3lv1uluc///lT+2v3O1n2Kx5mH/Lf//731Zd19dm92dswsydHVTKz/nnPe97U5RKg5kvB/DvheEoefHkApnR+nv9u7jWdYKu+13L+cphZRfe4xz2qmfjf+c53yv/7f/+v/PM///NWzUvwmCXcd9lll2rk0fbbb18dc8UVV0z7krLzwsz8PvLII6fOk9fUl2nv/CB/ftOb3rQr53777Vedv14yCyhLXXdG92UkSWdkcpYPH2WZazievZ1XrVo1bVWC9F/6OysCZLWC9773vVsZNJcQz0CC/ELXKd/61remzQxOwJn3Rqfky4A2B5AMMs9e6hmd2Sm5v+r7j2af76xy0Cm77rpr1b+DSnPp/879n1UP0r7sZZr7NM75wj2Dau52t7tV5v3KL37xi2mj6+rvqbzuFa94RTnkkEN6niLvpXr76gfmPZjtEDrlaU97Wsl+rPWSrSD22muvaX+WQODBD37wtHslB+Q9mffE8uXLq/d+nmt5T+QLlx/84AfVe7C5j33eU3lvNUt95YL0UQZvNMsll1xSDUJSCBAgQGDhl1XP7wn5fatT8jt2fm/olPw+kW1ZOmXHHXcsd7zjHQd2XVufOdn6KJ9T9ZLVl/bZZ59q5l5+ngF92d6jvkJTjs/neH6Pve1tb1utntKZZXfyySdXv7vWy8te9rJqNmBmBWb/8oTyuU7znMLxgV3vAAIECEyUQD5f6p+LaVz+DpnPjGFKvg/KZ1WnJEDJTOiZluYqYIs1HM/fgzM4PyV/h8zfMWdamgPNheMzFXT8YhP4yU9+UvKdW0q+q8lqnZNWxuUZ1Ya7cLxUf/eay2djG/1QP0dbn7Vt12vczveHP/yhykvqW7KmDfn7dr4fH6bk+/P69/d53s1lu+K2zzdMGyblmKVsN9dn1CieKXMKx9O5+aKuPjskM4SzRPowgVhu8l7h+LBvgOyBOGg5rSyn/tKXvrRk+eJ6GfXMyW5Laqc+9f3asyRy9ldvluwNnD2CO2Xz5s0Dg8HOsQnOMwM3y3c3S5Zl7gSMzV8shu2DznEZeNCr3zdu3FgNThimJLBLcDfKMtdwPHXNUt25z4YtmQWV1RHqJe+lbisA9DpnfWDFsNedy3FZ/nwme2Rn9nd9v/le1857NHup1kd9DqpnZuGvXbt20GHVHqbZ27Rbueiii6ov63uVDF7JXy5mW/Le+8xnPrPVy7ut6DDoGnl+JCyol+Z+sp2f1ZffbS5b3zlmsX6RM8jBzwkQIDAfAgs9c/zss8+eNvhtUBvrK4QMOraNz5xef0HPtZsDz/JnWR2o22dv9g4//PDDqyr//Oc/rwZ1DlPyu2E9IBeOD6PmGAIECEyOwHOf+9ypLec6rcp3J83Byb1avGXLlmmDlu9zn/tUK73NtIxL8NT8fiPfVTQHuQ1qu3B8kJCfj5tAfj+tfy+ayQZzXa1wsRmMyzOqDTfheClz/Wxsox/q52jrs7bteo3b+TJRKxOt6quspQ0XXHDB0IPdmt8B5O/g+bv4bEvb55ttPcbxdUvZbq7PqFE8U+YUjueGzN7Rz3zmM6fdm5k5mmW+d9ttt4H37HyH4//93/9dzW4/77zzptUlM5OzxPIoyw9/+MPywAc+cKtL1r/gzF/Quu1VnX2Sn/zkJ097bcL++ozuXm3JrNH8U5813zl2VOF4rnfssceWM844Yyjyb37zm2Xbbbcd6tg2DmojHM8Xxxm9nnYOKlm1IPvNN/caX6rheLzywMsXHNmrdJjykIc8ZKsRkt1ed/7553edHT5oSfuca77C8c4vNZm53hwJ2Kvt3QbzZARVtl9olvqKBF/4whe2GqCw55579hwwMIy9YwgQIDBpApMcjrf1mZPfzTJTfFDJiiz5/abbYM96OJ7zfPGLX6y2/2j+xb9+jXxm5br18wnHB/WCnxMgQGCyBPKFcP37kAzMyqqFt7jFLYZqaPPLtdn+fWhcgqfm9xszmWXfARWOD3VrOWiMBJrheILy5ndyY9ScrlUdl2dUG87C8T+GpXP5bGyjH+rnaOuztu16jeP5MukpK611yrDfgXeObway3bY6m4lL2+ebybXH/dilbDfXZ9QonilzDsdzgyZ8zvKP9ZK/rGRmbEbk3ute9yp3uctdus7wnms4niUom8uqZ0ZklprIX5YyazNLEtdLwvvMZhn1ksK/+c1vyp3vfOet3tP1B1Rmsj7xiU/c6phe+4RfeOGF5Y1vfONWe7bnBJmRnqA0i/XBAAAgAElEQVQ9S4119h1unrgejj/pSU8qOd9sS7+Z4/WHc5bH7BbU16+bQC9Lco+qNP/ymL8INvfBHrYu+QU7+4BktnyzZGWFQw89tPRaNj5LiM5kmfRRzxzvtUR3L5thZ47XX5/Ru/klIDOlm8uo1o+LUwLjQSXvuxzb/OL9DW94w8DVDHq9Zwdds/PzXjPHOz//3e9+V/LeTpjd3HageY1ez4DsM958xtW3t+g2KGfUW0oM6+U4AgQILJRAW+F4fu/Ms79bqe8B2Pz8/tSnPlUOPvjgoZs/k5njbX7m5PfubEmUz61mye/V2dYj24xkZZxuW/s0w/Gc48c//nHJyjTZO7Zecr5sQ5Kl1hOi17eVEY4Pfas4kAABAhMhkIHo+Q4hK61kSfR8Z3K7291u6La19eXauARPwvGhbw0HLiEB4fhkdbZwvJS5fja2fUe09Vnbdr3G8XzZAiITUvP9Qr7Tzve4+f1n2NJ2INv2+YZtxyQct5Tt5vqMGsUzpZVwPAFPAr90dq+SL9LyRp7v0muZ4c5180VbArWZ/EVqvuvcxvmzN/GPfvSjao/i7PudAQD15aKzt0766WY3u9m0fwYtSd9G3bqdI0vyZ1/03OTZAytvlixndKtb3aqqd6+9y+erPvNx3szqTTCZL32zn1m+LJ/L/h7zUcfFfs4bbrih2nM793V+MchqAtlfZZdddpm45a9yv+R9mi0T0ta8LzITIu+HLKfeHAS02PtO/QgQIEBg8QrM9TMnv8dltZv83p1l37KPePYz7fxemc/t/I7X7ffOfL51K6lTPvN/+tOfVr/H1n9Xz+8DGUCY3xUzsMDvU4v33lIzAgQILEaBtr5cE44/fTF2rzoRGEpAOD4U09gcJBxffF3V1mft4mvZ+NWo7UC27fONn+jsa8xu9najeKa0Eo6niZlhmRnBmfHZrRx99NFbLb8+e5rer8zsy/3226/rAZnJnlks+cJNIUCAAAECBAgQIECAAAECBAgQmGyBtr5c6xeO/+IXvyjXXnttNeB/1KsUNntvvmeOZ+JFBnZnUHdW/JvL5Ib/+Z//qQaIZ+BbBtv1GkS3kHdoBgPmnwzUzz8LNclkkMGvf/3ravBiBtfvuOOOgw4f+PO5ni+DKa+++uqy0047tVKfDMhMP2QQZiYRZMDkTMq4heNZ/TCToNLOGGbQ6aAyqmdU+iDPu0xcGXZ7i351zyDZTCzKPZO2ZoLRoGfBKMPxtDeDdTNQdyazd7u1OW6ZIJbPisX4LJnL872tz9pB9/k4/Dyfj3n+ZZLXQny2tR3Itn2+Zh+2/UyZy33c9v0133aL/ZkyF89RPFNaC8c7Dc1s4A0bNlSzs/NLWadkWe/jjjtuLh5Dvfazn/1sefrTp49mfdzjHlfNWs/y4goBAgQIECBAgAABAgQIECBAgMDsBY4//viSbUFSEhhmyfNOyZZtCTxTsrVcttvolKw6WN9S6rzzzpu2KtiZZ55Z3vKWt/StWAKFLDXaq+SLyGOPPXbaj5tbUfVbTTDbA3ab+NEteHrve99b7Qta3xIsYdajHvWo8opXvKKVUHBQLz31qU+tVl/plNSlvq1Ywvp+QeJb3/rWalu+eum253j2PM32ZNmmsF7uete7Vlv67bPPPoOqWv08q8FkdclLLrmkfO1rX5t6TeqYc+X7u7RpoVZPi18m/6Rul19++VZbtD3gAQ8o+Z7xMY95TNeBAbl36lvQvO1tbyt3u9vduto8/vGPr1bNSckqPB/60IemHffpT3+653ep559/fhVM5n2Y92P9Hk+f/+M//mN53vOeNy2Aa/t8zUblvR27Sy+9tHzve9+b+nHqs9dee5VDDjmkPPCBD+x5n8T+gAMOqCZgpbz0pS+tvst985vfXP7lX/5l2usy8Sn3ybOe9aytQsZ8N53voetlJs+AvC7fL9/4xjce6p5u46CEOWeccUbJNpPxa24zmG0an/CEJ5Q1a9b0HIAzn8+oLPG8fv368pWvfGVa3fIszbLPeQbsvvvuQ1PkXslnQ/6d7Smb5bGPfWzV3l73y0zC8ebnSra6rG/ZlGsfdNBB5Vvf+lZVjX333bd6fn/4wx+unu/1eyftzWdE2jvMdqAJwnP9PDezfWT92Zznbp4nqcugwR5tfDZ2jHOPZeuqTvnABz5QMkBhps/3+fqsHfomGnBg27+n5P7IfdKt5Lmf++Ib3/hG9ftHc6vV3K+pT35fapbm70Xdzp+tX9M/vUru09yvnZL7rPl7Sb+Be6lDtkfrlLbP163ec32mtHUft3W/jcqurWdK2+1u4xm1EM+U1sPxDmw66rrrrqv++fnPf16N6pvJh+RsOygjCr7+9a+XHXbYoRotmX/mMop1tvXwOgIECBAgQIAAAQIECBAgQIDAJAq84AUvKGedddZU07773e9WAVVmAt/hDneY1uQrr7xyahbgve51r6kvbBMGbNq0adqxzVnPvezqYXDzmATWr3zlK2fNnrCiGVLmZM3gae3atVuF8PWL5ovohMwZIDCfZbfddpvT6TPB5b73ve+0czTD8cMOO6ysW7du2iSY5kWHmRRzwQUXVEFQM/hrnit9cOKJJ1YzU0dV8j3mv/3bv1WhWD3A6nX9BFsZWNAcaJHXv+9975t6WTff/DDXq39PmrC3GagkLG0O9OicOANEEiw+5znP6Un08Ic/vLz73e+e+nnb5+ucOMFa3ne96lqv4DOe8Ywq9O424zjPkdS5U3JcwtgMoulVEszm/Vo/X79VRYe9nxLujyocTxtf/OIXl29/+9sDq5fnSgYQrVq1aqtj5+MZlfdCnnV5/w8qr33ta0sGR/Wb9Z3Z4al/Bo0MUzIYIKFiZm3Xy0zC8SOPPLIK9jvlNa95TXnKU54y7Xx1uwwEyiCdBOC9Sj6/8t66//3v3/OYzIY96qijyrnnntu3qXmGvOMd7yh77LFHz+Pa+GzsnLz5fD/99NPLy1/+8hk/3+frs3aY+2KYY9r+PSWDpTLwrVtJcJ3PrX6Df/LezXO7ufpAc1WLbufPIKH3vOc9PZudQUKD7rN+Znn+ZDBVp7R9vvq123qmtHUfD3MvzeSY+bRr85kykzYNc2wbz6iFeKbMWzg+DJpjCBAgQIAAAQIECBAgQIAAAQIExkug+SVYZsRlcsIPf/jDrb4c/vKXv1wtldsMzhNqZdXBelnMX641g6eEmfUVE7v1YK+gvc3eHkU4fvvb337aTOBe9U8Adb/73a/rj7ut9NjPITNlM7NsVEsPZxvGd77znTPqmrh84hOfmBbMjiocT6CVQGPQQIO8x/JeS+kXjs/mfB2sE044oRooMGzJip8JPJulGY4nKM9MskEl4Wd9JvA4heNZASAz6mdasgrAHe94x2kva/sZlQEcmcGd8H7YkpUDegWI+QzIqgv1FSOGOW8C8gyWqZeZhOMPe9jDpj2/srLDve997552efZkGf/66ge96plnVFa8aJa0Ndu+DjPgofPaBKd5pnQrbXw2ds7bDBWHfZ81n+8LEWQNc790jmn795R+4XiC5QwE/PjHP963ihmEkFna9bKUwvE2nylt3cczuaeGOXa+wvG2nynDtGUmx7TxjFqIZ4pwfCa97FgCBAgQIECAAAECBAgQIECAwBIXaH6BlZmdd7nLXcqFF15YzRysl044l32q68Fpt8AjIUxnadv6OTJzsT6bt9/M8QRsWZa4UzJTMTNQOyWhdv3/m12ZwGnPPffcqoebwVMOyOzBnOuv//qvS5ZFjktzlmtmXK5cuXLe7piPfexjVZDTKZn9nCC6UxK8dWtPfp6lyxPgNPczbn7p3DnX3/7t35aEUre+9a2rJcczA7PeL+nf+gzNzut6fambQKETBmXWdJblrJcEYrlP5rv0Cj0yezTLgccns96zjGtzVvmrXvWqagnzTmkzHM/y4J0lp3PPv+lNb5q6TpYUf//731/9f4LhLOkb51y/PmgjS+Um+E9p+3w5Z/bFzpK/9ZKZsKnfbW5zm5K9y3OPNmfFdwsCm+F455yZcZmZvjlvlqHPrONmP6QPt99+++olmV3X3HohX9zXXfL/vfbLzp7to9iaM2140IMetNUAhzwvMrAm77M8E//93/99q2MSqJ1yyinT3Nt+RmXgx7Of/exp10jdcu3Mfs0zPaskNJcdT3DfbY/0bsFHnqFZPj2BdPrt85///Fb3SirQDKGHDccTcCccr5f6vdL58252+VkGXmSViLy3slJtc8uNPCOyTUSz5DmcFTfqJSF6nqFZ7TbPkgyMqJf8rNeM+jY+GzvX6vV8TzvzeZD3bVZ1ede73jWtfs3n+3x91rb1vG/795Rf/OIX0z5bX/jCF05VNX2XZ07e07mfH/GIR1RLqGewyOc+97mp4/IMyz1eL1/84herYL1eMujp9a9//dQfDZo5nufrj3/846nj87lRH+yVARC5V3uVvK+zN3qntH2+znnbfKa0dR+3db/Nt13bz5S2293GM2ohninC8bbvBOcjQIAAAQIECBAgQIAAAQIECEywQHO2Y5Y1TpiTIPglL3nJtJZnCd0EGc0AsrmMZz+ufHFbD7b6hePN82T7vQScnZKguLlv9jBd1QxPEthlGdMECfWSoLT+ZXiWmj7wwAOHuUQrxzRn72Qp1pkGfd2+dG7Ozk1lsypAZoLWS30Z/c6fZy/U+hLFCcQTqmWf7XrJLOH6XtEx/tKXvjSvy1tnSfC0oT47NgMoEmp0Zlx36phtIxP6dgLr7D+bwRH1ILDNcLxu89WvfnVauJFQMUFMs38T4j/5yU+eemmWiE5I1Cxtna+5ZPXq1avLG9/4xml7KMc4f1afXd4tVOwWjqcPsnx1fa/ehEAJe+oBed7TvQaBpO3N2Znpw4SUC1myFHMzDO02ICSDX3KfdQaP5HmY52rC83pp8xmVwT4xrgffqcMzn/nMalBNp2TwQ5b2rz/zEuo98YlPnFa3a6+9tuRerPdZPjOyt3HzGZrBTdl7vnNsN5Nhw/EMKMme9Z3yyEc+strrvFmadnl/JchrbhHbfEblPGl7/bjf/va35cEPfvC0z6xcN/d/fUBGwsvOwJVOfXLNfsurN+s9m8/Gbs/3fG7ls6q+Uke3tnZ7vnfq1NZnbVvvyfn+PaW+akvneZwBEYcffvhUE371q19t9VwaZsuG5io8g8Lxplmz7zLIpd+gwEHmbZyv7WfKfN3Hgyxm+vM27Eb5TJlp+wYdP5tn1CifKcLxQT3o5wQIECBAgAABAgQIECBAgAABAlMCmUH3d3/3d1P/3wnAE4pkNmNmRyXYyOynTqjaXFY7QUH9HP14F8OXa83wpDljuFP/T33qU+Xggw+eak6vJaTn63aaj3A8IXVWBdh22223qnZmGmYZ605JmN0M7ZoDBvotv55BE/UZ5BdddFG57W1vO19cVd3ThnrpN9s/s1sTgCS8a74u5xhVOJ5r5T575StfOa3uze0LMhChOYs6L2iG47M5X/NaCYgSzteD7E7lmsFItxmU3cLxbktg55xZlr0ecvZbzjvHL8ZwvPlMyQCS+mzUescmIM8zJzO2s1JAt+0G2nxGNQe+JMj+4Ac/2HU/8e9///vTBuBkAMmrX/3qafdlcxZv7pU8UzJLv1vJYKoExwlssypJswwTjifITSBfL53Pqub5mnZHH310NRCgW8lqHPVZ33nP15fGzzMws4frpdtzMT9vtiN9m8/MYctsPhuboWL64uKLL55aeaF+7YT69aXhe7Ujr1ls4fh8/57S3NIkqx9klYdmyWdFfeWMzlYz/fp4EsPxtp8p83UfD/veG/a4NsLxUT5Thm3XsMfN5hnVOfconinC8WF70nEECBAgQIAAAQIECBAgQIAAAQLVcrr1JdITVCUEzgzCzODMF+o33HBDFX50lk9PIFr/0v/ss8+ulqsdpiyGL9ea4UlztmCnHc2wdd999y2nnnrqMM1s5Zj5CMe7LYHfqWynzzv/320P3nr/DZq531yaf8OGDeW+971vKzbdTpJl8Ot7wPaaaT1sBUYZjp911lnlHve4x1ZVS3vy/ktJgNMMKvPn3cLxmZ7v6quvrlaM6JRBsxMzS7i+LHXC8HrI2wzHMyjjkksu6UrfDFt7DVbpvHixheMZOHSve91rqm0JKBOA5N+zLW0+o7IdRj2oH7QCxeMf//jyH//xH1XVc09kNZF6aQ5myCzW5pLtM2n3oHA8s3OzskN93/CsCJHn9s1vfvOtLtW067f/d5aNr68GktUujjvuuKlzNpc/7rdcegZ/1Gca91qmvZfNbD4bm6FiVs5oLhffuV5z/+Ree6zn+FEEWTO5R+b795RmON4cJNGpa5bdz+CDlJve9KbVagkZ5NKvTGI43vYzZb7u45ncY8Mc20Y4PspnyjBtmskxs3lGdc4/imeKcHwmvelYAgQIECBAgAABAgQIECBAgMASF2jOGO3MduvMMssX6gnnEmBlWeR8KZqZ4ieccMKUXJaxvtWtbjWU5GL4cq0Znnzzm9/sOpO6ucftJITjzaVi652Wn+WL205pLgucGcPZx71Tcj80ZzvXz5dQoB7KJbRpLt0+1E0z5EGZcZwBBZ3Sb/buMKccVTieEDWza7fZZpthqrXVMd2WVZ/p+bJX7v777z917sxkf9SjHtWzPplt+453vGPq59l7NzPIO6UZjmcf9SzJ3600t3DoDNDpdfHFFo43Z1E293OeTae2+YzKDOssZ94pGeCz00479axWjs3AlpRugxqaq0ck2GruVT+TNjfD8QzsuO6660qWZM9nS32Z93ob8jzuVpp23/jGN3ruSb958+ayatWqqdPss88+0/Z3ThiabQQ65WUve1nJZ2K30txuJAPGMnBs2DKbz8ZmqJjnbX3bi/q1Bz3f68eOIsga1iXHzffvKc1wPIMm6p91M6lr89hJDMfbfqbM1308l37r9to2wvFRPlPabv9snlGdOozimSIcb7vHnY8AAQIECBBYEIFNmzZVo5U7S1ZlCcZBJX85HrQH5Omnn16dt1/JfonNpdOax+fLoNSxX8lfrPMX836l085B9Wnu4dg8Pm0aVJ/UZdmyZYMY/ZwAAQIzEsiXivmnXprPtjx/8kzsV/JFeL5UrJf6F635y3hK598zqqSDCRAYKFD/wivLhiZg/Ku/+qvqdfnv//qv/ypr166tZkLmPX7MMcdU+yOndP5s4EX+dMBi+HKtGZ702vd8EsPxfsHjoPCk29LGw/Z7jus1G28m5+h3bHMZ97mG8aMKxwfNwB/k0wzHZ3O+5moQg67Z/HlzpnozHO83sGTcw/HmjOEMMqgPHpqpZY5v8xnV3Et+pvVpPh8zSz6z5TulOTBipudvhuODXp9lz/Pe7FWGtcvr89lWX+r9rne9a8mM6k5p2mWm8GMf+9iul/7pT386bWWMUXw2NkPFuTzf640aRZA1qJ+bP5/P31Oa4XiWcR80I3zY+k9iON72M2W+7uNh+2jY49oIx0f5TBm2XcMetxh+f+9XV+H4sD3pOAIECBAgQGBRCeRL1iyzmGCkvofTTCuZffF6Bcm5xurVq4c65bnnntsz2G6OLu93wrbqk1HzvYLt5l9ce9Unr0+7+gXtGTXfDLma58vrc55+9cmX6oPC+mFmXnULy5r1yV9a8wV9v3ZlD8P6XnLdjHbdddfqPP0GEGRwRZbr7PX61CGvHzRII/f6MM6DBmm0dZ5hBnsME26O43mGGQwzjPMw/d7v/uncU3vssUd1H/Yr+Qt1vmTpV/K+GLTsb56Hg96ng54bwz5/Utd+z9U89/PcGKakz/JsVQgQaFegvo/mwx/+8CoQ7yy1ni8tEyBkudmUfGmcELLzmTiK2XGd1rb1hf2w4Ylw/BMln02dMtdwPPsOP+1pT2v35q2drfml82tf+9ry5Cc/edbXGzYcb85qzJLP/f5O0wyzH/rQh04NNplNZds431zD8TwP6iHjUgrHm3YJezOzci6lzWfUXIKsbgFvMxzP3szZo3m2ZSbheOqTz6Bu+7R3rj+sXY7P/u+3v/3tp6qe1Q8S9ndKlknP4IdOyazPLJferTSX188xvQZedXv9bIKn+QoV2/qsne090e118/l7SjMcz2fdbFfyaNZdOD5dpNszZb7u4zbvv5yrjXB8lM+Utts/m2dU27+/92uTcLztHnc+AgQIECBAYCQCg0KajOAeNHI3gUl9ybNuFc8o80EhaXO0ePM8+YvifvvtV7IvX7+yww47VMvR9QpbZxKytxGOp679wqm2Qq62BiGkvs2/pPbyztJ/2T+zVxn2PJm10mtWalvtmsl52hpc0a/fZ1KfUQwamcn7op/PTM7Tlk9b90+/88ykXW2dp43nxi677FLOPPPMvoNYjjjiiK0GjXQLFvJsveyyy0by2eQiBJaSQN6DGQyUklmnGaDWWf46K/gkHE9onpKltrO07Ne+9rXq//vtcdrNcDF8uTZseCIcnx6ON0Pg9O+we83n2Be84AXVHvbzVd72treVN7zhDVOnz/LHuVdnW4YNx5uh2EzD8QyIHPT3mH5taIbjszlfc2nwBBgzWVY4S6zf9ra3narmUgrHsz939unulNnM3G/2b5vPqFNOOaW8/vWvn7pE7s9b3/rWQ70tsqz6u9/97mnHPvWpT50WIOfnnc+HoU7aOGgm4Xhemln59S0AZmuX1zXfu/l8yu/QnZLVJzJbvFP6rX6R5dvrS70P+l6hWe/ZfDbOV6i4GMPx+fw9pf59QbetBGZzX3deM4nheNvPlPm6j+fSb91e20Y4PspnStvtn80zqlOHUTxThONt97jzESBAgAABAiMRyC+Imd2bmSn5IiD/ZCbvpC+f29Zy6N2WNW52XEL6YZZ57zUzunO+DELoF0TnuMyeGDQzOvU56KCD+t5fw8z4Tn2OPfbYvjO+hzlP6pMvJfvNHM/gil7L8mfVg1/96lfV0tHvfOc7+7arPuq914HDfJmSQRpXXHFF32sllMzSgP1m+g8z2KPN83T2MOxV8Qc84AEDB58Mqk/O3cZ50t/58m2Qc/or4e9s75+ORV4/6P7JssaDZnznPhz0/hrmfZov+AY9N7o9x9rexqF+jWGeZSP54HIRAhMmkM/AzIhLyRfD2Uc6S2ynJCBOKHrnO9+5+v9/+Zd/KUcfffTUsrr5wjqh57BlLl+uNZfAne2X2G0GT8O2ezbHvelNbypvfvObp146aEBgt2u0/aVzZy/6zrXyGflnf/Zns2le66/JwI1nP/vZU+dNSPmxj32s3OhGN5rVtZrheD7r73//+291rhjk96lOmWk4PtdluJvh+GzO1wwJH/SgB5X3v//9s3LLi+YzHE8QnUC6U7In9e677z7rus71hc3ltHO+DDbot6/3oGu2+YzK3+8OPfTQqUseddRR5TnPec6gKvT8eX1bjRw010EozXA84XcGZ2RwfEL8fB7VB0zmZ1/4whfKrW51q651HNYuL27uE9587zRXBej33mo+fx796EeXhIjDltl8Nrb9fO/Uta3P2mHbPsxx8/l7ymIOx3OvP+UpT5kiyncx+V1gtqWN87X9TJmv+3i2Rr1e14bdKJ8pbbd/Ns+oUT5ThONt97jzESBAgAABAgQIECBAgMDYCGTwQGa/5kuj+uydsWmAihJYIIEPfvCD02bYvvCFL6xC2SyVmyVzUzpfir3kJS+ZNju33zKz3Zozly/Xcr7mkr6Zwb7jjjvOSG7Y8GShZ44njM0S9p3yzGc+sxqYMJPS9pfOz33uc8vHP/7xqSpkyebnP//5M6nSvB3bDKlzodzHj3nMY2Z1zcxCz2z0Tum133AGtmXJ+E4Zx3A8dW++L/Ilfmd7hZkCzmc43lyWNlvXPOIRj5hpFVs7/g9/+MNW4fyTnvSkanuK2ZY2n1Hf/OY3qwG8nZJBRRk8O+zs8WYb3vve91aBdb3MZYBCMxxv7vfcrH+u28+3addvFbbMqK8H2C960YtKPv86pdvWP732o27OqM9AnZe+9KVD3wKz+Wxs+/ler2wbn7VDN36IA+fz95TFHI5///vfL9l6o1OGGUTfj7ON87X9TJnP+3iIW2voQ9qwG+UzZeiGDXngbJ5Ro3ymCMeH7EiHESBAgAABAqMTyLKcGVma5cn67Qs9uhq5EgECBAhMqkBmCWYVh5TMns/M134z+ifVQbsIzFSguVRkZo1m39W//du/nQoHs+d4jsuXtJ/97GenLvHRj3603POe9xz6knP9cq25AsvTn/70ahn4mZQ2g6eZXHemx3b7EjX9kn1xhy1tf+ncnDGWesQ/wdCNb3zjYas1L8dlhYPM4P72t789df7MMn3rW986q2Wfm4MT7nOf+1QrxdTbmRnXf/M3fzO1kkIuPK7hePoxKy7VS6/Z8oM6cD7D8QzIqS9Dn7Do7LPPLje72c0GVWvefv7yl798q5n2+bMDDzyw7/7YvSrU5jMq74s8y+srIWXgU0Lu+lL4w+JkH+0HP/jB0w7P718ZiDKTpfg7JxgUjneeMc17s9dnT9MuA1ee9rSnbdW8H/3oR9U2D9dff/3Uz973vvdNa1t+dt/73nfaMQnmX/3qV097Dpxzzjlbzcbvt8VRN+vZfDa2/Xyv16uNz9ph76lhjpvP31MWczj+29/+thqoWC8Z0JGVCWZT2jhf28+U+byPZ2PU6zVt2I3ymdJm23Ou2TyjRvlMEY633ePOR4AAAQIECMxaIMvg5i9UneV/E1BklL9CgAABAgTmSyBB0sEHHzwVkOcL0nyBPmh5+Pmqj/MSGBeBbjNuU/fMoMtMupQEDN22frjkkkuqpdjrJXts/uQnP+na/PrevDngwx/+8FbH/dVf/dVW5+wc9JrXvKZa2r1eMrv1yU9+chVKZonvDJLJUsc//vGPq4EyzdCszeBpPvv4uuuuK/e+9723ukR+r95rr73KzjvvXC15/5//+Z/lmmuuKXJdIWEAACAASURBVLe//e3LAx/4wGnHz8eXzlmiubkVTwL7PH/vcIc7VIOSbnGLW5Rf//rX5Qc/+EHJbKv0e7ZNmu9y8cUXd90CKKuJxCb123777UuWDc59ErdsB/TEJz6x8quX5l7S+VnutdxTWfI5IXxmkycgr5cE8llhIUt9J1DP/ZfZpp3yrW99a9pKDRlwUp99n/C934CTfEHf5vk69Up/JfRstidb1WQp3wx0TtuyTP0vf/nLkpA0/ZvVA7bZZptpBvMZjn/605+uQud6yXs/S4XH/M///M/LDTfcULUjAWhmleeZMp/lF7/4RbWlTz1ozfUSGv/DP/xDdd/l/fqb3/ymOibPpquvvrrq5277dbf9jMrs6QTkzZJ+jU/8bn7zm5ff//73lVves7lvEwR3KxlwkuXPm+UZz3hG1eZ45z7O++znP/951da0OQMGmoNohgnHc7/tvffe03wzKCKrWNzkJjeZVo2mXX6Y9+zf/d3fVYMBfve735WsOJLZ7/V7PfXO+Zr3creZ8umz9OtNb3rT8pWvfGWrz8aHPOQh1eCDZmn7s3E+nu9tfta2+Z5r8/eUPD/zHO2U+u8lecY1+y7b/+UzrV9J/Zrv/xyf91KekZ1y97vfvWRrgmbJn+d+6la6baeW927uw9vc5jZTz+T83pOS5f/7lTbO1+YzZT7v4zbvwZyrDbs2nyltt6/tZ1S9fm38/t6vvcLxtu8G5yNAgAABAgRmJZBwor4/8zD78c7qQl5EgAABAgQaAhmclc+gzv6UCWkuuOACM8jdKQT6CDT3G+4cetJJJ5XHPe5x1f9m/+EEG82SgKxZEpokPJlt6TcrKkFwQs5uX0J3u1635X7bDp5m285hXpfZmNl7fJjyhCc8YdqM2rxmPr50TsjVbe/tfnV8xzveUVavXj1MM+Z8TJaiz4znmZS3vOUtJSFdvWS57JjW97fuds4E4An/ErQ3S5YCTuieGVfDloQznQHG3V6T67R5vvo1mrMzh6lzfBL81st8huPplwxmqO9D3a+e2WolQdJ8l4985CMzHgyeFRcyC7lZ5uMZ9drXvrbkfThsyX37mc98puvhCfkTEmXriZmU9FmC+HoZJhzP8R/60Ie2WqY8qx1k9ZB66RaOD1PHd73rXdUqEM2Stibs7vb+7nXej33sY+Vud7vbVj9u+7NxPp7vnUq38Vk7jPuwx7T5e0pWx8nAnmHLpz71qXLnO9+57+HN+3jYc3eOy8CuBN3dSrdVZHqdP4MVM2ixX2nrfG09U+bzPp5pPww6vg27Np8pg+o705+3/YyqX3++nynC8Zn2tuMJECBAgACB1gXyRU79i6+M6j/22GNbv44TEiBAgACBfgIJ9TKjLyVflGZ5S0usu2cIdBfIbMFuMysT9nRmLn/hC18oT3nKU6adIDPtspxss8znl2u5VoKH5z3veUN1Z8LJVatWTTt2PoKnoSozi4P++7//u5oFlpmOg0pC2uZM/Pn60vnKK6+sfsevL7Hfr34ve9nLyrOe9axBTWjl55kRmFUOsmf4sOWoo47aalnkvPayyy4buHxt9uZeu3ZtdWyzjFs4nvpnQNkrXvGKoYPPbstbz2c4njrm/JkJPMwgmVGuYJa9vI8++uitZt/3ug8T0mXgUbPMxzMqq0zkeZDZe8O4dZybM7M7dc3KFgn28zkxbKl/pnReM2w43m0p55yjGSo27TL7PcF6v5L7PStfNGeNd16T2ZTPfe5zBz6HM7Alg7vqe0TXr9v2Z+N8Pd87dZ7rZ+2w98Uwx7X5e8q4hePxyeftGWecMQxVyZ7g2267bd9j2zhfW8+U+b6Ph0KbwUFt2LX1TJlBtYc6tO1nVPOi8/lMEY4P1cUOIkCAAAECBOZLIMF4llLPrL2UUY3Sn6/2OC8BAgQIjLdAworTTz+9akS+LD333HPHu0FqT2AeBbp9WfzlL3+57LTTTtVV80Vec8nuLCub/X+bJbNw83vgbMsw+2lmSesMgkk42y/oyczrxzzmMdOqUg9P+s3SzWzgLJXcKY997GOnBt3Mtm2zeV1CgQxCyAzyfjM1u+113fzSOYFxfl/vVhJgJ8ztlMwabS413nzd+eefXy1z32tJ2c7xCZay1PgoSwL8fNF70UUXDQwrs/1TQtRuJfd+bLLfe71kKflXvepVVRCWGcDNn+fYeGYVrX7LpDevOWjmeGZftXm+bm3O0tPvfve7q+Czvld1t2NzXHNp8GY43u+9c9ZZZ5UXvOAFU6fud4/Wr5+lzPP8STjfXAq+flzC0de97nUju/WyPH3qldmmg2ZWZwWADN5rlvl8RsUqz8Xcr/3ql/swxzS3zWjW9cILL6zOl2WW+z2LewXH6Z+co1PynUKO7Va+9KUvVas51EtC7SyR3inNcLzzWZH+yH/XSwZ45bXDrMSQ90TnfmvOOk598xxIaNZr9m+u2/Zn43w/31PnuXzWtv2ma+v3lG5LY/er6zAzx5v38Uzb3m/meOdcWdnj7W9/ezUgpF/JYMZhtjFp63xzfaaM4j6eaX8MOr4NuzaeKYPqOdOft/2M6nb9+XqmCMdn2tuOJ0CAAAECBFoTaO4xLhhvjdaJCBAgQGAOAkcccUTZsGFDdYZTTz21ZN9ZhQCByRH43//932oWaQLDhMiZyZR9x7MndPaX7RWyjKtAluPMsuZZ4jfLS2emY/ZCTSCTpa2b+/mOsp3ZWzjL7Ge/5/RF6pXBFemHXnupjqp+Ce0SaCVQzRfS2V85M+v+8i//snLLPtqDSs6R/WMTft7qVreqBg50ZtX+5Cc/qc6bfZrr//SadTvoWovp5+nLtC97s2dWfueeS78Oazff7Und8p7I+7/Tv9lbPnXMHuQLVVKf3HeZZZ33Re653Hu5fxbD+yL1i921115bBdup3w477DBrtzyH8wzIXuO5b9LWPI9H2Q/9Zt3n/Z8VHnbcccdypzvdqarfbEqeAQl40sbly5f3DcRnc/7F+Jql9lm7GPugU6e8v77zne9Uk1LyPM7vAnmfzfa50ub52n6mLOZ+SN3asvNMmfvv78Lxxf5uUT8CBAgQIDDBAvXwYZRL100wqaYRIECAQEsC+Yy6/PLLqz1oLa3eEqrTECBAgAABAgQWmcCwS9IvsmqrDgECBAjMQUA4Pgc8LyVAgAABAgTmJtDZ2zXLnL3xjW+c28m8mgABAgQIECBAgAABAgQIECAwAwHh+AywHEqAAIEJERCOT0hHagYBAgQIEBhXgSzJlmXFFAIECBAgQIAAAQIECBAgQIDAKAWE46PUdi0CBAgsDgHh+OLoB7UgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIERiggHB8htksRIEBgkQgIxxdJR6gGAQIECBAgQIAAAQIECBAgQIAAAQIECBAgMDoB4fjorF2JAAECi0VAOL5YekI9CBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgZEJCMdHRu1CBAgQWDQCwvFF0xUqQoAAAQIECBAgQIAAAQIECBAgQIAAAQIECIxK4KSTTirXX399dblly5aVF7zgBaO6tOsQIECAwAIJCMcXCN5lCRAgQIAAAQIECBAgQGB8BDZs2FCWL19eVq5cOT6VVlMCBAgQIECAAAECBAgQIEBgmoBw3A1BgAABAgQIjFRg48aNgoWRirsYAQIECMxVYP369eXII4+sZhNdeumlcz2d1xMgQIAAAQIECBAgQIAAAQILJCAcXyB4lyVAgAABAktR4LTTTivHH3982Weffco73/nOpUigzQQIECAwhgKdcDxVv+CCC6oZ5AoBAgQIECBAgAABAgQIECAwfgLC8fHrMzUmQIAAAQJjK3DAAQeUzszxdevWjW07VJwAAQIElpZAPrvyGZaSzy9Lqy+t/tdaAgQIECBAgAABAgQIEJgcAeH45PSllhAgQIAAgUUvsNdee5UtW7aUJzzhCeWNb3zjoq+vChIgQIAAgQhs2rSprF69usI48cQTy5o1a8AQIECAAAECBAgQIECAAAECYyggHB/DTlNlAgQIECAwjgKbN28uq1atqqp+zDHHlIMOOmgcm6HOBAgQILBEBXbbbbeq5Ycddlg5/PDDl6iCZhMgQIAAAQIECBAgQIAAgfEWEI6Pd/+pPQECBAgQGBsBS9KOTVepKAECBAh0ERCOuy0IECBAgAABAgQIECBAgMD4CwjHx78PtYAAAQIECIyFwEknnVROPvnkqq6XXnppWbZs2VjUWyUJECBAgEAEhOPuAwIECBAgQIAAAQIECBAgMP4CwvHx70MtIECAAAECYyFQD8evuuqqsaizShIgQIAAgY6AcNy9QIAAAQIECBAgQIAAAQIExl9AOD7+fagFBAgQIEBgLASOOOKIsmHDhrLDDjuUyy67bCzqrJIECBAgQEA47h4gQIAAAQIECBAgQIAAAQKTIyAcn5y+1BICBAgQILCoBQ444ICSfcdXrlxZ1q1bt6jrqnIECBAgQKApsGrVqrJ58+ZyzDHHlIMOOggQAQIECBAgQIAAAQIECBAgMIYCwvEx7DRVJkCAAAEC4yggHF8kvfaHP5Tyv//7x39+//s//jt/ts02f6xg/t3Gfy+S5qoGAQIE2hKwrHpbks5DgAABAgQIECBAgAABAgQWTkA4vnD2rkyAAAECBJaUQGfP8QMPPLAce+yxS6rt/RqbWYiZUZ9/X3TRRf1dEmLnn5TOf//p33vf855/DLs7f9757+afjUo+AfuNbvT/h+2d0L35Z33+f/OPflR++KMf/bHGncC+T/133XXXsnz58rJs2bJqhYIVK1aMqrWuQ4DAEhAwyGsJdLImEiBAgAABAgQIECBAgMDECwjHJ76LNZAAAQIECCwegS1btlTBpVKqQDwDBvJvZX4Ecq9l6eMMyHDfzY+xsxJYSgLC8aXU29pKgAABAgQIECBAgAABApMqIByf1J7VLgIECBAgQGBRCmSAwCGHHNIzFF+5YkVZucceZcXuu5ctN9xQNv/0p1u1Y9OVV5Yt11+/qNq3bLvtqjrPV1l+61uXXXfeuefpL/r2t0vZbruy8WtfKxu/+MVpxyUYP/zww6uQXCFAgMBsBdauXVtOP/306uVXXXXVbE/jdQQIECBAgAABAgQIECBAgMACCgjHFxDfpQkQIECAAIGlJbBp06aSmYcJyDvlrrvvXvZesaKsedjD5jVcXjLS225byl/8RVn/uc+Vk9761nL11VdPNX3NmjXlxBNPXDIUGkqAQLsCne1BclbheLu2zkaAAAECBAgQIECAAAECBEYlIBwflbTrECBAgAABAktaIMunZ8Z4gvEdttuu7Hvf+5bD99+/LO8zG3pJg8218dmj/C/+opx27rnl+De8YepsAvK5wno9gaUrIBxfun2v5QQIECBAgAABAgQIECAwOQLC8cnpSy0hQIAAAQIEFqlAfcb4Pve9b3njc59bsgy5MhqBTT/9adn/qKPKr3796+qCp556atl3331Hc3FXIUBgYgSE4xPTlRpCgAABAgQIECBAgAABAktYQDi+hDtf0wkQIECAAIHRCKxataps3ry5ZAn1M487TjA+GvZpVznv4ovLoSecUP1Z9iC/9NJLF6AWLkmAwDgLnHfeeeXQQw+tmnDuueeWFStWjHNz1J0AAQIECBAgQIAAAQIECCxJAeH4kux2jSZAgAABAgRGJZDl1LPPeMoFp5xiGfVRwXe5zhFve1vZ8NnPVj8xe3wBO8KlCYypQAY57bffftUAmwsvvHBMW6HaBAgQIECAAAECBAgQIEBgaQsIx5d2/2s9AQIECBAYqUCWF09ZSrPtss/4+eefX57w0IdWy6krCyew+dpry6rnPKeqwD777FPe+c53LlxlXJkAAQIECBAgQIAAAQIECBAgQIAAgZELCMdHTu6CBAgQIEBgaQpkxl2WF0+54IILyvLly5cERGdJ9XNPOKGs2H33JdHmxdzIzuzx3H+5DxUCBAgQIECAAAECBAgQIECAAAECBJaOgHB86fS1lhIgQIAAgQUVqC8vvm7durJy5coFrc+oLr7bbrtVl7pq/fpRXdJ1+gicds455fgzzvhjn1x1FSsCBAgQIECAAAECBAgQIECAAAECBJaQgHB8CXW2phIgQIAAgYUUWIrheKfNd9199/LJE05YSH7X/pPApiuvLKtf/OLq/5bSCgZuAAIECBAgQIAAAQIECBAgQIAAAQIEShGOuwsIECBAgACBkQgs5XB85YoVZd3atSNxdpHBArutWVMdZOb4YCtHECBAgAABAgQIECBAgAABAgQIEJgkAeH4JPWmthAgQIAAgUUsIBwXji+W21M4vlh6Qj0IECBAgAABAgQIECBAgAABAgQIjFZAOD5ab1cjQIAAAQJLVmDz5s1l1apVVfuPOeaYctBBB028RWdAgJnji6urheOLqz/UhgABAgQIECBAgAABAgQIECBAgMCoBITjo5J2HQIECBAgQKDstttulcJhhx1WDj/88IkXEY4vvi7u7Dm+ww47lMsuu2zxVVCNCBBYtAJbtmwpp59+elm5cmX1j0KAAAECBAgQIECAAAECBAiMn4BwfPz6TI0JECBAgMDYCgjHx7brJqbiGy+/vBxw3HFl5b3vXdZ95CMT0y4NIUBg/gVOOumkcvLJJ5fly5eXCy64YP4v6AoECBAgQIAAAQIECBAgQIBA6wLC8dZJnZAAAQIECBDoJSAcd28stMBUOH7Pe5Z1H/3oQlfH9QkQGCOBtWvXVjPHrTwxRp2mqgQIECBAgAABAgQIECBAoCEgHHdLECBAgAABAiMTOOCAA0qWGl+3bt2SWJLWsuoju7WGvtBUOH63u5V1H/vY0K9zIAECBDqfYVlSPZ9jCgECBAgQIECAAAECBAgQIDB+AsLx8eszNSZAgAABAgTGRKATjq/Yffdy7gknjEmtJ7uaU+H4nnuWdeecM9mN1ToCBFoVEI63yulkBAgQIECAAAECBAgQIEBgQQSE4wvC7qIECBAgQIDAUhDohONp61Xr1y+FJi/6Nk6F4ytWlHUf/3gpN77xoq+zChIgsDgEhOOLox/UggABAgQIECBAgAABAgQIzEVAOD4XPa8lQIAAAQIECPQREI4vvtvjvIsvLoeecEJZmXD8zDNL2WGHxVdJNSJAYFEKCMcXZbeoFAECBAgQIECAAAECBAgQmJGAcHxGXA4mQIAAAQIECAwvIBwf3mpUR5505pnl5PXr/xiOZ8/gZctGdWnXIUBgzAVWr15dNm3aVOw5PuYdqfoECBAgQIAAAQIECBAgsKQFhONLuvs1ngABAgQIEJhPAeH4fOrO7tzC8dm5eRUBAqXstttuFcNhhx1WDj/8cCQECBAgQIAAAQIECBAgQIDAGAoIx8ew01SZAAECBAgQGA8B4fji6yfh+OLrEzUiMC4CwvFx6Sn1JECAAAECBAgQIECAAAECvQWE4+4OAgQIECBAgMA8CdTD8QtOOaUs33nnebqS0w4rIBwfVspxBAg0BY444oiyYcOGakuGLK2uECBAgAABAgQIECBAgAABAuMnIBwfvz5TYwIECBAgMLYCW7ZsmdqvdWwbMYOK18PxdccdV1busccMXu3Q+RAQjs+HqnMSIECAAAECBAgQIECAAAECBAgQGA8B4fh49JNaEiBAgACBiRBYvXp1FY4fc8wx5aCDDpqINvVrhHB88XXxEW97W9nw2c+WlStWlHUbNpSy3XaLr5JqRIAAAQIECBAgQIAAAQIECBAgQIDAvAgIx+eF1UkJECBAgACBbgJLbb9W4fjiex8ccOyxZeOmTX8Mxz/60VJufvPFV0k1IkCAAAECBAgQIECAAAECBAgQIEBgXgSE4/PC6qQECBAgQICAcLwU4fjiex9MC8fPOaeUG91o8VVSjQgQIECAAAECBAgQIECAAAECBAgQmBcB4fi8sDopAQIECBAgIBwv1RLyWUo+xZ7ji+M9MRWO77FHWfeJTyyOSqkFAQIECBAgQIAAAQIECBAgQIAAAQIjERCOj4TZRQgQIECAAIEILLVl1ettFo4vjvfAVDi+555lXWaOKwQIECBAgAABAgQIECBAgAABAgQILBkB4fiS6WoNJUCAAAECCy8gHN9j4TthiddgKhzfa6+y7uMfX+Iamk+AAAECBAgQIECAAAECBAgQIEBgaQkIx5dWf2stAQIECBBYUAHhuHB8QW/AUspUOH63u5V1H/vYQlfH9QkQGCOBbJWxbNmysnz58jGqtaoSIECAAAECBAgQIECAAAECdQHhuPuBAAECBAgQGJmAcFw4PrKbrceFpsLxu9+9rDv77IWujusTIDAmAps3by6rVq2qanvppZdWIblCgAABAgQIECBAgAABAgQIjJ+AcHz8+kyNCRAgQIDA2AoIx4XjC33zdsLxZdtvXy69/PKFro7rEyAwJgIbN24sBxxwQFXbdevWlZUrV45JzVWTAAECBAgQIECAAAECBAgQqAsIx90PBAgQIECAwMgEHvCAB5Srr766nHjiiWXNmjUju+5CXqgzIGDdcceVlXsIxxeyL3Ltte9+dzn9E5+oqnHVVVctdHVcnwCBMREQjo9JR6kmAQIECBAgQIAAAQIECBAYICAcd4sQIECAAAECIxPIsrT5ZynNuBOOj+z2GupCJ515Zjl5/frqWOH4UGQOIkCglCIcdxsQIECAAAECBAgQIECAAIHJEBCOT0Y/agUBAgQIECCwSAWE44urY4Tji6s/1IbAuAgIx8elp9STAAECBAgQIECAAAECBAj0FxCOu0MIECBAgAABAvMo0AnHLzjllLJ8553n8UpOPYzAaeecU44/44zqUDPHhxFzDAECERCOuw8IECBAgAABAgQIECBAgMBkCAjHJ6MftYIAAQIECBBYhAJbtmwpe+211x+D2D8t5b0Iq7mkqrTx8svLAccd98c+sef4kup7jSUwFwHh+Fz0vJYAAQIECBAgQIAAAQIECCweAeH44ukLNSFAgAABAgQmTKATpuyy887lwlNOmbDWjWdzNl15ZVn94hdXlReOj2cfqjWBhRAQji+EumsSIECAAAECBAgQIECAAIH2BYTj7Zs6IwECBAgQIECgEqjPHL/0jDPKsu22I7MIBHZbs6aqhXB8EXSGKhAYEwHh+Jh0lGoSIECAAAECBAgQIECAAIEBAsJxtwgBAgQIECBAYB4F9nvEI8oV3/lOOfXFLy773u9+83glpx5WQDg+rJTjCBDoCGzevLnst99+1f9edtllYAgQIECAAAECBAgQIECAAIExFRCOj2nHqTYBAgQIEBhHgYQLy5Ytq/5ZKuWIgw8uGz71qXLgox5Vjv2nf1oqzV7U7eyE4+vWrSsrV65c1HVVOQIECBAgQIAAAQIECBAgQIAAAQIE2hMQjrdn6UwECBAgQIBAH4FNmzaV1atXV0cspeWs159wQjnyrW8ty3feuVxg3/EFf49suf76stcznlHVQzi+4N2hAgQIECBAgAABAgQIECBAgAABAgRGKiAcHym3ixEgQIAAgaUrcN5555VDDz10yYWSWz7zmakwNuF4QnJl4QQ2XnVVOeDII6sKXHDBBWX58uULVxlXJkCAAAECBAgQIECAAAECBAgQIEBgpALC8ZFyuxgBAgQIEFi6AieddFI5+eSTK4ClNHO8XHxxOeQNbyjnf+lLllZfBLf/Ee95T9nw8Y8vvftwEdirAgECBAgQIECAAAECBAgQIECAAIGFFhCOL3QPuD4BAgQIEFgiAks5HF//2c+WI9/2tqqnzz3hhLJi992XSK8vrmZu/s1vyqqnPrWq1C677FIuvPDCxVVBtSFAgAABAgQIECBAgAABAgQIECBAYF4FhOPzyuvkBAgQIECAQEdgyYbj3/hGKVu2lD2f/vTyqxtuqILxBOTKiAVufOOy+uijy6b0RynlxBNPLGvWrBlxJVyOAAECBAgQIECAAAECBAgQIECAAIGFFBCOL6S+axMgQIAAgSUksGTD8WuuKeWHPywnnXlmOXn9+qrHj3nGM8pBj370Eur9hW3qluuvL8d/5CNl/dlnVxXZYYcdymWXXbawlXJ1AgQIECBAgAABAgQIECBAgAABAgRGLiAcHzm5CxIgQIAAgaUpcMQRR5QNGzYsvWDy+utLufzyqtP3e/GLyxVXXlmWbbddWXfccZZXH8FbYfPPflYOOemksumb36yulmD8zDPPLCtWrBjB1V2CAIFJEti8eXPZtGlT2WeffSapWdpCgAABAgQIECBAgAABAgSWlIBwfEl1t8YSIECAAIGFEzjggAPKxo0by8qVK8u6desWriILceWrrirlJz8pm6+9tux35JHV8uopx/7TP5UDH/WohajRxF8z1iefdVZZf95509p66qmnln333Xfi26+BBAi0L7DXXnuVLVu22JahfVpnJECAAAECBAgQIECAAAECIxMQjo+M2oUIECBAgMDSFljS4Xi6/k8BeZb43v+446oZ5CnLd965rHnYw8rKPfYoK0c8m3nTlVeWLX8K6hfq7myzzQnEz//Sl8p5X/5y2fj1r09rUgZlHHvssWaML1RHuy6BCRDYbbfdqlYcdthh5fDDD5+AFmkCAQIECBAgQIAAAQIECBBYegLC8aXX51pMgAABAgQWRGDJh+NRv+66Un70o1L++7/L2ne/u5z+iU9s1Rcrdt+9WnZ9j913LwnSf3jttQP7a/NPf1rNSp/ksvJe9yrlD38o5X//t5Tf/77671133rlqcow2/mnp+rpBllDPLPE1a9ZUKxYoBAgQmIuAcHwuel5LgAABAgQIECBAgAABAgQWh4BwfHH0g1oQIECAAIGJFxCO17o4s7W3bCkbv/jFctyb31yu+O53J77/R9HAhOF7ZAb+ypVl7733FoiPAt01CCwhAeH4EupsTSVAgAABAgQIECBAgACBiRUQjk9s12oYAQIECBBYXALC8d79bM3FFQAAIABJREFUsXnz5rJ+/frqgOxnu2zZsmkHr1ixotzylrdcXB06y9pcfvnlVRvbKrFKIB6jpltb13AeAgQIREA47j4gQIAAAQIECBAgQIAAAQLjLyAcH/8+1AICBAgQIDAWAsLxsegmlSRAgACBHgLCcbcGAQIECBAgQIAAAQIECBAYfwHh+Pj3oRYQIECAAIGxEFi7dm05/fTTq9m9l1566VjUWSUJECBAgEBHQDjuXiBAgAABAgQIECBAgAABAuMvIBwf/z7UAgIECBAgMBYCJ510Ujn55JOrul511VVjUWeVJECAAAECEdi0aVNZvXp1hXHqqaeWfffdFwwBAgQIECBAgAABAgQIECAwhgLC8THsNFUmQIAAAQLjKJA9tY888siq6ueee261R7RCgAABAgTGQWDjxo0l24OkrFu3rqxcuXIcqq2OBAgQIECAAAECBAgQIECAQENAOO6WIECAAAECBEYiIFgYCbOLECBAgMA8CNQ/wwzwmgdgpyRAgAABAgQIECBAgAABAiMSEI6PCNplCBAgQIDAUhfYvHlzWbVqVcVg1t1Svxu0nwABAuMlkGXV999//7Js2bJy4YUXjlfl1ZYAAQIECBAgQIAAAQIECBCYEhCOuxkIECBAgACBkQlkafWE5AcddFAVMCgECBAgQIAAAQIECBAgQIAAAQIECBAgQGBUAsLxUUm7DgECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgsmIBwfMHoXZgAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIERiUgHB+VtOsQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAwIIJCMcXjN6FCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGBUAsLxUUm7DgECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgsmIBwfMHoXZgAAQIECBAgQIAAAQIEFrPAli1byrJlyxZzFdWNAAECBAgQIECAAAECBAgQmIGAcHwGWA4lQIAAAQIE2hNI4HD88ceX+9///mXNmjXtndiZCBAgQIBACwJHHnlkWb9+fTnmmGPKQQcd1MIZnYIAAQIECBAgQIAAAQIECBBYaAHh+EL3gOsTIECAAIElKnDaaadV4XjKiSeeKCBfoveBZhMgQGAxCtQ/ow488MBy7LHHLsZqqhMBAgQIECBAgAABAgQIECAwQwHh+AzBHE6AAAECBAi0I7B58+ay3377lV/96lfVCc8999yyYsWKdk7uLAQIECBAYJYCGzduLAcccED16l122aV88pOftLT6LC29jAABAgQIECBAgAABAgQILDYB4fhi6xH1IUCAAAECS0hg06ZNZf/9968C8uzpum7dOgH5Eup/TSVAgMBiE0gwfsghh5Rs/bHDDjuUM8880+fSYusk9SFAgAABAgQIECBAgAABAnMQEI7PAc9LCRAgQIAAgbkLZD/X7OvaKVm6NkvYKgQIECBAYJQCp59+elm7du3UJU899dSy7777jrIKrkWAAAECBAgQIECAAAECBAjMs4BwfJ6BnZ4AAQIECBAYLNAMyBNGZB/yzCZXCBAgQIDAfAtkkFY+i1IyYzwDtdasWTPfl3V+AgQIECBAgAABAgQIECBAYMQCwvERg7scAQIECBAg0F0gS6wffPDB5eqrr64O2Geffco73/lOXAQIECBAYF4FTjvttHL88cdX18ge4+9617sspT6v4k5OgAABAgQIECBAgAABAgQWTkA4vnD2rkyAAAECBAg0BLLH6xFHHFHOP/984bi7gwABAgRGIrB58+ay3377lT322KMalGXVkpGwuwgBAgQIECBAgAABAgQIEFgQAeH4grC7KAECBAgQINBPILPIly9fLqBwmxAgQIAAAQIECBAgQIAAAQIECBAgQIBAawLC8dYonYgAAQIECBAYlUBmmB9wwAFVeH7LW96yWv42YXr+Scn/m/k3qt5wHQIECCy8QD4XMrAqpfPfmRH+wx/+sGzcuLEcc8wx5aCDDlr4iqoBAQIECBAgQIAAAQIECBAgsKACwvEF5XdxAgQIECBAYDYCCToSjg9T9t1333Lqqaf2PHT9+vXVXrMJU3qVhO4JVnKuXuW8884rp59++sAqZS/1fgFNwpzU55e//GXfcx1++OFl5cqVPY+JUeoz6DwHHnhg33alPieffHIVMPUrT3jCE8qaNWt6HpLQKvXpd54MdEh9+rVrmPrkPI9//OP7tiv9nXZdfvnlPes8zHmGbdeg+gzTrlR0kPOw5xlVvw9bn7beF4vtPLmX817tVeKTrSQGlWHOc8ghh0yFw93OlwFD6fd+9cn9nPOkXv1KznPsscf2fb8Pc548M0488cQ5n2eQX34ew3Xr1g1zqGMIECBAgAABAgQIECBAgACBCRYQjk9w52oaAQIECBCYVIEEmwm1szd5wtarr766Z1N32GGHctlll/X8eYKpDRs2DKRK6Ja9aHuVYc+zyy67lAsvvLDneU466aQqtB1UBgU9w9Zn0HnifOSRRw6qThnUrrVr1w41eGBQfYb1SRB46aWX9qz3aaedVg1CGFTuete7lk9+8pNz7q9B5xm2PqnIVVddNe/1GdZ5UL8Pe/+01a5B9WnLedh2DXr+DFufcTtPWz7DnqfXGyL3w6677lqtJpJBSZ3VRQa97/2cAAECBAgQIECAAAECBAgQmFwB4fjk9q2WESBAgACBJSWQGY+d2d+ZDdz577333nvgTOQEMINKZo0nYOlVcv0EXf1mXCawzczffjPQ8/oEk4Nmbg4zczz16TcjPm0ZZgZxgu1B5xk0Yzcz2dOuQWXQzOg4pz6DyjAzbYeZsTuoXcPWZ9B50t/DOA/TrmHO01Z9hjnPMPdzW+cZdP8M+/4adJ68H9KuzjLeve7HNs4zzHMj9cn7fVDJM6zf86cz8GjQ+33Qc7XN82RVjkHPw7Q7TnvssccUQb8VKAY5+TkBAgQIECBAgAABAgQIECAwuQLC8cntWy0jQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgT8JCMfdCgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECAw8QLC8YnvYg0kQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAeG4e4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEJl5AOD7xXayBBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQICAcdw8QIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAwMQLCMcnvos1kAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgSE4+4BAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEJh4AeH4xHexBhIgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQICAcNw9QIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQITLyAcn/gu1kACBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQEI67BwgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEBg4gWE4xPfxRpIgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAsJx9wABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQITLyAcHziu1gDCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQEA47h4gQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgYkXEI5PfBdrIAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgIx90DBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIDDxAsLxie9iDSRAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAAB4bh7gAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQmXkA4PvFdrIEECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgIBx3DxAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIDAxAsIxye+izWQAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBITj7gECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQmHgB4fjEd7EGEiBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgIBw3D1AgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAhMvIByf+C7WQAIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAQjrsHCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGDiBYTjE9/FGkiAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECwnH3AAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAhMvIBwfOK7WAMJECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAQDjuHiBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBiRcQjk98F2sgAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECAjH3QMECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgMPECwvGJ72INJECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAHhuHuAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBCZeQDg+8V2sgQQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECAgHHcPECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgMDECwjHJ76LNZAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEhOPuAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBCYeAHh+MR3sQYSIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAgHDcPUCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECEy8gHJ/4LtZAAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEBCOuwcIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAYOIFhOMT38UaSIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQLCcfcAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECEy8gHB84rtYAwkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEBAOO4eIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIGJFxCOT3wXayABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQICMfdAwQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECAw8QLC8YnvYg0kQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAeG4e4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEJl5AOD7xXayBBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQICAcdw8QIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAwMQLCMcnvos1kAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgSE4+4BAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEJh4AeH4xHexBhIgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQICAcNw9QIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQITLyAcn/gu1kACBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQEI67BwgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEBg4gWE4xPfxRpIgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAsJx9wABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQITLyAcHziu1gDCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQEA47h4gQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgYkXEI5PfBdrIAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgIx90DBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIDDxAsLxie9iDSRAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAAB4bh7gAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQmXkA4PvFdrIEECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgIBx3DxAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIDAxAsIxye+izWQAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBITj7gECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQmHgB4fjEd7EGEiBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgIBw3D1AgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAhMvIByf+C7WQAIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAQjrsHCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGDiBYTjE9/FGkiAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECwnH3AAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAhMvIBwfOK7WAMJECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAQDjuHiBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBiRcQjk98F2sgAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECAjH3QMECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgMPECwvGJ72INJECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAHhuHuAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBCZeQDg+8V2sgQQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECAgHHcPECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgMDECwjHJ76LNZAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEhOPuAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBCYeAHh+MR3sQYSIECAAIGlKfDLX/6y3HDDDVXjt9lmm/KXf/mXEwtx3XXXld/97ndT7bvNbW5TbnSjG01se3s1LAaf/vSny5YtW8qjHvWosv322y85Aw0mQIAAAQIECBAgQIAAAQIECBAgQKC3gHDc3UGAAAECBAiMjcDPfvazsu2225bttttuYJ1XrlxZrrnmmqnjrrrqqoGvGdcD/v7v/7587Wtfm6r+17/+9XLLW95yXJszq3onGH/Qgx40rc8/97nPld13331W5/MiAgQIECBAgAABAgQIECBAgAABAgQmT0A4Pnl9qkUECBAgQGAiBBJ2fvzjHy9XXHFF2bRpU7nkkkvK9ddfX7Xtdre7Xbnb3e5WVqxYUR7ykIeUPffcc6s252ed4/ND4fhE3BY9G3HOOeeU5zznOdN+nv8/6qijFqThv//978vVV189de0MVli2bNmC1MVFCRAgQIAAAQIECBAgQIAAAQIECBD4o4Bw3J1AgAABAgQILDqB733ve+X5z39+ueyyy4aq21Of+tSydu3acpOb3GTqeOH40po5/oEPfKAcffTR0+6XJz3pSeV1r3vdUPdQ2wdlafe99tpr6rT3uc99yoc//OG2L+N8BAgQIECAAAECBAgQIECAAAECBAjMQEA4PgMshxIgQIAAAQLzK/CHP/yhrFu3blazfZ/+9KeX448/fqqCwvGlFY5nj/msJlAvH/3oR8s973nP+b1pe5y9GY5ndYPMblcIECBAgAABAgQIECBAgAABAgQIEFg4AeH4wtm7MgECBAgQINAQOPvss6sZ482SYDEzb/fYY4/yi1/8olx00UXl//7f/zvtsGc961nlZS972dSfCceXVjiejs+KAxlc8V//9V/lH/7hH8q9733vBXuPCccXjN6FCRAgQIAAAQIECBAgQIAAAQIECPQUEI67OQgQIECAAIFFIfCb3/ym2j/8mmuumVafE088saxZs2arOn71q18tT37yk6t9xQ855JDy8pe/vGyzzTZTxwnHl144vihu5D9VQji+mHpDXQgQIECAAAECBAgQIECAAAECBAj8UUA47k4gQIAAAQIEFoXA6aefXu0b3inbbbddtUfzXe961571+853vlM++9nPloMPPnirY/qF45l9fu2115Zb3epW5S/+4i/m1P4s551z7bLLLuUWt7jFnM6VF//+978vP/7xj6vZzzvttFNZtmzZtNC/2wX+/u//vnzta1+b+tHXv/71cstbzk84fsMNN5Rf/epX1bVuc5vbzKm9CZBzvh133LFsu+22czrXfLz4d7/7XfnJT35Sfvvb35Zdd9213PSmNx36MsLxoakcSIAAAQIECBAgQIAAAQIECBAgQGBkAsLxkVG7EAECBAgQINBLIGHr/e9//2oWeKe89KUvLc9+9rNnjdYtHH/ve99bTj755PKzn/1s6rwJ4R/1qEeVV7ziFVVIO0z55Cc/WdavX1++8pWvTDvX7W53u2qP6xe96EVl9913H+ZU1TFXXHFFOe2006p/X3bZZVu97rGPfWx5whOeUB74wAd2PedMwvEzzzyzvOUtb5k6z/7777/VUvZvfetbq+XJUzJ4IHt3f/nLXy6ve93rysUX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AoTjicrNwxBAAAEEEEh6ApZwfOXYseLl+d9ZsM4uoVuVdwsMlF1HjsTa1WweHjKgZUsTfkctGqBfvXFDMmfIEK8h/n3lity7d0+ye3jE6z4qJx0B/cFG6PHjZsCsHE86885I7RM4cTlM+q//RPZdOGhzQ7qUaeXXd5ZK8mTJ7WuIWggggAACCCCAAAIIIIAAAggg4NYChONuPb0MDgEEEEAAgScvoGeO6/bqg1q3lnavv/7kOxSPHkRGRsqmfftk8/79EnbunGRIl0506/NKJUpI8YIFrVulx6NJqiLwSAKXr16VMq1bm3tLliwpq1ateqR2uAkBdxaIlEiZsfsbmy3WA18eIjUKVHXnYTM2BBBAAAEEEEAAAQQQQAABBBCIhwDheDywqIoAAggggAAC8RcICAiQwMBAm7Ov498KdyCQtAVWb94sHceONQht27aVwYMHJ20QRo/AAwTOXwuXBaFL5NXCNaVY1sJYIYAAAggggAACCCCAAAIIIIAAAlYBwnFeBgQQQAABBBBwqICuGtfV45nSp5c9s2Y59Fk0joC7CvSaOFEWBweb4X366afSuHFjdx0q40IAAQQQQAABBBBAAAEEEEAAAQQQQMBhAoTjDqOlYQQQQAABBBCwCLjquePMIALOIuDTpYuEnf8/e28CJ8ddnvk/XVV9z63RLfmU75PLlmQT2yFgjiRcEgnkgkDyd0KyCwGS7Gc3F9mTkCW7sJBNPsnGJgnBZgMkCwYCtjEYjLE5YluyjQ3WLY1Go5npu7uq6/953l9VqzWW5bEsWZrRU9B0T3cdv9+3alpC33red78N5/bbb8fFF198qgxN4xABERABERABERABERABERABERABERABERCBBUNAcnzBnCoNVAREQAREQAQWLoGF3Hd84VLXyBcLgS1PPolXve99Np3BwUE89NBDi2VqmocIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIPK8EJMefV9w6mAiIgAiIgAicngR6fcevvhp/+d73np4QNGsROEYCH7r1VvzZbbfZ1uvXr8cnP/nJY9yTNhMBERABERABERABERABERABERABERABERCB05uA5Pjpff41exEQAREQARF4Xghs2bIFr3rVq+xY93z0o1izdOnzclwdRAQWOoHZWg3XvPOd4DOX3//938fb3/72hT4tjV8EREAEREAEREAEREAEREAEREAEREAEREAETgoByfGTgl0HFQEREAEREIHTj8ArX/lKbN26FZte9jL86U03nX4ANGMROAYC/alxllT/xje+gaGhoWPYkzYRAREQAREQAREQAREQAREQAREQAREQAREQARGQHNc1IAIiIAIiIAIi8LwQuO222/DepKS60uPPC3IdZIETmJsa/+Vf/mX8wR/8wQKflYYvAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiePgOT4yWOvI4uACIiACIjAaUdg48aN2LVrF971lrfg3a9//Wk3f01YBJ4Ngdvuugvv/V//q7fJPffcgzVr1jybXWhdERABERABERABERABERABERABERABERABERCBPgKS47ocREAEREAEREAEnjcCaXp8aHAQ93z4wxgql5+3Y+tAIrCQCDA1/qr3vQ879++3YW/atAl/+qd/upCmoLGKgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIwClHQHL8lDslGpAIiIAIiIAILF4Cs7OzYHq8UqngxmuvxV/823+7eCermYnAcyDwq3/yJ/jifff19vDJT34S69evfw571KYiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAKS47oGREAEREAEREAEnlcC/b3H3/XmN+Pdb3jD83p8HUwETnUCH7r1VvzZbbf1hqnU+Kl+xo59fHEcH/vGz7BlJpM5YfvWjkVABERABERABERABERABERABERABERgoRKQHF+oZ07jFgEREAEREIEFTOA973kPPvWpT9kM/uJ978ONV121gGejoYvA8SPAtDhT4+ly0UUX4Qtf+MLxO4D2dNIIHE2EnyiR/XTHPFHHO2lwdWAREAEREAEREAEREAEREAEREAEREAERmCcByfF5gtJqIiACIiACIiACx5fAK1/5SmzduhXsP/7J3/99XHzWWcf3ANqbCCwwAluefBI/84d/CPYb5zI4OGhifM2aNQtsJhruXAJHktQuNB4jiiI0mg3Ua3U0m01Uq1U0Gg10Oh1EYdjbVYwYth/3XzAYHvgBfN9HLpdDoVhEqVRCMX0uFOAHgW1M9fpmAAAgAElEQVTjQuSHJ8klyHWdioAIiIAIiIAIiIAIiIAIiIAIiIAInI4EJMdPx7OuOYuACIiACIjAKUBg586doCBn/3EK8g/edJMS5KfAedEQTg4BJsbf+9GP9sQ4R6E+4yfnXDyXozoRnUns9eF74metVgszszOYOjCFyf37MXXgAA4kj5npg6hUa6jV6+i0WojiGHG3axac/+FOu8l7YRQBybF4vCAIUCgUUCyV7Pt06fg4xpcuxZIlS7Bs2TIsW74c40vHUSqV5w7KWXYtIiACIiACIiACIiACIiACIiACIiACInCaEJAcP01OtKYpAiIgAiIgAqcigXvvvRfveMc7TJBz2Xz99fj9t74VQ+U5AudUHLzGJALHiQD7i7PPeP/yrne9C+9+97uP0xG0m+eDwJHS4bV6DQf2T2Lfvr3Yu28Ce3bvxv6JCUxOTuLgwYOYmZ5GtVZDq9lEJwwtEe5lPPjZAIHnIeP58LyME+4Aut2uJc35SF8zYd7lz5Yqjy1JXiwULEVOUT4+Po7lK1Zgzdq1OOPMM3HG2rVYtXo1hoaH4XneYWiUJn8+rhQdQwREQAREQAREQAREQAREQAREQARE4GQSkBw/mfR1bBEQAREQAREQAWzZsgW/9Vu/ZSXWuVx87rn405tuUpl1XRuLngDLpzMtztR4//LBD34QmzdvXvTzX2wTTOU40+Hbtm3DI1u24Ec/+hFYJWNiYgJTBw/ajUBhp2Np7Ww2a2XPA9+3R8b3TWxbTjwR4hmz5SSVsfLoTJJTglOMc+GzvUdpztf8LBXnYYgwDE2k8/1CPo/R0VGsXr0a55xzDi655BKcf9GFWLNmLfL5vO0vleO9BPxiO0majwiIgAiIgAiIgAiIgAiIgAiIgAiIwGlPQHL8tL8EBEAEREAEREAETj6B2dlZ/NEf/RE+9alP9Qaz/pJL8O7Nm8FnLSKwmAhQin/qq1/FX33uc9g5MdGbGnuM33rrrbj44osX03QX5VyOlBLnRGu1Ku6//wF8+UtfwkMPPmgJ8Xang2wu5x6U4cnDRDgT4UyIJx3BPd+3kuzduGuf8WPKchPjmYwrs84C665huXt/zmuuQ1FOSZ6mzNm7nMl0PvNBMX/mGWfgsssvxwte+AJcdPEllizn2PoXJckX5eWrSYmACIiACIiACIiACIiACIiACIjAaU1Acvy0Pv2avAiIgAiIgAicWgT+6q/+Cu9///sPG9TFZ52Ft7/mNdh0/fWn1mA1GhF4lgQoxf/68583Kc7X/ctFF11kYnxoaOhZ7lWrnywCabqaqe1O2EHcjXH//ffjf3/sY3jg/vsxODIC3vDAVDalM0Vzmvz2KL49z8qa978+moxOk+M05nPl/GGCvC9J3o0oyiPwuduNTJqngrzTbiOOIutHvn79evzYDTfg/PPPt5/TcuuS4yfr6tJxRUAEREAEREAEREAEREAEREAEREAEThQByfETRVb7FQEREAEREAEROCYCLEH8oQ99CF/84hd7vci5ozVLl2LDJZdYkpwP/qxFBBYCgXu3bMGX7rsPt91111OkOOXp29/+dvUXXwgnMhljKsX5PHXgAB597DFs374d1WoV93z96/jOAw+gWCphdGzMlU73fRPgXJj3tu1ZLZ3vMzVuCfFDjyOiYLl028GhxLjJ9r7keLqdHcPKrbvy6ybHe4I8KcFuqfIQnU6IbhjafpcvX46NGzfi+h+/ARdcdHHvRo30OBLlC+gi1VBFQAREQAREQAREQAREQAREQAREQASeloDkuC4OERABERABERCBU5IAS60zSc4H+/TOXVJZ/oqrrjJRzoS5FhE4FQhsefJJfOnb38Y3t2zBvQ89dMQhse8zpTh7iystfiqctWceQ39au9lsYPu27SbDb7/9djy8ZQtmZmYslT00PIyVq1bZeWVi3OS45x0qf951JdOPJMeP1Ov7kATnGGN0Y+tAbgPuH9Pc16kktx7lSd9xk+VpuXX2JI9YZj2yPugcOyX+xRddhNe89rVYv2EDli5deij1TqmfSP5npqU1REAEREAEREAEREAEREAEREAEREAERODUJCA5fmqeF41KBERABERABESgj8Btt92GL33pS/jmN795RFGerkpJvmbZMlxy1lkYKpdNmPP5VF0oUeeW1z4ZY/3mww+fjMOekGMOJ+f9ue48vZaebj88bzx/XNg3fMfkpPWOvvdf//Woh6YUf/e7321SXMvCINCfFOeIJyb24b57v4Uv3n477vv2t7F3YgLNRtNEM0ulj42OYlUqx7PZnlw2Qc5Edxw7MU5BzveYIve8Hoy5JdP5GaV2+syy6hkmyOeUVz+stHqSUud6aSl3fs79OEEeOklOMR5F6CRynO8xRT42MoIN11yDl7/iFbj0sstQKpVsfJLjC+Oa1ShFQAREQAREQAREQAREQAREQAREQASenoDkuK4OERABERABERCBBUVgy5YtJsnT5127di2o8WuwpxcByvANGzZYT2c+r1mz5vQCsMBn2y+qKZVnpqfxpS9+EX9/y8exY+cO1FstVKpV1Op1k86B72N4eBir16zByMiIlVVnetx6i1OAJ2XRKbZ9yvEgcOlvJrKZzE7WoYTm/o4kpFmSnWnwI33WL8hT9Gnp9X45nkpyPjM1HoYssd5xkpzynM+dDq655hr87M//HC677HKUy+Ve+fcFflo1fBEQAREQAREQAREQAREQAREQAREQgdOYgOT4aXzyNXUREAEREAERWAwE2KOcDy47duzove5//7B5Uiody2MxwDrKHNgXW8tTCbAn+CWXXPKMaCi9+8V3KsIlw58R3Sm7wmFiPO5ix7bt+OdPfxqf//ztODB1ANl8HvVGA7v37EGVrR8ovH0fA6UyVq5eZSXJc7mcCfJUjvf372Zy3GR4XxI8hZEmtOemyPthWQI9SZyn6z1dsjsV5JThaZI8LbHOZ5PiUYR2u22vWYadZdYp8M86+2z87JvfjGuuvRYjo6O9Pumn7InTwERABERABERABERABERABERABERABETgKAQkx3V5iIAIiIAIiIAIiMB8CDDFSak+n+enW2eulOdx+9872s/PZt00nTqffTOxerRHIu+Ous6J2AeP+3SP+ZwvrSMCz4FAfwKb8njXrp34h7/9O3zh9tvRbLVQGhyAH2Sxd+9esHpFvV63VLXveSbDly9fjhUrV6JYLDpBnqTHTY4n40pFNp/TR5oipzh3v/KH9/me+/NcGX6oP7nbrn/9VJBzv4fKq0e910yPM0XeTpLkfG3rhSGWL1uKN7/l5/Cyl78cS8bH7SYAlVh/DheYNhUBERABERABERABERABERABERABEThpBCTHTxp6HVgEREAEREAEREAEREAEROBUJJDKcaaptz35JG75q7/CPd/4BmrNJoaGh5HN5Uwk79q5Ezt27kSj1QJ1NqUx09yjSd9xVh7I5/MmzNPP+qV1v7xOZbP1Ie+T4nMldz+v9DO+d5hg71upP4Xe2xdg5dMtSR7HlhpP5bj1IE8S5NaXPIoQR5GVid+0eTNefuONYLsAlouXID8Vr16NSQREQAREQAREQAREQAREQAREQARE4GgEJMd1fYiACIiACIiACIiACIiACIhAQqC/RzeT4X/zl3+JL37pSwijEMOjY8jl8yaVKZBNjjM53mw6Oe55JoxLpRJWrFhhkpxynI+Agjz5PJXUvT7kSfWFNDHefzJSUd4vop9OhHO79DO+7t+2v495+ln6nEpwE+T2YP9x14ec5dUp0hFFKOXz+MnXvhavfcPrccYZZ5ogT4+pC0gEREAEREAEREAEREAEREAEREAEREAEFgIByfGFcJY0RhEQAREQAREQAREQAREQgeeFQCrHZ6an8cm//3vc+olPoNpoYGR8HIMDA+jGsUlj9ufes3u3JcebzaYJc8puSmgmxZeMjWF86VIT5YVCwd5LZXK6Xjqh/tLqqWxOxXa/4E77jM/tMc79pSnw/n31p8Z7iXSw13lScj2O0U3KrFOQs9d4Jymv3kuQJ8KcnzFBns/l8IY3vhGb3rQZK1etVg/y5+Wq1EFEQAREQAREQAREQAREQAREQAREQASOFwHJ8eNFUvsRAREQAREQAREQAREQARFYsAT6+4xTjP/TZz6Dv/v4x1Gt1TA8NoZCsWil0SmRTY43m9i7b5+lx2v1uqWrfc838UwpXS6XMb5kCYaGhqzvOKVykMv1+nWngvxIMntuSjyFaknzvmVuqnxuH/O5Er3/895u4tj6oFv59G4XJsU7HXTaHXSjEO1Elps8Zxn2bhelYhGv/smfxOY3bcbq1Wts3ozOq8z6gr38NXAREAEREAEREAEREAEREAEREAEROG0ISI6fNqdaExUBERABERABERABERCBk0MglbQn5+jzPWqMOIaVS//GPV/Hn/7JB7F//36MJulvlkRPJTJT461mEwcmJ7Fz1y4T6JTHlMMmvZP+4+w5ztLqTI8zOc6S7EyPU7Kn63L9NPmdvt9fNr2/B7nJZw4y4wT8kWT33BQ6Z9/ft3yuwLbP2H+cZdgpwJNkfHoTAIV4q9125dXD0NLlfK9YLOKNmzbh9a9/PVauWgXP46z5OAWXhJvk/Sl4bjQkERABERABERABERABERABERABEXieCUiOP8/AdTgREAEREAEREAEREAEROB0J0OkCsaWR4yiE53tO9Lq3EdOrOu9rEpqfpS6Y0tU+7q1Dke3es8Xe51aMLyfvJT+6Xbnj2BbJusmRe4KZ67Ck+A8e/yE+9pH/he99//soDQ5gcHDIhLZJavYaD0O0Wy00mk1MT01h165dqFSrlrg+LAUOIJfLW3J8eGjQxDgFeZZynPvzfZPk7DOeoVBPpHrvZ76fim1Kd5uAk+O2Ll8nn/ee0/fm9B5PPz+SHO4vvZ6WlKcYZ+9xynDO137udGyOlOP8mctguYzXvf71+MmffA1WrlhuPdVdDj09DZm+n/n60PnK8Jwj7p2TuSn3/p/Ty8RdGbwp4NDpTt5KLprkuBmY5Ac8+EEWSNiejr93mrMIiIAIiIAIiIAIiIAIiIAIiIAIiMDhBCTHdUWIgAiIgAiIgAiIgAiIgAicUAJMGlNbdsM2pvftQOPATgwNDwJdJpW7NJkuDR13nUztWXBriO2kMJf+J9uEUtlJZCv5TR3q82fXU9t2ZXI8shdexrN9dHk8ilnbnto5NuE7OTWNj/6ff8S3vvsggkIRo2NjVhI9LYFOOd7udNCkHK/VMDMzg3179mCmUrGy6hxDKsjTbfL5PEZHRqzMuqXGg6An27kOBXkvSc5EOeeQlE8/7HUi0d1okYy7b90+WZ6WW+8v3T63h3maSDeuSWl1WydhSQke8maADsuru37jnaQneVqCnfMdGx7E6151HV7+0pdgbHjInb8uBb6T2N0oOS+eb+fEgu9MmfNc2w0QHjjrKDlZGd/dBBCHLsVOZlF06EaJnlB3J/TQtcKR924ayKBWayIOylhy5vkolAbc5ZNeRyf0atfORUAEREAEREAEREAEREAEREAEREAETmUCkuOn8tnR2ERABERABERABERABERgERBIU8C1qd148HP/B9u//WWcve5srFk5lohqN0m6S+cvD5UPd8Y7NcJuPS+JINNxd+PICWVaVRPflK782QnyOBNbStt+TqU4ZSyPlQh0bteJuvjcdybwd3c+iq4fYGx8HIVCoSeuedw0Qc2S6o1Gw8nxiQnMzs7acSlzeUwntzPmbv1MBqWBAUuQU5SnZdVtTJTjLKuelFmnvO39zM/S8unpNcB1LUGfpOaZKO8vsT6n1PrcEutP6UneVwi9v+c6D8f5WHo8SYpbOXUK8+RhPcijrs1x+cgAfvrFq3DdhWMo5lx59eR+CJsDTxfZpB3T+TrtzW7nJPmZp8PdLAF4gStjT0kO3+9VEkgvBp5Xu4nCEuJJJQEPCDsRdu6ewv59B7DqostxwY2/hKHVFybX1yla9n0R/I5rCiIgAiIgAiIgAiIgAiIgAiIgAiKwUAhIji+UM6VxioAIiIAIiIAIiIAIiMACJZCK19bsBLZ9/R+w5Y7P4kCli9HhAaxaOpQksw+VSjeR3SfE6UGfEhtP0+EMDFuJ9bSkuivsbQno3mZMpacl2/vKsSelvdtRFzummvj7e3dg93QLI0vGMTA46MQ4hXSGsrdrophJ6k6rhVq9jursLCYmJjBdqSRS3iXQXR9xJ4m5LdPi5VLJBDmT6NZvPJHjqbi3bZJ0eP9x09Lrid11yfREkHP9dDlSStw+TwR62qec66frpol86zvOUulJ6XiuYzcZUIxz3hT/6Ws+p9Kc63SdID9zrIiXXziGi1aW4Nvc3d0O7lU3ibsn7yeJfrfKoR/40pVDT09c8llSaj+9Dqy+QFJi30r1JyHydifEvslZzFYbWL10EBdcdS2WvOQNGFxxrrsmlBxfoN8gGrYIiIAIiIAIiIAIiIAIiIAIiIAIHD8CkuPHj6X2JAIiIAIiIAIiIAIiIAIicAQCqRxvTu/Drntvxa4HvoztE03snqhgdKiApWOD8FhOOym57cLjSU9tk959DcT79k8Nziy1+dU0LW7i1JXhPqTBnahO95juwpUABw7UOvjy1ik8sq+C0tAIBoeHkU3LqSepZ0ahmZrutNvWc7zZaKBWrWJichLTMzO91HjajztNj3McTIMzMT40OIjywIDrNZ6k2U1em0w/9EiF/NwS7f0/p7LXhHpfmfXD0uEJx1So23NSejzdF1dJy7j3uCRl1i0Nn4jxVI53KcYTYe7S45Gtk81ksG5pERvOHsSq4eyhs5QEvDNWWd9JbWbJXbLcnSfXjJyxf7eZS4Ufakmf7szEuVUDSNazH51M77RD7JuqIIq6OGf1GM5aPYLhsy/D6Itej+GV62wdyXF9PYmACIiACIiACIiACIiACIiACIiACEiO6xoQAREQAREQAREQAREQARE4oQRSgVk/uBvbvvYJ7H/wblSaHvYfrGPb3ilLTC8dG0A2yAJmUd1iPcEP2dO+2upp2XXn0Flm3RLIbiv3MGlMDUuB7kp7u4bXiY21Hucx2mGMh/Y28Y0npuHlC1iybFkv3W2J6kTIpnKYyXHK8QZLq9fq2D+5HzOzs5YYt6rtJn4TOZ+Kb77tecjnchgcGECpVIIXBIdKoifl0rlOKsnnivFeH/KjlE7v9Ua3MuWctRPCc8upO7ZOyvfEedLnvMe+r497Wk7dytQnCfr+suuulH2MQuDhwmV5XLQ0i6GsO66VVE8FuEXDnRR38ptnh33O3TjsJ54iO1XuhgimxNOfXQV118O8V0wgBhqtDg5M11DMZbFu9ThWjA+iVPAwfPYlWHbVJoysPj+5nlRW/YT+omvnIiACIiACIiACIiACIiACIiACIrAACEiOL4CTpCGKgAiIgAiIgAiIgAiIwEIm0N9zfNvX/hYT//o1VBoBWM5838EKtm7bBz/jY+XYAHIehagTqEGccW2lk/Q4vXlaTpuO26WQD3+kEjymWLf9pLI1EaqmYLl7J2NnWjHu3dXG/nqEsaXjGBxMy7xnXInvOO6lo9mDO0zkeKvdRrNOOX4AM5VDPcc7UYTRcgFDxRz2zzZQ74TIB4GdPt4EkM1mrby6CfI0PW7j7OsfnrzfX/78sPR3f5/xPgGeCm+3OyenD5PjyXF60jwR4r3tKNWTUuz2nCbIo8ikeNpX3cR4X6I8LTlPwgP5AOeNZHD2QBcBS+ObDHf3JTjyydiSexVcEtydcxYPcCY8OVfpfRJMnMfJdZGUaDdFngEazRD7Z+oolwu4/NyVWD46YDdKFPI+xs+9DMuvfgNG11zgKgeorPpC/hrR2EVABERABERABERABERABERABETguBCQHD8uGLUTERABERABERABERABERCBpyPQS44f2Ikf3f132PfQPZitZdCMuojiLvZOzOI7P9hjMjmXC2iRTSRTnB4SmiwJfugIvVR32mrc1nfGNS05nmbJnXPt+4nrdillPbRQwHSYQ7ZUxjDLqWezrsw4k8ypEGZaOumzbXI8ebQaDUxOTmK2WrVS45xnqx3hrPFB/MRFq7DrYBV3PLYHURwjy7rxiQDP5/MYKJdRLBatxDr4SMqDW5n0tPx5UvKc8rj3flpu/igJ8rlJ8f4e5SbCDUjfcZJ99pdX5+te2t4C211XOj7pM84S8y4tHxsb+yyKrIT8QNBFMa7BCxvJKXHn0R05TtLgh1LcLjHu0vZJ+N4VwU+Eeho4Tz+L7dwBURihE4ZYs6SMq89fg7UrxuD5ZBWjVAywdN3lWHH1pkSOq6y6vqFEQAREQAREQAREQAREQAREQAREQAQYmEj/pUo0REAEREAEREAEREAEREAEROAEEDgkx3clcvxrmKl5aLa7lhBvt9v4lwd+hNu37kYYZJHNspO4h4zv9fqHc1h8z5Ued2LV9dt2pbdNZlMws6R58nkcJ9HjXmn2NGfuZHkhyGI0P4RcaQBDw8NWTp1pbq7FNDQXSmBLTFOOdzomY/keJXmz2cT+qSnrPZ6WFm+GXZwzPoibNq7DcCmLT35vB+7+wT4bWz7wzIFTiPNYqSBnP3IKcC4s9R4nZdZZGt3eS/uCJ/3FySB9z0nlZNukVHp6Cuf2FU/XsxsP+tPlSXn1nhxPbkw4rBd5KsaTmwbSfuO9BHkizSmw/UwG7bCB6XoFzbBt58lS8BTuyX6ssrqLsB9KqHfDhIEri08Rb3dEML3P7WKm14GYN1VEXXRabQz7Gdx46SrccMkZKA8UDVY28DBQCjAuOX4Cfpu1SxEQAREQAREQAREQAREQAREQARFY2AQkxxf2+dPoRUAEREAEREAEREAEROCUJ9CT41M78cOvuuT4DJPjra7J707YwZ3ffRKf2bIHnVwO2ZwPL/B7fbNdffREips3tVxx0lPcRcddktylm+1T28alxdMEdK9kODLw4WHQy2IoKKI8NGSiOk2Mm4xNZC8T4SaCk+Q4X1MIx50O6s0mJinHa7XeMVpRFxeuGMH/t+FcXLy0jC37q/jMQ7tx7w8nEHVjS1bTB/cL8kKaIE+riqcSnINPU93J6zTR3S++3UdOQKevj9RnfO7naXbb+pMnSXIT533HpLS3z8gkudLImH3Iycl4JGXXTXwbfye+K2ET0+2GnUdXIt7ddGCH4O0JJsjdNnae0psZkobiXfvZyfNuN+qJ9Thy56dZb2EMXfzUpSvx0ovWoFgsmIgPshkMlrJYwrLq6zdhydoLe1xO+V8WDVAEREAEREAEREAEREAEREAEREAEROCEEpAcP6F4tXMREAEREAEREAEREAEREIFez/GkrPpellWvZ9BquT7WrVYHdz+0DZ9/fD/CgRKKxRzgO9Hr89nVSTfBSoHq+YGVzw47TphSNPPB192IgtxpXEpYJ2W9RMqyNLsHP+MhH3soNGME2TzK5TKyTI0nUjrtrc0e40wvW9lwPqfp6KTfdq3ZxIGpKdTrdVcWPZNBJ+riRWeN421XnY2zhvJotCPsrrbx+Uf34c5Hd6PZiZDPuh7kge9bGXf2H+fDEuSUxxTFHDflc5oM53MisdMr6rB+4nN6jPf31+71Lu9Li6f74GdGOkl1k2Oar+cYOC+T6klvcEu2J4+0zLql6ynL+xL33E/Xi1HNhGgjsrR/xvPd/Fg238sYT3dOXYn09P1uFKIbuTLr3aSEOuIu/2s3KbAMO0ddna1hsNXAjecvx7UXrUaplLexB1kfQ5Tj6y7Diqs3Y2wte46rrLq+iURABERABERABERABERABERABERABFRWXdeACIiACIiACIiACIiACIjACSZwSI7vwA/v/Dgmtt5rcrzRYio7RNQMcdeWHfjitgPoDpZRKhVc2jhgatk3N04/202aTnsZl3ROIsiWQvY83+R21I2sj7nv+b110v7kNo4YCJBBvgn4zQjZYhF59hkP+K7rWU5pa8nxtKR6+nPSe5u1vfl5tVbDgelpNFstJ4ydxccNF6zCz7/oTIzmPHSShPWeahu3P7oXdz+xH7Vm26Q/i6NTIlOQU9CXkgS5lVhP0tQuaZ1kvJPS8WnfcMtVp1Kcr5PkeCqC+5Pi9l5Sjn1uufX09NtR0gQ5Xyfr23vJZ7ZuUuY8LSVvNyUkNwykKX2eCz8IEOaBRtBFzIr4GZcgNyFu0ptJet+2DaPQnU67kYFl1JlMZ69zx5Ui3g4dUsSH9ll9toFyo4afOGcMG89fjWK5CC/TtbLqg+Ucxs67AiuueiPGlRw/wb/h2r0IiIAIiIAIiIAIiIAIiIAIiIAILBwCSo4vnHOlkYqACIiACIiACIiACIjAgiSQyvHqgR340Z0fx76t96LCsuptV7I8pBzfuh3/sn0K8dAgcoWs9eQO8jknSD1XJZ3SlD3KTQLHGQSBb+W7+X5artylmtMy4xkTsiwITrkadVkevIug2UW+Gpn8zebyCCh/k+R52hM7Fb4uje5S0ZaeNsHuBPpMpYLp2Vl0Op3ee6VCFq+78iy89pKVCBC7RLTJ3hiT9Ta+uXMGX3p0L/ZM1xAwQU2JnCbICwUUSyVLsadJdB4nLX9OPczkdX+S21Lfaaq7rzx6f3Kcq/Qk+px+42kp+TQtbjcSJOXdU1HeK9Ge7MfGkfQOd2XsYYyYcuf4rLQ6E+e+B7+QQ1T2EOaTPvJesn8bR1Ku3WS7Y5zO0d3Q4OQ4KwGk1xBvTCBT9h2vzdZQqlfxsrUjWH8Bk+OU4zFy2QzKpSzGz7sCK9dvxtgaJccX5BeHBi0CIiACIiACIiACIiACIiACIiACJ4CA5PgJgKpdioAIiIAIiIAIiIAIiIAIHCJwxOR4LWMlxy2l3Qxx59Yd+PKOg4iHh1DI+wjyeQS5rBPhFODMD0ddE8GZIEA2yFppbiaOaVSZvjZpzdrbsettTWHusby3ydUuo6q/3TsAACAASURBVNPwwhj+bBteLYTXlxg3AZyWDOfQ07R4InrTRLQJ3Di2PtsU47OVigl+fs731i4Zws9ddQ42njGKMIyS/STSuBtjptXBN3dO4ys/mMD2qaqNlSlyjjUbBCgWiyiXWOY9a/u0AvHJ/lMpzXXTcfA5HXsSvXZl0fvS5rZOf0n1vrR5Wq6e6/T6jScl4g/1aHfnspceTz5Py6un3OxcJv3HKc25v1w2i8xQHtFggEzgu3FT8Pvpa5ZPz7hS+HYKePIo1nlrAbnxEdnnLJlv8j2KEXVCK6teqlVww5phbDh/lZPjHg7J8XVXYNXGzRhdLTmu7yMREAEREAEREAEREAEREAEREAEREIHk3zfi3i34QiICIiACIiACIiACIiACIiACx5/AU+T4FldW3SXHu+i2O/jKlh34yo4pYHQIxVLB0tNMjPtBFsV8HrGXQbvVQrvdshLoxXzB9fjudEyuUpabTO3ric0e1vxPUpAbmS7gtbrwp5rohl1Li/dKjyfS2+Rtkg5Px52WW7fPks953IMzM6g2Gq4EOx8Arlm3Cm+56mysHcyiQzluMphlxyNEIRPVEertLr67dxZ3PrEfj07MWh/ygL3Qfc/6jhcLBetBns/nbW4mndOy4mkP8uQ0WcrbSron8joV4/2l0JNtjpQK5276GaQl1F2bd5a1Tx5zL4tEvvezsr7sfXKc+8r5PoJyHvFwHignlQDiKNmvu/GBmXJLyPsuSW995T32Zc+40vYsvU9BTg6hS45HnQi1Sg2l6iyuWzWM9eevRJll1RM5PlgKMLbuSqzcsAlL1lxoo5+bpj/+V7r2KAIiIAIiIAIiIAIiIAIiIAIiIAIicKoTUHL8VD9DGp8IiIAIiIAIiIAIiIAILHACh8vxW7Bv67esrHqrEyOk8Gy1ccfDO/CVXQcRjwyjVMojyAYmxDNegOHhYfu50aij3W5buW2KZIrV/j7ZlOGJvXafMTmOjKWvKVfR6iKodIBKG2GSbDb52y/GE9mcIk/Llqf9vE2CZzKoNxqWHG9yPN3YRPhwOY83veRcvOaSVfDjrpUZ5/auPLhLVTNdHndChFEXP5yq42vbpnDfrmlMV5vwWWbd8+EHPgq5PMrlkiXJKa8pj00gU0onIt6S4kmKOx1v/1xSIdwvhVPpnX5mz+4H24VtT2HO52T/qTxP1+k/lnFJ5H2vFL2l7lnbHpaIz+Vz8IcLyIyWgMBDFIbguQr8wO2Spe/T9Vne3qL/TI/7CMPQboogO1YKMNatjqXy67M1FCsz+LGVg4kcL8HzWFbdw0A5hyXnXoblV2/C0jMucnNL0/QL/PdJwxcBERABERABERABERABERABERABETh2ApLjx85OW4qACIiACIiACIiACIiACMyDQE+OT27HE3d+HBOPJD3HO0xUx4jabdz5EOX4NOKxYRQLORPELJ/O8tpMUbN/ddhpuxR4JmPSNJOJTSYnNcOtv3hPDjN17gUmlimmoyhEXO8Ak010W2Evie36l7vS3mkKOi1TzhRzT74n80yT6TO1GiqVisluzqHVCXHp2nG8deM6XLlqFG2WgKegN5md9M22ftkhwnaIbhhaKnpPpYn7d8/gWzumsW26jihkyXH2IQ9QyOVs7kySM1FuPb2TsuQcjkvEH1p6c+iT/an8T0V6fyLceoP39xhPd5Wm0xMmac/zw0q195Ve7/UZT9Y3SZ6k78mQqf5cOQ9/vIx4MG/zZmo/FwRJv3RT8ZY65/liL/mw41L3UTdEp902hjbnGAjbbXRaocnxfGUG160axIbzVqFULph0zweU41ksWXe5kuPz+P3UKiIgAiIgAiIgAiIgAiIgAiIgAiJwOhGQHD+dzrbmKgIiIAIiIAIiIAIiIAIngcDhcvwWTDA5zrLqqRxvtXHnwztwx+4ZdEeHUCjkEGSzlhbnM0ush2HH0tYsvR0wXUwB240ZOrZ0Ml/QQ5sM52eIEXiHyqYjjBEdrCOarFnqOE1hW3A5SUmn5cm5D762sut94jyVz52k3zjT4yz1zf35vo/XvvAsbHrhWRgpZJ3LZfI9EexWEtzGnCTH2x2EndB6ZzeaLTwyWcW391SwZaKGiWrTjp/l/IMAJfYhLxaRY3l59udOkuO9kubJHNLS6+k405Lotl6aOE+F/5wkNddJe47b6zlM5l42/WI+vWGg1/s8kfjchu/xfLGHem60DH/ZgPUe5/vk7Pqn82aHjkv3E5sfmAznjQRpqXxXUj2ykuudVhudNuV4HcWqS45TjpcpxzM+cjmgXAowft4VWL3xTRhddb7tV8nxk/DLr0OKgAiIgAiIgAiIgAiIgAiIgAiIwClGQHL8FDshGo4IiIAIiIAIiIAIiIAILDYC/WXVn7jjFkxsuReVhufkOMuPN9u4c8sO3LFrFtHIEAr5AFmW4s5RjgfI5fLWd7oTudLiPpPVTIyz+ja68Jkw58+IrTR5zFLqMUuQ00978Fm2u9VFNFFBZ6aBThhaqXVKcRPCaQo6kbqUtpYaT56ttHqflG60mpiemUWr07FUOmX52vFh/OL6dbj23GVWDt4Eu/Xrds+Uuq73eNeS01Gngw4FebuDKOyg3Wxh10wTD+yp4Lt7q9hdbaLNFDnLkvsBikWWWS+7PuSeZ6LdSrVzbCbdmVRP0u/JBdSfJLe3kpS4zadvSRPkab9xW5X7T0vOJ8dIOZkYTwV42uM93V/SGz3dF8dAAU7JXxgqIVg+CG8g75Lg7Emezdkc2cPd9RVnepw78623eHocivKUHddlafXaDMuqz+K61UPYkPQct/7zLKte8jG+LpHjqyXHF9t3iuYjAiIgAiIgAiIgAiIgAiIgAiIgAsdKQHL8WMlpOxEQAREQAREQAREQAREQgXkR6Mnx/dvx+J03Y/8j37bkOHuOWy/tRht3bmVZdSbHWVY9gBcE8LM+vGxgCepcNos45jYdE+VOPlOHZ6wEO/tTswg6xSrFNqWxk77sOw7Esx1E+ypoN1roJAllDt7lltPK7BTr7GfOfTHB7LsEedKrmp9R0M7MVlCp11wPcesDDrz68jPxhhechdUjZUQUwkyd+571ybZ4uzP5Jn8pfVlCvMs0PPuPU/Y224iaTcw2WnhsqmGCfOtkDVP1jo2JpcbzSZn1EsusZ7Mml1lqneOw9HZ/73SOmxOkrE7S9L159M8pkdscb6/MeiK4+0vN959oK82eHKuXXk9uHkjXM6YJt1SO5wt5ZMfK8JaWe6XwgyAHUuchTX6b5CdT3xil/dWjqIvYBDm5ddFqtlGdqaBYncV1qyjHV6FUKti5z2Z9J8fPY1n1zViy5kIblpLj8/p11UoiIAIiIAIiIAIiIAIiIAIiIAIisKgJSI4v6tOryYmACIiACIiACIiACIjAySdwqKz6Djx+x99g/9b7LDlucjzuImRy/KEduGtvBd3RQRSYGmfp7ayPIMjaaybIKTfZa7zD/uF0vizNTfkdUJAHpmxdGpxl1p3BZco6w4T6ZBWdyRpa7bYJeZOl/J80JZ4IY0s6U+omiWdLlid9yzkPbn9wZgbNdjtJjXexamwAv/LSC7D+7GXI+OyT7juxz2MnKXIT5BTAcYSuiV4K8tDENntqR232Im+h3Wyj02hhf6WO709U8eD+BrbNNjDbchKeNwlQjpdLJZci931Xrp2CvE9Yp7K8VzKeYj8pl95ffr3/6uglyJM3U7meJsVTDlT9XabQKbPTpHi/LE+3t+R8wjKTMbmfZ3p85RBQzIId4qnweQMBk/VcKMgpwl2Jdr4TgR+xhL57ESOOunZTQeVgBbnZg7h2xQDWr1uBcrlozLPZDAZLPpasu1I9x0/+r79GIAIiIAIiIAIiIAIiIAIiIAIiIAKnFAHJ8VPqdGgwIiACIiACIiACIiACIrD4CKQCtTq5A0985W+w/9G+5Hgqxx/eia/uqwCjw8jnc8jmXc9xWPrayW4KVJOk5qtZRt0Fsn3fsyQ1RbSV5o5iZK3UukuCx/UI4d4ZtGfraDN9HEVJyXPTv27/TIwnZcQtMZ70xE5Lr1vPawCVahWzlYqVUk97f7/i0rX4uavOxSqmxj3fRL1PmW9ynOP3bWwmqvlIyquDyXMKcqbH222EnTbCdoh2q4l2vYVGpYZds018b7KOh/fXsKfaRjOKbb4UzQOlEkrlss2VJdAp/cnanpMbAAxR2nO8L1nO9+eWXe9Pjqe90u09t7LJdXt5JAmfJNdtnaRUfS89ntxwYKXVS0UUVgzDW1JO+sZHriw+NXjURSdkqfo0rc+Tzjm55DxveogjdyMA0/eVg7PwD+zHhqVFXH3eCpQHC/DZczybwUDJMzm+Yv1mjCs5vvi+VDQjERABERABERABERABERABERABEThGApLjxwhOm4mACIiACIiACIjAQiDwL0/eja/t+BZWDazATS/4hYUwZI1xERI4JMe3gz3HWVZ9tgG02q7neKvVxlcpx/fMIjM6glK5gFwh79LjvitJ7nkBom7oxC97i/uBSWK+tvS4z2Q5LFlOyUrBHvi+JbKj6QbCiSpazZb1G3elu11CPKa8pvD1PFC3W69xlkS3VPqh5DOFbLvTwcHZWTSaTRPFYRRhzdgA3rbxPKw/dzlyuRw8Slym3U2Ou9Lqtm8rA58WcWeFdfYMj1z/cY65EyKyHuRttNste91qNNGoNVCpNLB9po4HJ+t4dKqB/Y0IrbBr8ysWXYq8mJRap75mOfJUlFuCPBHX/TL8sBLqad/15NpLz9dhZci5zhzh3ivjTnvdX9Y92Z+VX08YUpSzdDulfmGsjGDlMGDCm8ly3qAQGIdOp20he94EkTLjLQ65nBPfTNmzTzt7tM8cnEF2+iA2LC1g/XnLMTBQtHLsTo6zrPoVWL3hZzCqnuOL8FtFUxIBERABERABERABERABERABERCBYyMgOX5s3LSVCIiACIiACIiACCwIAn/+vY/jz797i431e2/7lwUxZg1y8RE4rKy69Ry/D5VaxgRv2I3RbrVx90M78dW9M4hHRzAwWEKWotn3kc35iChKg8ClrC3BTbHctWQ5hStLbTOZTVHeDWN0M0A+lwX7WXfrLXQmKggP1q0kOhPfFLkmrJOS6T05ngpxyvG+RLkJ5zBEpV631DilOOUtN/+JS9bgzS8+G6uWDCATMO2eRcZnKXj2Tafcp4Tnc5IkTxucuyi8zcN6j7PMeidEl3K81UpS5B10Wm206g00Zys4WG3ikdkWvjtRxw+nGqi2I8tx57IBSqUyhgYGkSuwN7shcf3NkxQ5k+U8VirI0zQ5h5Mmwm1CfclwvrZtkmR9miJPy7PPLeNu2/N4fT3a2bPd9pkk8Zlyz5cLCJYPITtSspsc0lS99V/vRtY3nuc8G7D0umc3UPiej2K+aCn7SnXWGM1OV5A7OIWNy0q4al0qxzPIZz0MlAIsOe9yrF7/JoytuaA3hsX326UZiYAIiIAIiIAIiIAIiIAIiIAIiIAIPBsCkuPPhpbWFQEREAEREAEREIEFRuDPv3cL/vy7H7dRS44vsJO3iIabyvHK5Hb88Cs3Y/+j96FSz6BpqekYUTPEXVt34q69swjGl6BQLLDGObJZ17+bwpQpcXtNgcze05nY+pFnsznr4R2GHZPRgSXIMyaGmTxGtYNoXwXNegutTsdKctMes5S6JcOT5DjXtRR50ms8TTpz7BTyTIszNc59UBgznX7uihG8feN5uPKMcQQ5psXdw1LsgW/inul3L8g5iW8pcpdGZ7Fy19PblYpngrwbhj0pHlHkM+nOUuutNjqtJlq1pqXJD9ZbeGy6gQcn6nhiqo6ZZogodj29B8olDJTKdnMBPHLg+PskeSrDk6S3XWZJv/X+8utp6XQT+Mnnrit4siTS28R6kijvJcn75Hi67/4bEvLFAgpLBhCsGELAmyCMh+vHzpLqZOsbJ693E0KGPeZZsj7jWQWAdrOJmYOzyE4dwMblRVy9boUlxynoTY6XAyxZdzlWXr0Z42svtEEfloRfRL9fmooIiIAIiIAIiIAIiIAIiIAIiIAIiMD8CUiOz5+V1hQBERABERABERCBBUdAcnzBnbJFOeCeHN+/HY/feTMOMDneyKDViRBFMaJWiLu27MSdeyrILhtHsVxw/boDJojpXrvI5QNLglOCs3S6F7he5F7Gpbyd2LW4t71n1brDCDjYQjhVR6PVspLc3JeVVO+X40w1J0lxCnjuN+2XzfWZFJ+pVFCp1Wz7MOxisJTDpheehddcthbDAyVkTIwH8Jl2phjnc5ZiPEDgp+9R9qdinGXWnXi2PupdzpXl1TsmyfncabecGG80bewR5855NNvotlo4WG/j+/vr+M7eWfzoQA2zzZD14e3mgsFy2XqSZ7NZS3Jb4j7pk868uSXWebVZmXqHziLn/SXWkz7jTH87oe/OBWU2pXh/yfb+bS0rznklXFPRbiXWPQ85pscHS/BXDiI3WLBS6LzRgYdmSXme3yCbQ8yTH7O8uo8oCm3bgP3buxnUq1XMTE1bWfWNSwu4ah17jhd5P0CSHM9iyXlXYNWGTRhbLTm+KL9YNCkREAEREAEREAEREAEREAEREAEROAYCkuPHAE2biIAIiIAIiIAIiMBCISA5vlDO1OIeZ39y/PGv3IwDj7HneAbNVhdxHKHT6uKrW7bjzt0V+EvHUCoVLHHN9LilwJn09tm3O3A9xgOWCHdlw7lvymz232YW21LYXIcp7UaI7mQdYaWJJpPY7DfO9TMZBEyVJ4I8leEmzIMAVgo8kcQsS16t1UyMt5N+5r6fwcsuXI3XX3EGzlzq0s+WgE7keCYInCinMDdR7sq/2745Lsp7Ht+ksytrnrHENJPTkaXjWcadJdbZg9wEOaUx50BJbu917LnT6mCq1cGjk3V8d88MHp+sYrreMSFezBcwMFC2nuRM1DO5zpQ9k/cmy5Oy7mnJdbsK0/7kyfh6P6eJ80Sm94txk+uU4en2lODJJZ2m0XnzQZoe57nKFvPILR1EMF52vcU9PxH4HTsvTJB3o7h3XuOY1wrblPssGoBatYbKdBWFmSlsWFrEVecuR4ly3ItRyPoYKDI5fiVWbdyMsdUqq764v2E0OxEQAREQAREQAREQAREQAREQARGYPwHJ8fmz0poiIAIiIAIiIAIisOAISI4vuFO2KAd8KDm+zSXHKcfrGbTaTtSGrS7ufHgb7to1CywZMTnOMuWU1hYF5n+T3uJ8zZLh1iu7G9n2TJ9bGfSAfcStg7grBV7pmBxnKfI2hTJLqvNTylkKWUrcJEXO9ymw0zLrrjR7F/VWC1PT0y6xziRzBrhs7VL80lVn48KVIwhyeZPg2XzOlVQ3QR643uNBKsddD3Iel6XCrbR6UjbcdeSm6XepbCa5rQw6U/VhG912x2S5SXIT5HwkYpyftTuIwxCIIhxstPHgvgru3T6FJyarmG12LEleLBQxNDCAUrFgZejJ1PqoJ0ny/hR4mgBP+4qncjw9hzbGvtLs/Cn9jO+nr9NS7GmfcuNu/5Ox88o+6dmRMnKrh9B1OX3XN74b2TMlPm8icOXV3aMTduHxvMYxWo0WKjNV5KensXFZAevXrUBxgHIcKOY8lFM5voE9x8935z0p974of8k0KREQAREQAREQAREQAREQAREQAREQgXkRkByfFyatJAIiIAIiIAIiIAILk4Dk+MI8b4tt1P3J8SfuuBmTjzo53m53EcUR2q0Qdz+8A3ftqQJjwygWCwjygYlqVhyHF7sy6z0wrtQ2S6BT1lLy2uIxHB3Ao1DtxMhMNxFNt9BsN9FptcEUeCrD0/Lpllp2m1qy2xLOiURtdzqYmplBrdFwqeZuFytHB/Ar116AF50xhmIhDy+XM1nP5LhLigfwstlEjrsEeWC90918LDGeiPG0VDlj8ExFMy1tkfg4dslxK7HOJHmnV269w9cmyllivelS5snnccTEeRdT9Ra+t3sG39x2AE/sr6LeDm1chUIBg6USyuUyAsp648ucPQ8buVR5kpingHbi3gnvtPc6f46SPuOuTzjH7B49Mc4S7ElP8gyT5pw3f06e7Rz4PvIDBXjjZXgDWQT5PDKxhzBsW/LflbXnufGQy+eMRxSyUkAX3U4XYTtEvVJFdnoK1ywrY/25iRz3gULOw0Api7Fzr8DK9ew5ruT4YvtO0XxEQAREQAREQAREQAREQAREQARE4FgJSI4fKzltJwIiIAIiIAIiIAILgIDk+AI4SafBEFNRWp3cjsfv+BtMPnI/ZptJcrzbRavZxtce3ok791bhjY2gUMpbAtsctSXHXZluk7ixS4uzjzdLhZu0tbLraQl2ZpkzCJpd+AdbaNdaaCTlySm3KWYpxllW3ZXzZtrcpZktNZ701qaEnqlWraS6JcZj9hnP4mdedA5eceEqDJSZbs8jm8/Dz+XQ9XxU2xFmmm00QwphH9kshXQew4NljI0MYmigiHyeqfcMYhejdmefbpn/oSS3ZDb7kHdNjDMVbjcApBK8TWHOvusdRC1Xdp1ynAI9tLR5B6DoDiOT5A/vm8V926bwg32zmG627TaAXD6PcrGIUqFgr32Kex4/kzHxbWNIyqSn/cKtRzlFd8I7LcvO4R8myBO53p8c713iSQ9yS4/7nqXtg5EivFHeDJF3ZfGZZo9DGxNT765kfoBOp404Yo96MoltftVKHYXZg7hmaQkvOXcFSgNFsMAA5Xi5mMX4uqTn+BrKcXd9aBEBERABERABERABERABERABERABETi9CUiOn97nX7MXAREQAREQARFY5AQkxxf5CV4g0ztUVj2R44/djwqT460uInQt1f3Vh3fhrj2zyFCOFwtA4MqpW8qagjTjmVBm+pvilknofC5vBMJuxwSzl/HQBQVzjKAawWNqvO76jYdJv3GKcBPi7AGeCHI+U4qbGGdqu9u1HuOz1Wpvu4FiHj91+Vq86qIVWDJUNpmby+UQ+Tk8MVnBN36wG//6o73YPjGNWrNpvc95nKzvY3R4AOefuRI3vPhi3PCiC7FmxUgiyC2n7hYmximo2TPdJDn7j8eJEO6CqXAKYRPhFOZhx5LlHZZYt4R5mCTMQ0S2bmgl2pncrrQ6uH/7AXxhy25s2X2Qb8OnnM5mUcznUSqV7Jml4HnjALEzi08hbuXrrSc6ybrS771HIsrt/KbJ8YRhL0Vuc3MZdEvNMzXO/fk+ckGA7FAJ3rIiYuvF7uR1xqeq5/ngex6isGW8eI55k4Al2aMYtdk68rPT2Li8iKvOoRwvgP3g2XO8XPAxft6VWHvNz2J41Tq3X8nxBfKNoWGergR488vExERv+kNDQ1bpQsvCJ9BoNDA9Pd2byNKlS62CiRYROFYC9XodMzMzx/x9wW0///nPg9fi9ddfr+vxWE/EPLfT9/s8QWk1+73m73f6d/cVK1aIiggsKgIPPPAAvve97+GVr3wlVq9evajmttAmIzm+0M6YxisCIiACIiACIiACz4LAPz52O95/z3/HqoHl+Pzmv30WW2pVETh+BA5Pjt+Mia33odqiHI8RxV3rB373g7tw594KvLEh5IsFZLKeE64ZVuNmCXWKUmvNbUnvVDy7XtRJL3HPM6nsxR6ylRDhVB3NZhOtRChzHCbBKcaZHk9e+/S3FOSJ/K3W6ybGmR6npM0HHl5+8WpsumINlgwWkS8V0fWzeGxfBV/4/o/w7cd34WC14fqc96qyWxYbUZcpcCeHC4UcLjvvTLzj9S/DT770CpP//CQJWx8qT04xbuLZiX4reR6y7HlostwS1Em5dQpyK8HOsuPsTc5EeceVZLd1u13smJrFrfc9jju27MBMtWEl3oPARz6XReD51vObKfd8LodCIv1zViLeN0Fto+9LjfPmAT64b7uZoE+Ou3R/UpA9Ldmeckn7vCeiPKAgL+bgrxxCnGO/d/Z5Z1Le3fxgPedj6yBv55ul5E3WR7yhIkSjWkehMoNrl5eT5HjBepTnWVa9mMWSdVdg9YbNGLPkuOT48fuN1p5E4MQQ+PSnP413vetdvZ2///3vxy/90i+dmINpr88rgd/+7d/GJz/5yd4xKSUvueSS53UMOtjiIsDriddVujyb74tHHnkEN954Y2/bc845B1/+8pftxkktJ4aAvt9PDNfFuNf169djz549valt27ZtMU5TczpNCbz73e/GP/7jP/Zm/+EPfxg//dM/fZrSOPnTlhw/+edAIxABERABERABERCBE0bg/r3fx8OTj+Ls4TPwY2vXn7DjaMcicDQCh+T4Djx+x82Y2PItVJsZtDvsOR6j027jqw+xrHoF3ugwsvms9fCG75LVGebBvYyVQadn9jNAEFiXcHtkMjSoLmXssxR3CMQH6mhNV02Oc/+WHGcamRLcdyXVU1FuieLEUNdqNUuNd6LIRGzO93Dd+SvxxstXY9lIyfqMR9kcbrvvCXzmW49i78FZK5u+ZukSrFk+htXjQygV88h4PtphhAOzdTy5ZxI79k1ianoWUdTFpeedjQ+85+fw0ivXoRVGJoVdv/Gkt3eY9O9mCfkkKW/J8W7Eht+utDglsiXJKcST8uvsOW43AjhB7sVdTM5WcfNdD+O2bzxsNxGU8jlLvp+9dAhrxgZRbXXw8K6D2DtdQ2hsM8jmssgFWRTYTz2fQyGbRTbpUZ4m69MS6/w5pCTniUrGf9jr5AYAnkWPkpw3NvSVsWc/8fzyQXgjZUTMq0chOhHL37sznw2yLqEfdtFqN+B14c5lF2hWW8jPHMTGZUW85LzlKJeYHPesrPpgOYfRcy7Hiqs2YemZKquubygROJ4E/vIv/xL//M//3Nvlf/pP/wmXXXbZvA7B74xNmzbZzUdcLrzwQnzgAx+w1//wD/+A3/md3+nt59nIrnkdXCudNAL/5t/8G3z2s5/tHV9y/KSdikVz4Ocix3/v934Pt9xyy2EsYEo1VQAAIABJREFUbr75ZkuQz2fh34F27drVW3V4eBisdLFYF1Z9qFQq7u/kmQzWrFnzrKeq7/dnjey03eDiiy8G//9YupwOcvxU/05h9ZfJycneOVm2bBnyeVfBTcv8CfCmD9780b9cccUV+Kd/+qd57+R4fB/P+2CnwYqS46fBSdYURUAEREAEREAEREAEROBkEuiVVZ+kHGfP8W+jWs+gFTKBHKPTauGrW3bhjl0z6I4OoVjIWbI5w77jFMdMIluJdZf2pjR3FdddT2rP5LLr2209tOsRWnun0aw00Gy1LJnOpLM5cApglg5PE+RJOXX+o0S92US90XDyNZNBIfBw/fkrseny1RgtF0x6H2h38b/v2oJHdh/EWSvGcN0L1uHKdauxYsmISfJyuWgi2Quy8LI+OmGMWjPE/tkq7t/6JO6+fwv2TE7jra//cfz8T12LMExFsCtjzoVJcd4FwNLhTkK7UuJMb9vPST9yK29uSXImxVlO3clyS5GHHTB8/+CTE/jQP92LqdkqNl6wBi8+eznWjA6glHWJ+FY7xN7pqpVb/962SWzdO42DtZadG948wPQ458MS7FYGPQh6/BKD7XrBcyxJUtwkefKeifKEu7s5gf+w6m5M4A0KQS6L4uggglVD6FKkM5XO+VhqnjdBsPc8z68rOx91IpP/iD00KnXkp6dw7Yoyrlq3AqVS0XrPU44PlJwcX7n+jVh6xoXqOX4yvwB07EVH4CMf+Qj+5E/+pDevj33sY3j1q189r3myXOrll1/eW/cFL3gBPvOZz9jPkifzQrggV5IcX5Cn7ZQe9HOR4+985zvx//7f/ztsfv/jf/wPvO51r5vXnGdnZw+7IejFL34x/u///b/z2nYhrvRf/+t/Bb/n0+UTn/gENm7c+Kymou/3Z4XrtF75dJTjp/p3yh133IG3ve1tveuS6ef+Sj+n9QX7LCb/2GOP4eUvf/lhW6xcuRL33nvvvPdyPL6P532w02BFyfHT4CRriiIgAiIgAiIgAiIgAiJwMgn09xx/4s6bMfHI/ajWgXbIsuMR2q0WvvbQLnx590FgdNjKqgfZAH42QOB7CFlYm8LYy1jvcS/wXQocsfXJ9j3fhGqaWPYqIaLJOhq1OhqtlvXiNlnrPG1PzKa9xsMosoR5vdVy/azj2NLS1523DJsvoxjPwwsCDA6V8dhkBf/y8G688IK12HDxmRgfGYKXy8LLBfD8rElx3w/g5yiRKe4p+D1k+Nr3UG91MD3TwEC5iKGhso2HkpnrsAy62Xumw+MIGSvJ7kqrW2Q+poBmyXWrLW5J8m5IQR46Sc7XTJNHHRPlXGeqUseP9k5jrJDFmtGScep0XGl2bmM93FnGPQpRa7Sx40AF39k2iW9vm8CTkzXMNjomqrNM27MUfcCS7E6Qs586X1v586Sfd3//cRumlcbPIGM3OPCcsay9Z/OlIGdp9cJgEbm1Y/ALOSubz/MVdtqIoth6iPMaMAYmyWPXWz2MUJutoTg7jZcuH8BLzluBUrloZdULWSbHsxg9l3J8M8bXUo6rrPrJ/A7QsRcXAZaD5D+Mpssf//Ef4xd/8RfnNckf/vCHuOGGG3rrspQkS0pykTyZF8IFuZLk+II8baf0oJ+LHL/nnnvwlre8pTe/crkM9oAtFovzmvNckXXppZfic5/73Ly2XYgrzZUxzyZln85X3+8L8cyfnDFLjgOn2nfKXDn+a7/2a/jd3/3dk3OBLPCjvvGNb8T999/fm8W/+3f/DjfddNO8Z3U8vo/nfbDTYEXJ8dPgJGuKIiACIiACIiACIiACInAyCTylrPoj30KtkSTHIybH27j74Z34Si85noef8+Fnswj8wKqnU7JS0nKhYmVCmH2pA5OsHmLPNSRnCj1zsIl4umUpcCbHKVLdGGI2MEcGTC2bljb53Gy30Wq3rSw43x0s5vGy85fjFecvxZJS3knvfIBCsYhMLoc4yGFgoIQCy3hnc8hks8iYMKbQzyLI+i5dzV7pycNEedZHhv0sM56NAxk/6VF+qKx7DIpqxuCT0uqJHHfvufddqpqJcj5ThjNlTkHufqYgd2XYuzZ3PjJWnp0/hwitd3kXvCmAz5TrsNR5x0rQN5ptTNcaeHL/LB7cdRBb985g10wds80O4jjjytF7rkQ95badB87d+sKTbn8jddd73Z24QyXVraw9t/c85Msl5FeNIBgpGhuWW2616jbPIOOS4xT5PPPWl7zdQbvVQa1SR7lawUtXDuAl65aiWC4h8AIUshmUSz7G1l2BVRs2Y3yN5PjJ/P3XsRcfgW984xt485vf3JvYb/7mb+K9733vvCZ63333YfPmzb11+/+BVfJkXggX5EqS4wvytJ3Sg34ucpx/J+R3EUvZsiT6z/7sz+KMM86Y93wlx+dfgj6Fqu/3eV9ep/2KkuOS44v5l+DgwYNWaeThhx/GK17xCkuS82bz+S6S4/MlNb/1JMfnx0lriYAIiIAIiIAIiIAIiIAIHCOB/uT4Y3f8H0w9+gAqDSbHKWhjdJptK6t+1+4ZRCNDKBZdz3GKZqfDWQrdQzcTWwKZ+zMhm/wfScpT9hpnCj2qd+DNtBHONFCv19FiypgS2Ppdm151CeQ4NmncYZ9u9hdPSncPF7J4zSWrcP3Z4xgsuNS35wfwcnnkCllkC0U3tlyWNb/hUYIHTuL7Wd+S7C5N7dLgFPcsB+/ns/BzLBfPuWVNuDMJT9mbyfi2DqVzT37HbJxuteKT5Dj7jDshbq7Z+pK7JLklynsl1im7XWny2MR4iJCl1im/LVXOft1uXyzTzp7vCLuIIwpn9mbvIGSP9laITti2czNVaeBHk1V8b/dBbJ2sYm+liU6n6wR50q+9J8oTSZ6+b7cyGHLeDED37fq99+R4EMD6ji8dQnb5kEv4x10rbd9qt0ye85z1eq8jRkg53mijWW9hoJbK8eWJHPecHC9Sjl+J1RvfhCVr2HNcyfFj/PXVZiLwFAJz099vetObDiuzfjRk7DVNIZ4u/X3FJU8W78UmOb54z+3JmtlzkePPdcyS45Ljz/Ua0vZPT0ByXHJcvx9PT0By/PheHZLjx5en9iYCIiACIiACIiACIiACIjCHwKHk+HbrOb7/kftRYc9xJp67XSurfvdDO3HH7lmT4/lcFtk8S5PnXOaYpcbjpHE1Y8mZRLAGHvwga0dzPbe78FsRvOk2GrN1k+NMIbN0eFru2ww5xbj1tk6EM5PJ3RjFnIfXXroaN5y1BMWsh1oH2N8Msa8RYqadQbXdQT1kI2yKbY8F2pHxXQLdyoXTAscRg+7Wn5wJ9GI+h5GBIpaOlrF8dAjLx4cxNjxkJeNdyjxAkM3BY3l4SnimryncLSedyHAmwsmAXtxEv5sPS4wzEc6xxzHFN8uqh+i0O+h02gjbLdSqdUzsn8WugxVMztRxsNpAsxOhwfLu1Zq95nHJhaLcBLyVcXdJ8wxT6N0Oir6PnBfDi0LMNFrYur+C7QcbdlpMYFtZdT5iE/4sdc8bB3r93ftT43yfgjxJnefzORRGBpBdMwr4PBduLp1201LwTqy79DlLx0e8qaIToj5TQ6k2ix9bNYSrzls2JzkeYIxl1TdsxlKVVdd3kggcVwK1Wg38x+t0uf7668Eyu/NZbrnlFvze7/1eb9W/+Iu/wI033mg/H02O87t83759aLfbWLt2LbJZ991/LAtvvtm5cyfy+TxWrFiRfH8dy54ObTM9PY39+/djbGwMS5YseW47ew5bk5PdMMY/R5J2F89hd8dt06PJcV5PExMTyOVyYO9Na9Vxkhf+GcvrbXR01K6T/mX79u323vLly592lNye54JzOZHn4lRkl0JpNBrYtWsXxsfHMTIycsxnlH9X27Fjh90k1/+7v9jlOP8OOzMzA4r4QqFgDAcGBux6er6X4yFjFvL3+/Hg/XTX8fHYd7oP/vnI3zleL8/0Z9vz9R3F67hSqdgQj/ad2c/haHL8VPmz9kjnjX+34O8rf2/5emhoyB7zaddwPG+44bG5WPuw4/Tn6Ykuq05m/DvU6tWr58XreP7eLLR9HY/v44U25xM5XsnxE0lX+xYBERABERABERABERABEUhKmgOV/ZTjN2PykW+jmpRV5z/OUI7f9eBO3LFnFjGT46WClU1nGXLPY3rcyVK6V1cOPSnpncsil8tbOrrVapmczjZj4EADtZkqao2mlRBPk+PWc5xlySnTk3844Gt+zsfSwSJ++pLVqHa6JsSnWyxynkGrwxR3hFLgI5/1kbUENPPMFBAeFTZqrRCVZgf1doSQvcLj2FLV+VyAQi6PbNZHLpdFueCE+WAxhzVLBnHe2nFcsHYpliwZQa6QRz6bpNPzOetzTolM256xquK8SYBunxLb9Q0PQ/Ye7yIOQ8zM1vD49n341yd24kd7prB/uoZ6s4mmlSFnmXXHkUzaYYR2J7LnThhauruYzWKoEGAgHyDIkEuMTgy0oy6aFNJdIJsN0OXNBJ0Oao0WZhpNdKKu3RBgspv9wRlGZ0/zLtPl7kYGJsYps6wM+2Hl2Mklh9xAAcGqYQTlvM2PY6IYp1zgeHm7gPVlZ+95/jeKUZutolidwXUrBnDVuhUoDpQsqV/Me5YcX3LuFVhzzZswulrJcX0NicDxJtD/j9cXXXQRvvCFL/QO8b73vQ/33ntv72d+xp6+XD74wQ/2eozz589+9rO48sor7bMjyZPrrrsOH/jAB57Sz5fH/K3f+i0rSTmfZWpqCv/zf/5PfOc738H3v//93iYcF/f12te+Fj//8z9/1H9Ifvvb347HHnvMtqXQ/w//4T+Asv/P/uzPcODAgcP2+epXv9o+fy5ScD7zmrvOXKnAzymcyfhFL3oRrr32Wpvv870cSY5Tcvy3//bfDjsfHNdLX/pSu4Higgvcd/fchf+A/oY3vKH39otf/GJ86EMfOuK6rFTwX/7Lf+l99gd/8Af4iZ/4id7PLG/KvvfpwmuX8vuv//qve+f0He94h42HJbg/+tGPYuvWrbY6uX7sYx/DC17wgqcc+5FHHund9JF+yGuNcojjfeELX4gbbrjBBNYzLR/5yEdAEcyFN1585jOfAXtmHwu7ZzrWc/2cbMjkwQcfBCtMpAvHfdlll+FXfuVX7Bqcz3Lrrbfi05/+NNjGoX951atehX//7/+9vf/bv/3bvY/6q1D0r8/9fPjDHz7qIVnx584773zadSiGeO30L7xO+pejlWU/2jXKffDvOt/85jfB6/Wuu+7Cnj17nnYsvI54TfM760Qt/C7ctm1bb/f8fuONGP3nM/1OP9IYeM1eccUVh310qn+/nyiWz3Qd8+/AmzZt6h3+Xe96F9iTOF34Zw7/7DnSwu89Xlv8vuH12f/nLtfndxt/L3iTz9zlRH9HPfDAA6DEY/uCdOE1s2HDBvzyL/8yrrnmmqdFfiQ5fqr9WcvB80aEL37xi/b3E3739f+OzJ3ceeedhy9/+cu9t0/kd8qv//qvP+XvTPwOJlf+PYAP/jl7tBvo+Pcalv5OF85t7t9zjnYj4K/+6q/iF37hF476a8W/G95222347ne/e9i++V3KP1f5d7yzzjrrRP1qnvD9ktkrX/nKZzzOO9/5Tmvt8XTLifg+fsZBnUYrSI6fRidbUxUBERABERABERABERCBk0Hg8OT4zdj/6H2o1n20WkxEd01sf/XBnbhzzwy6oyMoDxRdMobGNeMjzjC9HLke3RmKVte7mglzJp47Vja8a+8F1RDdgw3UKzU0mk27c7+XiObkk9Q4E9LWxzxJlVO8DpUKWDJQMrndQQadKMb5Az4uHi1guJg1qZ0vZpHL5lCw0u9ZbJus4ms/2I2HdkyiUm8il89jaLBsUpwJ50qtYe8Hvoczlo3iwtXjJsn3V5qod2J4gW/J8vHhAZy7fAjnrhjFWauWYNnSEWQLBRPHTJiztDvFM5jqpn2OYxys1LBt9348vnM/Ht0+ge37pjHFmwJ4PEQYLQZYMVDAisE8RgoB9s42cOfWnXhkzwHbxchgGcODJZP8s7Uapqer1h98+fAAXrh2DFeuGEIOQK0Zot3u2E0CP6y0sGU2Qgu+jaFNvmTJ8u1h6M5B4M4Tbzgw/l13bpgkz7KMOsvL83U2i1zynC8X4S0bgD9cMjlOkc87AdIe6V2aeV4OXbhKAFGMZq2BYmUaL10xiKvXrUSxnLd27oVcgHIhwPg6yvGfwejq89y2p1CK8mT8HuqYInA8CfAf/FJJyH/w3rJlS2/369evP0zu8B9AUyFLmZWKPm7wrW99qycI58oTSgKuezRR9La3vQ1/+Id/eNSpUSSyL3r/P+weaYONGzeavGdy6UhL/z/YU9r/+I//+FOEWf92/Idjzun8888/nuifdl9M6M1HfFMs/87v/M68xOzxGvhcOf4f/+N/tJsHjrZQaPaL63TdvXv34uqrr+5tyvP2iU984oi7osymRE4X3iDRLxV5TVBUpwuPRwk+d6Hw7W8HkH5OQf71r3/9Kf1C77777mcUA9zHe97zHhPGR0sWzmVHOf66173uqOwoJ3/qp37qeJ2+Z9wP/y5FeTVXIB9pw7e+9a343d/93aedM0Uxf6f/9m//9mmPS3lCYfCf//N/7q3zdHJ8bsru6XbaL4PnrjO34sUzApmzwtGu0SeffNJu9nim76f+XfLmjZe97GXPdhjzXv/MM8+c97pHWvFTn/oUXvKSlxz20an+/f6cJnyEjed7HfP76c1vfvPTXsfsS8ybrY608MYxXltHu+GEfw7xxo/h4eHDdnEiv6P4Z/4zScE/+qM/Ar8LjrTMleNc92jfLc/3n7UcM/984t8X5rvMvYnwRH6n8M8HCuejLZTP/J5Nb06cu+5NN92E22+/fb7Te8p6vNHsN37jN464PaUxz2n/3wWf7kC8EYi/Hwvx/8OxYsKll176jAx5sxdvJni65UR8Hz/joE6jFSTHT6OTramKgAiIgAiIgAicfgT+5cm78bUd38KqwRW46cqj3717+tHRjJ8vAod6jm/D41+5GVOP3Y8Kk+Mtqlgnx+96iHK8gnh0CCUmxwPfHl2r1N21fuLWw5v/CTzr3U1Jbn20mVCmNO8C3nQL0cE6avU6mq2WyVnrV820eCLDTYizrHryvon2fN6EPMdKaVsMPLx4LIvzhvJYNVzE4GAJ5YESioNlDA0P4EAjxNe27sDdW7Zh72wTK1evxkXnn4Px4RJatWk06nUn5ZFBrd3Ftj1T2LVzDwbyPq666Cz82KVnI+rG2Dc1i4d3TuLJyZrJ4wLnlulisJzH2GAZoyODGCgVTbpTYjebrf+fve+As6Oqvz/vzette99NL4RIGiHFBBKUEqQIUlSQotKkqFgAFZCftL+ioCICASWAVOldSEgIBEiBACFkSTakbcomm62v1//n3HnzmJ28bcnuZje5X1m3vHkz9547c+dlzj3noKG5FY0tATQxUz0ORKJJhMIR5DkUjC7xiva67Ra4rRbkuGyIxBNYUl2Lpet3IJxSUFZegrJ8F2zmJBxUwtscMFlsiCQVbKtrxOovahAJ+HFoaS6+OboMg3OciIajCIciqPdHsLkljKX1EdRF1XxzlcxWc89p6Uh1vpWkfhpPoSKnOp+576D63CoU8lT926wW2KxWOFxOWIs8MOW5xDjRrp727podvpajnqB9Pgn3WBLhYFi1VS/1YOrIMjhdduGaT3W/220T5HjFdGaOq8TUQHyw0lfXqDyORKC7CFDJpldB1dTUiGub87mRDNZbp59//vlCGanV+vXrM8SikTwZNmxYG/Vpe22k8mjKlClZX+axeMyuFtVdfLBPJamx9A/suZ3f7++QuOf7OyLFutqmrm5Hko2kfVeK2FKl2hW7167sr7NtjARvV8aWiy6opjWSOr1JjnfWj2yvv/TSSxg3blybl3hO/upXv+rS7s4888wOSRYjdlyUQdVhR9Uedl1q0F5sdPvtt4OEfFeL1yTJ7GxFUoVq286KZJO2QIfbDkRynAt/TjzxxG4R4+wrr92xY8d2BtFev94bZEx/n9/3Gqx23tjV85guJFQfa2U8jzsix0k+ct5/+eWXO2x+NvKtN+coujt0hVi95ZZbxCKXju61fI2LkDpaJMdt+vJey/mJ49ud4jjzs5BWvUmOc8FXVxfb8HMcP88Yq7fIcf677rTTTuuUvNe3h4vT2lsg0p0x6OttJTne14jv3fEkOb53uMl3SQQkAhIBiYBEQCIgERgQCNz78SO4d+XDoq0f//DNAdFm2cgDD4EMOV6/GTUL5qGBmeMkx2MkP5OIRGmrvlW1Vc/zwuVwwMTsbatZZHALMlvAopKlzMimajv9xzSBClgSJqApjGgDLdVDiESjqj13WmmtEbjad+7RlDIJItZus6uR2aDy2Ioqlxlzyt0o8rmQk+dBTn4OfHl5KCwpxJodTXj0rZV4d9WXKC4vww/OOQdHTBqD9Z8sxZI352Pj+u2IhJMwWwGP24bKoeUYPWkimqN2vPTKfDQ37MJ3j5mCH544DeHWAHbsbEDtrkZ8+GUdFqzegsZmP0LBAKyKGT6vFzk5PrhdVLQn0dzUjMamJgTDEUFAO50uHDG0GFOHFmFQvhsFPie8blVx7nK5sKUxgH//bxlWflmHcePH4cRjZ6Khdi1WvLsMddt2I5Eww2qzwOuzYfjoYZh27LGw+srxyCOP4d33lqHMZ8f3po/B9CFFCAVCCLQE4PcHsWBTI5bXh4UFPYlvjSCnUoa/c9wsigV2m02o+zkGgtTWVORmM2wWKxxU4zsccLqccOS5kSx0isx1kZNHa3da1NO23WxCMhFHJBRGNEpyPC7a4wm04qiyHEwdWara8QOw2c3wuGwoHEly/EwUVEpb9QNvVpE92t8I3HDDDW1yxjUFOK2UaRetLyqEqY5l6RXnfOCtt4E1kifaPk466SShIC4uLgaJAqpF9falJMb5oN9YXBzF461bt67NSyQUSM6yeHwjEUc1GAlLY2WzLOc2JPpI1HH+e+yxx9oQdnyd6iiq6Xu7+DCcqmIuUtK+aCfPvGbayRstXzsiKHu6rUaCV9s/x4IqcJL0JHyp9NYXbVV/9rOftflbb5Pj9957r3AF+O53v9vmAT4tjElwUMWmt+Z/4IEHcOyxx7ZpI89T2n5zHHhehMNhkWFOK+4VK1bsAS/7TZI0W7WHHdtCQojYLViwoA3Bxv1Qlc739nZt27ZNWCXrS1N200aei0i4gMBo+Uw1q3Ydau8lPrT71RftuXmu0l6XNsa8Xt955509utUeOU4FpRaHoH8TlYv6a6Ij5TgX8dAqXivmqVP9rhXnMv3vxsaNGDEiq4KQCnC2Q1/EhItcSFgxY5z50fyMxYVHzOXlNc3FSV6vt9eGluNF9x+taG+vX9TE+bw9RSQ/v3He5edQffX3+b0nwezJ85jxE3rs9fMh7428jnge05qdbgK0UCeZ+Pbbb2e6xOvReM30xRzFuZKfB7hYh58NjBEkVHzzswMX1ukr272W++A1xrgNzqkkl/WLCvj+vrjXtufQwvmYauzCwkLRXy6wYzs5NrxmeV3rY2B6a04hDsSG7dQ+B5Ckra2tFZ+fjIsM+NmFbinG65XzNe+1Wn322We4//77M7/zHtlRtAM/82SLDeHCHqMLC7fl/Y8L4XiffOSRR8S9Uiuev7zHGdvYk9dsb+yL8zb7y3ugvvgZQP+5szPleG/Mx73R34G6T0mOD9SRk+2WCEgEJAISAYmAREAi0AUEJDneBZDkJr2OQBtyfP5D2L2WtupmROJp5Xg4gkWf1mLB9iYkc31wOR0q+a2opKqJqd4mNXOaVt4m2qszk9ykkudUVAtb9VACpqYwIi1BBELqQwFmbAsynOSsjsQ1dprKcRYf6rlsFswosuOIYjcKC3JRUJqPgpJiFJUV44P1dZj78hKs2bwTEydPxo9+9EMMH1SCxS89h88/WgFfbh7CoRhWLl+Jht1N4PMektTDhg/GrBPnwFc1Eo898Txqqlfhp+fMwbe/MRmJQBD+pmZs3lqH/324Dk+/V42GxmaEwyGhrvb5vPB6fUIF39jYIB540Lbc43HjqFFl+Oah5RhVno+c3Bw4+CDV44bd5cL6rbsx75UlWFXbhNPPOBNTJx2Kjxe9hE+WfYTSyiGIhOP4eNlH4liKJQWv24ORhw7HSd/7HkZMmIknn/4vHn/8v/Ca47hg9jjMGFaMSDCE1uZWfLR5N56v2Y06f1SQ4dqCAz4I4niTzOZqA80+XVORazb2JMxF9jhV+nY7XE4nHDluJIocUOxWsU7BbLaopHuKye8mMfbJWFyo52ORKIL+EDxBP44q84rMcZfbCZMpBYdNgddtQ8GI8SibdiYKqyQ53usXuTzAQYcACUR9ljMzN0mWkOCk1bm+qAyjQoylf+jNrFR9pmU28oTqW1qi64tZpvrMab5G9ZzRHYL7JrmqFR9O86FrZWVlm/0Z28wH9suXL1fjPXRlfGDPB+A8ht7KnPM0SQq9pSntYJmxuj+LZB4XEDA7W1/sJxcd9HZlI3izERkkdWiDrRXJBP0Def69N8lxjilJAH4W4CIJfVa15nJg/LvRqr0zLHfu3Ik77rijjRU8z832Mq+zYUeSieo7ffF65HXZEXadtW1vXuc1ql+cQtXoX/7yF0EQacV7P/+mV5eTWCF2+jIuuuEcQaJHvy9+LqCdtHEhRXvkeHt9MsY/dESOG/fR0tIiMtS14tzHObC7xaxZveqXNtO8RrM5V3R33z25vdGa/qGHHsLs2bO7dYj+Pr93qzOdbNyb57Fe1c/rguQrI0iuuuqqTKuyKVZJThvvae11oyfmKM5FnAv0lS1CgIuOjPdz472W92Qq0bnYRl/nnXdem0UAfXGv5SIZLkrQimPAa9i40Ke751NPzSkdHZfzMGNAqArXLwzqijLb+DmJBHcJI7yKAAAgAElEQVRHC4KytYP/RiSprie+uY9LLrlE3HO1IpnM3HT9Ag/GD3SUy91dvPfn9lxsxGtWq87IcWNbe2I+3p/972/HluR4fxsR2R6JgERAIiARkAhIBCQCPYiAJMd7EEy5q71GQCPHW+q3oObNB9FQ8yFagyZE46oldyQcxsJPa/HWtiYkcr1w2K2w0kbcQuLbLHLJ+T+qvKHQWJ1qb3OGgDWbmX+dhKk5ilRTGCF/SBDIVI2LPGxmX6eJcdqpk5jlcVXTczW/XFuNzn+ce2wWnDXYi6GFbpSUFaGosgylFWX4eEcj7nxyIVau3YgTTjgel192JQ47bDQevfuveOmxJzHr+BNw1sWXCqv4h//xV7z81POIxaKwWQBzyowRo4bhtB+djWETj8F9992DL6s/wU1X/QBHTBgBf30T/I3NWLP2S9w4bz42bt+FpuYW0U6nyw2P14N4LI6W5iZBkvNhTL7Pgx/PHIFpI8vhy82Fr6gI3vx8+IrysGlnM+5+9FV8tK4Ol1x6GaYdPgbvvPY0nv3PC5gycxou+PlvEAkF8OzDD+CxeY+IBQgKbenNZgwfOQxX/OEGDB45Ec889xzuvvuf8JgS+PnJ03BYWa6wXN+yvQH3LduEmoagWHSgkd7MfwfV4YIcV8X9HB9ap4vMdLG4gQsdOLJc3KCIDHYqo5xuJ1IlLsCuqJbsSImxVhSr6LMYY5gQjUTFV6g1JGzVjxTkeLFQn5Nwt1u5cMCKguHjUT71DBQOOkS0Rdqq7/UlLN8oEdgDgRdeeKGNKlUjS+bNm5fJBqWie9myZUI1TSKUD0apoNSK5B5JPq2M5AkfiFN9y/nBWHoFOl/LRvIaH5x3ZL9utMClnXd5eXmbwxof2POhbrYcaqrZ9PmRfanQ7uxUJSn7t7/9LbMZs7qpPu7tMhK8JE30RK52/MbGxjYZqNlI494kx/ULNnhukrhh6fNijQR+d8lx7o/3TT7o5/WhVXV1dVabeyN2VBWTMDaWMT+9I8K9p8ab9+bhw4dndsfPJkuWLBHqVWMZiZFsalbjNfbss8/i8MMP32NfXOwxY8aMNtbBA5Ecp7KWc5xW7blW9NR47e1+eoKM6e/z+95ik+19vXkeGy3v6TCgjzjR2kPnC71bAxeVUdXc1dqXOYoLJ/iZIFsZ3RJIlj744IMd3mtvuukm8H5urDfffBMXXnhh5s99ca994403Mk44PDBdIzjndXXhQXv49wU5rh2bBPk555yTaQoXVujJ2mxt7Aly3LiwkZ896LaT7d9nGzZsaLMAR7/IsqvncH/dTpLj/WtkJDnev8ZDtkYiIBGQCEgEJAISAYlAjyIgyfEehVPubC8R0Mhxf/0WrFvwEHZ9sRyBEBCLURVMq8gwFn26BQu2NSPho4WkFWabVZDfJhLfXExuAswktU0kOVVSVZCszBo3QyjHlaYoko0hoSgOhkOqpTqJcZLkJMe5PQlb2qyzUsKoXfxISz/uj2qdIqcVZw/PRUWhD6VVJagcOggtsODO597B/BXVGDd+LH75i1/h6G8eh1XL38KdN96EzWtrcOnVV+OcK64SxO3dt/0BD/5zrrBSdTsA6tKZAT5t9jRceP3N2Lo7grn33I0RpU787oqzgXgUgeZWbFi/Edfc/SxqauvR0NAIq9mEkeUFqCrMQTAaw6qNO9AYiMDlcqM414NLZo3G5NFVyCkpRn5pGTwFeYDVhqdeew9PvrEcM48+Bhdf+CN8vmIh7r7lZtTVhfDjKy/EDy6/FsFAKx6bexf+fOsfgVQCDjPgNANuuxOzv3UULr7xb4jEk/jrHXfgiSf/i4lDivGTYyagzGPD7l2N+Oe76/DpjhaEozGBLxci0Dqdud9U9YtFCGIxAi3WmRNvySj9SWKTiOd3q8UCm8MBt9sJFLuRdFnE+6kYV2CGYrGk88eZFa/as8cicfhb/HC1Ngty/IgRxXB5XFBMJOJNbcjxIkmO7+WVK98mEWgfAT5058N3rTRSR1PMkdhmRiSV2vyZtt5GUpOqyauvvjqzDyN50lEWM1VFeqUmc8L1Cm7uVK8M7UzZSYKKRJVWTz/9NI444og2ABgJD1rdDh06dA+QmINM8l4rY9bo/jyvjA+n2yMderqNRoK3IxLQiLNR0bs/yHH9+dMT5DjxpfKZajitsp3DfM2IHfO9zzrrrKxD1Bl2PT2utDnXL67oTE2oX3DAtmhqfP5MtaA+R5vkPgmZ9ha2cXEKF3doNRDJcS6i0VtDc3EBVZScO7mQqL8s6usNcry/ze89dW309nlsJMf1sSX6PnDRjrb4hv/G4bVH2+ru1N7OUXR20H8+0B+TFuO0H9cq2yIe4zxGBTFjFYy1P+61xmOyTST4udiJC3YYhbA31ZfkuHGhYlc+o/QEOc7YF30sQGcOFKeffnomhqQvM+X3Zvy68x5JjncHrd7fVpLjvY+xPIJEQCIgEZAISAQkAhKB/YaAJMf3G/TywDoE9OR4Dcnx6qXwh8yIkhxHEtEIbdVJjqu26k6nDTArMJlTSAkSVei7YbaoFrcik1qQr6rSmQR7Kp6EsjuMeHMQwWBYkNIka0mQx2MxJGj1TdZWT46nf04mU7BaVLKdCvIhPgfOGpGHiuJclA2twOARQzHv7VX457OLUVhShN/fcD2Om3MSrFYz5v7xejzxwKPCAv34U0/E6ef9EAF/EA/+8x68u3iJ6J/dAuTZgHw7UFRahLOuuBxzzrkar73+Kh578D6c/+2ZOGb2ZERa/diwfhN+cftj2LC9AbFQACeOq8KYynwU5ngQS6awtaEVzy6twQ5/DAUeBy6ePQZTDhuGwqpK5JWVw12Qj/c+qsbcx15HwaDRuPaa38BhiWHu7Tfi4Xv+A5fXi9nHzsb3L7lcqNAfvvc+LHhzIVJKCjYTUOQAClwKvDlO/PSOuTj8yJNQU1ODG67/Hd5e9A6+N2MsvjttJJLBEOa+U42lmxrQEAjBkUqg2GlBOJHCztBX2eLpZQgCd6oq+IBO2OGLsVNgsSiwkRyntbrLCRS6YMqxIZlS10SoBHsKChdJmCDU80ikxPfmxha4/M2YRXJ8VIlQ01ONbreZ4XFbvlKOD5bKcTkhSQR6GgHao1LBqtU111wjbDCp7mG2KRW4xxxzTMYi+/PPPxfW5yR9tLr55ptx7rnnZn43kuNGq1h9H/gaHzBqxVxHPbFmfPjLh/FGS3H9/pjLrX9o2xWr1/aUvsbc9a48eO7J8eHDeyoJmQXNL2Z4UjFIJTxdPvQW2J2RmT3VLiPBS7UYiYRs1RnBO1DIcWK9ePFicEECx4GZr1R3k6Ci2prnjz67nOpJkizGMmL36KOPYubMmXuFXU+Np7Yf5gXriXqqOPXXuPF4VF3qHQM4V1BBzuJnDWYma5XNdl2/v7vvvlvYq2s1EMlx5s7StSJb8TMN8eAiHxJD2Rbi9PR4tre/3iDH+9v83lNY9vZ5bCTHmcWsd2TpTj/2xxzF9nUWaWC8B3zxxRdZHWT2x72WkV28LvXW4HrMx48fL+5t06dPFwvsnE5nl4akp8lxWuPT7p3t5CIm3oO4kLmqqkpYwOvn4c4WD7IDPUGOM6aEC+O0mjt3boduBtxWc9bQFll2Ccx+vpEkx/vXAElyvH+Nh2yNREAiIBGQCEgEJAISgR5FQJLjPQqn3NleIvBV5vgWrJv/IHZ/sQL+EG3VSY6nEA2FsWgVyfEWJHOpHLcJS3WSpylyoiY1e5wqYyrFyZqaTYogxkmck0hFLAnT7iCijUGEwiFEojFhpU6ChN9NVItr5LgqGVdV40nVYt3tUDA0140NrVGMKnDj9GH5qCzNQ9WIQWi1uXHjI2+genMdrrzyYvzox5ejsKgMO7evx+3XXIW331goiGtPTi4GDxuOaCyGmnU1CISDKoEPIN8BDM0DvF4HJh//LVx847/R2hrEv+beh3Wr3sPt110Cp2LC2poNuPT3D6K+qRVHDS/EqUcMR36eFw6vBxYLs7hTeHXZF3jinc8RjMRw+XHjcOTEUSgcNAgFleWIm23464PPobq2FT+57ErMmnU0Vn/0Lv50zVV4560PYXeZYPfkYOSY0YhGY1izulrkswtYTUCeHRhdYkIyacapP/k5vn3BNbA5vXj3nfm4+urfIri7Dr88eSpG5rsw751qvLN+JyzxCEZ7rRid70J1SwxLt7fCH42rtvdpG3VizHEkMU6CnBbrCklyiwI7yXGbHU6nHUqeC4l8m7AK4PtJdnPcON7xRFyoxpFIIhaNobWpFe6gH7MqcjB1RDEcwlZdgZ3KcUGOT0DF9DNRIDPH9/LKlW+TCLSPAG2NDzlEXXjC+vGPfwyqxidNmiQIQGaIHn300Zm8cKpiSdLS9lSrf/3rX4JA18pIjndEdnVGjhvJ++6OZTY1XmekrXaM/fHAnsdevXq1UCLrczo76/f+IseNixn07ewM54FAjjMflxnb69at62wIMq93lRzfF+y63JgubsiFFswc39tiPMOECRPE241WvxdddBF4HbZX3Zkvsu2jM4Kuoz71FJHFz0Y33ngjGEfRWZF0o6r8xBNP7GzTHn+9N8jx/ja/9xRovX0eG8nxTz/9tNuKcPZ1f81RPLZeEczfP/744zZRDJ3dA/b3vfazzz4Tdu7bt2/v9LS54IILxMJBY1668Y09Nafw8xfjU/7zn/902jZtg74ix3mv0C/O63ID0xsaXWS6+/7+sr0kx/vLSKjtkOR4/xoP2RqJgERAIiARkAhIBCQCPYqAJMd7FE65s71EQE+O1yyYh13VtFU3IUJyPJVETNiq12I+bdVzPCJzXLHZYFbUbGpQHZ5MqPng/F0haaqS47TcNjPLOpRAsq4VoaZAmhyPqpnj6TxsNl2omAVJrv2StlZPpZDvceCk0SV4pnonhud78L1RBYIcHzxqCF5esx3zXl+GQw87BL/73XUYNvxQuL152LzuQ/y/q3+Jjz5YiQSbEAcobGYJN3gLgKR63FwHMK4KyPNZUPW16bjoD/OQk1eBFR8ux9/+fBsuO+toTD98DJYtW4Wf3PQgUvEorjlxPIYNKoGvsAievHxYHHak4nHU1dXjD/New6oNdbhw9qE4ZuoYlA4diuIhg1C9aQceeGI+RoyfjksuvlTYry9b/Br+8NMrsGbVBlidQCv55YQKg4ntTNvWs6E+GzB1JCXaJkw/9Rx898o/wur0IRGL4a6//Qn33z8P3xhTjtMmDMHTy2vw9to6TMhRMLXIjSKfC+/vCuD19fVoCEQEAa7Z2GvkOLGhjTq/uPiB2wjlOMlxlwO2HBeiBTbVMl8BLCYLFItN7IfZ9CTHqXSJhiIItgbhDQUwqzwHU0aWqOQ4TLDbNeX4BFR8/UwUVI5W//GbXhyxl6exfJtEQCJgQED/AJuEDVU+mrU5VdhUlpMkZ1EhxIe/eiKNqqbDDjsss9fukF29TY4bVe1sZH9+YE9inDbFgUCgW+fpgU6OG5VqxnxwY053e5nj3bFV70gN3NHgHIzkOC3FtUU2xizfzsjxJ598sk0sw0BUjmvnAxfU8Fxlxnpndcopp4DncV9+pjnQyPFs83tnuHf19d4+j43kOBeCdfdc2J9zFHHUHGY0TN9//33hbKJVf77Xam3k4muSnLxu21ORa9vSBYKOH3o7eeP51BPkeHNzs7Czp3tMd2ogkOPEkA5EB0JJcrx/jaIkx/vXeMjWSAQkAhIBiYBEQCIgEehRBCQ53qNwyp3tJQJtlOMkx0XmuAmxeArxRBLxSBhvr6rFG1ubkPC5VQUxCXKzolqpUx2eTAiFt1CLk3SlqjwFoSa3kzRuiSC8vRnhlgCC4bBQb/PBBYlU7fhfkeOqollUWkFe4HHiBxMH4T+fbkWey4ELDytGZUk+Bo8ainve+gzvVm/Gz352Mb5x7LfgcuXC4yvApnXLcfu112DlBx8LcjycAuJp7l3sW3VxB2O3C5zA1EOAwlwLCodOw3nX/RtFpcNA27tnnn4C5uYNuPC7x+PpFxbh5gdexNgSNy46bgLKqsqRU1oKT24+FJtVZKuH/K145PmFeGbhx5g8uADfnjkWIw8ZiaIhgzH/g9X4dGMLjj/lDEw5Yoo4/gcLX8FNP70Maz+vheICAgnB2avkuG6dALHIcwHfmGBCMmbCpOPPwemX/Qlmq1sct2btJ/jZVb+CLdiIi44ai2dWbsb7a7diToUbR5R54fE48X6dHy99vgO7WkMiZ1yrzBikFeQ2qxX8otW6GEO7XVgmOnKcSBQ71Xx4Ln5gpjyt1VPMGk8gmYgjHk8gHokh0BqEL60cnzKqTLxf7MtG5bhVtVWfdgYKB5EcZz59ekD28jyWb5MISATaIkBCnAoqFknFW2+9Fccdd5z4nXbHRx55pLAWZf3ud79DPB5vk7G8fPlyFBcXZ3bak+Q4j0Xran1RednVopW1XtXO9/XnB/annnoqVq5cmekeHyQzA5X2qXl5eWKhGLNeaeOtJ+AOdHKchCkdCrTqbXKc5MS4cePanGYcA1qEk/zhuPCzCS1uFy5cmMkE5hsGIjluzLBn/7pj8UxrX40U47lJ4lers88+G7fddlu7l+yBRI5rnaQjB+fFDz74QCjp9bb7eiA6ynTu6hzXne36GzneG/N7d/DoaNvePo/15PjeWE3v7zmK2PHeqnfVWL9+PSwWrihWqz/fa7ONPRe3MGKCFuC0uc+2SK2srAyLFi3Kag/PffYEOc4FiiTr9cV7z+GHHy4+B/DfQX6/H8T7/vvvz2zWV+S4McOemOg/A3Z0XfFc5z3yQChJjvevUZTkeP8aD9kaiYBEQCIgEZAISAQkAj2KgEaO59i9ePvsztUIPXpwuTOJQBqBDDm+azPWvUXl+AoEImbEoknEkUQspJLjb25tRNzrhstlh2K1QbFSNUxfdeaKJ8TeNH6T5Dgt1kmGWq0WJJrCiNS1INQaQDgSATPhhHI8mRRZ46INzCbXFMTpn0ma8q95Ljt+NHU4Xq3egUjKjIvGl2BwcR6qRg3F8x9vQk1LBBf/5GJUDhkFq80LjzcfO7etxd+uvxofvPUeYkghlARi4gBfMc4qIQ8MygdmTTDB7bIif/gsnP3recjNL0E4EkX1ms+w4LmH8ONTZ+JPc5/DCws/xEWzx2DGxBEorqqEr7gEDo9HtZmnDX0kjJrqDbjlgZcQDvpx3jETMXXSGPhKyzB/eTUS3kGYc/IZyM/LF5h9tORN3PbLK/Hp8rWwuIHWhHAmF1bqqpxe/aYkgWElwLFTFLT4gcknX4YTzrkeKbMdkWgY8VgA1/3ut2jduBanjx+Ehz7YgDWbd+CkQV5MKs+Bz+fG4i3NeHZVLeoN5Lg4RnpBAr9z3Bx2u7CK52IHu9UqHhjZPQ6gzANYVFKcHgE03xdZ43TBTyaFejwejSOUIcdzIchxlwMKFDVz3KMgf9g4lE87E0WDJTkuJyOJQG8gcPHFF4PKTxYfct50003CapT1yCOPiJxcjaAm0cXsTT1RyQfKXCCjVU+S49yn8QE81VQul2uvoeivD+z5oFufVU31PolDZlsbiwpzfSb0gUCO0x6b/c1WtLN95ZVXMi/1NjluPIeZx02rey7sM9ZDDz0kogi0GojkuFF5zwUx3bHz1WPC2IUpU9RFfazO9rU/yXFjrMTekJRdmYhIZDLrlzbJenUq5zb9XNqVfe3LNjz+3/72t8wuSMLRqaI71d/n9+70paNte/s83ldyfH/PUVyoRccYjUDOdu3013ttV84R/juFGelUivNzkL5eeumlPRZPaa/3xJxixI1xNpqbj74dxjHoCjlujAvg9a/PD+8KNvy8yM+NWl1zzTXCcv5gq30lx3tiPj7YMO+ov5Icl2eDREAiIBGQCEgEJAISgQMYgW3+Oty78mGcM/Y7GJ3fVkF1AHdbdq2fIfCVcnwz1s6fh91rV8AfNiMWSSJuSiAejGDhZ7WYv7UJca8LLqcdZptFqAhMikXN7TaRzDUjkUoglaSqGFAUq1AWw5RCqjGM6K5WhAIhRCIRRJg1HosLMlnTC2vW3pqCXHzni8wLdzpw6ZEjsXl3ACvrgjjjkEKMrchH5fDBCNmdaHLlo+LQiXB7i2F15sDp8gGpGB658//wyqP/RSQUQARAUxSI0rI8LU6najzXCcwcB0w+REEw5kHF4WfhO5feBauV2dpAU3MDnnvkHswcnY8rbnkIjQ1N+L/vH4khwwahoKIcrtw8WGxpq3GYRPZ2MhzCdXc+jvlLV+OSOZMwZ+Y4WHLy8MmWRpSOnoapM74hyGQSzBvXfYK7/3At/vfU/2B3qQr35igQp3ycpa4bQKEXOGmGGYcMVfDlNiuO/dFfMfHIsxBPphAKBmFWElj06jOIrP8EzkgA/5i/GtHWZhw/OBejin1we5x4Y309nvt0i7BVt+qU49opyYdG2njYbTbY7Q5BjlsVRajH7W4nlHIPFKdNKO75WiqVRDQSFcrHFJ0A4gkkhII+DF8ggFkVPkwZVQqH0ykyzUmOez0W5KeV40VSOd7PZgTZnAMFAaMql+rwW265RXSPhA6JcS3Xl6QXFUK0UmeRTKc6Ul89TZ5cfvnlmePxOLR0v/LKK/ca/v76wJ5Y//CHP8z0i4sUzjvvvKz9fOCBB8QiBq0GIjlOUoVjoVW2c4mvkWygYk6v4uttctyosG2PnGD7fvzjH2P+/PmZfgxEcpyNN14XzJTVk9xdveB4j6fKXl/Lli1rN6uXZC1JAq360ladx5w0aRK4OEArKoZzc3O72t1ubUfF6fnnn9/pOd+tnXZjY6MNN7PPf/vb33ZjD0B/n9+71ZkONu7t83hfyfG+mKO48Gf27NlZUTKey5wrjDnU/fVe291zhE4YevcH4/3HuL99mVOMynM6+1Cpna2YU3/yySdnXuoKOb5hw4Y2Y0rSnfe37hQXDWjuQnwfF0ZwH11Vj3fnWP15230lx3tiPu7P+PR12yQ53teIy+NJBCQCEgGJgERAIiARkAhIBA4yBDRyvGXnJqxbMA8NNR+hNWgSyvEEEoiHI1hI5fi2ZiRpq+6wC+UwVeNmq2qzR9KTrKpGcAuL7LRynHqsRH0Q4V0tCIfCCFM1Ho0hkVTVxlol05be4nfBvFJRrhLDbrsVl88egyK3DXOXbsLhFTmYM7oUg4ZVoWzoYJgLS9HsKQYchXC68mCzu+D25mDZW0/hkdv/gp1frofdmUJLDKj3A6GYelSfA5h0qIJjppmFl/nO0GBM+85vMf3YCzJ9oRJ86dsvoXXjJ7hl7suYMrwAZxw1DhXDhiC3pAR2l0uoxjVWmRgkYzG88Pq7+Ptj8zFjVAlOmz0BRWWl2G3yoPTQmRg6/CviIODfjeceugsP/enPSAZDcHpSqA8BjQEgklAzx/M8wMzDLfjWLAU76xQ0YCxO/cl9yC8diVg0gnA4iEioEdFtn8O0pRrzl6zEP+evwtc8Zhw5KBcluW7Y7TY89/k2vPRZLQKReBtbdW0MtHOBv1M9TiUplaM2kuM2GxxuF5RyL8xuG5KCtecYUS1OQjyBZDwprNWT8QTCgQg8QT9mV1A5XgKHwwmmnNvtCtxuCwpHjkfFtDNRWCUzxw+yKUd2t48QoC0ns1u1Ov744zNKcmZD0mKZ+ZckwfkQdOjQoVixYoXYPJvat6fJE6NKicclgca8U71ivatw9dcH9kay4Re/+AWY+W6sTZs2ifHYvn175qWBSI6z8UYSgQq9o446qk2X7777bmHvr6/eJsepEtcTElQ381w3lnFBA18fqOS4cZEM+8KH91OnTu3qpZXZ7vvf/76wJtaKiz5uvPHGPfbDBQ+0C9ZbM/c1Oa7NbVrjSF6zDb1RDz/8MK6//vrMrrtCZvVkOziHs7/6eueddzBo0KAuH6a/z+9d7kgXNuzN83hfyfG+mKNOOukk/OMf/9gjzigcDuPcc89tEyfBBWtcuKav/nqv7cLQZzZpbW3Fscce2+Z+SzX5zJkz293NvswpPB7nBa2yLTrga1w0xsUtb7/9drfmEzqyjRw5sk3bea8jCd/VYhwCzw19Jjr3yflNnznf1f1l244k/uOPP555iQvtr7766n3ZZY+/d1/J8Z6Yj3u8UwN4h5IcH8CDJ5suEZAISAQkAhIBicDBjcDnu9chGAticmnXMzTbQ6y2dTt2BHb2yL4O7lGRvc+GQBtb9QVp5XjIhKggx5OIhaNYlLZVT+V4YHfYYLIogrwwKyaYRA6dao2eSiWgKFSUq7bbFuaSw4To9lYEdzUhHIogEo0inlDzxtOMusiwZpnIhBts1rlfq8WCy2aNwVHDi/D71z+D3WbHJVOqMGRoFUoGV8FTWIBEbgGCzlKYnMWw2DxwuXyIhhvw4r/+gneefQpKvBl5eUAkZUIwAbgcJgytNGPieAvsthSqN/iQM+xUzDnnehQUVWRCyeOxCL5YuRi33fr/sLF2J649bSqGDqlE0aAquPMLoFit6gMmfiXVUHOSxfV1dfj1n/+Dbdt34dxvTsTsqWNhKRuJ/FHTkVvI/atF9fwXn76P//7zT1jx+mvIdcfg8pkQSQLRlAk+HzBmhAUTJiiIBFOo3lKJiSf8BuOmfxvJlAWRSBThwC5E6tfBtmszkrt34s7n3sVLy6pxyrA8HFGZC4/bIXLgH1u5Ca+t2YZEIgUli3JcT46zTyTEnQ6HsL4XP7ucUIp9MPtsSClmkTVPQlwoxrnQgUR5ggsqYgj6Q8gJBTGr0ofJo0rFfhSTAhtt1d0KCkdMQOXXz0RBpSTH5cwkEegNBGgResUVV2R2TTKcpBW/kxxn/frXvxZEGUt7nT+fccYZ+Mtf/tKmWT1NnnDneut37WAkdGj/TmW7z+cTi3SYw0nbYj5YPf3001FVVbUHZP31gf3WrVuFhb2+7rnnHqHQ4oNhvv7xxx8Lck2vdOX2EydOFGPBB9PsX5Ym6EoAACAASURBVGlpaW+cKmCG+wsvvJDZ96uvvoqxY8dmPVZXcOYCB5Jz+iLBQqU4SQKq0fTZ6tp2fJBPXEaPHi3sZo224JMnT8YzzzwjNv/rX/+KO++8U/ysJyOJLdWXWukJ9+eff77NwgQqobmPCRMmiHtXTU0NFi9e3GZRibaf0047TYxjRUUFxo8fD4/HI17qaex6eoB57XBhgvHcYl9ovVtZWSmufVrL0yacizR4rXG8xGcbXZEYJ7GoL+7jnHPOEUQsx5aqx/vuuw+fffZZm+2ykeNbtmwBba6zFa9zfWnjrv8bF/RwYU+2uvXWW0U79EVCihESdDNghAPbu3PnTuzYsUM4BdhsqmOQVrQl5jYkPHkNcj7i+4gL59La2lpBYmmOG9r7vvOd72TOzZ4ez2z7q6+vF9eWsX7+858Li+yioiKQ+GpoaBBkIM97IwnY3+f3nsSxJ89jnu8kJrXSn7e8rkgs6ovzKu9p7VVfzFE8Nq3/SYST/LRarVi7dq04Z7UFclr7PvzwQxQWFrZpblfuAXwDo1mOPvrozHu5QG/u3Lk9OZR77Ku6uhr33nuvuGY5t/Hc51zNaCiS/5zjOGZcGKVfiMYddeYusa9ziubUozX6qquuwkUXXSTm36amJtEuOm4Yx4BzHJ12eO/hnMf7Y7aaM2dOG2Kb23B+ZqxLSUlJZo7nnMdirIixVq1aJQhyY3E/3/zmN8XcSScx/hue9xR+JuO8abwvtDfIxs+lPP/0Di29enLods77/cqVK7Mejteg3nKf18mpp57aZltiwLk1W/XEfNxXOAyE40hyfCCMkmyjREAiIBGQCEgEJAISgSwITHjwWPHXu4+7FTMqjtgnjH7x1v/hrU3v4tKJ5+LSCdmtOPfpAPLNBzUCGiHqr9+Cmrcews7qpQgEzYhGU0I5HgtHMuR4wueB02mDYrMKAlxYqisWIQCngphkOVXUJGItigKLRUEiHENkezNC9a1t8sa16G9xfOZXk1zndx05zn98a387d9pInDm+Ck+t3Iz3a5tx3sRKTBhZgYqhg5FTXASHz4OouwBhVwXgLIDN5oHH68O2jZ/gzcfuxrrlC2FNNCA/J4ncHCA/34ycAjNgNaOu2QtHybcwdc5PMGzUZGERz0olEwg0N+CtV57Cz2+4HTNHl+Oyk6agpLISuZXlsLu9aZKZ7eb2qhSe3yLBAP71xGt47LWlmHFIBc4+9nBUjByDnFFT4S4aBrMlTaoDiEQCqP74XTx3zx9R+9lS5HkjyM8Hcrwm5BeakF9qQdxkQe3OUlSO/wFmnXoVzCYrIpEwwqFGxHZ/CVP9eqC5CbWbt+O2p99B8656HDckHyOKffC47PDHk5i37Essrtkh8OaiBVGGh9/aeJDt5hi6XS6xOIEkjsPpgKXAC3O+U7XLT5PiyUQCiWRCXSCRSCERiyMUCMMX9OOoilxMGlUMt8MBi54cHz4BlTPOkuT4QT37yM73JgJ8wGokmHg8EnsvvviiOLTR+lhrDwm/X/7yl22a1xvkCUmp7ipY+eD7hBNO2AO6/vrAnvMiH06TKDCWfkGC9hoJYn0Ot/Z3El18mN4b1dMErzH/tL0209ZWOxf122gkeE+T4yQzZ8yY0SUISSCSCDWSvHzzY489ltlPT2PXpcZ1c6NsSvjOdsH5g8SSsUgStEcq6LcloaMn5LOR47fffrtQsO5tdaSMJBFMAlhv29/RcUhyDxkypM0mzFXXZ4l3pZ28prm4xLivrrx3X7Zpby7Pts++WvzUk/P7vmCT7b1dPY+N7zWex909R958802MGjWq3e70xRzVVSxJ3F533XUD5l7LhvJ+sjfxLLxH0x2ko9rXOeWGG24ALe2Nle1zAK/Rp59+eo9t9QvEjC9mUyy3159sWfLatrfddptYYNDV4r1y4cKFXdqciyO0eB++gYvOuNCtr8sY/9Ld43fW532dj7vbngN5e0mOH8ijK/smEZAISAQkAhIBicABjcDsx89AU7gZ53/tTFx1xMV73dd1jRtw5vPq+383/Wc485A9V/Pu9c7lGyUCgtRWCd1WQY4/jF1rliIQMSEaITWeQiQcweJPa/Hm1kbEc9xwOR0wW6kaN4NW6FSQC0t0sylNjltgphU3M7tNKcRaw4hub0G4KZAhx+OJhEqG88Caalz3s9YmkuPcN8nmb08cgktnMnc8hL+/sxYjinw464ihGDasCnllpfDm50GxuxDz5iPqLgfs+bA7fHC63Ni+cQWWvfk4vlixGInWXXDbo3B5AMVhA+yFyB80DVOOvxgjD52WwYNkfyzYgu0bq3HnHXfg9Xc/xK9POQJHHDochYOq4CspgtXuFGS+oJlJ6qfV7/weDYexecNm3PrAi6ivb8T3jx6HGYcfCt+QsXBXHQZnXikUiz1zDkbDrfhsxZtY/NwD2LlhDZRkK5zWGBxuBRa3E7bcwagaOwfTj7sQOfklCPkDiEWaEGveDKV+IxBohr+5Gc8uXImnFn2CmcUOfK3EB6/LDp/bgdqWEP71fg0+3LwbZo6VRoobyHE2iKS3WLBANanLpaq+Re64DdYCD8wFLiS4TUpdvJBMJJFMxkXWeIpjmzQLlwBvoBVHlvlw+KhScd4oQoGuwENb9RHjUPX17yJfKsflPCQR6BUEqMrMZhFKVRAtrVlUY9Lm21h8OEqFpb56gxzn/jdu3Ijf//73oP14V+o3v/kNLr300j027a/kOBtqzPJsr58kI7xeb5usZm3bgUSOs81G0tjYZ2beUmFOlwBj9RY5zuMwP9doE5xtPBhLwC/mahtroJHjbP+SJUsE0ZVtkUa2/lM9R+cCY23btk1cf/qsXuM2JHtuuummNnNLX5PjbJNRpdjR/KIfU25HpTXdK7pb2SIEuruPvdmeqlgqQTsaF22/2Qi2/j6/7w0mHb2nq+cxF/DobaBJ7HHe0qqnyfG+mKPokvCvf/2rQ0gZi0AHDi4QMlZ/vtdywQyt6btTXDDIMea81Vnty5xCQpafvzqbg+nqQWt1RkG0d29sr538LDVv3rzOuiFe5+cSKuqNxbmP8wGV8l1dXLR+/XqxiLqzMrbv2muvBeNj+rp6mxzf1/m4r/Hoz8eT5Hh/Hh3ZNomAREAiIBGQCEgEJAIdIPCHJXfi2bWvYkzBSDx+yj/3Gqu5nzyKf36k/iPn7bOfRY7du9f7km+UCGRD4CtyfDPWzX8Iu9cth5+26hHVVj2aVo7Pr21A3Ee7cjtAO3WTSpCTFCcZzJ9Jd5MsttrssFI1Hk8i4Y8gVteKUHMAkUgEsXgcGjku2qMnZ9MEs8guF9HjItkaiWQKM0aW4trjDkM0mcQTyzfi/c1NuGDKUMwYOxgllWXILS6C3eOGwkx0pw9RZwFSrmLY3AVwuXMQjbRgy5crsWnNSjTX1yGZSsKTV4Qhh0zG0FFT4M3Jz9jDJ2JhRFsbsGtTNRbOfx1/ffhlHFbhxQXHTMLgYUOQV1EBV26uyF0X8nnxnwhdVwly8WA1gVjQj8dfXIRHX/0AQwu9OPvo8Rgxegi8FcPhKj8E9rwKWGxuobRn0aa8tXkH1n76NrZ/uRqBlhaYzA7kl1dg+NdmYsiI8UAqjnCwFXH/LqRatwItu4BQELFwCKvXbsJN/3kLsdZmnDq6CFW5bqH097ls+HR7E+YuqcEXO5phT4/bHvinTxCx2CGNv8Nuh8/jgWKxwGazwuJzwlbmEwsnqBjnCFExL35OppCKM0vehHAwAk/Aj9nlKjnupOrcZILNpsDrtqJg+DhUTD8ThYMOSTejrX2rvFolAhKBfUOA8202hZo+x/r999/H9773vT0OlC1f2UieMC/amHOr7YgENskmragqotKmo3rjjTeEDTLzLjt6IEt70WwZlfoH9nrreOMxjTbnfaVcov0oLb6z2YlTxcUcctp3krTQZ8Vr7e9Lcryj8dJbw3aEM+/fPAeyPWDneUMVHR/O04LaWBp519LS0sa6dNasWRmbYirbuIiDpSf7jLbqVKrRzldftFVmbIDRvpbbkCjhghGS98zUpuraWB2R4z2B3b5d+e2/OxaLCXUkz0F9rmy2d7SXsc5tObeQgCKBbrRrpwLzsssuExbA06dPz+w6Gzl+1113gdble1tdydRl7jntorn4pqN5hUo/vXVud1SitBqmrfDJJ5/c6Ty3t33tyvt4zdF14o477uiQgGN7qTLVV3+f37vS/+5u05XzeMGCBeCcopXxushmZd1ROzpTjmvv7c05is4GdMSgMtm4+EeLNclGzGpt68/3Wn3cRmfnA+8LvP/T+j0bSdze+/d2TuH+aOvOezznm2zFBXJcWEYCnQsU2rs3dtQ33rN4zmZb2KV/Hx1eskXUaNtwbmc7GZHSEaHPzwHcpr2IC/0x2T9+1mvveupszHrq9fY+H3d1/50px7mffZmPu9qOg2E7SY4fDKMs+ygRkAhIBCQCEgGJwAGJwMLN7+GqBb8XfSM5TpJ8b+rsFy8D88uPGXIU/nz09XuzC/keiUCHCOht1dfO1zLHkckcD2vK8W1NSPrccLhs5D5V+3STGRabIvKmBcctLNEBi82qKpMpLg5GEalrQagpIPLGSY5TdczXNSJZ1a6rpDJLa5OaY84vYHhpDv7wrYnI9zrRFIzgtv+tgkmx4pwpQ3DosAqUVJTCm5cHh9sNq80C2GyIOTxIegphcZfC5S2Cw+WDYqGiXbVNF8dKUPEcFYrnRDyGaDiIYOMObK1ZhQ+WvIe/Pzkfg/PduP6MKXAXFKKocjB8xYWwulwiv42d0JTj6cYjlWLfkoixv63NuOs/r+Kx/63A9NGVOP3IsRg8qBS5ZVVwFA+Fo3AQbM4cWGzMBWdeO/PcrW0XDaTiSJKwDwcQbd2ORPM2JFvrgVBI5KRGo2Fs2bILc19+D0s/+xLfOaQIhxZ61Jxwpw0um4IlG3cJ5fjmhoBKjmuK/WzK8bSbALFXzGZBjtscdtisVlh9DljKvIBiRjSWEO4AZo5zig8CUkjGYohHYwj5Q8gNhzC7Kg+HjyyBzemANa0c93otKBw6HmXTzkDR4DHq2Gdph7x0JQISgYMTgcbGRpF9HAwGxQNGZrQy95S5v8xHHcgVCoVE1ikfPHP+Zo44s1E11RUfnpMUZo6n/ouvD8R5kuPH/tJimfcUfU40H1Dz78a+cozF/bWXi1hTQcrvPCZJQ55jWjEPm4RytrHo5ab1+u45LuwfbZyZmcxzi9cZ+0879a7ir+2DClPmx2rnMc9t7pvECV/jvvfn+cv2UN1I0pt9pzqS7crJyRF9bk81ymuRC2qYPU6c+F6eD3xvXl6e+NLy53t90LpxAO3a4rUnFpymx5fZwxxfugHtr+qP8zvPY5KeJPj05zEXeuhjLkjstZf53Bt49sQc1VH0AxWuq1evFvci9ovXw0AvXts875n9zOuA1y3nJX5p12xubm6XlM4dYbG3cwr3yTby3se5hdcm28PPAZpSn21mH/bl3sjPGjU1NeLzhBZZxv3n5+d3+7MU28v5fNeuXWKRERcT0OWGcycx7WoZF5MsXrxY5MMf6NWf5+P+jr0kx/v7CMn2SQQkAhIBiYBEQCIgEWgHgdaoH9944izEEjFhq0579e7W0m0f4ZL/XSPedutR1+Jbw7/Z3V3I7SUCnSKgt1Vft+BB1FdTOW5GLJZEIpUUDxYWrarFW4IcJ0lqTVuoK6piWhCt6kNs8psib1x7sJ1KId4cRnhHE0LNQURiUfGgWdtYkMo6tXWmsenccUGapwnyQq8Tvzp2HMZV5SGaBKq3NeK5jzcjEAeOPqQMY4eWYVB5CUpK8uFyu2Gx2aBYFaRo7253wOz0wuz0wWRxwaw4YFZs3DlSyRiS8ajICG/evRt1dduwceMmLPnwcyxdvRHFLgu+N2M0DhtRibyKcuRXVMDpJclOAjutGDegnDaMF+r0aCCImnUb8djLi7Hwo3Uoy/Ng+phBGDOsHOWlhSgqKYU7vxRWTy4Ul0e0y6RY0kr0BJKxCFKxAJLhViSDrUDEj1QsKgjo5tYg6hpbsHVnA55dvArbduzClDIPDivyIsdFYtwOu80CcgyvrN6GR5etR6M/ApuFefHqUoSsD6s1y/s0/nxo7HGr2eNWrxPmUg9S5hQSXAhh4gPWlMgcTyZUcpyOASTHc0JBzK7MxeEjSsSDFMVsgsOuwE1b9eHjUfH1M1FYJZXjnV6kcgOJgERAIiARkAhIBCQCEoE+Q4ALmCZNmtTmeCSS++NiiI5A6Ygc7zMw5YEkAgCMlvxUpO/PhTpyUPo/ApIc7/9jJFsoEZAISAQkAhIBiYBEoF0EqByngnxGxRG4+7hb99juzY2L8c6WpSj3lODSieft8fofP7gbj695Hj6bBy+d8bC0VJfnWq8gYLRVr/9iOfxhIBZNIZ5Kgsrxt1fVYuF2kuNe2BwkQ81QbIogyQUxLjKsmUGeFHnWimKDw2kXyvHArmYEtzUh4g8KYpyW6l9JzbN3ibQtifGMchyA3WLGOVNH4TuTBsNqsyIaS2JN7S48umIjGkJxFHhdmDS0BBOHlSA3h1njDtEGqp2Zc22xWAWRT6Y4ZVIQS0FkZEejMbEAoLGpBV9srMOKtbVYvbEObquCkaU+nD5tJIZVliKnqBC55WVw5+fBanekSWX2f88+aEp4KsiTiTgi/gC2bd6CZ974AK998DkaA1Hkue2YNLwUE0ZUoKIoF3anE063U5D6VqsFFoXK+xQSkQiSVNtzP/Ek4tEEorEo/MEw1m3ZiWVfbMXnm+tgSsRx/KgSTCrNEUpxm8MGu9MKqxkIReJ47MNNePnTzYjEEmo2PEwiL7w9bZ44L7hIgSopq1Vgyhx5q9MGc7kXSdrop1JCXUYI6AZAe3Wq71PxFEL+IHzBAI6uUslxKs8tJjPsDgVup4LC4RMwaCYzx0cJAPenoqxXLiy5U4mAREAiIBGQCEgEJAISgQGHAFXB1113XZt4EFqO0z56oJUkxwfaiB2Y7aX7xte+9rVM5xhh8uKLLx6YnZW96jEEJDneY1DKHUkEJAISAYmAREAiIBHoewQe//x5/HHp3eLAz33n3xiaU9WmEfd+/AjuXfmw+NvHP3yzzWtUYZ7y7A+xtXU7Thp+DG4+SlWQy5II9DQCenK8ZsFD2PXFMqEcj0aTguwO0lb9s1q8tbURCZ8XDocNJkuazBREuIIUrcBNJIpNIoPabFKEUtiqKPDXNcG/tQFhfwhxjRzXWagLdjnjy64qxVmCHBc/pK3VAcwcWY6fHn0ocr0OQLEiQvvuYBTzq7dg6abdCMaoZjYJ0t7tULO2fU47clwOYS/OHHS2MRqPozkQRXMggpZQBE2BEBLxhJqJrZhQkefE10dXYMKIcuTk5sBbWIicgkI483Jgczphph2l6C8bmJ0dF/nrtBpPJcW+w/5WNO/chU9XrcNbK9Zg1YYdaAlFhfqaiw08LhvyPC447BbkeZ1w26yMdheLCcLRGPzBqNi+Ncx2hxGLxWFGEhYAwwtcOHZ0KQqcViiKWZDrdruq8LeZUthU78e/36vBB1/WCWzFogYhexf/n8E70xtNOZ7+zjHO8/nEmFpcVihlPsBiFlnwqVRCzWpPpkctCSRicQRag8gJqeT45BHFsDmcAl8uVPB4LCgYPh6VUjne05ez3J9EQCIgEZAISAQkAhIBicBeIEACb82aNbj99tv3yGzuSsb9Xhyy198iyfFeh1geoAsIMLbgmGOOyWz5gx/8ALfccksX3ik3OZgRkOT4wTz6su8SAYmAREAiIBGQCAx4BDa3bMUpz1wg+vGLIy7GeQZr9Y7IcX1m+e1HX49jhxw14PGQHeifCGjkeEv9Rqyb/xB2r/0Q/iDStuopREIRLFpdiwXpzHEqsk1UYYtU7YSaPW5RhIJYETnkJIRTgoC1mhVEdgXg396ASCAsMtZI9orsMx0cQikuAshTaoZ32lY9Y7meIumdQkW+F7+ZMw4jy/IFSU0VOAlaEsWxeAJbdrdgdW0Dvqxvxs6WMAKRGKIJ2sPrlMkmkyDyafEtbL6tFhR47RhS6MOYynwMLyuEy+mAw+WEK8cHV24O3Dl5cLo9UFx2mBXS0SwSy/petB1fqrLT7L5QWJMwjgQCCDY0wt/YgNamJtRu341P1m/Duu27saMpgOZgBNE4FyV8ZTdPLIkD9dkWcwpOqwU5TisG53swusSHYUU+oaoX+e8WWtpbYKGam+MQj8OWiuO99btw/5J12FjfIvpORlxkvmuy93QepfEM1c4NHt/n88HrcUOxWWApz0HCop4BAoNUCkkG0bPiCcTjCYRaVVv1oytzMGlkCewk1qkct5Mct6Jw6DiUTT8TxYOlrXr/nBlkqyQCEgGJgERAIiARkAgcWAj4/X7cfPPNIjuZP/MrGAyCNurMec5WkydPxtNPPz0gXY4kOX5gnb8DtTfvvvsuzjnnnEzzb7rpJpx33p7OiQO1f7LdvYOAJMd7B1e5V4mAREAiIBGQCEgEJAJ9hsDlb/4WS2qXY3LpeDxwwp/bHLcjcvwPS+7Es2tfRbmnFC+c/m9YzdY+a7M80MGFQEY5vmsz1i2YB2GrLjLHSXgmEQ2F8daqzXhrR6vIHLc7rFCoalYUQVinkKAUGYpFgWKxCHt1oZqm1XrKjNhOPwI7GhAKquQ4rQpJfpu0rHFBlKcE1SzoZnLKSSFDRlJslxQkM0lim8WCi446BN8aNwguWpDbnTBbLTBRyQ0T4skUokKdrqq1mZmeFOpmfkHsW5D4CnO4VWqb7TVbFVhpv263weZwwO50wOZyweF2w+Zyw+pwwMwFAEIxzv9oRq4mi6sW8GmiPE2Ia5njmj28UFazLVwcEI4gEgoKq/VwMIBwIIhwKIRYJIp4LC7aTT961aI8IezUuVthf07WXKjsU1BIhrMvxF0owc0w0S6dfY3HEI/EEI+GEY9G8fTKzXhyxZfwR2LiPVqpwvc0qa1T7O/xt1QKLqcT+Tm5MNsssA/OR0LhgoUkTCm1b8SYrUjG4mKcI/4wfOEQZlX4MHlkKewOOxSo5LjXY0XBsMNQ/vUzUTxojGiOtFU/uOYd2VuJgERAIiARkAhIBCQCfY1AS0sLDjvssC4fdsyYMaBqfNiwYV1+T3/aUJLj/Wk0Dt62PPXUU/j1r3+dAeCJJ57A9OnTD15AZM+7hIAkx7sEk9xIIiARkAhIBCQCEgGJQP9FQG+t/sQp9+CQghGZxrZHjgdjIZzy7AWoDzbg7ENPw9VTL+u/HZQtG/AIfEWOb0HNWw9h55qlCITNiMeouCY5HsFbn23Bgu1NSHi9cNCe3G4VRDFzppnjTSvvpIlO2xZhXU5FMsnxVDSJyI4W+Hc2IkJyPJFAUiPHhYL5K1NvQS+n2WbRJqFGJuGqZo+TF44nkzh6TAV+evQY5Pm8sLvdsNC+3WmHxW6HiapuqqaZK05SnO8l0c79kRQWVugkkRVAobpasOVQ+GW1QLHYROa3IP+tNlhIoiuKIJ0z5K3ZxIBtldAXKnLVXl1ViqtKctGXJLPV0+w5c9nTfRJ9SSRENnc8GkOCZH6UxLj6M18TLWeGdzyOZDymBbAjleCiAR6biwZUQllAmOQigPQ+wxFEQyFEgyGkImFsbfTjwfdr8PYX24XKm4sDtGZlD0xPZ42n26tZr3PxQEFeLqwOO2xV+YBdtacX1vHEg+cCyfGEugggFAjDFwpidoUPh48iOe6Elbb1VI67LCgcPg4VXz8DRYMOVTHLFt4+4K8u2QGJgERAIiARkAhIBCQCEoH+ggAXcA4fPrxLzbn22mtx0UUXwWLRXKO69LZ+tZEkx/vVcBy0jbnrrrvw5z9/JRRZvnw5iouLD1o8ZMe7hoAkx7uGk9xKIiARkAhIBCQCEgGJQL9FQG+tftnE83HxhB9k2toeOf76hkW4dpGawXTfnD9hatnEfts/2bCBj4BGjvt3bcHaBQ9i19rlCDBzPEISNolYMIwFn23Bwjo/4j43nA6bUFqTNOXDohSJX/5nNsOimGG2aMpsM6KBCAJbdiO0uxXRSBQJkqhqOLVKVrOEZThLtfsWLt1pVTYJV43g5ncSr2X5Hvz6uMMwvqoQVpcHNpcTVqcDdpdLELeK3S7IbZNZUVXsbB/3rohGwmy1pm3hVcW3SpibYGbbaQvPdnE7kuCChFbby7YkI5EMES3e43AKgly8RxDtKkEuiPNkEolQSNWV2xzCcl61Mdf6qZL/goNOJsSXIMYF8S4OCFBpH4vSH13N9CYeggzny2ret0a0x8JhxAJBRAN+REIhhAMhmGJRLFq7HQ9/UION9a2wioUDaazTCwYyCn4t4113SmuZ72wz1ekFeXmwu5xwDi5AyqGS4/SsF2PKrHFBjMeQjCcRDkSQEwlhdkUuDh+l2qrTGp6Z4163GYUjJqByxlkoqpK26gN/FpE9kAhIBCQCEgGJgERAIjAwENCyj10uF+x2O5xOp/heWloqVOVjx47FqFGjhKvUQK/nnnsOq1evznTjiiuuQG5u7kDvlmz/AEOgubkZdXV1mVbz+pIlEegMAUmOd4aQfF0iIBGQCEgEJAISAYnAAEBAs1YfWzgaj578j0yL2yPHf7f4/+GV9QswpmAEHj/lngHQQ9nEgYxARjlevxlr56u26oIcj6vkayQYwcLVtVi0owVxnwder1tYa1PtTFW1WRDkSfGzyLomKW1RhAV61B9B04YdCO32I0YVNAlmWnELu3SdsFoQxiSYv1KKE1OSrdyK9u0kcfmbxWTCmVOG49ypI+B0u2B1OkX+uM3jEZbo/NnisIt2MR9ckNJsl4VqdgVmqx0mPuxiG4SNO4+pKrsFyc1SWWH1xyRfTyJJi3Kq32NRJCIRmO2qytxitQMk40nEC9E1bc0TQCKOWDgkyG6q2y1Od+a4qtRceLpnctYpjVetyfkSmWYqzONIdJP7MQAAIABJREFUUU2eJs9TcbZIVY4jQRI6oarOoyoZHguoNu0kyGOhMPyhMOa9X4PXV9ciHKWlOhc1sJHp/pKqp5JcU+oLTNJrFKi417LfxVoGM/J8Pni8HlgrcwGnItrBvHeeJ7RXJwCxaExYq4eDYeSEwyJz/PARJbA5HcIK3m43w+WwoHjUeAye8T3kV6oPR6RyfCDPIrLtEgGJgERAIiARkAhIBCQCEgGJgERAIiAR6BkEJDneMzjKvUgEJAISAYmAREAiIBHYrwg8ueZF3PbBXaINdx97K2ZUHiF+zkaON4ab8e1nLkBL1I9LJ56HSyecu1/bLg9+4CPwFTlO5fg81FcvQyBM0pO26glEAlEs+nwrFu7wI5XrhcvtgMVmFVnYJHeZPU4SmrbqiikpyGKqsKk0jjZH0LihDuEmPxJUQdN6mww3Gdi0ylrYoGfsyDVeOm3tnVRzz4WiOp1NTvX4qNJ8/PakCajK98LqdAn1uINEuUvNCKfFumKjTboVZjNJcjM931ULdasDis2mqrs1JXd6mFU6nKUy96qlu2oZHg+0Ikri2R9AJBiEw+OCxeEUOev8ok07BdSCSE+rwbk9+213uWH3+aA4XaoVu2CgNVt5NVM9Q5in89aFGjueQCoWQYIW7QkuKkgiGVPpceaKkzyPRUjahxDxBxEOBBDhVzAASzKGDzftxv1L1mLN1kYo4nhq10S3qdhX0hb4Wt54mhCnop31VWa6Sl57PR7keLywD8qDJceBVMqESDSMaDQCU4oLI0xiYUAiGkcwEEZOKIijq3IweUSpmtueVo573AqKRo7HoBnfRUHlaPVY0lb9wJ9sZA8lAhIBiYBEQCIgEZAISAQkAhIBiYBEQCLQCQKSHJeniERAIiARkAhIBCQCEoEDAIHdoUac/tyFaIq04LRRJ+D3M34hepWNHH9x3f9ww7tqHtOD37oTE0u+dgAgILvQnxFoqxx/CPVrliEQNSMSJclLcjyMhZ9vxdt1fiR97nTmuB2K1YoUhdZpe25hq24xCytzQY4rFoSbAmhYvx2R5oCaRZ22SdcToVrquJZtTawyJHV6eyrHU8wrT5PWNouCs6ePwumThsDtdmds1ZlBbiNJbncIgtxsJTFOglxtE2ibTlt1m01YqKsEvUpMC4JeI2i1UG5he55CKhZFtKUFkaAfocZGBBqb4PB4YPd6BA4kx1XVeSY0XSjMgw3NIlvcnZsLd2EhrB4fzHa7OC4F3MJPnqsK+D62j20QWemCXRf25KloBMkEGXFa0qeABH+knXociWgU0UhYZIzHWv2CHI8Gg4gEgkglYnhk6Zd48eNNaA5FhKpfFauriGfGIK0W1yzUxXfNzl7DJa2qdzmdyM/Lg7XcB0uuS5DrXLgQiUYQj8bFz/yi6j0UjMAX8mNWeS4mjyyF3emABSbYbAo8tFUfOQFVXz8LhdJWvT9PD7JtEgGJgERAIiARkAhIBCQCEgGJgERAIiAR6FMEJDnep3DLg0kEJAISAYmAREAiIBHoPQRufu+vePqLV+CxufHsaQ+g2FWYlRz/1cI/YP7GdzA8dzCeOe2B3muQ3LNEII2AXjm+jrbq1cvQEjEjHksIMjsUDGLR6m14uy4I5HlEJp/VZoXFbhXqbG5Dm26Vc03BRrJY2JdbEKxvRv26bYi2hpCkClxYh6vScU3ILKjhNFksfs4QshpvTGI8iQTt1Xks2qsnUxhUlIMbv304BhfmCCt1K9XjzB8XOeQuWOwWKFZbRj1uInGv0F7dBrPNAZOiWrmrJHU6L5ySbx6DRLempialTBK6uRVhfxNaGxrQtHWbyFt35eaJnHPaq1M1rZZJ9DESCqN1106xWCCntASewmLYc3KhuN0wKYp6XHXztGo8rSAnNU6LcuaMkwAPR0QeubCXj6ukucgaj8YQIykdjiAq7NT9CPsDiPqDSMbC+KKuBXMXV+OzrQ2Zc51cPElx2szrqHyVNKeNPbFPE+MaGS8s6dNYOB0OFBcUwlKRA3i48EARHWAfQ6EwmHuuEuRJYaueGwphVkUODh9ZCofdIXLc7XYFPreCvGHjUT7tdJQOHavCIJXjck6SCEgEJAISAYmAREAiIBGQCEgEJAISAYnAQY+AJMcP+lNAAiARkAhIBCQCEgGJwIGCwAfbPsKl/7tGdOfqqZfh7ENPw5La5XhizQsYWzRa2KfvCOwSluqRRFS8zu1kSQR6G4G2tuoPon7NCvgjELbqJL6DgRDeXrMN7+0OQykohM3JjHHyyiZYrKpiWnUnJ+maglWxwkLS1GRCsL4Vu9duRaQ1KAhYkalNJbbOslsjRbUccsEWC0G3am0uLMTTpLogXgV5rPLJ358+Gj+YMgIujxMWpxN2Wqy7PbC5HbDaSVo7hLIbZgsUEuPiS4HZxkxy/l3JtF2Q1FqRJBe54GpbhXK8tRmR1laEGpvQULsVgaYmcQwS84rdKnAwk3BnXHg8gWgwgHg4Ck9hAXxlJXDl5sLuzYXF4xXZ5ybN31xjptO53yJPPG2pnkxEBQlOclysKeACg0QCiWQciVgU8UhEtVQPBhH2U9nO3PEgAqEI5n1QgwWra9Eajgq1uMBZfGcn1Wxx/h9pcqFVF31Nq9jTZDg30c4P/my321BSUAh7VT7MPjuitNYXmewm0a5YLIY4M9KjcYTSmeOzK3IwaUQJHA4HFLMZNrsZXreCwuETUDn9TBQNHiNQl+R4b1/pcv8SAYmAREAiIBGQCEgEJAISAYmAREAiIBHo/whIcrwHx4gPdVpaWoTCg9aLfVENDQ3CwtHn84nvsiQCEgGJgERAIiAROLgROP+Vn+GTnZ9jUslh+Pe37tgDjP9Wv4Rb3v+7+Pvfj7kJR1VNO7gBk73vEwQy5PiuLfhiwYPYvWa5IMejaXKcJOfba7bjw5Yk4j43LBZFqMaTphRs/J6mWq2CIFaob4ZisgiyUyjH19Yi2hpOx3gbiPEMTZumy4UCncS0SoynmGMN5o4nwBxsoT5n/rhw/k6iPN+La0+YiEMr82F3e2B12mGn3TmV5E5mgjN73ApFUdtG8lp8p6261Y6UQmo4nf2tkeOCpE6rudOkMfO+Y/5WRFqaEfL74a+rw+7arcLGnAwzFfT8vK9llCfjap65Oz8XuWWl8BTkw+Hxwer1weJ0i/zzr5TjadW6ZqmezhxPxmLCGh0J1a48FWf/VdU4FeXxcBixSEQlxgN+RFuZNR6CEo9i6cZd+Mdbn2Pz7lZBfYu2abbqhJdK/fTZpdqpfxV5rtqqp9QFEBn1vCpwp2NAYUEBXJUFUHLtiMRi4u+iXYkU4rE44tEYkvE4wmHaqocxq5zKcZLjdigmkuMKvC4FhSPGo2rGd1FYJTPH++RClweRCEgEJAISAYmAREAiIBGQCEgEJAISAYnAAEBAkuP7MEjxeBzvvfceXnvtNSxcuBDbt28XexszZgxef/31fdhz1986Z84crFmzRryhrKwMRx55JE444QQcddRRgqSXJRGQCEgEJAISAYnAwYXAI6ufxl+W3Sc6ff+cP+OIsvFtALhy/nV4Z8tSFLkK8PIZD8Ou2A4ugGRv9wsCenJ83YJ52FW9DP5wCjFhq25CKBDGouqt+KAhgriXmeMOKA6raKsgx0XmOLOk7ZkFofysq1jMaK1rRN3nmxAn205RtcjTZpkEaSt+StuRa3StqmhWqVu1bSakkrRVTwr1tMjbTjIPPSUU0d88dBDOnzkKlUV5aWv1dO640wmLQ80eVyyqsltVd5thtlpF9rfZbBEW45ryPTMAOuW4IP8Z9R0OCnI85vejdfduNO/YgWBTM6KhsGotr2rdhcW4xWqFw+uBt+D/s/cdcJYVZfbn5de5e0LPwEQYhijMjMIqMAJidk2gKLrqgrq4pvVvzquua9Y17rq4qKCoq2tYw4orSBgQJAi4wATi5NiTOrwc/r/z1a3X1TX3vXff6/d6umeqsO2e9+rWrfqqbt17v/Od880S5nhHfx8S3T2IdfUgkkiiFOL4JxbNlOdYQ+WSMMPLBUqrkzWugHGQOV8qSh7zfDqDQiaN3FgK6dER+U1Z81Q6i+/e/giue2AzMrkCIgTCPea4IqmbOccVKm7aWSTmGfJQFm67N1sqXoCBEXNmERwfQLgvKQA6jyUYnmd+9FIJhWwOxVwe2WwefekUzju2H09ePoiOhGKOJxJhdHeGhTm+aPWlDhw/LFe9O6mzgLOAs4CzgLOAs4CzgLOAs4CzgLOAs4CzwPS0gAPHm5yXhx56CO973/vw4IMPHtLCOeecgx/96EdNttzYYZdffjluvPHGQw5avnw5vvCFL2DVqlWNNehqOwtMYwscOHAA6XS60sO5c+c2FASyadMmXH/99TjrrLOwYsVEsGg6DPvPf/4z7r//fjDoZcGCBdOhS64PzgLOAjPQAjtGd+PiX7wB6UIGrzzlJfjg095WGcWm4a14yc8ul3+/8IRn45+f/r4ZOELX5ZloAQ2ODw9twaM3XI3d6+/CWLaMfI5sbSAzlsVN67bhtt0plPt7JOd4tCMuMuUlIT2HwHzekUgUsWgUiWRSAGgiyiM79mHnus3Ij2QFDNYQsjCSeZyXe1wxlxWDWn+nc3crjfUSipRYp/S3Bsc9gDwZj+Hy1SfjojOXobOrS8mrd3dK3vF4sgMRMpYJhodjCEcjkvea+dDJHA/H4pLjnDnGKzLnnEQNjhuy4pL/e2wU2dFRpA7sw+juIWRGhiW3NgFhLU0eiUYRTybR2duDjr4+dA70I9nTi1h3twDjIQbJanlzoWcr+XY1TJXzvFTIi5R7yZMtJytb2NkMESioPOQEx7OZNPKjY0iPjSA7xlzjOfxh/Q784I5HsG3/qALFOR4vwbuw1SufyReyZCsMcY/AL/L3oZBI2Cs2vALVOeezBgbQtWAWygMMLohIfvVioSR5xnlcMZ9HPpNDZiyDvkwK51FWncxxBikggmRHGF0dEcw5cSWWnPsKzF5I5rgn+z4TLyDXZ2eBGW4BKuxt3LhRfkZHRzF79uzKz3HHHTcjRse9Z+fOnZW+xmIxzJkzZ0b0fTp0ku/xfJ/XpdF3+ekwBtcHZ4GjzQJ79uwBiWEsTF0zMDBwRJrA7e/j03rw4EH89re/BffoCy64oCGf6xG5OI7QQfG65vWtC9+9Z82adYSO1g3LWaC6BRw43sTq+J//+R+85S3V83Necskl+OIXv9hQy5lMBpRI50bEB46g5aMf/Si+973vVa3OfrA/rjgLHAkW+H//7//hF7/4RWUofGA77bTTAg3tJz/5Cd773vdW6r7uda/DJz/5yUDHTkWld77znfj5z39eOdXXv/51vPjFL56KU7tzOAs4CxyBFvjHW7+AXz36e2GH/+Kib6M7rtK9mKzyLzzjo3j20vOOwNG7IU1HC0zIOX6DYo6PCXO8gFI5jGwqhxvXbsWanSMo9feig8B4IopILK7AV0qVhxQYzpf3jo5OYY2XyiUc3LEPu9dtRmE0J0A4gVSt5+2lKZdjFeNa5Rpn0ZLjOk+5gOoEiMtkjCuGsso/DhSKRZx87Gy8+/krcfLCOYgRHO8ke7wD8c4uxIQ9Hke4Iq0eFjBf/h2jvHq8wlQXBrnQpcdFxxV53cvJncuhkBoTUDw1tBeZkRFkUinJs03pdWHExyIi657o7kJHby8SPb2IE7Rn0ACl3EXSXI2V9vNwcY+9XZZ85Sh4wDgBZ09KXgIEmG+cucY9cDyfZq7xUfkJ5TJ4dPcwrlyzDvdt3FPB9ykc71lVp3Mf/+19o9jxZcVoZwCClpVXQ/ImJCTKAP19veg6ZhYiszsQlnlmwALnNSRzRKn3fLaAzGgaPekxPP3YXjyFOccJjocjSCbD6OoMY+7yVViy+lLMWnCimnNPLWA6XiOuT84CR6IFGJhMn4VW2bPHyHR0a9eunRFDHxsbw6mnnlrp61QqBs4IA9XpJMklP/7xjyu1GnmXPxLG78bgLDDTLLBlyxasXr260u3nPve5+Na3vjXThhGov25/V2Zav349OM+6HH/88bjhhhsQiUQC2dFVmjkWePzxx/GMZzzjqLi+Z86suJ4eDgs4cLxBq5OlTba2XRj5fPbZZ+MpT3mKRFbxBlKr3HPPPbjrrrvkxvPAAw+Am5IulEd/8pOfjDe96U112a2MvF6zZg3uvvtu/PGPf8TevXsPOe03v/lNvOAFL2hwpJOrfvPNN+Nf/kXlOaWDi3/XsgmBy2uvvVbq0+HJB64jNSJxcpY9uo9uFhynQ/7CCy+ccJ3RkmRpB11njHQfGhqqTMDg4KCs1VYUOoue9rSJOX/JbP/Vr37ViuZdG84CzgJHoQVu3Xon3n79R2Tkn1j9HrxkuXrJ/bvfvRd377gfy/qX4GcXXXUUWsYN+XBZYBwc34yHb7gGe9Z5zPF8UfDebGqcOZ4XWfUYYsmEsLBVHm+C22WR72be8Wgkhkgsikg4ipFd+0RWvTiWledOLdMtTHGRVOeo5S81fMlzbWDTXu5rkSwvhwQQLwp4W0KRTGqPPR4JhXDBaYvxhvNPxcK5/Qog71Lscf4djTP3eBxkdYdCUck9DoL6MfY1jlCEbO6wx1ynorhA+apPPB9/0xiUNCf4m04hOzqCzPAIcpmMfEZGO9ugZHsskUC8s0NAcfYhQsn5SFRY4/LjgdFl5lhninORMi+jXCAzPCfMcTmvJ6ceKjIooIhSvoBcNoNCOoscJdVTZLKnkEuNgbnhr73zMfz2L5swnMmJvLuONzBl1RWTvPJ/lTHKUDWL3ZgC+dzLDU/WfU93F3rmz0L8mD5RDmC/eC4yy/O5PHLZLEr5EtJjaXSPjeC8Y/vw5Ao4HkYyEUF3ZwSzJef4KzB38cmOOX64Ln533qPSAmSeERT/5S9/WXP8MwlgPprBk127diGXy8lc8h2Y78KNln/4h3+YsB4cON6oBV396WQBKu1s27at0qW+vj709vZOpy5Oui+PPfaY+NF0ceD4pE067RvwI+Bdc801gnMcjtJOP+zhGM90OqcDx6fTbDTWF6rwjIyMyEF8/164cGFjDbjaEyzgwPEGFsT+/ftx7rnngi9FZuHN441vfGOglghmf+xjHwPB4yDlsssuwyc+8YkgVaXO97//fXzkI8oZbhaC5828wAQ+sVXxv//7v/GOd7yj8in7xTzo1co3vvENkYHXhTnc6wUYNNs3d9zMtUCz4DgZUKeffvoh1y4DSoLeROzAGDK92Z9WlIcffhjPfvazJzTFIJk//elPrWjeteEs4CxwlFrgb379Njw0tAHnLXoavvasT2L93kdx6a/eLNb4+1Wvw9+vfO1Rahk37MNhgfGc45ux4YarMbThboxlgXyWIt5FpEYyWLN+B+7Yl4YCxxPCjC4T1SWYHSXCTfa4CrwkaE757Wg0jvTQKIY2bEZhLIsIwWcCvoIGe/LewjiviHsraXEaQajLCihXf1Gym5+XUBCgmCzysmKPk0leBmLRCC4/7zRc8tQT0dVNOfUkEl3diBEkJ2s5Hpdc4CGRV2f+8ZDKQ84c5NEEQtGYAseF4V6B8St94WflYg7lPFnreQGwCwSqcwTLcyo3eCgkEocEyCOJOGIExWNRhCIRAZAJngtD2vshYK7/LnNchazIphOE58CLlFkXuXKC5sw1nkNeWOMExslgH0MulUI5m8Z1D27Ff979mJJTl5zuYkH1/xVWvpon70P1rcyJQsB13nPJOs4AAW0HDzTn/PZ0dWHg2LkIDXZJvvZSuSDsfx5TzBdQYFBFNo+xkRR60qNKVv14FbjIdUFwvKcrgjknrMTCczQ47pjjh+Pad+c8Oi3w4Q9/uBL8XssCMwlsOZrB8b/+67+ekFJw3bp16OzsbGhxO3C8IXO5ytPcAkwVQR+TLmeeeSZ+9rOfTfNeN9Y9B47/rjGDHQG13/rWt+I3v/nNhJF89atfxUtf+tLDMrp2+mEPy4Cm0UkdOD6NJqPBrnz2s58FibC6MLUzUzy70pwFHDjegN38XvC+8pWv4KKLLgrUClmqr371qw8B6Ood/LnPfQ6XXnppvWqV7/1k3y+++GJ8+ctfDtzGZCs6cHyyFnTH+1mgWXCcbXH983rV5fzzz6+ZksA+v/1Q9uY3vxkf+MAHWjZRL3vZy0BFCV0++MEP4u///u9b1r5ryFnAWeDos8A1D/4EX777P2Tg//XSK3HT5tvxb/deI/8ma5zscVecBabKAuPg+CZsuP5qDD18D1LZELL5MorFPFJjWdy6bjtuG0qj3N+rgOdYFCXJSI3xPN7MP03cN0L57ZBIaOf2pbH/0R0ojGUEiFag+Dg13IOixwFjzdL28HHF2RaoFmXSlKEY42QFKXBcMarJsM4XyzhlwWy8/dln4PTj5iHZ1YFYRxcSzD3e0SFgtbDHKadOsJpAPtnsBMQjEWGPh8iGByXXI0yy7SVJV3nOCQCT1a1yaqeRGx1DbmxUgHTKtrNtAbRzOWL4iCbjwlqXcwo73Rs/v2TjHjgvjHUP6EexgBKBcdGRV+MjS56flfJ5FPJZxRofSyFL1ngqjUImjQ1bh3DVbQ/jwS1DKBTLYn9mC+cQVFpzL/e4zvHu/a6oyHsgOG2qrKzOr6TOlcy6Zp93dXRg9rGDCA92AbGIkrovqnmRiqUysuksUqNj6E2lhDm+6rhBJLw89cn4ODi+aPWlmLuIOccdOD5V17s7z9FtgUcffRTPfOYzJxhh8eLFePe7342TTjpJgvaz2ayo3jGg5cQTVdqD6V4cOP5gZYoefPBB9PT0NDRlDhxvyFyu8jS3gA2OP+lJTwJ9sUdSceD40QeOk0BE3EIXpj7585//jI6OjsOytNvthz0sg5omJ3Xg+DSZiCa6YYPjh1PdoYnuT7tDHDgecEr27NkDRgKahUznV7ziFQFbAF71qlfh9ttvn1CfcuwE6Sijzpzj1113HRiFa5bly5dLjo9GCuWY3/72t084hOdesGBBI800XdeB402bzh1YwwKTAccpA/e73/0OVCVYtWoVXvKSl4DSV0FLux/KqEzBSOOHHnoIz3nOc4RJTlaYK84CzgLOAs1aYPvoLrzsF29EupDB+YvOxhMHN2Pz8DbJM8584644C0ylBcbB8S14+A9XY2jdnRjLhZHLlVEsFTA6lsFt67Zjza4xROYMoKu7swKMl0JFRKIxRGOUKidDWrHHNaCaO5DByOO7UEzlhKldISJrMNQDYAV4JRgsmKzH2mYOa+/fAs4KcF6uAONUnxE2d4VBTiC4jHNOXIC/u+BJWM7840lKm3vy6omkAsjJ6mZfwxFhbQt7nBhwhGxyxbcu5orIZ1LqnEX+nRVQPJdOI33wANIHhkVSnbm/yZTv6OtBZ1+fANnp4VEUszlhjPN8ie5u+aG8ugD13V0V0JzoNRnh8CTieW4Zf1FLqpMZr1jjhVxO5Ntz6RTyBMfTaRQzGezcewBX3boet27Yjly+5BHRlVS9YomHVD534vEKKZcxVhjknr3FjpVAhIm66hIEwfbCIXQkEuifOwvRY3qBRLgid58n471cQqgcQj6bw+jIGPrTChxfefwgkknFHE/EI+jtjmDOspVYcPYlmLdU5Ql2Ocen8qp35zpaLWAzz+hHufrqqxsGU6eb/Rw47sDx6bYmXX8OnwUcOH74bN+OMx/N+7tpTz6nMwUsMQX6S0nUY3Db4Srt9sMernFNh/M6cHw6zEJzfXDgeHN2q3aUA8cD2vN73/ue5MzShaD2nXfeiVgsFrAFgODXa17zmooc1d/93d/hve997yF5i5mXi1G1ZmlUtqpQKGD16tVgLmNdppKJ6sDxwMvCVWzAApMBxxs4jW9V91A2WQu6450FnAUOhwU+suZz+M1jEwPsvnThx/DMJasPR3fcOY9iC5iy6g//4RrsWXsnUrkwsrkSiuWi5I5eI+D4KKJz5yKRjJG/LSxrgtEExaNkWkdCiEQiiJElHQLyxQJyB1IY2ziE0lhOwE/NTKa5NRgq4LRhf4HGyULmLw3cenmvpa/Mw60BcZFbJ8N9/HckGsZFZ56AV559MhbNGxB5dTLIYx1JxJJJRBMxAfTlvGHm/yZwrMBk5iJnHvO9m7fikT/dI4B4PBpFuZiHZFbPFSTXdzGTQ6Go5MSj0bAA7vFkQvpcyOZQyBcUyM3U5p6ceyQeQ4w50AmUd3Uh0duDrtmz0Dc4F/xOjY3gOHObc4xeTnVhjeeQF2A8jUIqg2wqJYzxkZEx/Ozux/DzPz+Og6ksItqWMh6Bx8XOBMc181t9rtFxxQpnEXBcadqroAMvL7pMpsccZzvxeAy9s/oRndeDUCejISLC3C8U8igWihJMUCqUMDacQl8mhfMX9GHV8Vw3SQ8cD6OnO4a5y1ZgwdmvwLylp6i+VtD6o/hidEN3FmizBRj4T1a4LgwAtokGbe5CW5o/msETW1bdMcfbssRcozPIAg4cn0GTFaCrR/P+HsA8h62K88O2z/QOHG+fbdvdsgPHW2thB44HtCfza9x3332V2u95z3sOYWYHaerAgQMixfza175W8pdXK/YLZSO5kXWb//Ef/4F//ud/rpzilFNOEebsVJSZCI7n83lQIWD+/PkeG0lZioyhJ554QuTfent7q5qP9Si/SSYTnbbtKnxo2717N+LxOJiXWjGnpkc5ePCg2JAKBZOR3aHM3ubNm6WNY489tjJGB44Hn2euRzqlOCe0IeWQminV5qKZttwxzgLOAlNvges3rsF7b/pk5cSnzz0F33/h16a+I+6MR70FDsk5vv4uYY5nc5T4LiMzlsEtBMd3jgCz+xGPU4I8gjCZ1synTfBVJMqZUjuMSDSKSFSxsrP7xzC2aQhFguMVFriS7hawVg7y2MyepDcnRPeJz2/yb/VhhVmu8n9TUl3JeQuwK3LrlFcvYnZPBy552km45JyTMNDbg3A8IWxtkVdPJhCrRGHDAAAgAElEQVQVefWId/6I9IX5wpX8eBnDe4Zw/+/+gEfvW4dssYQCgfMox+wlSCcoHg4hEY0gzoCAqALJ2c9svohMvoBioYQCQWOUUSgxV7oaajIURkcsglmze3HimWdg+dP+CuFEQkB5yf9NhFryqHtjktzmzDWeRj6VUgB5OoNMOoXf3r8RP77zUezcP+Yx4D2Ot+4mc4GHCY4roFzRxT1GuaDinmy6dxWIXUuKoa+L+kuJtLMtBgv09PciNr8X6IyiLGnjw8J2z+dzyGWzKNEGoxn059KSc3zVsnkq73s4DC2rPvfElVh87isxZ9HJcgYHjh/1W5EzQJstkE6ncfLJ6npjOf7440W5a7KF7zYkG/D3vHnzJtvcIcePjo4KsWDu3Lno7+/3bX8qwRPukyMjI/Iul0qlhHVPXwTf6Q7HPtZucLyVPg6uwW3btmHOnDlV57LlC6iBBvkcsXPnTrCf7CPn9XDMaZAuB7kugrSj6wwNDYE+0Wb9Ra3yN+n+0Ae4a9cuUGVw0aJFDZGfZiI4zuts+/btso9w7dGnWKvUklVvlb9Jn5/XRCaTwcKFC1uioMi53bp1q1xb3Nfr+cOmcn/nHsBrgTYcGBhAMpls5DKaULfd98amO2YcOJn9fbqC47xHc41p/3+79vDJ2M6cO15f3LO49+prYTqC4/Rh84fXBX9apabKPZ7PBbzWiPk0Ol8koHI/YSqgRo/nsSw61Vorrql2g+Ot3o9pA64/3sP5N597+DMZ3KgVdtRtOHA8gDW54Z1wwgkTalJmpB0vZfokNjjOh5JGNwXKtFM+2iyNMtADmMe3SqvBcd4QP/axj1XOdcUVV0iAgV/59Kc/LfL0uvz0pz+dMFf/93//B0q96XLVVVfhX//1X0HGPgsB5/e///2SS/6LX/wifvjDH1Yi38855xzJW+0399///vfxkY98ZEKXeNPh2jnrrLOwYsUKkcoOcvF/4xvfwI9//GNpiyoFtCcDJJh//i9/+cuEczz96U8XVQPmbzschQEX//Vf/yXBIyZDgNI7XH/vete7sHTp0rpdIwj7ta99DbfeeushY2R+b6YJ+PCHP4xf/OIXlbZ++9vf4rTTTjukba4POz2BXenss8/G5z//+ar94jyT5aALH0rM8XFuOTfVSrU1ynae97zn1bUH1ygljGoV9ueVr3yl5OxjYeDNBRdcgK9+9au48sorJxzKdU3lCuYxr7eXBJmLO+64A5/4xCcq5/jOd74DpoBwxVnAWWB6WSBXzOG8H16MTMHbJ572Nlx6ykumVyddb44KC1TA8d2bsOGGqzG04c9IZUvI5hXYnB7L4uZ1W3HLjhGUBnrQ0ZGQnOOSr1tyjKvc3ZKnW9jXQNTL350bTiO1cS9KY2qdVyTTNTiugXFDxVvX0QxyDYxXJNY1o9wDyAuUHSegWwHIyXgvY9HsXvzt+afhWWcch+7uToQSScQ7kogLezypxsA0KR6A7AmHe/LvZezdsgX/d+NteOKBR5ApFJAthzBcKGB/voixAkF5hTUzSznZ6tFoRLKw5/NF5AoEtxUhPRoGoqEw4pEQOsNhDESBuf09WP6kE3HqOWdi9uLFAkYLKC6sbQ2Sl1AsFESiPZ/NKDn1dEak3JHN4n8f2Ihrb9+ATUPDCrhWuLew2RmeqZjiYcUa95jx6nvFKhcAXGPgGigXxjj77mUjZxXvTzVVKiigq68HyWP6EeqOy5ilSokM/iKy6QxymSwyqSxm5bI4f1E/Vh0/iFg8gWgkjGQygp7OKOaesAKLVztw/KjYZNwgp4UFbGfrs571LHz7299uqm8ED/meftttt00gKvA9jP4SpqLi+021YPE//OEP+PjHP+577t///vfyXn799dfjn/7pnyQwWxe+473uda/D2972tgnvTY2CJ1TuY991+dSnPoXzzjvPtz90GtLnwZzFzO9qvnfaB7B/P//5zwO9YzdjeOaMv/zyyyccatqHX9ST2b355psPIQz45RwnUNoKHwff/b/5zW/igQceANegOZenn346qNpIZcXDVdg/Xgf8Tda9Xeh7evnLX161j1znmzZtqhzmZ19+yTqXXXaZOJ9ZmEqOxB6ztPq6+NKXviT+KrvQ7v/2b/8mABJ9BfRR8BrShWuI18gLXvCCmtMyWX8Tr0GeR5cf/OAHEuhIX5CdI5yEIvqvuLfYxfZJ8vtGrguqZ3z5y1+e0iVI2zOlBW3Aa8PeV+i/4bq75JJLfH1bfuA4xzBZfxONwDXKa4JrmT5Oc21wHni9khzT3d0d2GZcK5QD53Vm7gNsgPvmxRdfLKlRTzzxxEPabPX+7uer4/2Qvl6O2xwv89WTPPfOd74zkL94svdGPfif/OQn+PrXv17TvvQdBglwa5UPu11+2MCLKGDF9evX47nPfe6E2nw2IVbAa53PKM94xjMESK1XWmU7+zx33303SJq85557Jlz7xCY+9KEPCQGQfdSF4/nWt75Vr7st/Z7XCe/d3AOYYtS8LngiYjC8bklYtZWbH374YbzhDW/w7Q/3Kc4D54lY0p/+9KcJ9V784hfLsx8B+GqFmBoxinvvvXcCRsF55h7F+2utZ1Dd7lve8pZD7jXcj0499VQ85SlPkR/iOrUAe/sZgHYzbcX2agUAcY1x3quVVu/HDET43//9Xxk392N7Xs1+NJNKuqWLUKnYaZG7Vjd95LRnb3q8wEzQrNUj5cMyI3N14Wbwox/9qKnT8AIi2KgLHxRqXRBNncTnoFaD47/+9a/l5VQXytGb/za7YI+ZIB6Zs7rwAiVwqQs3NA2M68+4qTCnPDcxu3Bj9nuoJZBe78GCGxZf0LkR1yr2iyPtyZtBrcLN7kUvelGrprBuO9zcCI5qEL/WAZ/5zGfwqle9qupmTyY858RUZ7Db4zXByNYg4Lgd2e7XN4LI11xzTdVuE0Q2gyzqGsSqUG2NkgHAh996hYEA5jr1q2+/rBAcpw25xqsVBixwP6kWpBF0Lv7qr/5qQsBKtUCFeuN03zsLOAu03wIv+OlrsX1kp5zo1r/5BXriwZ0M7e+dO8PRYoFxcHwz1hMcX38X0jkyoAmOlxQ4vnYrbto+jFJ/D3p6uhCNR4VpXSyXBBQnizxCeW0CpSElr05AtjCWQ2rLPpQN5jjtWmFqeznHiSTLZ5rL7Ml6C5Nag+r6bwFiRdgdoOS4MMYVIM7Plcx6UY5btXQ+/vaC03Dm8gVIdiQQTnSIvHqc4Hg8LnnBJVe65B0nt1po0J6SeAlDT2zC4/f8BUMbt2J0dAyj+RL2ZvMYzhUwnC1iNFdAnqAwz89+EBAPh4QhHY+G0RePoC8eQ2c0jGQ0jK5YFLP6u7Fo+XFY9pSVmL1kAUi9LpdU/nQZr/wqokiZcrafzQprvJBOCys7n8rggU078d1b1+GBTUOVc0r+dEa/a7Y4bSky6x447uUf16x9zkMlEGFcW13G7/sW6rHPObaOrk4k5vUh3J+Uc4i9OX6y7PN5ZJibfSyNWZksLlg0gJXHz5OI/kg4JOB4d2cEg8tXYPG5l2LOYsccP1r2GjfOw2sBBnS/+tWvrnTib//2b8UB2Wih05Pv4o888kjNQy+88EIJaPcLWiYoZAbYmw3R2U+Hnd/7vq7Htr/73e9WDmsUPLEJDwTi/UAZAld/8zd/05CJGPDPfLDtKLRLkGDuWucmMGWr6dk+Dqoc2uQCu036V2r5TnhfZgrEavNstkfQmO/LQcgKrbIrQSyOgUEeQQpBSl4vnZ2dE6rTcW4CsX725QEMrKC/Shdei/TFmKXV1wUDDxhsYhf61NauXStEDs5RtcI1wDbs0ip/03/+538K+UUXAvX0tZgpKO1zMzjEDqyxU20GmU+zzmT8uo2ei/XpF6JPqt4eyrrcP7lObXVTP3Cc9Sfjb+LxXMvcD2r5/1iPBA+CU/Q91Sqcy3/8x3/0XYd+x7GuDaq1en/389XxMxKLqhX6CQlmmv5ru24r7o26TZt9Wq1fZmBOtTqt8mG3yw/bzDVU65g1a9ZUJeyZx7373e+W/a3WfadVtjPPa+97fmNhIAIDUHSZSnCc74b07XP/rwWc6r4RxyLmYQbmEUyvFlzF4CfuubWC4rjv8VnQ71mKz7Ik6NUKVGTfeA4+g5KRX63YStR+9ein5z1n5cqVvs0sWbJkUkuYpFGSNv1Kq/dj3ktok6BlKlWuq/XJgeMBZouRDuZLE8FU3qDbURhdQYDTvAB5/iBgml9/3ve+900ALwnqmg/L7RgD25xJ4HgzNti4ceMhQC8jcms96Jjn4UbBF5+gDxZ8MWekaq3Clw8GArTrJdk8N29kjG6u9zBrHsNoML8bFyOUGK1mR936jZWbpskIrwbIHq3geJB1QrtWSwvRyFzwwcl8KXLgeDM7iTvGWWBqLHDPzr/g47d9CcsHjsOXnzmu+DA1Z3dncRZQFjBl1RU4fjfSJCfniygVy0inMrhp7Tbcsv0Air296O7tRCRGafWwANIaHBeGoADYKg85gVCC45kdB1AaUbLq+nw6/zXPXck9rvOLS45rSXJdAYzlbwLfFaAcIPwtgKyA0iWVd1zSlatc3cWSYjSfuWw+LrvgSVh1wjFIdnQiRIl1YY/HEYkpgJxS8NJ/D2BWCLnKy50ZHsbOdRsw9MjjSB8YRoky5yUgVywjlS8gWygiw1zkhaLYIxGPoiMRF+n07lgEMU/WnFLuXXNmYc7xx2H28UvR4ckDl0oC86s83x7AL4zxXA6FXA65TAZFSpVnMgKO37F+K7532zo8vH2fsn+IEvbkvSswnExxnWOcWvcK9B/PMx7SyLfHIOd3Il7v2byyJox54DEMhuA5ON+JZAKxOT2I9CcQikUEFCfhXVIZ5Yso5LJIjabQm07hgoX9BjgeRiIRFnB83vKVWLzageNuH3IWmCoLkAVIQFwXKoARkGyk0CdCh2PQQmcp35VtVlEtEJAAGYGjeo5P+jW0Gl8j4AlTjdl51v3UAGs5d2uNPwhYEdR+dr2pAscpuW+zO+2+1PNxkNBAh3nQ0mywRtD2zXp8t6bvzVb+q9cW/US2Y3mqwPFmrotq4DjHSYWDev5HzjGZjWZAQCv9TTZIFNRnQt+eCcrOJHCcwQp+AQf11h5VBUzVVBvgDXLN8hy10pBybzz//PMDAWK6vzbhyRwHZeLJyA4CsJnH2T7ZVu/vfoEFtYIKdN8I2N1+++2+Uuutujfqc7UTHA9ynfnt7zMFHOf+YKtyVLu+/PZ0s64NjjdrO90m912qENQrtn99KsFxBscxEKSRwv2HfmcdaFDr+YlkSuI2v/nNb2qewo+UZj/H1usjmc9Uraim0GoHStZq74YbbvBVZG0XON7q/ZhqFHy2bqRM5bqr1i8HjgeYMbIszRc6btamLE+AJupWYb4RslhteRVGu1A2udlCMJzRQLowovb1r399s80FPm4mgeO8IXPDpFyPHUnDh0rm96IEt1nuv//+Q+Q3uInx5Y6S1JQvYm4wRjDyochP4vuWW26pKoVm3xz1ublp0FHAmwEfXO2HK0al8dh2F96Q6Ogwy9Oe9jRRPCA4z7xNlJk3AW86LdhnO6+RvVbY5gtf+EKJEKfECW3KSGs/8LwaIHvnnXfKjdAsdHxQsk2Xesxxyq4wz4YuVHQwb958YGGgTLVCe/hJ6PBFj/1m/i6z8IWQNxJdmmGO62P5QE32AW1OJjjtZ78s8EHClqhqx1y0ey269p0FnAWcBZwFZoYFDs05fjfGcmVkc2RlQ3JH37xuG27eMYxibxc6O8m6jooseSgSFRlunT+cvwXsJXs8GkUpnUd2xzBKo1mEqBbO/zTD2cslLqC5BmY9mXXJv20UDRxrJrnkHydDnMcJOK7Y4vwt8uoeyFwoloTJvfrkhXjFuSfjycsWoKOrA6FYXPKOS+7xWByRRAyRSJS0b8W09oBj6qITDKac+YEtWzG0cRNSe4Yk53eoWBRJ9VKI51Z9CJWBSCSMWJRs9BCKoTAQCSPa1YnuwTkYWLQQvfPnIRpPeFLwSkJdMcZVjnEC48wxXsozz3gWhWwWxWwGqVQW9z62HT+4bR3u3bhb2OkMQJA+Cudd5QRnWnRJAM/PwgYwbuf1NsBxMbXH3Je/9XwYFHINsvN88UQc0cE+RHrjIrtOFiIB+Vwuj3wmJ2NIj6bRlx7D04/tw8rjB5FIJEVWPSGy6hElq37uKzF3ySne6XX4xMy4blwvnQVmmgVaAY7bAf60Ad+9CKjwHZvkAVuamqnVbPY15cF1PYLJ//Iv/1IxJ9Xmrr32Wvk32UEEsglmksVkMkqZyo1OXJZGwBOqq3EcuhBg95OeftnLXibAoFkIyPFdkrl3CRhSEYN9Yz5eynxyn6wmJdqK9cKckLaMLkEU0y78dzUmHHO2813bLtV8HHRiP/WpT5X2GORAKW6zUOb6He94xyHtERSz/TR8/+XcUtqW79tUILTlVDk2OtnbXfzAVPqeKGNNZzrtTJVHu3/sFx3tBC50aSU43urrwvSb0N9DtUpd9HVGBjDXLKXW6R+jpK9ZbBXEVvqbqjEoyUSkQgLXChnuTLdoX4cm+YX9pjS5LlQFMP3EHGOtQCCCzs2SnhpZq9ynuF7swB/uKfQlUkqZJBf6L+069OeZ158N8Op+cBxvfOMbxZ9J3x+BZpuh7udv4vFkbdsKjpQ6577HANInnnjiEEVOXjOU7/crfmAqr2/6Ttk/tkffq+2T5bXI+dQKF63e36vZjuuE9xyCXTwnr3WCmWbh/krlTbu06t6o2+U6IBPdLlQINf2HQYKxWuXDbpcftpFrKEhdrm8GMTCXNf3/vD/zWqDf2r6nsz1eV6ZCsHmOVtmObfoRnrjWqZ7BlKR8huB9x0/NY6pAymqgNv3rvEcQMyBzm6o6th/7k5/8pKS9YWFaFj5z6mI+JxBT4L2ex3P/eOYznyn4Akl73A904TODqbZM+/G+YO9nfE7Rzw1co6bvnm3VIkDS1nx25VrhD9Vkmb+cdrAVTHjf5z3Uxk34LEMfhC5k3ZtjZzBUtfsL91WOyW6z1fsxx2g+t+i+cl3xGXjOnDki/c4gAl4znBuuR9rVL5VJkOuwVXUcOB7AkgTE9AuRXjyTfRnhBccHPsphceO0Gbh8OWO0BR9gJlOYL9sE8qcKPLVBNj54VpOH4PgINpsRtfYLSztl1Z///Ofj3//938XMptyFCZ7aMhi1Ihf95ovS/FryWn9fK2rZ7+bIIAeytc1CiSzdd37ODaXR6KtG1xc3MTonTLCaY3vTm940Id8bX0apuGDeeAhOm3m06Zxln80bD68tSm+Z+Ta4yfJzPnyYpRG28pYtWyZIqtQDx2278EXdzL3WDAuilq15czMlbZoFx3nTofyfmTuFID/nzHywsBUppnIuGl1zrr6zgLOAs4CzwMy3gAbHh/dsxsN/uAZDa+9U4Dhl1QtAJpXBzWu34eadwyj2daGT8uSxmLCvKadO1rYkr/ZyUhOsLqIk8t7lfAn53aMokzlOJrdmh2uzSV5sxRTXoLnIqxuAMavyOwHMNYPc+56volLXk1XXEuvCHq/kIC8LSPzkZfNx6bmn4pyTF6GzuxPlaAzRWAwR/hAk54/IwRNkjnjS6uyfdEDGmBkdweiePRjdsw/ZA/uRG0kJw5tgsGbBS55vMsY7O5Do7UHHwAC6Zs9C50A/osmkgO9SNBbsMd+l74UiClnKqWdRyOdQymVRyuaQSmdw0wMb8YM/rsMTuw5ITnAC4YrcrkBy/lZBCsqm/KnkHpfzebL1mh1fYcmPd8VczSJx783L+HSp9mm36NweRPuTMm6uA/Ylly+gkMvLj4DjmTTOW9CPVcfNQTyhco4THO/tjGDO8lUKHHey6jN/E3EjmHYWoIPSBqnpILadmX6S5xwM1cNswIPAHZ2YZrFZiHQu8r3JzBfMc9CZWg2wpb/BDGymg479JEhjArm2LDwBee1EbgQ8sUFvPxlfOjptkHaqU6UFXVS2MhvnnSSCRoqfj4NBBLbPi85rgkO6VPNx2Mp99OtwPZl5N3nP42cmu7ydSpC6z35sLAKT9OkQjDULAToSYvR14+dkbyU4bp67FdeF2Z7tO+VcJJNJcfYz2EMXm8RDf5ImX7TS38Tz+YHj3LtIHDKZfra/h8f6KUbqMQwPDwuQowuBCTuHeSPXR6vqkmBly/j7rSnuP7S7Bnl4HVIOl+C5Ln4AL/dLzrMJtNAWPL6Wv4ltEqi2A2c4P3aQC+1OxQETvLdZ7WzPj+FJ0J6+dK47s5iMRgLU3Ge0KgjrtXp/97Md/fy859gkFfpJzaAEAnb0iZvrs133Rr91x7k0QbtmwfFW+LDb7Ydt1XVntkOCEoPxzPS4vNdXy93eSv+/HVjEPZh4yrJlyyYM1W+/mwpwnPdkXtsmBuZ3PbKz+/fvl2A3/ZxJTIB7lh/Iy/omu1o/4/FZ0WTR+6U5NdOUMIUyA/J04byR+Gfev/idbT8+gzLHu51Optb6oi0YAMAAH3PvrKa6a7Zlqz7Yz7JB1nWr92M+yzAoQRdNRJ2KYMQg461Vx4HjASxoP7jVivgJ0JxUIThub076WEaR8mbOB2A711DQ9nU9RgOaQD4BTDtKs9E2g9T3Y6AGOU7XmUpwnNFFevMzX2JNW/Hh2QR5GwXHOS5GxDDfhd70auWut2+O5ku5aUc+LFKiw9y4q91wG7F/rbp2Hiu+5DEIwwSz9fH2Zssb26c+9alK8wwa4A3YLIzo9Fv3ftFlDhx/TEBvszDq9ClPecohU8jcZVSm0MW+4U7lXLRqLbp2nAWcBZwFnAVmjgVM5jjB8d3r/oRULoRMtiDgeDadxU3rtuKW7cMo9PWgqyshgHIsGQNCEZTKBRmsAmfVb+bfJqMcBNj3plEaziHkyZ5LXW0eDY7rfxvS3vzIBMkJ1prguLDJKQnuscT5WwBmMsh5rJd3nJ8VikWEIhGsWDIoAPnqUxdL7nRQTj0SRTROgNwDyqMxqUuGtGaRK6BYEnpLnygbnj04ivTBA8iNjCGXTqHM8ZG5HYkg3tmBZG8Pkv39iHd2IhyNVBaEgqxldBVgXzPGlZR6HsV8TkD3cj6H/QfHcMeGLfjhbeuwbuteRKNkaSuWuJZSj4gd1We0kciqe0xxDZSPm9yD523muM+SNQFylbJcgeNUDYjN7UW4JyF67pwJSqvzh0nQs5kssqNp9GbTePqCPjx56SDiyTgi0TA6ElEv5zhl1V+JOYtczvGZs1u4ns4UCwRJZVVrLJTCNd9PWJcgJqWydaFvhD4Nu9Bpagff04F53nnn+Z7SBgFZiSAKg7LNYvtpTId2UPCEQCCZgWbx8x/QP2CCM6xPcN52wk6H9dAOcNwkKZhjtOfWD1Sw54lOWNrODBDXbdpgq80Ua4d9bdY4+8dAf7Lq/Qp9HSTkELA9+WR1vzLLVIHjzVwXZj9tcJzffetb3zrE50OlP7KFdTFzfLfS38T2bXCcc3HXXXcdAlCyLvckk7hBsMMEi82xTldw/NRTT50AtFRTXuBYCJCTiUn1R+5ZtiywH8Brqxpom9gyyX4Ajx34Ukt+3ZaGJnBPdUmzkIxjBiQQ1GXATbVC4IuAOsdsX4ut3t/9bGem6TD7SPVR3gtMgOyXv/zlhHtcu+6NfrZqBTjeKh/2TATH9bVFYhj3Gl3oc/UL4Gul/9++JsgYN9MEm/N9xRVXTFCjnQpw3C9ti1+QnO4nFVYIcDOAjOznWsWWHq/2/Mi2TMUW3nPIamaxsR87vYZ5fuJ2JoO8GZyI7REgN5WPCOabxDm/MbcCHG/1fmyn82DQA5/LGgkYqDnBbfzSgeMBjNsOcJynrfcyycgTLlZKTDVbHDgOycN97LHHVkxIKXLeBHQxNx4THDeZwa0Ax3k+gsOmZEe1SFT75kgHgfnyYK4H++E3SFRfs+uJx9mBD/UilEybEkg3o+fsSE/amQ+q1Yr9kObA8YngOPeMe++919d89gu6KUfDA6ZyLiaz/tyxzgLOAs4CzgIz0wLj4PgWPHLjNdi19naksmHkcszjXRbm+E3rtuEWyqr39aCzK4FYIi6ALxndhEYFFPfyWxP6LpeUvFgpW0Rxb0rlHCd47MdaNqS7KxbU7HHvtwDjBNz15/ynJ2EmoLiZr9vLQ66l11VO8rIA9oSFT100B5euPk0A8ll93UAkijBB8pgCycPRmEjCh6Jkj4cEKFc5uxXzmhm6ydwGJdOLBSXnTua4B/5L3u9IRIBg1lEW8nKrC0te/VvY8hxToYQiGddFMsZz8neZec0zWWzfexA3P7ARP7/rYWzbNyIMdpFKF/l3YtUhkVcXsNyTU7eBcQG0TZa4+W8jr3jF9potrln+XsAC22XhuTm26NxehHriEulQKhEcz4sMf6gcEln41MiYgOPnLxzAyqVzkUjStmF0CjgexdzlK7CEOccdOD4zNw7X62ltgXr+jHqd9wPHbdlYP7l03a7tmKwmRcv6fuC4DT7odukroHIZC52tOrg7CHhCRz7lN02Qgywp+pTswvsiZU7NunTmEiikbWyGcT17tvP7doDjtWRI6/k47Ny79VTdyGA058Av/3sr7WcHppvM6GbOM5XgeKPXhTkeP+Y4GYJMDWAWqvqZCpcMlNDgQCv9TTynDY5Xux5Z15borgYEs+50BMdt8gwDAQjwm2oKjaw/G+CdjL+J5+V1YPoDyTTs7e317RJVSE466aTKd9zvubeaxQ5mqEYUCTLmVu/vtu04B5Tvr1Z4r7vyyisrX/NvEwxs173Rrz+tAMdb5cOeqeA47UpipZnas9p+0kr/PwNITFVegvPVniXsvXYqwHEbj6kWRBHkmrXr2OA40+RQbtwuX/va1ypBC7FYTBRdGCDEYq79emogDHgz0x/89Kc/PSRVb5BxMICPaTd0CTIPrQDHW70f+wU+kMzHIJFzzz3XNyAtiAwnavQAACAASURBVH2moo4DxwNYmZGOJtu1VXm7uXD4UMh845RdYpSFLUvG7lEi2WaHBui2VLHzpR8uWXUtp1St33aum6lkjrcSHGfeoeuuuw4bNmyQHBJ8aaO8OMF55rthbnNzrNUeBu2b4w9+8IMJkuCmHeu9OAZdK0HrMWKTL7K68PrQUVZ+bbCulkO3H6bt9VnLocG27eACB45PBMdrqRHYee/4wk5pf12mci6CrjVXz1nAWcBZwFngyLGABsdHh7ZgA5nja+9AKhtCLltCsTQOjt+6cwSlgV4BOaMEkBMxBfCSwSxS5ApCVmgwwfEQSpmCyKqXRnPCvNbArTCSmRfbA4gFwDVykMv3AkOP/xbk1QPBWV8zxjkTmjVO1nKxxNzjJRSJP3vAuIDQHohOIHfx3H688KwT8LyVy7Bw3gBi8TjK4YiA2gTJyYyORMl0jihw3GNMV/pZ6SABeyW7rljuimFeCpUkD7jYxgPEFVPcy7te8qTgCwUU82SK51HIF4j4U8YKqbEMHtm+B/9zz6P47b2PYSSdE0nyCjDOdgUoV8C4pBg3AHM5p8cgV6i5ELyVmpAFlldWss6z7oHhel1UJO91rnjWI3t9TgfC3Qmxj9i2WBTbhwplFAsljI2Moi8zhgsEHJ+HaCKGWDSEjmQUXZ0RDC5fhaVPvxSzFzrm+JGzm7iRTBcLkO3Kd16zMG2cKWFNSWzme/QrfIe0Fa9sRk81ph3bY5A25cp1eetb3zohz7d5Tj/5aPbfT/2smn1t8ISMZqY4IxuM4yb7yE6Xx7bIUCKDxq/QF2Hnm9X1yHAmE17nCq4mTz8V66Ed4DjV5+gw9Sv1fBw285gqAC94wQuqmoK+NjMdHQkLtG+7ik2u8JOObuTcUwWO02/X6HVhjsMGx5uRsG+lv4l9s8FxUznSngOy9ZjuTpda/qbpCI7brHvm8Tbzpjey5ljXBngn429ie/b+Xm3v0/187WtfWwkeIlnIVBXxU2Nl/mw7ECPomFu9v9u2IzOc97NqxU6zaOMO7bo3+vWnFeB4q3zY0xkcZ2D0mjVr5N6/fft2eR6iv59AK5WC+WxgAtXVsJ1W+v/Ne2e9gAym+CWZTZcgoGzQ66laPZutXEvZotFz2eC4XyqGWm3aIDWvWVtdyDyeeJ6Z55wBeAy+8iuU2icexPS0xIm4Xhj4vmjRIkmvYz6f1APl2X4rwPFW7sfsE1MeMS2SmYLXtAXTLfOZj2k0zjrrrKppkBqd91bUd+B4ACvaebvrRaUGaLJqFd7M+YJkguR8CeLDezPRfnaEbKuA/XpjtCOQakmcsS1bImamgeN8MGNkH3P72DnWatkqKDhe66G83otjvblq9Hs7t1ejx5vMdub/YtSWLpTVY/RntWI/NDhwfCI4Xuthph44PpVz0eiacfWdBZwFnAWcBWa+BcZzjm/ChuuvwdCGuzCWBbK5IsrFMtKpLG4hc5zgeH83Ors6FNOaACllxpXaNkoeC1lyjZc9lni+hMKeMZRHspJzXAOztJpmM2t5dOmHZjib8uqefLoGxgmEq4TgSpacwHdR1yGL22OJEyBXGHRJMbS9+vJ9sYSergTOPmkRLjn3VJy+eBCdnQmEojGAADml1qNhkY8PkVkepvy6YpFLEYzZy4POfzMwgIYQQnhZscxDzLHu8cYVbq7sIkzzopJ/LxQkpVNJgPEC+PK/78Ao7nx4K35198P4y+O7USiVhB0ucuaCggOUUScYThBcAhO836orXh53AwTXth5n93sS9eyrl5tcseJV0XNSyTnOvOLeufm7HAkhPKcT6KC9QtIfjloAcpGGLyA1mkZ/JoXzF87CyqVzEEvEEI1E0NkRQ3dXBHNOWCnMcZdzfObvIW4EM8MCthpVo74Tpgwzg8kpN0nnoV+xc2sy16Gda1cfZ4PjQZyP9jlt8CTIjPhJSpvHUTKUwK4pvVqtXb7rMQCADsapLu0Axyfj4yDgR79Es6UaO7rZ9uzj7HU8WTB+qsDxZq4Lc+w2OE4mtskQD2LfVvqbeD4bHLdJAmafZjo4bkuR24ByEPubdWyAdzL+JrZrXxeN9IeEMYKLuhCA4XWhSy1We5DztHp/b8R27J8trUzGK5mvurTr3uhnm1aA45PZ380+TVdwnKQ4+lDNNAz11llQcLxZ21Hx5pRTTql0g3+TrV6tNLpG640vyPe24k8tQDlIe2YdGxxn0KJmhAdpi8q+ZLI3W/yY6nyeZf75a6+9NnCzQe7DrQDHW7kf68ERy+Qz7Y4dO+qO97LLLhPJ/+mgkuTA8brTBclhYuZoaCb6McBpKlUYgchoE3OTbTbPuS2TUEu6qpE+1qt7OMFxylpopjL72W5ZdTpDKXHTTETm0QaO25FrlPa+6qqrKsupHjjeyMuKvUYZ1cWc77pccMEFwjYIWtr9UGZHin74wx+eIP/v189GHmbqgeNTORdBbe7qOQs4CzgLOAscORYwc46vu+G72Lv+boxmQsgzX3ixgHQ6h5vXbvXA8V5093QhFo+qnNwhSquXFFuaeafLSrpcZQMPIVQoorwvI7LqKJQUu9mQ+DatqMBjQqzyh3ylZdg1cGuC3PKZV08AcILe/Ih/E6QVcLwscucV6XXJha4KAXJi2ssXzMELzzwB5z9pKebP6kNcJOOjnnx4RAUCRFQe8hBBYWFoE/zmcBQoznzf7DjPrZBzxRL3EHGUS/y3yodephR7oajk2EtFlAmU5/NIpzN4YOMu/O/9j2PNQxuxdzg1AfgWXj4BccqaC5NdgeOUbo8IZu5lM9dAuc477h1XYY0bRtd5xOVoQ7JeGV8FIciIvHmptBELIzLYjXKSwQLjsu0ccj6TQT6XQ3okjf5sFucvGMAKguNJMscj6EwocHzucuYcd+D4kbOTuJFMdwu0GhyvlcPRlueslsOaNrPB8UbfBdlGo+BJIywsAiNkzJp5MKvNNXP7klE5leVIA8e5dvxye7fKprbTmekOKZnfbAkKjjPI4pJLLqmc5tWvfjU+85nPVD1tK64Ls3EbHA/i07A7Nxlw3I8peTSB43bQCCWWua80W1rpb2IfJgPGcA+iX1wXG8iqx5KtZ4NW7++N2I59s1m8VM00FWxt27Xq3uhnFweO114tzDNNkLfR0m5wfN++fZK7Xpd64Pjjjz+OZzzjGZX6jTyzNDp2Xd/e33l/4n2qFcUGx6ulsa12rsmC4/azGYMfyc6manQjZSaA4/Z+bI6PQfjEN3jvqcYi1/W5b1Nlwly3jdiqVXUdOB7AkrZu/mSlaQKcEraUe7Ny6JRN5guqLrVkyYL0K2idwwmO23ln2g2OU0bFfjnlwwTlJCgVR1kfRnARnOUGYW4OMxEct/OmUCJucHAw0NJgNKcZ7Wm/PJFFzuCTasWB4xMt08gDdz1wfCrnItBicZWcBZwFnAWcBY4oC4yD45uw7oarBRwfyYRF5rtULGFsLIs167dhza4RYKAPHZ0JRJNxhAmMhxUYLKLoZI8LO5vmIVU6RAQaof0ZFA9mBSCusJq1xLdUVQxwXYQZzkKwlseTre3VIUgrDHXKpXuS66wt+ccJjvN75r8mEO3lHmc9YWsb7HF9Pp6LzOzejgQuPGMpnr/qOJy0cBC9PT2IxZh3nPLqEUQIjhN8jkUkKIDy61Ioxc6hisy5l0tcBwdIfAD7oSTU2QdhubMvBO/573wB+VwWmdExbNw+hGtuW4ff/99maSHq5TxXNlM5xTUgHg5HECEw7wHhIpnu2UwzyXVOcgG0K/ngvXqG/WkfwdY9FnlFMd77N+0mTXuy7XLORAShud1AgrLx6uz5IqXzwyjnCshns0iNpdGXzeC8Rf1YuXQ+EpRVj4SRTETR1RXF4PIVWMqc44udrPoRtaG4wUxbC0wWHKfEJ0ECXWoxfKlOZzLr3vSmN+FDH/qQr21sEJBS72R9NVIaBU/YdqOgKFPuUTKcPoxbbrmlqmPx+uuvx4knnthI9ydVd7qB47Z8NB2sZs7OeoOlhClT37Wr2OngJpMqkX0MCo7bASONguPNXBemDW2fQjPknFb6m9i3owkctwHWICBLrWuglf4mnse+LhpRwaB/1ZQw9pNVb5Qpao691ft7I7ZjP+xrlyDi29/+9koX23Vv9Jt/B45XvyoIeJ5xxhkTKlAWm35s3lN4LyI4SNlsKuKaqjDtBsf5LnXcccdV+kZffa2Au8MBjlPd5/Of/3ylj82oi1SbHRMcb0ZJwm9PaWSPotKtqYTL+58dnMR1wnRCAwMDEjDONLzcK3jv1CXIvt0K5ngr9+Nqc8I1xmdaElgpc++ntMx1yneHZDLZrkeyuu06cLyuiYBsNnvIiwdfrriY21X4EsgLSxdGm5gbSJDz8iI77bTTJlRl/qDu7u4gh0+qTrvBcftBweysLTPebnDclvqu9QJwxRVXyEOPLjMRHLcf2t7//vdPUFZoZOHYqgz12jqc4Lgtc8SIbDP3eiPj9qt7uJnjUzkXk7WVO95ZwFnAWcBZYOZZwATH119/NYbW34PRLJDPKUA5RVn1tdtw654UygM9SJIBHI8DUQK2miMeVjLflFkX2fKigORh/h/B8QMZlAulChPaZCwL8O2xk8kUZ7HzXes6FUa5llHXTHAtma4l1r0c2FpinW0KWE5Zc/ntgfKeNDoB7M5EFGctnYUXn7EEJy2cj1lzB5Do6kQ0npAc5JRaD0cob04GuQKrVaJ0ssZVznT9f2XmXNfs96KSfidLnCfm70I+LwByZngU+3cP4eC+A9gzksLvH92N36zbhQSp4MLcDiNCOXcPIBcZdfnMY+AzD7kwxlVwgqqn8pxrprmZi1y6aOYWVx+IzStzYsrYe/Mic1IZYwix7iSKAwmUo2HGBwhwzmCKckGNtZAnczyFfoLjC/uxYukgEslEBRzv7opi7gkrsOTpjjk+83YM1+OZaoHJguM2q6iW5CbzjZtKYLUY1TY43ozcsA2e0KFHZmwkEgEdsfSz8B3RdP4RZCA410huc3Pu6WCnb4Vp6Mx2mQeT0pVTVWxghsD90qVLGzp9IynS6qWOo1QpmZS6EDxuRLa0oY43Udlem5MFAGxwnM70aDR6SM++973vTciR2ig43sx1YXbCBsebkcxtpb+JfWsXOJ5OpyeoDzQDxjSxtGoewry2zOVqFgaSkLTTTGkE4K1HxuD5KWlPtUhdKANPoKjZQtYrwRddJhOE0ur9vRHbsf9XX301mAZVF/vaade90c/20wkcb7cfttG1Z+8n3DM/97nPVdJCme3x+YT3gnrrs5X3RvuaqHavYJ8OBzhup8MhEPzrX//a136Nzs1kwXGezyZbkizb2dnZaFekvv0cQ4l7U/ZeN0p/xumnn155xgsCjlOq/atf/WqlX80EorV6P65nJPpINmzYIExxBreahWvADjqp114rv3fgeEBr2pGy7X4ZsR+m7XwjQbrNBWdGTjOaiZFLU1FaDY7bL9nVggXsl16Otd3guLk2GCXGAAS/l1+/KKSZCI5zM3vOc55TWUZ8CeAmH5Q9bq6/++67Dy996UsrH1FqjNH11QqdDWbk3VTmHH/iiSdA+T1d6knUNHqdHW5wfCrnolHbuPrOAs4CzgLOAjPfAhVwfPdGYY4PbbgHYxkgl1c5xzPpLG5+aDtu2T0GDHSjozMp+a/DcYLhZFQrxjaBcTKc+Ztgc6GYFwnx0v4ccDCHcHE8b7WW56b1BHTVbHEP7DYlvity6x5jvKhzZPMYjw1ONrkwzjVb3AOhRU6dTG2RfFesco5Xs6FFxt2TE+/tjOPsJf145rxuREMhzJk7C7OPnYuu/j50dHcj1pFEOBZDJBRRDG6C1szDTTBZgGMNMtMiJQWE63NJvxg0kBfZ8dT+gzhIUHxoP9LplHyXKQG3bR/FD+/bio64wN0VUFzsGgohImr2ZI2rYASRUqfdOQ7mStdAN+uaeclNcFuD9poJ7rOEK3ngSyqggWOkjSXYgWPviqE8qwOlMO3HeY0Klq/zqRfzRaSGx9CXS+P8hWSOz1M5x0NhdHTE0NMdwdxlK7Fo9Sswb+mp0oNmAaqZfwW6ETgLTI0FJguO09lHp58uZ555Jn72s58d0nkCGQSBTMCYjmjzfc08qB3guN/74A9/+MNDcixzTOY7bzMzwTRuBJ90qQd6NnOOWse8853vBIEsXb7zne+IUl4jpZUAAM9rO54pKU2Vx+lQbJCafWomoECPhfLYf/nLXypDI2C0aNGiQ4Z6+eWXg+nggq6TVlwXZidaAY630t/EvrULHGfbttQ156i/v/+wLUE+V9lBK0w7SZZhM6URgDcIOM4AFgYU6cL9mmC5X6BHkP7a5CP6vH//+98jFosFOXxCHRscn+z+btuuHuBlX+Nct2effXalj+26N/oZajqB4+32wza6UGzGbjXAk+2+4Q1vmODfbjdznOe01YOpSky5dL9CVjmxFV2mQlbdVmbmuVvxjMR2WgGOv/Wtb8VvfvObik1qETNrrR2mSybgrUstGXIqXrzoRS+q1K23V7CiLe1fSzmpWj9bvR83ci3Z+109FeFG2m6mrgPHA1rtyiuvxKc//elK7cWLFwvtn1HCrS52pCTb/8pXvoKLLroo8Kn4UPTsZz97Qt7yd73rXRNkaAI31kTFVoPjdkQTQWja3wRkCT4ziMB8GWDX2w2O2xd1tcgiyrbxgjfLTATHaecXvvCFE/JmENTmC2Cj0mRUN+ALrOnUoMQZ88XZ5ZFHHpkgUcLvpxIcz+Vyh+QJo+QXb3KtKIcbHJ/KuWiFvVwbzgLOAs4CzgIzywITmOM3fBd71t2NsXQIuTxZ1gTHM7hx7VbctjsFDPSisyuJcCIKSnuTNE1AWoHdatxlSoADKBTyKsf2wSxKB3KIFBQ4rkHfCmOZxxqy6pK3W+e/5m9N0Nagrq5ryLELCK3zjZM9ThC8VBRwWljsAo7zNB5z3AOuNSOdTc7u6cAzlw/iRctmC4DOHzLFo5Eo4l0d6OzpQmdfH5JdXYgk4kr2nLLqHJMA1eNF5TpX0unFXA65TAbZsRTSwyNIj47Jv4uUrUdZgO5IOIKxQgnXPTKE/7xvI5LRSCX/OiXcWYc25m8yxwUQ9z4TdXX+xz54gQPCIJd2w+PBBz4McQ3ui71Nlrhm73vAP+3EEQqznzbsiQMDSQHkqZ4v8vmUVy8DxUIBhWwO6VQGA9msMMdXLhlEJBlHLBxGZyKC3p4Y5pywAovOvQTzlio1LQeOz6x9w/V25llgsuC4X7C7zaBj4NEnPvEJYdrpQv8A3/v7+vp8jdYKEDAIeOL3rsxgctqlt7e3qQnleCmvazpsJ8tEbrQj9GOYMvQEjn71q18hToWXgKXV4LjNemI36DB+6lOfGrBH7au2adMmnHfeeRNOQIc3QYBG5N91A3ZwAtcDnfZmsSW1+V29IIpWXBdmH1oBjrfS38S+tRMcJ7BkyhYTmOK6PJyF4LOtosDPXv/61zcMQrcaHKcShgn40k70c9PX3gw7k3uQKT3O9ihb/MlPfrLqvaDa3LR6f7dtx/NWA1Lpw2Zgi1lstdp23Rv97DGdwPF2+2EbvVbJEqcfWBcGhdBedvGb06kAxynjbSqcUhace6Df9WWrEUwFOM79/XnPe94ErIrPb1THufDCCxudjgn1WwGO++Fx3NMpQd4I/jcyMgLe83Wplp6ZCiQEthk8p0sQcNwObOCxt956K4hVBi2t3o+Dnpe2IV65Y8eOyiEk965evTpoEy2v58DxgCbdtm0bzjnnnAm1G5Vs4cQzupbRcXwgWLBgAebOnSuRhcxbsXXrVokGtsFdnrRRKYc//vGP8iBsFra7bNmygCOeXLVWg+N+N0TKmBHw58VP2zJSnOxXuzDyh/IMvCnwGHuz44sG5bpZTLmwN7/5zfjABz4gn7/uda+bsFmZgDvr/OhHP6qcljeUj3/84wIUZzIZmTu+pDGK3C48N3OCsC7lhIQ1A4ikPqX1dakFAteTHJvcTPofTVCfALldyOzmGqedmWudL/KUPGO0H1+cGbVqFwZ+0OFhlg9+8INynfD62LdvnzgTvvnNb0pbZvGzC+3tl8eCfTBfILkeTIkb3S4/rxZpyps42zcLx8yb+Lx582T+eC1TzoqFEjtmofPab42yDq8ZU1qEeexthgFtakaftfplpdVz0Y6159p0FnAWcBZwFpiZFhgHxzdj/R+uxu61dyKVCQtznDnHCY7fTFn13WmUZ3WjoyOJaCLmgbGU/vZQcU/SWwBXSmuTOU5wOp1HeXcaoUyxknNcA7u0GNnOFQa3BsY9oNtrWYBblcpcSbALJm98xq94L5e84yKbrtjh4z8K7KbcuUoBXvL+reaMbQ50J/GsE+fhopMGBegXYNmTY2eQgIDl4TDizLcejSKaTEgOrkhUSa6LunqZrPkiioW8SKcXslnkM+o32dQCQAvDfvxH2gUwli/it4/sxg/u3Yik99zJl30BvoUVXhag3pROF6a4Zoh7dteguPDKrXzjeoVqIFoY54b9aTthpBty9TxG8pLreWa7sztQ6o4pOXnByykZTzn3iARF5LNppMdymCXgeB/OWDKImIDjEXQlI+jpjWLOCSux+NxXYHCJY47PzJ3D9XqmWWCy4DjHa7MB+RmBA74vcy+j/CLZgWbhOznf33Wh/4BsHF0efvjhCYxuvmuaoAr3wVWrVtU0dxDwhA1Q6YzviGZh/+kjMAudxHzvpz+DLGC+T/b09IgTm9/Rgch+X3fddRPysLONL3zhC4e8a7ZzrTBXJME1s/Cd/y1veYswVZlyMJVKyfs6Ha70CZi5T3lcq30cDO4mAG37COi3o/0XLlwo+V/1OzoB682bN4tPYCoCpejs5zzZ5bLLLhOnOe3DdUfn+P79+0Gf486dOytS/eZxdp5WfkffCv0TLPQx8F3eLjwP/QqcIzrnua5aeV1oX48+L31YJE3o8ra3vQ2U+dWFvs8gwQGt9De1ExwnqEsilVloZ/pieX3wWuZ1TP8Q55ZM0kYCSpq5pg8cOCC+a9snxrVA4Jg+YfrZmD6Uddgvrj3ufzY41Wp/E8djS03zM16ntA37wL2EKSp4XdDPS6IU/bnnnnvuIebg/YDrm6CQWRiQxEAFrjX63fnszvb27NkjfnfOC89nllbv737gOMfJfZDXBKXuef2sWbNGwHyzmL5o8/NW3Bt1e1u2bMGuXbt8lxj94mbxU2/h/kU769Lq/d08/2T9sM1cR9WOsbEOqhXQn71y5UpZZ48++qjMKdO82IWBILw2uSbpd9Ypb1tpO7+c6DwX73snnXSS9JHXFPdpM+Ur+zoV4DjP4/eMpM9PgJR7lN4DuH9yH+B1e+mll4L21oX3Mj7r6WKuW15r5r2IdZh2uKOjo+5y8LvO+JzGVDbsGwMd2Q6fQfhMQayB57bVXOwgE+I/JHSyb9yn2X8GzDGwzd6/iGNxnfA647zZZWhoyDclBbEtYgbc43m/J55C+9FufuBzK/fj9evXg2RHBinw+Yt94DzSj0FsjGuTYybuaQLjHNvhVl1x4Hjdy2K8Ah/8mZdXFy5oLiQ7p0u1Jpnr5eKLL27gjKpqo6xxRpTxYcx8GOJDDsH8qSqtBsfZbzunQrWxcEO3N3nW5SbBzajV4LidM8NcH/YDKQFlM+LbHAPlo7hpsLTy5tiuOf/MZz4jG1/QUk3Wny+CfJAIUvjwZb78+oHjNpM/SLtmHd6o6ZjwK37RWdXa98s5ZT9wN9o324atfllpZC7svjfC4m903K6+s4CzgLOAs8DMt4DJHF/n5RzXsuolyqqn0rhp3TbctntMco53dHUgGo8rUDVE1jiZ0wqkNWXKReacgDSB8r0plPdnESEQzPoeOCxMZwN0pTW1jLpYVvJuG3nIvRzhGtDV8t9K01vJmPN8BHkVe7wkzoYS/6swxwl0K5nzinw4gNndSTz7xPm46ORBlIWJPQ76K2a7JBiX/6mxeV2r5B5XQLHuN1nhGrxWVRTYLvYOyRm8Zssii57Jl/CHx3bj23dtRjxCu6ic4wQPJNe4MMFVznGQTe71SAINPDBdA+Jkm5vnZp80S7wCjBt2FXvqrnuBA8r8KhhBjhfmOCTPeHR+DxAPo1hWIQrsKoFx/rPIoIBcHqnRMfRncyKrvmLpXAmoEOZ4Mobu3hgGl63AonMuwbzjHHN85u8ibgQzwQKtAMcJCJNVErTwvYsy0yYzio43PzZXtTbp21m7dm3NUwYFT9iI/T7Pz+z3JT/WTpAx09HN4HvtOwhyzGTrcJ+mY9pkydZq0y//ZTt8HH7svHpjpSOaTtt2F4KPBHXMnMhBzkkbE1g1C30gzDvuRwIw69EXQjatX6G/ie/7rbwu/Ji7tcZIfxiB/iClVf6mdoLjBB4IONSbFz3eyUjrB7GZrsMUCPR9NlLIjPzUpz414ZBW+5vYOAEb+sXNNAH1+smAEqqF+BVbZbReW/yeQJcNqLd6f/cDx4P0jXXuvvtu37SVrbg36j4wcIcBPM0WW0WzHfu77ttk/bDNjtHvOIK0foEafnXpv+VzyYMPPnjI1yTP6XZabTs/1Vq//tn+9akCx9mX9773vfIc00ghK573OF14TyQ4HbRcf/31OPHEE+tWZ8BQowo0fgq4drpkfWI+b9r3jJe//OX46U9/ekjfqqUWYkU71UKtgbF9U/1H123lftzo84Duw1TjlX52cuB43ctivEK1l5daua3M5m3AuN6pecF87GMfm5ADot4xfoxxHsOXVDtyt15bk/m+HeA4Nw++XNTa/BgxzggcP9C2XeA47fTud7/bdyMzbcj5ZCTts571LF/TzjRwnJsoXzQYLRv0ZYAPiH75hO68805hA9Rqh5GuzHVu5qCbanCcE8dr0pTwq3WdmHPKetMdHGcfg84Fo+Vuv/32yvDJ3vCLaJvMPuKOdRZwFnAWcBY4ciwwnnN8thSyhAAAIABJREFUk8o5vv4ejKWBbJ55s0tICzi+FbftIjjejc7uLkRicUFLQwRxI2GRTx9nERMuVXm4RXeHgGq+iMKeMRSHCZArIDUUGZdYF/Y40WsC0oZ8upLx9lBogrZe3nHNJPfgapVr3JNCJyDO/hQ81rfkHNdMcWE5K/Bc4ekKIGcn5/V14vmnHIMXnDAbBUmt7eVQjyhoWwB9ry8aMK6sAqLDihaOkADGBptemNc8jzcUgd71v9VvosqFQgm3bd6HK+94Qs7DjwmGCxNcy6TLb0ra63zkCjQ35dTlbw9Q17ndNWZfCUrwOq7nXo+D9hVZewMUVwC5l1c9EUGUcuqdCQHKK7nbS4qBTlsLQ75YQHo0jf5MBuct6McZBMc95nhnMore3hjmEhx3supHzkbiRjLtLdAKcJyD5HsGWac2K9g2AOW96aQ32USsc7jBcT/fEUFtptLS0pzNkCfozCZhwwZPp2Jh8F2eeTGDvPtr34vZr1YDALpt+sA+8pGPBAah6auqpxLQKnuS3UXA0czXXq9t1qVKgl2oVqiVDf3a4Npg3vVq0rQzDRxvlb+pneA454FKFtyrghQTEAtSfzJ1KOH9oQ99qO4eqs9BoMmWY28HOM7zMR8vgZ2rrroq0BDPP//8Q1ig5oFUd3z/+9/fEOBu+yYbAceD7O+27egHJrhdy59NnzFzRNeSF57svVHbbSaB4+zzZPywgRZZA5W4z9ppLfwOZ5oJ/pCAZZd2guNk6X70ox+tCz4zOMLcu6YSHCfjm7b5/Oc/H9jyvMZJWjX3rHaA42x/48aNsub4TBukUP2W6W7Mwj2FAWH1AuSoJkBpdapd2KUWOM55plptkECjWu20aj/mszjTDjRS+FzMZxvufYezOHC8QetzA+OitwtluSifw4dYShj4TSyjnbhYGKla64WCLzqUeKFMkpbZqNZNSldRcogySowuu+GGGw6pyhcFSjdMZbHZ2ZSLtnMumf3hQ5EpJXPTTTcd8oLL+rQbLzYGJNiFD37cUKpdkNXAcVOCzZRPN+XWbVl1vshSBkcXPrjzJYbArS0PwTrMS00JeMr6mHkwzDHUAser2YPHm1IdQSLeW70O6LDggy0jL2tt+uwb65jSO2ZftISYvYZZn2uH1x2BW1P+zg8c53VjgraNjrcWc1y3xQh1yrz7PeSY5yODwZRWYfR4kEi1an2uxxynTI+fnBrbY2AGHRK68CGEObL8SpC5oKyeGQFJeZRqOf4anQNX31nAWcBZwFngyLPABFn1G76HXQ/dgXQWyOUU4DyWymANmeN7lKx6MhFHjLlMCdx6wLGg4ERgiacTHPYkyIV9LQB0CCUC5MMZlIYziOSVvLjA42RHhygtrlLYmICtYlkrUFokzikDXpFTJ+TsgbkeaK5zjws4TgC8AporiXVhkwv7W7HKNXuc51g4qwcvPu0YPPO42ciVoQBpji8URiQaliAAhXALtK21xj0WvGTkFka4SsKtQXfFLud55FwEkSuMbCboVnndhV1fKuOe7fvxrT9tRCpbkHYln3lEgeMMIKDUO5FxyT/ufa/p6noKhFXu1ZE2NEvfyuutufCmzStMeuYVlzzuHH8ZiEUQ7ooh1J1AKEYGPAMAIiIhL8oBZZVjPuSNk/nU02Np9GczOH8BmePMOR71co7H0dvnwPEjbydxI5ruFrDBcb4Dv+Md72iq2wQWmeuR74e2/4Q+E0oEs32mnrILGZ2NAKBB3qPtd7lazkb2x08Km85gBnyz2LaqZSSOhcyf5z//+VXfp5sycoMHkYjA/OMEmGsFLvCd/LOf/eyE1m1wvJU+jnw+L0qJ9MnYadDsITaaHrFBE/lWp3+CPhP67mr5ArkO6c+if9Gv0KdIxp0NCNAnRKY15dOrkWLob6L/sJXXBZl4lJoNWhphjus2J+tvssHxWn4Q+pzMdIi11qg55kceeUSklXlN15pfrgE7dV5Q2zVTj7K/vF45T/UAGq4hyt2axQZ4W+Vv0ufgtUq70Udeaz/hmuWeU6tQwYkgC3/8mLrmsfQx0iamb7LV+7tfYAHvZwSlua7s8fKaJ/GIUsr1ymTujbptOzd1vXPa39djjrdyf9fnbtYP2+jYgtTnnk4mri2JzWMJ+PHZhHNKEphf6txa4HirbMdz0G9t3y/47EJQlf5gk309leC4tjFBaF4TTF1bLxjSxGh4vJ/cfq25C8ocN9sgCYypM6qlb9V1KYP+vve975DTU0r829/+ttz//QqxOj4bcX/mM61d6j1n0u/AgEliUbX2eD4z11P+mex+7Jemtdp8cK3xfsIUE1OpglStPw4cD7LrWXWq5Q7S1ShpzgfTaoU3bYJPvPD5ckEmLXMcz58/X+ScG8lBw5srL7RqpdoF2sSwp9UhBKOZM4o5Y/gCQdBQByRw82HkC+1o/tDO7c4txY2JDyrM2cOHKwY38OGGeXN0Yb853+yb+duPUT2tjB6gM5wXysxwXvhSwE2OedOYU920Qa2maEPaiHmZuIFT8kgXvszR0UFpGs63nyMkQDdbVoV5i5hThutNS6+yb7NmzZIxV8td3rIOtLkhPRecD15j5lyYue6DOJPa3FXXvLOAs4CzgLPANLeABqOHd2/C+huuwZ51dyGVKXs5x0NIpdK4ZcNW3LY7g9DsXnQkE4r1HY0IIF4sFiTvtjzLUa7cY2IrcDdUYXQLIF3gTwmlfAEhMtOLZURIOidSK78VeCz/hjq2QrnWoLJKPq7+xzbltOo4zR7X4LjOOa5ykXsMaAHrFTBeaT8cxrLBflx8xkKcu7gP7JoGpwUUD08EpivYuEiNU/pcRNKlzXFpdQ30q/znhSLHq2TIdQ5z9kPGUFTHrt15EN+6ayN2D6cVG1wk0z1JdQMc10D5uDy9spn02ZNUN/Oa21LqngV1mIGSTq8oAUQRikdEPj0cjyJfLqIQLkq7anJUxncC+prBz8AGjkmY5KUyCvmCyKoPZLMCjp+xRDHHo+Ewujpi6O2JYc4Jijk+f6mTVZ/mW4TrnrNATQvw/ZIOXu5XOufjkWAy7s0cG999yQKiD0HvpXx/Zo5m/gTJkznV9uB7P4kB9AEQnOa7Of0fjbz7t6PPvEcwly77R3Ya7Un7sV+UUxcllMNY6M/g+zV9Cewr7UYfQiN2oy+RoALXz+Dg4IT3dOdvOnyTS18vQVHOsTyTFQoytyQRcH4PJzuOfeEeSn8l/Wr01XHtTRffFfvEtUt/Lq9b9o97IP2pZsqMILNL29PnToY391Ve8xwr1Q+baS/IOe069Vj39BkzqII+NhKotKJIo+c6Uu+NtewwnfywXK9cZ/xN/y992LzWdeG9iPdHP3yi0blutj7zdtNvzXsh1T7N5wn2nWuPexM/b3YdNts38zhiCNyjiJPpZwruA8TKpsO9m2lJuEdxr+IeQ3uRNBnE98/9l3sSr3vOA5/rmJdb723c8/g8Za8Trqmgzyx8fuQ52I5OQcc+Emek/RqZ22b3Y46T5+d9hv3huIh18Yf7uX6unW74lwPHm7yCqaVPxrFfVCCjg/yYzU2equZhV1xxhW9+bW5szMnC6OJ2A8LtGJdr01nAWWD6WmDNmjV47WtfW+kgIyOr5TabvqNwPXMWcBZwFnAWmEoLmMxx5hzfs/ZOjGWBfL6EYqGMVDqDNeu3iaw65vShoyMpYDgoqR4OoVAqVsBqyT+tZb6FmkzQeBy0VjLmBLOLAqIKIOtJljOLtuQjL5VRLBQRLpURLoeFiU7WuQDLxJYJwhaKCpwl2C4y5qoLIp/OKgQEeJ4i6zHnuAdUewx0+cxjtBMy58vtKQtm49KVi7HimG4URVI9UgHIOVYytcG82l7+bi1VDnLeox5DXjPD5XwegEzJdAG/FaNefjh2AckJjiv2OD9/bO8Yrrz9cTwxNCxVyAAnOC9guAfCkzmuWeOUQWcd2lWY45KXXOUg13nKlQS8YsGHY8xXHhaZd2H+RyMK646EEaPseSJeCXyg84P9i8RjGEulkM9lVUCCBAJAJNQl3zkb8MYjwQiFIoqFEtIjzDmexfmLBnDG0kFE44o53t2hco7PXbYSi1Y7cHwqr3V3LmcBZwFnAWcBZwFnAWeBo9kC9cDxo9k2buzOAs4CzgLTyQIOHJ/EbDBqhLkmKFdsyrbY0seTOEXdQynXbZ6bObde/OIXi0SGKftdtyFXwVnAWcBZIIAFGHV4ySWXTJCre81rXiO51FxxFnAWcBZwFnAWqGaBCjg+tAUbbrgGOx+6HelsSHKOlwplpEVWfStu2TkKzOpFV3cHItGI5P/WjGOipjr/tM5zHSYYS+CUP4L9eixpYsNFyQguoC0l1wm2sm40GkE0EhPQXIHJHrAuALwHQEsOcSXDHi4raXYBmYvMNa7yjRNcF6Y4gXXWF3Z2Samee6B8hOA3yLSOIRqN47S5nXjlaXOwqL8T5XBEorgJHiv2tmKzRcIRBWoLT9zL+60Qfi/LuJdDvMJyV3LuBQ/M9wzhKbAr6XX58RjX28aK+O2uOPaH+vHEw/chPXYQPGU0EkGxXJBc6QTLIzEF3I9Lo3s50QXA9/rjycKXQhDWN8HpsLD9QyiWiiiWS14bSgpeR4/LvIUjyBcKwqyKx2JSP51Kyb8jEQXG074iqc6xFhno4IH8DF4oljFGcDyXxXkLBnDG4jmIJKKIRaPo7oh7zPEzsGT1KzDPMcfd5uQs4CzgLOAs4CzgLOAs4CwwBRZw4PgUGNmdwlnAWcBZoAUWcOB4C4zIJiihQdkA/lD2gUzKqSgExplHhkA4fyjN4IqzgLOAs0CrLUA5oHvvvVcUKSiTYpY//vGPIgnjirOAs4CzgLOAs0A1C1Rk1fcQHL8aO9fegVQmhEKuhGKxhFQ6i9vWb8VN20eAgR509XQiHImiHB6XNhfGeEWkm2mxFeNZWMUixU0QXAHYFUDY0yZX0Lg6WoBfSnxFouNS5GUC6QoIJogsUu0lSb2NeCQu55A85x5DXYB6AcOLKm+25BZnbmweE0FnRzeSHT2IRRPo7zsGCxY+FQjF0L3rFlzYNYSepGLGRymXRolyyokTLJd8354VRTpejWtck1x9pOXSVDCAx143x62Z4orqLlA7meyFQgk7CkncHjoNud5VSEbTQG43stlhDA9vw9DeTdi7dyuy+bzYg/0qlssCWPM80bAC8tksgW8tMc8pIKhPJrlSpFcAvsrYrhLFs344HEVUaORsW0m5UzI/m80pQF3OS9tyXvm7pHKMk4QejogkPuXUKQNPsJzg+EA+i6cfO4AnLZmDaCKGWCQizPEeYY6vwJJzX4n5x53qmXKci++uVmcBZwFnAWcBZwFnAWcBZwFngVZbwIHjrbaoa89ZwFnAWaA9FnDgeHvs6lp1FnAWcBaYcRZgsA1TQjBdBH8YeKPzvvilkOAA3/72t+M973nPjBur6/DMt8CGfY9hNDeG9fsew0huVAbE3xv2PlZ3cD3xbpw0e9mEegIciRTyxP8E+LH/8z7z4Cb1rfcZG9X1x//2/vKkllUNv//3cht731etVwa2H9iFTD5Td6yHs4KCoPT/m6xXBZWpov8e/+yQbz1J7GpHTDyP0aYntT3xPH5nHP+seXuVBQTkfyvmEYRT8tRPnb8Kp8xeDq65o72Mg+Obsf76a7Br7Z8wlgHyOSX5Teb4LWSObxtGqb8HnV1JhGMqx7iCtBXIWgqVBSClxYXPTRlwAuQESzVzXOTDSVRWrGMCtpoRTiBeco0zxzZZ23L9kvlNqfaQaseTLeecCRuaILoHQocVsVwvbQFtO7v60Nc3iL6+eejpHURn5yBi8R6EwzEUKXVejqCEboTKRRwXexSnlx9Fb2oIsXhc2PGRWFSAXyVlTpRZXyHqd+Wc1iLSILSWUReAvsKcVyx2AuOiRi6/iygggp3xhbgLZ2BvdhYS8RLCKKo8ZOUsysiiVBjDyPAW7N27EXuHtiI1dkAA7AKZ+MIEJ7gdrgQDkLUvkuuUX/cY3xVldwkeUOxxyW8ugQxKKp+5wRXDvCQ5yYqFvPztjZrUf+H9c/yUn5fgB7L1GaSg1PKRGk6jL5fF0xf04XRhjscQj0Ul53hfTxRzT1iBJatf6ZjjR/sG5MbvLOAs4CzgLOAs4CzgLDBFFnDg+BQZ2p3GWcBZwFlgkhZw4PgkDegOdxZwFnAWOFIscOONN+Lyyy8PPBymdfjCF76Arq6uwMe4is4CzVrgvqEHcfuOe3DvzgewdtfDSE9zYLjZcbrjjkwLLJu7FMsHj8cp807A8xY8A/Oic47MgdYY1XjO8S1Yf8M12PHQHUgx53hOSYKPpTK4dd1W3Lj5AAo9XejsSgg4LqELwkYuqVzhITKWPYlwL5CEn4ssuaCqZHyrnODC4hbWtWqDMukCvpYJmquAjbKnEM5jCJoT+JW83yLFXhY2dISS3wXKpiuZ9mg0gTlzF2P+McswOP8E9A8sASJdKBZDAoQzZzjKYTlXoZCX8+byQDwGnDRnDMek1+GYAxvQk1QS5ATGCSoTZA4x9zfzexP4JwYtffcMa9Lm9d86MEfk3RU7XP2mVLxidguLu1hCtlBEtmMODh57Fm7dGMPusSTioRJC0TBi8QQiEhygcpCHyjmEwjlEUcD+vY9g08b7sfGJB5DNpATslj7ynIJSK6q7yNYLs5xG5TkpfU4w27O3F7xA9nkskZRABDLSBdAvlZCnrby/dR75Ss74cFSNi9LxHjjOoWXHchjIZ3D+kll40tJBxJlzPBJGZ2cC/T0xDxx3supH3YbjBuws4CzgLOAs4CzgLOAscJgs4MDxw2R4d1pnAWcBZ4EGLeDA8QYN5qo7CzgLOAscqRa46667JJ94vTJ79mx89rOfxXOe85x6Vd33zgKTssD6g4/g3++/FnduubcmGN7f2Yv+rj4510BnX+Vv/vu4uYvl80w+ix0HdtXsz4Gxg9ifOlizzs4Du6UtV45cC8zvG0QynqgM0F5TyVgSx/QP+hrgiT2bK59znTyxezN2Htw9oW4ylsAFJ56Di5Y/Dyv7n4REKH7kGtMYWQUc370Z6264Btsf+hPSGSCXpwx6EaNjadz44BbcsnkfSl2d6OiMIxz1mOMVcFgBxQrv1QC5yslNerH89r6T/NweWK6BVgFzFd26IrHOfynWufqOAHk4KlnCpRZzjvN7gr5z5y/CMceejPkLT0V373yEY90IxzoQCsVRKoZQKCqJeALtzJUtv4t5otTIFwm6l3DGkhAWJfcis+4OnDaQrwDjwhxnIIAGyT2yu5cpXXVMKy149hCbyv/Gfwtw7OUWH2fSE6QvIds1Bzj2dGwvz8Kah0aweyyOeKQkYH48kfAY2mR/q/FGo2FERV4+jXxuGOnRXdix9QFsfPR+HNi3Q3KEg3nAievzl87/LvOuJO51jnghr3v9JQhv5nzncBhIwP9kjhjcUAHUlWZAJRe8Af6zbiqVxUCxgAuOn40Vy+YhnogjHgqjqzOGvr44BpetwOLVlFU/TfWqEmlwVFx2bpDOAs4CzgLOAs4CzgLOAs4CU2wBB45PscHd6ZwFnAWcBZq0gAPHmzScO8xZwFnAWeBIs8CGDRvwxje+EYlEAp2dnejo6EAymZTfS5cuxemn/3/2rgM+juL8vru9ol5s2XJv2FTjAqYbTCf0FkLvEHqAQAg1QBISSsif3ntN6L2H3sGAjTHFgAvuVcWSru3u//e+2T2t1ifpTjoZyZ4v0c/S3czszJvZuWPfvPdtjI022ghDhgxR+UZ1aAS6CIGpNd/itq8ewIczP894BZLhJL3dH5cY76LudKhZL0naXgMLhHDPzSKdJH2+1PPdgfD3E9LtYea+XxguQL9WiGq3TP+KapCQzhTu4Ylsr9eRckKSL5mjfnxk+abDxuCIMQdi616bIhrI3MeOXLM71vEqx4Ucn/YhmhIBJGImkkkTcxevwM+LaxEsKEBV3wpEC8MgT2ynld/OqAKiqYblEMSKMxZzdCG0HbZYCrtW3kopTkJdKZpdotUlxRVh2kyYu6Q4r20U9YXVayQSxSNgR3sDoWKEIiWwYSBFd2/afKdUPm0qxEnYpoRop2ragpmkMtpGih22LGwyIojxI0sx77tvUTD/c6zfl/bxhmMf7/SPCnIqxg1XNd4y2UBzXzlKRxkuMnjnuq5aXMnHYZom4qESYMgmsKtG4cd5S/DR9Dosro8iYphCjkcLChBU0nkEaO8edHKzO7b0PDDA18xkA6xEPSINPyG04hsE6ucClsrX7p5FcHqlco/T09050MAc4mKOL5b3ahoCksadintar6uaFrGScw600FfzLgcXREivFOkqOUUADfVNWLZoBSKWhYF9S9GrohiFRgjFRRFUlEVRNXKM2Kprcrw77gq6TxoBjYBGQCOgEdAIaATWPASWLl2K2267LT2wMWPGYJ999lnzBqpHpBHQCGgEejgCmhzv4ROou68R0AhoBDQCGoE1BYHJS6fi6k9uwfeLV80bTkJ8xw0nCiHeHcnwNWUO9Di6HgGS5G9Ofx+zlvySvtikdbfCRVv8AX3XYLv1NDm+9Bd89/qDmDftPTQlg0jFUlhU04hFS2sxuLoCY9cdgIqSIgiRSgZVzmIFEHQV30ocrshuD9GqeFUnt30633hzdntPmvA07s3vOgS7cw0rEEBtwVAsiY7AMmMgmlCCBAqQsEiIW4oMd/J7W7RbFwJa5fam6pn/8n2S0lbKVZIzR3cKGw20sfUY2n9HMGvKxyhaPgPrVkUQCamBBYQtVhbrMnJCQAtzh3lWqbsDYpPu8MZSj+SyI4t3/lVEfVPSRlOoDNFhY2D3Ho76uIl585fig2/qsLQhgrCh8rLzYFzQUBbpVIAzGzsPDyirdUOs5uV1qslDBgoDcRTZK9EH89A//gMqEgsRtFLpPqn5VscV5CADDyg42cSFL3cPKSiNucotTpJc5tF9X/0h68AhxxVp3pyDnhgvXlaP72YtwYKaepQVF6KypBAlRRGUl0ZQve5YDNv2EFQP2yBt0d/1d7m+gkZAI6AR0AhoBDQCGgGNgEZAI6AR0AhoBDQC3RkBTY5359nRfdMIaAQ0AhoBjcBagsCjPz2LGz66axU1tEuKjx+28VqChB7m2oKAnySnVfsl25+NrSsnrJEQNJPjc/HtGw9g/tR30ZQKoaauScjNkkgY6wzqjT69SoQsFVrUZX+Zw9pRQyt5sccW3WHKA7bIzJUamYSqkK+Oatm15XaQbUGKy2tOjnEjCqtyBBrKR6I2VI0aVGKlWYhkUpHhyirdsUsnCU5CnOpwhxB33yP5Sztxec9MqX/tgOQDX6+fiS03qkJVdV/EG+qx5MdvEF7xM6ojcZRHg8KLq9zqzlgcy3g393q6u8pJ3cHFsSMXct5Rj1sWGk0D8eJ+KBi4PgLl/dBkBRGLxTBv4TJ8MLUWSxsjCBm2kO8FzAHO/OPMN04becnjDhiGoX6XciGEmFJdiPIgIoaB0lAMvYI16JWYg+KaHxCsnw+YSUfJr+hwdy6ayXH+5njYUyGfnk9nOI6pvcxgQKnHm03lXZv15smknf2yFQ2YtWgF6mMJlBUVoKqyCBVlEfQdNRbDtz1Uk+Nr5K6iB6UR0AhoBDQCGgGNgEZAI6AR0AhoBDQCGoGOIaDJ8Y7hpmtpBDQCGgGNgEZAI5AnBK6YfAMen/p8i9Y0KZ4ncHUz3R6BL2d9jZem/E9y2dP+/Yxtj8fhQ/fv9v3OtYNecvyH/z2EeVPexeK6JOYvqkNR1EB1rzJEIiEkmW+aObOF5XZyhDtu6bQaT4fw5SobtYRiUqWOkLDq/57gq45tuacdUq3BcBSBAeNg9h2Dpmg1YtEqJEylErdStqiymVqbam3ToirclN9JygoJTuU4+20qBTdJdJVv27FcF1U51d4mRvU3seWGvVDZuwoF0YhYrdcvnY/6uT8i0jAPVZEkKopCMOgp79rEi4q8pW25WMnL6QFlq64s1SnTttCQsFBvlCLUdx1E+w6HGS5BPGkiRaI+mcKc+Uvw7tRaLCc5HjSF9I4WRBQpTmLaCCIoBDiF5AYM2qwT11BQyHKqyUmcBwJKUc7c5NFADMWp5Sis+Q6BBZ/Dql3oeKE7Um93Jtw5VQbqaTW5eptj8q0sp7w7l5K3PN2WqmPwMAGAWDyOZbVNYnHfp3cJ+lUVoe/IcRi+3aGoHkrluM45nut9q8trBDQCGgGNgEZAI6AR0AhoBDQCGgGNgEZgTURAk+Nr4qzqMWkENAIaAY2ARqAHIFCfWIlLProGb//8YYveMv/08dsf1mqe6B4wNN1FjUBOCDDv/D3vPCIEOeOULY/GSRsckVMb3b2wS443LF+A7998CN++/wpmL2xAPJFCVWUJIuEQkqK0tiCG4Q4HSpLWFAN1x/rcUvnD3VD5wZtJcjf7uKsGF024IzyXOsKPq1LBcAGi/TdAcOA4pCpHIlU4AEkhvx1VuB1QSnES3aISt4V4JTkuv9My3XYs1U2Wc8o6BD/rpFzbdTso5Pi6/SxsPboS5b17iT66sLBAlNtUkcdqFiNZMx/BphpEzQYUGTaKwkCEpLRjL+8Vziue2EbCtBBPATErCCtcDKO8H4yKgTBKqmAFw4gnEkiZzC0eQDKZxJxfluCtr2qwoinskOPMOR4BBfpUifNiJJxpo86/jZAizY0QLd4VWU4CXazWWYe50YMGQqEQIlYtwnWzEFjyDZLzvkKyfmkzAS7T6kysawAg4ndawotfvDoE4BDgSiPuKsVVBXcduRS5uxa4TgwjgGTCRFMsjsKCCAb2L8eIsZtjxLaHoM+Q9dX0exdPd79pdP80AhoBjYBGQCOgEdAIaAQ0AhoBjYBGQCOgEegSBDQ53iWw6kY1AhoBjYBGQCOgEWgPgZPfOB8f/zK5RbHxQ0djj3E7a2K8PfD0+2scAiTG7377ESysXSzr/4b8/SMGAAAgAElEQVTd/o7N+4xbY8bpkpp1S+big//egHee+g9ipoGiwiiMkCEkNMsoEbQNk6SrZUk+bMlDzaBa2iHHWU5Ib+bEtmzRWLucuaOndvJYu+R4mpaFEQ6juN9wVGy4I0KDJsAqHgAzYMCi8huOfbqpSFkhxUUZnoJp2qIWp7I9JYS5slh3/1WKcRsWc41LbnL3d5LqASHV1+trYdtxVehd1dvJgU0uOoRwJCT24ZaZQCreiFRjPeKNK5FqrIOdbEQgGUfQTsDwHBQgWx0MRRAoKEG4sBzR0gqECkuAUAFsI4Ikc6OneLTAtam3kUqm8NPshXh98gqsiIUQDlqCP3OOu7bqJJmDAQMBlySnctzJPx4MOcpxqsaNAEKSHt1RktOSnWS6AYQSK2Avno6mnz5A7c+fI9XU2HxKwVH4M785iXDOqcytc5BBfpMuK3W85FjnZNNRwJlk92CA4rqVTQCJeurrzVRK5qlXWQE2mbQ9Jux/MqqHMzVHQJPja8yOogeiEdAIaAQ0AhoBjYBGQCOgEdAIaAQ0AhqBjiOgyfGOY6dragQ0AhoBjYBGQCPQQQTunPYwbv7svha1txo1AXuM3amDLepqGoGej4CXIK8sLsfj+96Jqmhlzx+YqIMVQVu3fBHee+p+fPjiUygpL0cwFBQC2iXGSSqzqNhni6K4We3L99LsqNiKi8ZcCFFXECw5t91SjjrZoYaFLA8VFKFw4GhEh26GaL8NYUcrYaVSkttaXRdip852LFMR2mKPzh+qxUl6kxQXApzkODlbvqdU5KwnynM3NzmV446tOttYv9rG9uP7oKpPlbJND7h26QEhoMPRMIygOixAlbeZSgphjlSCvu4I8nAAx2cwN3gQASMsBHnQKEAoGhLyl/WSyZTCkOHgyXqpZBIzZi7EK58vw4pYGBHaqodCiEYigiGJblq6B3nogGpwIb5JiFMhzteVklys1uV1vu/9UfMhZc04rJo5iP/yGRK/uCpyEuhKQa5s8VsS1lTpi3qdyn6HCVcu+GoyVS52Jyu9U1/edSwCpG6Ain9LrOA32HRzTDzgWPQdPEqg0MrxNWI70YPQCGgENAIaAY2ARkAjoBHQCGgENAIaAY1ApxDQ5Hin4NOVNQIaAY2ARkAjoBHIFYHvl/+Eg589uUW1HTbcBjtuODHXpnR5jcAah0BNQy1ufuNesVhfv+9I/GfPW9eIMbrkeCIew7yff8CCWT+goLBQEbgktF0im8Q0RywktyJQaZmtyPM07S1caTrnNmlUIUxJprOcIsvlNf7N9mygKZnCwpUGGoqGwCoeKAS0VAGJZFU2JTbqVHBTdQ2kbFMpxcXyXeUSV+S4yikuqnKXKBfVOEly5h9XqnLamQuRbvMQgIkNBgSww/i+6F1Vpchtr126zDTpYltye4eZ39swxLY8bRxPoEgKi0yavztK9pSTU5ydl2Zajl0p8i0hzmf8vBAvfbYENU0hhA1LrqGU4yTElXU6840rUtyQ/OJCilNJLv1R/VNqcvdfRZiT7zccBTfbE2v2VB2i9bNRFW5Av4oClSadMnkefiCRHqAxvgpXKa6QUGhIKVkftsjDZT141eUO6S39dyTkLM65qOjTF4NGboSiklIHlpaZ6NeIm0sPQiOgEdAI/IoILF68GLNmzZIfRu/eveWnf//+qK6u/hV7lv2l4/E4li9fnq5QXFyMsrKy7BvoRiUXLVok3z/UV4EA+vXr1416l11XlixZglQqJYULCgpQWblmHBT1j57feRYuXJh+ORwOo6qKhyfXvqitrcVLL72EPn36YPvtt5dUPTqyQ0Bj1z5Oa8ue0j4SuZfg+mpsbOzRnym5j3r11uDnHdeoG/zv8l69eq3eTqzFV9Pk+Fo8+XroGgGNgEZAI6ARWN0IMM/4US+diZkr5qQvPazPYBw/6bDV3RV9PY1At0Xg2/kz8MiHT0n/Dtp4L1w04cxu29cOdcxVNLdR2UODt1rKJVRZwJPCOl3e+xotz2ctbsKnP9ViRYOpclyTTheO1oRJYpv5xoXUJuENyS9ukxSXv9W/JMpFJS7qcCrGHWU423KU5awjCnjS7kmqzvk31cwmRg8KYqdN+qFXVZVYhdOC3FXDC6HveIu7qmo1GNdDnuSwY0XeCippa/l0Um5VnQcHCHsqkcR3Py3EC58sRm0s1KwcjzYrx0lWk9QWIjzgEuVUjZOsd3KRi6W6Q5gLSa7U5iTRhVjn2Nx87wigIBrCsOoiTBhRiqqyqPTFDa8dfjMamQfonXNvibYob+KsKfEO3am6kkZAI6ARyIgAH+TeeeeduPHGG9HQ0JCxzJ577olbbrmlRyD47rvv4sgjj0z39aSTTsKFF17YI/ru7+SGG27YYk5mz57do8bxyy+/YOLE5gPTu+22G+64444eNYZsO8t7h/PlxgYbbIBXXnkl2+prTLnvvvsOnGc3RowYgTfeeEO+h+poGwGNXfsrZG3aU9pHI/cSW265JRYsWJCu2NM+U3If8eqv8fPPP2OHHXZIX3hN/txb/ei2f0VNjrePkS6hEdAIaAQ0AhoBjUCeELjyk5vwn+nPpltjbuVz9jhF5xjPE766mTUHgZem/A8fzfhcBvTiQQ9iYEnPU/74Z8NVj6+OWUoT47aNeMrG/BVNmDKzFnOWxBEKR9LW22J/7qjBTUcxTkGza5OuiHAqyhVRrtTgJJpdklwR52KnbqYc0lzZxKdV5VR1i3LcxpghAewyoT8qmXOcymo317Zw2MpK3FIyaQSpZldsuWMbr/KgZyR600nYPejKa0pw7QbJ8ek/zsPzHy1BXVyR40YogkgkwiTvKmc4SW6xUCcx7hDlQpgHYfDfkCLFSaIri3XHel3U5k5+cqrLHSU3x8iDBmHDxgYDijFxdDUioaD0y7XD7+o14boIaFv1rkZat68R0Ais6QjMmDEDZ511FqZNm9bmUE888URcfPHFPQIOTY53n2n66aefsOOOO6Y7tCaTBJocV9N8ySWX4IEHHmixCO+//35RkP8a0dTUhKVLl6Yv3bdvX3FY6o7R3bDLN0b5mIu1aU/x4p8P7NheTz9wle812RXtaXK8K1DNvk1NjmePlS6pEdAIaAQ0AhoBjUAnEJi/chH2ePyIFi0ctvUB2GCAygWrQyOgEWiJwM2v34uFtYux04iJuHbSpRqeHBCgXTtJ5FjCwszFTZg2uxYLlzcgEIqKnTnfV2puS6nG01bpjoLcVqR4s0rcsU836fhuwkwxJ3gKKTOlyqRt1lXucdZNE+YsYxnCUm80OIgdN+2PcrFKa863LeRtQFHfSjzuZlPnvyoHtwqH9nfzcLsEs5dpdn3kPXi5SvxkIoHpM+bj5U8WoyERRsgwEQpFEGbOcVLvogKnvTot3x2luKMMN0K0WA8iFOKPgZBhSDlDVOQByYPuKsiZo1zylJM4d3ptmkkUhm2MH9kH6w8uR3kRLTOb88XnML26qEZAI6AR0Aj8CghQMb7LLruAD3Lbi7/+9a84+uij2yvWLd7X5Hi3mAbpxNpEZGlyXK270047DS+88EKLRXj99ddjv/32+1UW5ptvvoljjz02fe2zzz5bDgR1x+hu2OUbo3zMxdq0p3jxzwd2bE+T4/le1au2p8nxrse4rStocvzXxV9fXSOgEdAIaAQ0AmsNAtd8cgsenv50erzjh47GAZvtudaMXw9UI5ArAjOXzME97zwq1V466CEMKOkZuTtzHWe+yyultMpRPmdZHJ/OqMXsRXUIWCaizHOOgLJIt4NIUS4OC1bShsl/6bhu28oK3aaCvDnnOPOIUwGdSpmINSUQi8URSyQkLybt1kmQU1HONtxc6pZF8pw5xw0EbBMjB4awxdhqlJX3llzaVFWT71Z6cKUMZwQdcjwtE3fs1hVJrsq6GnJVI7MMW0HRLB1PJRKSc/y9L5cingohGDQRMsIwImFRrUtOb9ceXUhy5hSnipwqcQPhkIFoQRgF0TDC4QgMqsiDAYQMktyqnKrPH4htvOQgp4I9lUI8HkNJcRG22rAa44aVSj2GVnTn+y7Q7WkENAIagfwj8N///hfnnXdei4a33XZbHHPMMRg5ciRKS0vF0pu5MwcNGtRjco5rcjz/a6WjLa5NRJYmx9Uq+eCDD3DYYc0p1oqLizF58mQUFhZ2dBl1qp6fVDzllFNw/vnnd6rNrqrc3bDL9zjzMRdr057ixT8f2LE9TY7ne1Wv2p4mx7se47auoMnxXxd/fXWNgEZAI6AR0AisNQhMfHg/rEw05yU8Z/eTUVFcvtaMXw9UI9ARBO5+5xHMWvILjh77O5y9yYkdaWKtquMlgxvjKUyd04gps+tRV7cSVspEtKgIph1Q6m6SxlSPO9bp5MnFDp3vU1FOK3WLxLajIk+RGE+hqSmBuvpGrKyvQ7yxFmYyjlSiEfGGOlhmSizHmeeaNuxJM4UoAuhbUIaIEUF1L2Dd4b1RUFIqNDfJZMkvHiA17RqrS0ecVOR8lTS6yzCzLKfUIZVldh01uaMeF6JZ7NQl2bjHu9yGmTIxf/5STP+pDinbgAHaqocRDIVVM8KP0x+d+c9tsU4PGCHpW9yIIFFUgcLSYpSVF6MwGkU45BDiBkl0ZRNPUlwR5ZIiXRHlARu2mUIq3oRwpABDB/TCViOLMbBPibzH8jo0AhoBjYBGoPsikEwmscUWW2DZsmXpTh5//PG46KKLenxuYE2Od591tzYRWZocV+uO31c//fRTPPfccygvL8chhxyCIUOG/GqLMl+k4uoYQHfDLt9jzsdcrE17ihf/fGDH9jQ5nu9VvWp7mhzveozbuoImx39d/PXVNQIaAY2ARkAjsFYg8NyM1/CX969Jj5VW6rRU16ER0Ai0jcCXs77GU5+/hKJIIV496BGURko0ZG0hYJNgVjF7cQO+mN2AxXUmamtqEU8kEC0qkczezCtOlbdNIpxKb0dpTkU5iWkhxkmak5omUW5aMFMpxBqTqKmtR82SeVg291skVi6CYSeRiq1AY/1iWKkEQpGIkMqWaaLJTGFQtAAH9BmMgUWVsMMWSksKgHAY4DUcw3SSyiIWD1JhrnKWC8FtORbrwSBSLGtZSm3uCMXTGchZh30PBgAhs9XDRlG0s23Wsag2t9EYi6OmPina8yAvEJRk4WnduhVkfWUPH2iKw4gnpZfLQ0X4csBYpKqHorJPL5SWFiEaMRQRHqDFekByktNOnddTJLkivvmalYojFY+hqLgE5eXFGFwB7DC2P6JhQ+ZLq8f1ra0R0AhoBLovArNmzcKkSZPSHaS6k4RWSUnP/16iyfHus+7WJiJLk+PdZ915e5IvUrF7jq5n9Sofc7E27SldsY41Od7194wmx7se47auoMnxXxd/fXWNgEZAI6AR0AisFQic8PK5+HzhlPRYj5t0KIb3+fVOhK8VoOtBrjEIXPvSrahprMPvxx2BU8f3jPydvxb4QugKuQ1M/mkFpvzSJArp2to6NDQ0oqCoBIGAoUhpCsf5m1is02qdjDk5a6rHTfWvqMdVvvGmWAK1dY1YMW8G5k59BStmf4HKihL0HzgQxSUliBYUwDBCQrqLgtowkLJtDAqFsWdFJYYUFaLRMGAbRtquneS1zfzeoh5XdXhNGYNYtNtiZU6mORWg4t2S/lpJEwGDimyDEm/po7TFQZEgF/W4Uq+zPaq3mf1bjg445SSvuJDypMKZdz2lCGpeh/iEw0gsWgS89TEiS5YiFQzipc12x8+jtkXxgEEoLytGpCCMoPTDsVIPMC+5IuPT3ZC84jZSVNjHm1BeUY7i4kIUGwnsMr4fBvQudo4INOdg/7XWj76uRkAj0DEEqCrmfW8YPDCjnC26e5CYWrx4MSKRCPr37y9OHh2NpqYmzJs3D1VVVaioqOhoM926nt++l/nEmVe8sxGPx7FixQqxUKZqNN+xdOlS1NTUYODAga3aNK9OcnzhwoWIxWJiOx8KhTo83NraWixYsEDWHH/c6G5EBu+z+fPng4cp2E/eb21FW0QWv4vRuYBjHzBggLTZmcjXXLh94D44d+5c2QP79OnTbv9WNzlO3BobG1FUVNTpe42pE/ids1evXp1ax52Zv7bqdmZ/zwch21XjWh3tch0vWrQIiUQCgwcPRpgHen+lyMdc9OQ9pTOw5wM7Xr+tzxR+tnIv4D7Qu3fvznS3RV3u9dyfuRY7+lnZ0f1d0qHJfzsHu8QVh/2qq6uT7yTuZ5gmx/O2dDrUkCbHOwSbrqQR0AhoBDQCGgGNQLYIzF+5CHs8fkS6+LA+g3H8pOa8Ytm2o8tpBNZWBFz1+Mhew/DEvneurTBkNW4SxCR3F9c04cPvl2POcgtGKIKV9Q3ycDxSUIBwuEBZqlMtTT5cyHFHJW6SPiYprghn/sexlaI9uon6+gYsmz8b8z59HD9PfxcDBw/EZltuhfGbTUCfvtXywJc/RQUFKAiH5T+omac7GA7DonV5NIRwOCoPTdlPQwgkJQHn/2wKwvkSmWkAKUraAYRINsn7irg2zZRYxJNIDwUV0c9+si1X4S5ktfPQnWNjC0J6S170lORd53/0h0MhaYd261TGs8/BcEiR5qEIapctx9Knn4V9y50wFszDJ9vui+nr74LogCGoqChFlLnKSY5LrnGH4KcVO4l3IcUVV0+gE4kmWMkkevWqRGFhBEGrCeOGlWHrjfrLOHsKoZbVQtSFNAJrGQL+h6ccPgnncePGYdNNN8XEiROxwQYbrHZUbrrpJjBPNoMPbp955hnJb3vVVVdhypTmQ5t8n7mzL7nkEqy33npZ9fPbb7/Frbfeiq+//hp8sOkGr7PxxhvjxBNPlHFnCpLKr7/+urxVWVkpdsJuHHrooUKwMdZdd13cfffd6fd+//vfg9d149VXXxWia3WEP9/4X/7yF9BWvSNBsvS6667DF198gRkzZqSb4JoZM2YMjjrqqFaxY+Frr71W5tIfxP2WW26RB+r33HMPrr/+esmB7gatmi+44ALsscceLarmQo7z83bXXXcFSX03nn/++VYPRTAdC+fw7bffljXn7Q/vCa6Rs846KysFPslwjv2TTz7BnDlzWqy5P/3pT+Da+bXJcWJ/33334f3335d7w2vDzw6PGjUKv/3tb3HQQQdlJFMyEVn/93//J3N5++23t5g3rpcjjjgCJ598clYEbT7nwu3IK6+8Ivcv70vvPsD3uRcccMAB+N3vfif3sj9yJce5domrG1dccQW22267Fs3ynvzhhx/ktd122w0XX3wxnnzySbnfvGuG98KECRPwxz/+UQjQ9oJE+GOPPYYXX3wRn3/+eYt1PHbsWGy99dY444wz2j0QwDZuvPHGNi/HQyNvvfVWe11CvvZ3YkOM3OC8eNctCay2iD/uy0ceeWS7/e1sgXxix3XE9eTGww8/LP8tcfXVV8sce4P7FNcJ972ujq6Yi562p3QU467Ajn3J9JnywAMPyJ7iv0/42co9p7VDgt7vN95x8rDdCSecIO3x+5n7vc0tw73q73//e5vfI/O1vz/44IMyBm9wDxg5ciQ222wzcL/bZZddWj1sl2n+PvvsM9x5552yd3oxY1sXXngh+vbtix122CFdlXv3HXfc0dGloOvliIAmx3METBfXCGgENAIaAY2ARiA3BPyW6gdM2APjh22cWyO6tEZgLUYglozjimevEwTeO/xpba3exlpQOcNtTJtVg/e/W46YGRZCuikWw7KlyxA0QqIeJ6NMW3HKx0UwHlAKcSHESSCLGluRzjxBHosnsXz+z5j7wWOY88NHqBpYjU022wLjxo9H7z69hXimsoKW6mHJxR1GJBySHz7k43VJQou7uRDwdFanYkyZwKvc42LuDoPKdhty3aChcnpTAS5lhdA3xcI8KPbnFJIzLzrThJP8pmredEhvpYLke5TSs316tSuHdfGVR9jpFw8D0F+eZDn7TCv0+vp6rLQCWBkwUHPhJSh48WV8NHEffLv+Toj2V+R4JBoWK3XVHyrRIRbqEKt1pQSX61kmEvEGwLRRVdUHoQhgxhswtE8U+2w5DJGQwkYT5GvxRqeH3mMRoBIxG+KbJNGf//xn9OvXb7WN9Q9/+AOeffbZ9PVIqO63335tXp+Ey957791qGX4u8MHwpZde2u44jjnmGJx//vmrPET194sP7/lZwYe766yzTot2aWfu7o2bbLJJ+sEqH9ZOnz693T7kq8C///1vISjd4MEAP8mczbVee+01IYO9JHGmeqeddpoQMpnU1Tx4wHb84WLCQw6co9aCD77Zhhu5kOOZ7OVbmweSkZzrL7/8sk1oSPLecMMN2HzzzVstxzZIfPrJZm8Fkgf//Oc/W2A7e/bsbKYlL2XYR5L03gMPrTVMspEk6TbbbNOiSCYiiwV4EKS1GD9+PB599NE2yYp8zgX7wYMKPCCSaR1m6memwyS5kuPe+5/X4AEbP+nuJbKYBmHfffeV+6i14D1z7733Yosttmi1DBXn3LtffvnlNtcJCffbbrsNG220UavlrrzySjlU1F5ks27ztb/zcEV7Y2urv1zzp59+entD6vT7+cTuP//5j8ypGzxMdNFFF8m6bi2OPfZYXHbZZZ0eR1sNdMVc9JQ9pbPAdgV27JOfHL/88svb/P7DvZ3rK9OBoKFDh2Yc5v77749//etf+M1vftPm58dTTz0lBy79kc/9nf1o7wAPx8h7YZ999ml32vz3WqYKPGjA70VuaHK8XVjzWkCT43mFUzemEdAIaAQ0AhoBjYAfgdu+fAC3ffVg+uWL9j0LBeGoBkojoBHIAYG733kEs5b8gv/b6TLsMKTlg8Qcmlmji5IYJ4FQ35TAh98txeSf6mCEChCORJFIpLBs6VIhnYtLSxUl7diJixU583OTtHbykNuSc1vZmlNR3dQYw/yPn8CXr96LikH9sclWE7H5ZhNQWVkubZH4pmqcVuSBEBXiYVFVkyQXwpn/RsLSP7ZLbtoIORa+7DeUrTvJbpcIoK06Fd9UgJMQZ650l0RXNulOW7aprOI5DNO1gQvCDgQV9x7gONR40oQ6CXYbaQtkIbZhIxI2EDJCqI/FsWjhEiQbmxAvLMLK665D2dPP4+MJu2H66N0QoXK8ksrxqNioUz2uiHBFkCtrdbYpknCYqSQSsQYYoRD6VFVJPnYz0YA+ZSHssml/DKoqheHYsa/Ri1QPTiOwBiLgJwvbGuKIESPw0ksv5aS46QxkfvJkxx13BK1G2wqSRR999FGrtsPXXHONKBazjUz2436Sg2oi2jD/8ssvqyimJ0+eLHbUfuKchGAm9XS2/cq1nL/PJNSIZy5BAooP8LMNKm6Jtz9aI8dZjg/PeRCjvTkm5q7qPhdy3D8GEpCZiHhazfK99g4BePvJdUe7cH/4LVdbGxsf2NOy3XvNbEjGbOejrXIkib0HDrJt83//+58o8tzwE1ncM/yK7Extn3vuuaJczhT5nAu2T+eDnXfeOae5ZT2SLlTMu5ELOc4xUD3pDfdQjfc1L5FFlT4PWmaDHxXwmQ45cd9pj7DyY07VN+ctU+ST4M3X/t5VpGK290C25fKJnZ+wy+azkf18/PHH2zzEk+1YWivXFXPRE/aUzuLG+l2BHdv1k+M8zNXWIQrWoZMEDyz5ozVynArqgw8+WFTUbcX222+P+++/v0WRfO/v/CzhOs8m/Hu6vw6/j5x99tntNsW91+sKpMnxdiHLawFNjucVTt2YRkAjoBHQCGgENAJ+BI5/+RxMXjhVXtaW6mvO+kjEEmiqa0R53zUzt2Z3m6k3p7+Pt6Z/gMM33B9/2uLU7ta9btEfIbkBzJhXi/e+WYq5y1MIRaIIRyNIpkzUrKhBKp4UcpyKbKrERTwuqmwSzWJMDtOkszkJ7GZyPLZ8Mb559BIsWjob/Ueth403Go3y3hWi0uZ1g6Ew4paJfgXF2KhPH5QWFsIMBhChapzkOagsjyASUpbj7Cot10kSk5Rm3nE7RcKafQkiGAoKMc8g8azoc/L56l92UvKlkzx38ozL8E1LSGnKt1U5ySaubNmdWeK4aL8eoO07bdTldQu2EUA4GIIZNDBrRT0aKyoRKS5CPGig6aZbUPXci/h07CR8PXYPhAcMR0VlCSIkx0Xd7uYZZ350W6nIg8oyPmgHkUzEEYs1orCwGJW9esNMNiGVaERJ1Mb4EZVirU5iXivHu8WtpDuhEcgJASpZSdIyP6n7s3z5ciF6aZvtJwfzlas6m076yRO3Dh888uEt81yTnPOrUs855xxR/PqDpNhWW23V4mWqJWntXF1djZUrV4IW2x9//HGLMn6yiGQq1c1u8Prrr78+PvzwQ7HG9gaxJRHOHLBeZTFJNj6YXV3RWXKcJBttQ73Wzuw7sePDd+ZsJ2HjV0aTdPVb3RNf5u1kcP68tvRs76GHHhJbfyqtabVOcsT/0N3rEJALOU5119NPP52GneuE68UfVAr7H+KT7Occ8jNy5syZq6jTaDdO23R/0H3ATzRQqcq1SCcD2pfTDjlTrA5ynPc40xL4527LLbeU+4yWsVSVv/HGG6uU2XPPPcUK3w0/keW+Pnr0aLHdHTZsmNwLXPt+hfo333yT0Z4+n3PB/mQioUgGc19h/zi377zzTguyg/V48IZzxe9ejFzIcX9ag9YOx2RKccFrkfAhAcX7cOrUqaBVvTeoMKd7gT+41r2KRr5PImevvfZCaWmp2Lz71fN87+abb864HrkOXNt3bwGqUXM91JGv/d27n7BP06ZNEwtkN0gcE5/Wgut8dTii5BO71tSsXCM8DMHPMzpi3HXXXS2Gzf0rW+KwI59NXTEXPWFP6QhW/jpdgR2vkWlP4V7GzyV+NjOVBr/T+L9Hcc/iveENflarVGAQlwmXEGZ7/H7wwgsvyGckPwu5p7JN773IehwnP9/dyPf+zs8pHihi6hSOje5IPAzAdeQlsN3rc6/nvkV0j7AAACAASURBVO+PTN95OE46NtBdg9+T33vvvYyH6zQ5no87Ivs2NDmePVa6pEZAI6AR0AhoBDQCHUBg24f3R31ipdTcfexO2HpUy1PvHWhSV+kGCNx80v9h5lc/4q+vX4OistWT77IbDPtX68LMJXNwzzuPYt1e6+CxfW/71frRXS/sEuMp08b73yzCB98uR9Jmzm/aqkcAW9mENzSuRGFRFOFIgeM3HhBy2xGPi0W5WKuTUqaS3LSRSsZRP3Mqvnr8GtQsm4OyomLJXZ6AjaTQ6UCTbYvK+6jSChxaWolwMIhGcsOi8KalufDYMOwADNqHuy/w2oEAkrQhhwUarUvQ0t0m0R2gEzksPkd1iHEhulNUkjOfdwAGSf0g22Rqbwt8h2Q66XHDsZlX/VAEuTyS4BiDgXQ9qcy84SxjhFCzbAVmDhsM+5hjUThkCOI33oSKJ57BZ2O3wdfj9kZk4DqoqCiRgweSE52DEst2jk/lNydHr5TjQCIWQyIWR3FpOcorSpGMNyGVjCEcMDGkqhAHbDsCRVHauWtr9e56j+l+aQQ6gkBTU5M8SPcSwWyH+RdJmHV1ZCJPaF9JC09v0IqaD2rdYG5V/wNZvudXFO2+++5CZvKBZ3r7tix5zasu9xNPfpUtiU+SiH4CjG3S3pPWnST+vDbmXWXly89KKp794Sc+OeaCgoKMU0icDjvssBbvZRobc3t6cybzATTreZWu7T0k5jzRTtwNt198CD9o0KD06yQDOfdu8MH+KaecIn9mS47TXpo50b3Bh/kk4L1BcpQKN2+QjPIfrKDrAlXuXmz9Smpi4icYuFa59rzBPPVct/7DKKuDHCcx7ydDMynqqGIm7sydzOC4uL69e0EmIotYcp7p0ONGXV2d1PeOl7mSSaJ31VywXeaO5wEfb5C05/3ovx84Tr7OIJlDO3GS2m7kQo4feOCBkq/WjUw27XzPT2TxfqBbh5+8oYMGbbK94Sd5eNiJ96dXJUrFPPc2Hixyw38P8nVesy179RYXdtaC9zrZrNt87+9un/zYcJ/guu2uwfsgV+wykeNHHXWU2GV7U1lkWifeVB9djUk+5qK77yldhWE+sMu0p9ChhA4qPEDhDa4f7iFucC0dd9xxrQ6P+4/XyYd7Fd0xmGvbu5f69z6vtXo+P2uzmYfvvvtO9gJvqpTWDnxyD3S/Y7Btjo+HJ/2pczLdY+1978mmr7pM9ghocjx7rHRJjYBGQCOgEdAIaARyRGD+ykXY4/Ej0rVO3flY9K/o+oehOXYzL8U/e+FjTHtnCo6+6kRRhHRFPHPt4ygqK8auJ+7RFc3n1Oa5W5yGWEMM//rkZhQUZ344mlODunC7CFzyxFVSRucdbwmVskhXuuj5yxrw9tdL8O3cBlFzG0ZICPJAMIRYYwy1tcvE3ry4qESR4sITK3I8QMJYbNUVMa2U4xZSiQSWfv8pJj9xLWJL5yNgWkjaSSQozAaQAhDjf/QaYZyJEuxvRRC3TSQVLyzhktL8N+RouFlXcobTUh0A+W9mEVevsW+KUXcV30pTrsht1S4JeRLaigzn36ott2YAhqM5b9aeu9iRsgfMgJuHPICgpQhtwzIRgY2fwkEsu+Qc9N17T8SvvxEl/3kSX66/BaZsui+MweugsrIEBZGIkOEBKtX5Q6W4+KorRbtt097dRKKpSdTqZRW95HACifJUKoGgFUfvkiD2nzgcA3uXpBXo7d4MuoBGQCPQoxDw56t2yeCuHoSfPGnNApvkJPP5ukHFEtXe3vDbmvNB5wcffIDKyspVhkG1EdWGrkqa6nIqhNygctOb19wlwK+66ipR0bI8iTP2y7WL9pNy7eVG7yi2mQjgXNviYQgSht6gIp7KeDf4vv/QBN/LRD5SreVaoPv7komY48N1Plz2xieffAIqt93w5s/NlhxnTl6q0t3gPLGu3/WEJCiV9m60Zfntt11114JblwcImCPdDSq0vX3wjtHvSMD3siEZc51ff3k/Icsc12eeeWbGZkmQ/+1vf5O0BbRB9+eUz0RktWb5zUMR3kMsxN17gIQdyOdcsL1TTz0VJOHdIDHJgx+txZNPPilrmmOuqGjptpUtOc6DHn7L+NYs+P1zQceEk046KWP3/OkJuM681vg8xEQFpzdaO9jEAzxTpkxJF2V/ue6zjY4QvPnc3739zBepmO3YO1uuI9j5yXF+nn366acZnRd4IMLr0rC6DrcRl3zMRXffUzo7/63Vzwd2bNu/p3AvIxHuj9dff73F5357LkF+cpztuWlkvG3zM9HrknP77beLu0FX7O/ZzAUV3xMnTkwfzCKhz33eH/7PCirG+Vqm+P3vf99Cea/J8WxmIn9lNDmePyx1SxoBjYBGQCOgEdAI+BD4fOEUnPCy+g/jiqIynLOHUmisiXHHH27C1De/xJn3nYdRE9brkiGePvp4aff/Jt8qis1fK0gqnrGxeuh507S7f61urHXX1XnHM0+5qxrnux9/twgfTl+GZY02QiTFjZDk0A4Gw0gkkqirrYVtJ1FcrIhYZaXusteSaRw2bdVdctyykIg3YeHUt/H1C7cjvmKRENQJ20LKtpEUpTbQZKVQEorgpHAp9rAiSFokhh3ynfm4xcGdOdEdZbQFmIbi9G0Pgx5M2QgJ2RwQdXfSsGFbKo+3S9yzA0Fbkc+KLFfEOHlutmWJDbsi+5VnOq/vvs96SrluGxD1uMXOpZx+BWwEU0A4ZWF+sYGaP5yE6oN+h/jNN6Pk4Sfx9YiN8MXmv4UxdJQoxwuiETkMFGR+cVqpG65a3slBTgI+mQTVo8FQBOWVlQgZAaSSCVhmUnKRF0dM7DimHyasV42QoQ4WaXv1tW570wNewxHgA09vHujWHq7mGwY/ecL81V6C1Hs9/wNgP6lI22+qu91oT01IlbLXutibH9hvkf7Xv/5V1Kjuw1SSEbTyJJns2qdTge8lm0iY0QI330FFrl8Jnes1MpHjfgKHD9LXXXfdVZomebrNNtu0UEL61dTeSpmU41R1RaPRFm3T5v+CCy5Iv0bl9eGHHy5/t0eO0waWymi/jX1r68lvg04r7bKysowwMke41zbe7wjgHphwK/PwBK3IM4V/jbJMV5Pj/oMlJNlInnndFHJZP34iiypFpmfIFP7DAJn2lXzOBfvgJwq9KsZcxsmy2ZDjJLhooe9VyHMv9duiu9f272Nt5f/mfeVVdnoPjLA9v6V6W3bp/kMerdm0t4ZRRwjefO7v3n7li1TMdT10tHxHsPOT422tKX8agdYOq3S0/23Vy8dcdPc9pStwY5v5wI7t+PeU1mzEeYjNJa1Zrz2C10+O80Dhvffeuwoc/K7gTVHCNCauA0e+9/ds54LpW7wHHjO5KfgPDPHwiV9t716P6XO8B8rawy7bfupy2SGgyfHscNKlNAIaAY2ARkAjoBHoAAK3ffkAbvvqQak5fuhoHLBZ5oc5HWi621W5/fQb8PXbU3DCdadh3M7N6qN8dtQlx//5zv+htHfmh2z5vF5rbcUb4zhn81NRNagPLnulWRmzOq69Nl/DzTt+8rgjcfL4VU9sr63YCDkeCCCVMvHsR7Pxxc+1gBFF2AgjEDCEBKd6nPbkzAfb1LASRUVRRAoKJd+4aYuZuOTnJp9MutlkYdsU5Xg80YRZHzyHH95+BIm6xWJjLsS4bSNhWUgFgEbTRIURxknhEuyBCEzbRopK7gB13VRS2wiYAYTI/YoyHTBDcglH8e3y2DaCVhAhw0IwFUQ8AGmfim4lGbcQssSoXZTm1JkzazkV4CLYNgmFU5j51O2A2LbbJMBhSdssB9sSC3WLZDrznVvspS35wdljI2ZibiGw/IwTMeCwI5C49VYU3f8Yvh+yDj7b6lAEh60nOcejEZLjVJyzXRLkARhsT5TjdGoPIB6Lo6mxEQVFpSivKIdtJ0RFLhbwqQQMO45xw8ux11bDEQnRnF5ZyOvQCGgEehYCfDDKXI3My80fEsBVVVUYMGCA5Jj05iltj1jO18j95MnDDz8sip9M0R457lceU/nsV6l626V1uteqnQ9SqTRm+FXorsrSJd5IRpAcJ/nn5hamUpxkrBskgHv16pUvqFq0wzzCfnvuJ554okVuYRJ2fotxtxGS3sOHD0+3SXvmUaNGtbgGrdPd3Mv+QfhVVHww7rcpd+v4yfFcSTm24yfHDz74YMmFztzDX331FajS9edKZ95lKogzjYH1vXnnSRy2FUceeWQabx7e8M6zfw23dVDAv654za4mx/0HXzqbk9hPZLWmyuPY/Fb97iETL9b5nItM+DJ/tv8gRrY3pZ8cp2MF9wxa99Jdgth67Xvddv05d73X8+9jbMtrge4tSyt+HkRxw59OgjnImSLCDR4u4d6UKfxpH3hwhwd4so2OELz53N+9/cwXqZjt2DtbriPY+clxEnN0fMgUzDnPgxJu5GqZ35nx5WMuuvOe0hls2qubD+x4Df+e8v3332dMqcLPdOYNd6M9gtdPjtNthQ4zuUQ+93fvdXmom9bxHCv3SR484zMEfp9ligqmU/GmQ8l0AM6LGw+LTZ8+vdWhMWUG7eOzxS4XjHTZ9hHQ5Hj7GOkSGgGNgEZAI6AR0Ah0EAEvOb4m5xsnsXTD8ddgxmffY8T4keg9sA+WzVuCeEMMReXFOOaq36O8b0srvVwhTcaTOHtT9UBi/G4TYKUsLF+wTP7uM7gvjrs288OKXK+TTfnl85fhL7ueh3U2XRdn3//nbKroMnlA4MMZn+PlKf/D3iN3xd+2VTkMdZAAVsbji1Y04vlPf8GPC5oQCheIpTotvgOSE5vkbQjxWAx1NStEoVxcWko+3Mn/Tb5Y2apLrnEhsE0hz+PxJsz//GVMfe0+mLVLJS94ImAhZUHIcRLhjWYKleEITgqV4jeBCBKWDVMJukXNLepwGwjTGp1ti6W5yldOklqU3LQkJ6lOMpv5wkmB83dRoCuyWKzXmUfcUYyT3A4qH3ZHJO6UdZTqrE8iXdHoyo6dJag8p5yd5Lmo0oNKQR/k2ANAKGZhAcnxU0/EwCOPQNMdtyNy73/wY/9h+GLrwxEYsQHKK0iOh4UMJ76iHucFSJY79uqBgI2mxiYkEykUl5WjuKQQVjKprOyJnZWCmYpjSK8Ijtx5FEoKeaBB1dehEdAI9AwESIpQ3erNNdlez38tcryth/rtkeN+5XZ7Y/S//+yzz2LcuHHpl72EBh/w8sGwSyjzdz6cvfzyy0WBy4eqzDHsqqfae9Caa9+yKc8+0aLaDSq8qPTKJkjQenOLM/+ylzz2t8Fcpffdd1/65X/84x9plbe/rJ8cJ3nnVYhn0z8/Od5eHaqZaaPqPQDgrUOLfn+O9vbadN/3q+f222+/FgQprav99tzetttbx9n2I9tyfsWwn9zPth23nJ/IaotgyYYcz+dc8IAEbe3daEvVns24/eR4NnUypQzo6Pxzj1l//fXT1Xngg6pgN+hU4T3URDeM/fffP2M3Fy9ejM022yz9Xq57VEcIXj853pn93TuofJGK2cxnPsp0BDs/OZ7pYInbtzWNHO9Oe0o+5r+1NvK1jrP9TOksOZ7Ldwp3zPnc39kmD0DRtp1OMf4Dgm3NlZ8c5+FG7qdu+PdWf1u5fO515ZpZW9vW5PjaOvN63BoBjYBGQCOgEVgNCHjJ8eMmHYrhfZRipqdFIpbA3G/nSLeHj1tHiJuZU37GG/e8jLqlNfJ7a1Haqwyn3nYWBm84NOdhf/z0+/jq9clYsXA55v0wt9X6bPvMe8/rUO5vIRZJpAnDll3M+WYWrj74b9hkt81WKymfXe/W3FIzl8zBPe88ik37jcHduzcrOdbcEbc/Mq+l+tSZy/DaFwuwpN5CJBIVctwlWkmQB4MhJFMp1NXUwEwkUVJWIspyoYvlNrDl0Al/M8VvnQpyE6lkDHXfvoe3n7wJdu1SRAIQ1bj8UDlOctwy0TsUxmlGKXYORtBA4ldJoKUPbJX3GXOAU3nOP6gIJznNWy8oluiKIBfimwSxky88SMJeSHJFhBtu0nGqz8lxUxFO9bsw36qe6MQDzIkuVDhCjmrcCqpc5myD97xrK+8YsatOBmyEmmwsKghg2WnHovqIo9B4110I3/MQZg5fH5M3/x0wZD2VczwaFdo9SOt4sVfnv46lOts3TcQaGgEjhLKKcoTDAVhJKvSZ292W91NmAuXRAA7dfhiG9C2VMbItHRoBjUD3R4DEOG2/c3mIyFGtjeT4q6++2oKI8iqeSIiSfKbqlkHigsQVlVUMqkhpt802GLmqMvOxkjpDjs+cObOF8rs9cpxEzd13N6ftacuG30+OMy84lee5RK7keHtpATrzwJ6W6bROd8Nv492WEph1siUycsGnrbL+QyO0kmWO2I5GLiRBV5Pj/rmgde6kSZPSQ8uVAPZjkis53p4SM9f553dcqtXdoLOF1yr47LPPhtf1gEpyOjNkCr+9Psvk4lrQEYJXk+NqJjqCnSbH78i4jlf3ntLRfTKbej2NHKe1uGuXns34WCafn7V0ODrvvPNaHAjKth9+cpx5yb1jaY8cz/VgQbb90uWyQ0CT49nhpEtpBDQCGgGNgEZAI9ABBLzk+EX7noWCcMv8fx1ocrVVIRk+9a2v8P0n3+KnyT+kr3vIX47ExN9tj9tOvR7T3p26Sn9IVG+6++YYsuFQDFh3EEoqSzvUZ6pYzxij8nr7Y8yO47HhxI0xaP3B6D9yIKJFmXGlJfT0D6Zh+bylGLjeYAzbeDiMMHWvzXHTidciGDJw6q1nZd3P6e99jVtOuQ6TDtsRB12o8jXmO2oWr8Drd7+MOdNmIpU00XdoNbY+YFust9WG+b5Uj2lPk+OrTpU63KFs1d/8ah7e/WYp4mYIkXBEWX2L5bdrNR6WsrRFa6hficKiKAoLC2BZVImTaXbzeqt84XxoaNsWEokm1E19E+8+dzsCdcsQ9pLjDkFOcrxvKIQzQ2XY2YqgNmAjKQpwKrqb2WyS3wGbWcKDjmpcqcqVvpvvudS2UpQLYU/FuIf0ZjkhkNlvR/EdFvW8skkXfttJo25KH9R7JNnlHfm/6gdJd9bhdSV7uU1lekBs1ZeELCz6w7Hoe/SxiN1zL4w778G8DTfBp2MPAAaNRFkG5TjJcQQNBII2yG+nkkk0NjQhWlCMsvJSMYE3LVMp6qkeZ+5200QYKey+aV+Vd5yW7HJYJ/sDOz3mJtYd1QisYQj4Va0kiw455BAhXCorK2Uf5UNCql29JEtPJMf99tEc68iRI7OeUdol05LTDebNpFU5Y/To0SAh7OZlp403yXFXmU1FJNXQxJHRVn7YrDuUY8HOkON+hSovnSlHp9slN/e6+/c999yDnXbaKWOP/eQ484LzwEYukSs5ThKReVALCgoyXsafjzSX3PAcpzf3qN96lmvDu478HVjd5LjfDpZrmXbzHY18k+P5nItMtuo8uFJeXt6h4eZKjvMiTF3hT1HgvXgu8+8ntEmykhx0g3nNqRZ34+KLL8aJJ56Ycaw8tEHy3o32yCB/Ix0heDU5rlDsCHaaHO84OZ7PPaVDG0eWlXoaOd5aLvO2hpvPucj0PYD3Fj+TmSKI6TOoCP/ll18kzYA31YqfHCfR7nWWae9AoCbHs1zUXVRMk+NdBKxuViOgEdAIaAQ0AhoBwCXHSYqTHO8JQUL51lOvx7cfTGvRXebXLiwrwgHnHYxRE9bDx898gCf++Qg22m6M/Hz63If47qPpOPTSo7DNQc2qgkxjNlMmPnvhY/z4+fdINCVQ2rsUo7cfhw223qhF8Yf/cp/0Y+zOm2Dkpuvi4UvuRawhhouf/Rv6rdP8gDXTNUjoP/rXB7Hwp/nptyuqK3HWfeehanBfeW3J7EW4fM8LMXq7MTj5ljOznp4PHn8Hj17+AHY+9jfY75zsHkAumrUQHz31vhD1kcIIeg2owo5H7YKCksJVrttY14h/HfZ3LJ61aJX3eDDhgD/9DpHCnnPQImtg2ykYS8ZxxbPqIdVXx76er2Z7dDuucjyRTOEZ5hufWQ/DoKW6oWy+RdGsiFZm00bAQCwWR23tCiFvy8vKJReucOyWJUS5KJqpbLZMWJaNRLwJyya/hE9evhfBuuUwggEkmG+cFuj8sSxRjvcJh3EWleN2BLVQ5LgoxoWMJkGtFOpKq+6ow6kGF+5akeBCmgdU/m9lhO5Yojvkt7DXjke7WKNL+9SGKxU6leSk2fm3FJX3VT/E8VydI1DjdZTrllNfHTIgEW8jFLexPGBh0WlHo+r449H0wAMI33onFq43Dh+NPwD24HXFVr0gGhGcVd5xkvZUsDs5yIMWEvE4YrEEikvLUVxcBNtMCSHOwwgco8KZCvIENh5ciP0mroPCiJNNXXPjPfre1J1f8xHwk1gkQ0isZCKK/PloeyI57ieSaK/80EMPdXiimcuXSkwG7ZkvueQS0L6WwQelJOKYu5tBm88LL7wwbdVNYp3E0OqMzpDj7Kdf4eXNwe4fB/OWEgM3/Kp7b3k/OU5Czz1kkC0+/ofiPJTANiKRCPr27YuFCxeukmuZ+Xm9JLb3Wn7lOw+GbLrpptl2p0U5r50+32ivrVzI0Q51yFfJb6fNt3mQhGRCRyLf5Hg+54Lj8a/NjlgBu7j4yXESKHQ+4HdY7gklJSWrOHOQrCGx2Vr6mVzm378v+y3x/a4AbVnm8wAP93U3/Kr79tZCRwjeriLH33///RZpHHjYhoduumt0BLueQo7nYy66+57SVesqH9ixb9nuKbkSvP6DX219J2gNo3zu7/79pK2DdnSncZ182LdMOcf9nxVch6FQS5GKO65cseuqNbO2tqvJ8bV15vW4NQIaAY2ARkAjsBoQcMnxYX0G4/hJh62GK3b+Eswbfv2xV6cbOuiCwyTHd1lV26qAV25/AS/c+DT2P/d32OmY5pPz/h41rWzCHWfcKPnJvVFQXIAjrjge43bepNVBsF+s96dHL8bQjYe3Wu6HT7/DDcddI++z3dHbj8W0t6cIsb753lvhqH8qRbpLjpPw3/GoXbMG76mr/4s3H3gNw8eOwAbbbIyGmnoh+aliH7LRMOlbOMrsyiq+fO1z3P3H5jyV7usbbz8WR15xvORl98ard76I569/Sl7a/ZR90H+d/lj6y1K8+583UbNoBVjvpJtW70PhrMHp4oKXPHGVXEGT4wpopT4GltY24vmP5+L7RU2IhAsQDNJGnYywQ9aKPJoS7CDMpI3aujokEzGUl5eJtpuNML84iWWVd1xl6iZhnog1YuEnz+CL1x5CqLFWSN2kDSHHaa1uWhZWWib6hcM4M1iCHa0I6mnN7qi6SUzTQp3XMUh8M+c4SWybFusBIaMDgSBSfIOtCyfO12i3rl5L8fWghbAkGaeVe1CI7oiTTTwF2ri75uguaa7IcWIkJuUkvk1brm0Lm+5q09WbdsCEbZHoBiKNJpYHLSw49UhUn3Aimh58EMatd2DByNH4ZJODgCHrory8BAUFUXXowAjAcPOMi2I/KDnb47EmGrqjvLwCIVqqE1eL/VH27spe3YKZSqFXoY0T91gf5cU8+ELlubZW7+LtRDevEegUAn5VUltW03fddRf4vhs9kRxn3/0PiUkeuVbouYL5yCOPtMiNTaL1+uuvF1Uo1aEMl/Sg1efVVzd/N23L3jjXfmRbvrPkOAmmTz/9NH05jpcEsz/8SmS+P23aNJSWZnZi6gpy/KSTTpLDCN4444wz8Nxzz7V4rTWlGw9NkOR0Y/vttxeb+NYejLc1BzwYwZzrbhx//PGSfz5TZFLo52Jtne1a8Jbjd4xhw4a1qHrooYdKmoCORL6JrHzOBcfjJ0XokvHaa68hHG7+755sx+0nxzOprf37BNvmPkHXjkzh36MykTZuvauuuqqFhb//wMfHH38Mpn/wRmtKeb+CM9c9viMEb1eR4/40ELmq4LOd/3yV6wh2PYUcz8dcdPc9JV/rwN9OPrBjm92ZHM/n/s4DPfyuwaAzEA8PZTqElMlBJNM+e/TRR+Ptt99OT8sdd9zRwl3DO1/+vTabFBpdtW7WxnY1Ob42zroes0ZAI6AR0AhoBFYTAse/fA4mL5yK8UNH44DN9lxNV+3cZUjeXH/cNWkrdSrG9z7zAMmv3VZebpLFJI33OHUf7HFq5nxssZVN0vYv02ej77Bq7Hf2QRg2dgTmTJ8tNu2My165Erxmprj99Bvw9dtTcMZd52K9LTfIWGblinpc9pvz00T4YZcfg1AkhLcfegNPXPmoKM6pPHeDRFUu+cZZj6pxqsdbixHjR+KUW89CYUkhPnvhI9x//l1SdNLhO2G7Q3ZAZf/euP6YqzF72kxR2VNt7w32f+ncJdjztH2FHHcjGU9IDnaqebfYZ+vOTXQPrX3tS7eiprEOLx30EAaUVPfQUeSv2y45/v285Xh18kIsqDERDkeFnKXCm/7jVGMr23Aqo0nLQmzR6uvrUVxYiGgBrdUdQpwqZijFOMlrO2UhmWjEnHcewzdv/xehWL1w7HGHGKdynHnHqRwfEI7grGAJJtkR1Accy3IS4SSBXetyEtOOgltYcihynER1UiTkpIyVZlz+dI3ZmY9c3lGW6KJIF7pdlVb26w6x7qjEyatLS865AKHMOSapSfLdyWPuqMxp0a4s2W2EYhZWBFJYcNKRqD7pZKx86EFEbrkdS4aui482PxTm0PVRWV6CaEEYwQBt1FWecRLaoh4PBmGmEmiKxRCOFqKsjJbqtuBMRJQg3pbDB4J4ykRByMTB2w7FOgPLESLBLknUdWgENALdFQE+9OPDPzdaU9KSnCPBsmDBgnTZXImTjmKQb/LEr1Jivx577DFsscUWOXfRf7iASnQqp/baay/cfPPN0p6rrCK56n3I2pHcnDl30Fehs+S4n8Tmw+cnn3wSJJ7c4OfyMcccAxLkbvitnv3jWF3k+Pz587HVVlu1HBTbRAAAIABJREFUuDzn5f77718F2kxl999/fyG5i4qKcpoKHijw28RT6T506NBV2vErfVmgq8lxXoMHAfwuCnztuOOOy/lAQL6JrHzOBcfKAxI8KOEN5uHm4Z9c7dWzIcdJxHBP+Pbbb9OXpKqc+0FZGQ94tgw/kfX3v/8dRx55ZMY1ynz27IMbDz74ILbbbrv033xvs802a1GGBx+uuOIKUbe7QRt9pkLwBl1EeO9mGx0hePO9v7t9TSQSq1jX33LLLSB51h2jI9j1FHI8H3PR3feUrlpT+cCOfevO5Hg+9/d99tknnbqG4+aem+nz2uv6485dJnL8xhtvbOE4wfQqvO8ytXnuuee2yHWuyfGuuisyt6vJ8dWLt76aRkAjoBHQCGgE1ioEXHJ8hw23wY4bTuwxYydB/tmLH4t6mUplxsB1B2GvM/bH6EljM5LJb9z7Cp659nH85qS9pFym4Pssx7zkZz9wPiIF1H0Cj//zEbzz8P/k98322gpHX5k51zjzfDPf92l3/HEVC3b3eo//42G888ib8idV48PGjEAoHErnR6dCnErxzoSXHN9yv22w+T5bC6E/a+pPuOfc26VpYrDVAdvioh2UKuj4a08RBT6jdnENLtrxnHQXLn7u7+g3or/8TfLsD2NUPrsr3rwW5X0rOtPVNa7u3e88gllLfsFdu/8LE/qNXePGl8uAFDGuyN6Ppy/AO18vRV3cQChCwtbNN67yeLvqcJWsO4BkIoXamlqEjABKy0qRTDAPNvNhK1KcewBJZStlIpFoxKw3H8SMd59CMNEgBLNXOc6c2Q22hYHhCM4OlmA7O4wa2qSzHSqohZ5XxDdzfAccxXhQCG/H4xwBJHk9sTUPSD5xm+y4zbpKFW5SAS4i9yBssV5vzspNIpzDpBac1UQd7pDpzDVuM/G6ZPxmbwIwnEzkbCXEa5HYVmy65DEPNZpYEUxh0fGHo89pp6L+kUdQcNMtWDpoON7f8ghYwzZARXkpCnzkOBXwBnOOBwJIJGNIxGmpXoai4kJYksPdRoAHEeSwgPqX101aJkJWAjuM6Y1tRg9EJKweumqCPJc7QpfVCKxeBObNm4ett255UO3WW2/FrrvuKoQY3//qq6/ELpyW5N4YP348fvvb30ruZD547devX5d0Pt/kycqVK4U88o+HOJDAHDRokCiOeFCotrZWiEnmpeSDT/9+xgevv/nNb1YZt1dRTWKL5K8/vvjiC7FdXp3RWXKcquZtttmmBXbE6vTTT8c666wjrz/wwAMtSECOz28jznJUxLnx7LPPSj032B7tTN2oqKhoNze831Y9k3Kc7d1000245hrlzOQGld2Z5pGkuV/hzfFS+c31X1lZKbbZxIUHR2irOmbMGMHIHwceeGCLAwNsh/Mxbtw4yXvO+s8//3zGtbI6yPGamhrZC7xEK8fA/OMkjjm/ffr0QTwelzK0qef+QBxoYe+NfBNZbDufc8HvMSSbeZDFG7wfeVho5MiRGDhwIEzTlLldsmQJ5s6dK4QI594b2ZDjLJ/pgAQPzlx22WWrrBU/kcUCvO7ee+8t+20ymRQCyL8vc65eeOGFVfYp3lss6w3OGeeVavkvv/xylXU3adKkFvekW5e5ehctWjVlFt/nGvcGD874gzl8vftevvd37/V4T3sPJPA97vEce3V1dXqPZ1oBBi3nuzLyjV1PIceJaWfnorvvKV25bjqLHfuWL3J81qxZWLp0aXq4/H7D/cMNfr4ytYQbgwcPlnutvcjX/n7++efj0UcfTV+OBDX3WO6bsVhM9gMehqSbhz/OPvtsyTHOskyh4n4H5Ge6N0iQ8/vgeuutJ58R/NznHuu1aGd5TY63N+v5fV+T4/nFU7emEdAIaAQ0AhoBjYAHAZccP27SoRjeZ0iPwyaVSElu8TfueVmUzAwqrw86/1Cst9WGLcZDQprEtJd8Zr7vfx12BY6+6vdiBe4qov/2xjWo7NdL6s+fMRf/2P/SFm2d//ilGLTBqnjdeebNmPK/L/D760/HmJ3GS51PnvsQj1/xMC565m9CJP9hrCKWSUx/9FTLBzcksg88/1BRdDPMZAqP/eMR1C+rw3H/OlkU5tnEf//2EN7771urqNBZ96GL7xHMON4Je26Je/90O7Y9eAccfMkR0jQfKj144d349PmP0pcau9MmOPH60+TvlStW4vxtVf7zK9+7HiWVJdl0aa0po8nx5qlO5xtPWXj1s9n4ZEYNzEAE4VDYyYFtCBEsymo30bZKwS0keEN9E1KpOIpLimClqMamYpz5sJWyWSy/TQvxWCNmvHIXZn/8AoxkjG8gbltI0i7dyTu+0kxhkCjHSzFRyHG25uQVV5JtyQkuhDbJcSuAsGXDDCnVt0op7hDUQZLYKkLyiw3TCCDhqM4DARsRJhfnONy2nazmogh3lOe8DglzRYerXOLu3+l05o6O3FWku9p1I2ahPpDAvOMOQ59TT0PTY48hcuMtWNJ/KD7c6nCYwzdMk+OBAPO7K5U+c4+ToCcJFE/EZVwlpWUIhQ2xUwexpXLcyXfO0ZEkT1kpIJXERoMLsf+2zDseSqve15qbWw9UI9DDEOAeTKLAmxvaHQLJOz9RRtUdFYb+YJ5tPljsiugK8sSv+M6m31RCkxz0hj+HufueN2e23zLULbM6CE//uDpLjrM9PnjmA+hsg8pW2pF7I5Nyt632vEr81splS47zATnV4l4XBJJ1JEq55r1BxS/zlpOIzDaomr/88stXKe7PHdtWe+yP9/DG6lorPMSQ631MK26qkL3RFURWPueCffXnh81mfocMGbIKoZ4tOc72/XsZX2Oe74022qjF5TOR49n0j6kvdtlll1WK8kADyW7vmm+vPR7U8JNCrMODJSTAOhp+9XZX7O9u3zJZyrfWb95zPLDUlZFv7HoSOd7ZuegJe0pXrZ3OYsd+5Yscz+Qw0ta46bRy+OGHtwtNvvZ37qd0NfJHpu+z/F7Bw0SZ4vvvv5dDa4xMKvNMdfyf25ocb3fa81pAk+N5hVM3phHQCGgENAIaAY2AF4GeSo7zge+yuUtQNbivDIcq0skvf4oXb3omTZIfc/XvMWGPZhtN2n3fdfYtoo6mSprxv/texdP/egwHXXg4Jh22Iy7Y7mzUL6/D0VeeiLE7b4Jpb3+FRy69XyzQN9x2YyGpablOAv60289OE+gupq7CnEQzCWeGqyYnoc5+X/W7v4K25n988AJRaM/4/HvEG2KiIB+43uAWC5Tv0d6cceHTl2PAqEFZLeAvX/0cd5+jcoifcec5clCA12Y+dDfX+a4n7IG+Q6vx0CX3Yp1N18Wx1/weyVgSL978DD5/8ROpu/3hO+Pth1VezQP/fAh2OHIXUepfvNO58tqlL/0TfYaoOdChENDkePNKIJFNMnZ5XQxPv/czvp3fiHC0SBSLYu+tko6LclwU2y4JzSYCQCKRRMPKBhSEQwiEwkLc0k6dVt9UWIsq3TQRizVi2pP/xpJp78NINAmBnqC1Osu55LhlYkg4jDOMUmyNCOqgVNEkpkkHOxy2KLbJUMcCNmIAosEASkwLRiAo+cvrDUVT90rZoiRfFrTRGLRRbgdRZgLJQAApO4WkERSFeaGo0BUmqQCvpdrnMRchw2l37tizs64MXV4gNuwZdekAddrST7LZARvBJgsrSY4ffTCqTj8dTU8+iej1t2FFn2q8N/EopIaPRmVlKaJRx1adbTs5x4MGiXATyWQcRjgqhIFKo66od/WHJWS6sOeSt91EKhFHv9IATthzI5QUcgSKZNehEdAIdF8E+BCQSvH24sQTT5Sc0f/+979XKdrTyHEO4IMPPsDFF1+c8WBAJiwy2aDzs4RKI394ldKZSFEqPDMdMmhvDjr7fj7IcX4OUOV16aUtD4Vm6huVqSRO/bnGf01ynP2kwot5p73RWpqAuro6yQ9N4jGbaE1xy7qZFLz+NqlcpsKUBzjcWF3kOK/3yiuvSK52v7NCa2NnKgG/HXtXEFm8fj7ngu1RRfjnP/85p8MPHJs373wu5Hgm+2CqEJ9++ukWFud+Ios26F41ZKa54F52wgkntPqdi2vqtNNOa3es/L5HApsHSDJFvgneriTH2X/uU/fdd182ty68hFhWFXIslG/sehI53tm56Cl7So5LIuvinV3H3Z0cz+f+fs455+CJJ55oE1vuc3Ss4eG9TOHdC3igjs4bVJy3FTw0RNcbNzQ5nvXyzktBTY7nBUbdiEZAI6AR0AhoBDQCmRDoqeT4rKk/i+J7wp5bYJfj9xBLdQZJ8pdvex4v3/qc/H3tp7cgWhSV33/+6kf8+4h/ipX5qbedjcWzF+GJfz4ixPelL/4DfYZW48mr/oO3Hnx9Faio6D70sqOxcnk9rjn070IQl/Yqw1FXntDCPv21u17Cc9c9iVGbrYf9zjkI37w7FS/d8pxYmv/lxX/gx8k/pMnpf318EwochXhrq5MW7STXScZf9MxfsyaiEk1xXHv4PzDvh7nSNMfM4FgZFdWV+NOjFwsZ5hLd3j6w/Gl3nIPhY0fg1TtfFPt6xsTfbS8/V/5W2QSeeutZcmhARzMCmhxvxsJVjs9bWi/k+MwlSUSLihEyDJCgVQrmoKNSVjys0mk3q8dX1jWIcjlSUAjLSim1OO3QSSyTKDdTSjn+0q2Y9fkbCMcbpQNxAAkS45YlpHaDmcKQcARnGGXYxg6hhuQ4rxUIiiV6kJbozg/J65VlUfxsAJGGJoxKGSgxbSwtCOC7cAAVSRODzCAWhoFkyBCSv8lMoippozpmo6EkjFmhAKLxJIbFbBTQLj1IFbki4pW9uiK6yYPz95pwEEuDlhDsfVMBpBzLdhLVbm5zlqXuXHKPx0002gnMO+IgVP3hDMSfex6R625DfWkZ3p50DJIjN0a5x1adfZTs7lSOG8w3noJpKlwLCiJy6MDNc05bdSHtnbngxFg27evjKDFSOGGP9dGvFx0jaCPPzujQCGgEujMCtLi+4YYbxP7aH1TD0CacNsRUANNG0x+rkxx/6623MGLEiIxwevO28uHn9OnT24Sd9sT33nuvjNtvv+uvyHJ++2iWITlI23VvTJ48GVVVVfISSamJE1umJSJpTLxXd/jJcZIr/hzc2fZp2rRpkqOZqjZ/jBo1Ssjn1myKX3/9dSHyso1slON+2+r21iQVz35b7UzuAG4fuT7oCMAybRHHtBnnQYrWgmuDynK/Gp1rmqrf8847Twg9L+G8Oslx9pupB7g+OU+ZXCW8Y8uUT95PZDFX+3XXXZcREhIUJEjduPrqq3HwwW2njsrXXPCatMUl8cwfrum2gnshMfHaglOVve6666arTZgwAZnsxN0CN998MzhGbzDtgveAkp/ImjFjhqw9Xpu/e4MHbUjcZJMbnPsd55Xr079ncb8kIc6115YNsj8Hb7b3sFuuPeV4Pvd395o8aMJ0Idwj2goeZKINdFdFvrHzk+Nt3TsXXHBBCyvptnDuqvGz3Y7ORU/aU7oKv45ix/5495S2vhv5U+349+7W0sS0NuZslePe+p3d36lC53c6HuTM5JZBB6Q//vGPkj5j6NChGbue6aAMrdi5j/j3Tu75/K7Dzy3v90FNjnfVnZC5XU2Or1689dU0AhoBjYBGQCOwViHQU8nxJXMW4/I9LkjPFcnjir4VMFOmKLtdEvjK965DSWWplONrF+94Tvo9t/Kep+2L3U/ZR/5sqm/EI5fdDyqvGSSJ9z7zQGx3yA7pPOa89vXHXi0Eed9h1fjLC/9I92PmlJ9x7eEt7Qf55hl3nYv1ttxArn357heIOp225sddezLCUZXX3A0S/CsWLhdSn6rMS3f7M3Y6Zrd0H7NdoLQ/f+TS+zD1zeZcUaw76fCdsOvxe6RzhfP9By64K43L6O3GYP/zDkb1sOb8olTk89AB4+h/noD//v0hKU+CfejGq6qqsu3jmlhOk+PNsyr5qwMB/DB3GZ754GcsWGGigOR4KAyx+pYE3cp+3FPLMRJXIuamxjhSiQQiBVHYohxXpDbEXl0px+NNjZj96q34/pPXEE2oAyBx2xb1uJDjlgXaqg8NR3CmKMfDWBGwkVJ0sOfySiUdtgNIVRbix8II6pfXYMNEAL1jNn6pCOP7kI3+TSmQ2l9RFMKocBiVKQszUyksNlMY2Wgj2rsE3wdthOoasE4cKA4GnGspG3eVz9sWUjxhBLDCCGBx0BJCf2ACGJIIIEm5uaiy5aiA9JHkPetTsR5ImIhZTZh7yIHofdYfYb36EnDdrUiEw3h9+xMQGzkWFZWlKIxGEAwaSjVOwps504OGkOMIBBEtLETICKqDBnJYgYS9w9iLklwpynkogTnKC5DCwdsNxwbDejvtaeX4mriP6TGtmQi4uZNJ/pE0Yh5x5uB2lZLMwU31ZiQSafHD93u6SwQ/O5hLl7mFE4mEjKewsFDyT9JOXR/0ybzmiRsPADAHdVlZmRxciEbVodM1NRobGyUXPe8HrhXarzL/OPNUMy91NsF6JDp5zxGzXr1UqibG8uXLJT8qSQz+eJXK2bSdzzIkGkgGMM8sx82xcn7ZX94bzFn9a0Y+5sLtP9cy1zEV3sSf9zzHynWdy9x2Fo+2VJ7MDU8Sv6KiAjyE0tF7jQcguP44Zu7x2eQF7uy4fu36vNd+/PFH+Qzj/s7vrrxfu8ta/rXxWZ3X785zkc89pSsw7c7Y5Xu8nZkL7m383CLhz0NMJSUlso/zs9oNfo7zM4zfab3/tvWZW19fL/sI9xDmHef3RDf42WEYhnxu83X+rmP1IKDJ8dWDs76KRkAjoBHQCGgE1koEeio5zslivnCqsr949bNV5o5K7T1P3w+b7bVli/c+e+Ej3H++sk5kHu1tfrtdRuVzQ81KMJ85c4RnChLYs77+GYPWH4JIQUty+9HLH8AHj78jxPpme22FbQ/ZAQNGDUw3w5zkzE3OoIJ7+yN2Rt8h1VhZU4+fvpiBKW98IcSzm+e7sbYBhaVFaXI+14Vat7QWy+cvQ3FFCXoN6A0jtOoXeY6HZH9Jr9JVxuNej4R9bGUM/UcOwPwZ8zBr6k/Y+sDtcu3OGl/+kieukjHetfu/MKHf2DV+vG0NUNmqBzHlx0V44eM5WNpgIlpQhLARRtAIIRA01AMsx2pc2pK82w4py1zeSUseYoZl3QbSynGS4nzwRbtvkuM/PX8jvv/sf4jEG4ROjsNGwgZSUCR4o2VhaDCEM4xibIEwlrNtuk04anUS1eTpWTlk2wgVRrGwsgS/1NdjeGMCg1IB/FASxnzLQjVs1AQDiAaDGG0GUZo0saQghKlIobopheryEvzItlauxLAEUIygq4cXYp/kOMcZCgaRiARRFw6h1rZQn0qhMmZimKls5ikrp9pcEeTyp1OXHbfQaDdhzn4HoOqPZ8N84w0ErrsJ8XAY7+x4ElKjxgk5Tlv1EMlxEuNUjYtKPiC4Gf/P3n2HOVXsfxz/7tKW3tvSu3ARRJogKkVAsCAo8qMIKkVQFGlKFelIkSICIsgVRaWIFAVFRZCmiBRREJDe+1KlLOzv+Q4mN8lmd5PdbDY5ec/z3Ec3mTNn5jUn/nE/Z2b0/zD4N+Qw5Cbn1jPJ1eLOqnYzFzG3TZB248Y1Cbt9Q56sUUiqlY00u64TKIX0T5zBI4AAAggggIAXAp5ugexFk1RFAAEEEEDAsgKE45adWgaGAAIIIIBAygsEczhu07t8/pKcOnBSLp69KOkzRpiAV8/m1iDIXbl2+R+zrXDa9Mm38kX7lCFLRnMfd2Xn+j9ldp8ZZgW5u1KkfDF5um8rs605JbgECMf/N1+2lePnLl2TY2evyI1oufOWdVi4CVb1n7FWjt/ZW/3f9dJ3Vi1rMHvn53wnSL9zNPb/VjXfuhUtFw/vlktnj0v4LY3DNUSPMVuY3/lfjETHxEjmsHApnTqN5AwLM6u0zQL0fzNh58XrMZIqPFyup0sjl6OjJWP0LckgYXIxVbg5xzwi/M71up4qy209O/y2RKdObVajp4m+LRlSp5ZLmm1HR0sGDdtdHuF/jyC/c7S3bnEeHia3YkSuaWB9K0YymVD6To9srwncWUV+Z9jhYbqlvJidMi4XKSQRd5WR2ydOStiuXXIrLJWczldSJEt2SZM2tRmHWfFpznT/d7/6f/3CUv177vu/Z57f+V7nxBaU6we6jf2dedBzymNibknBnBklV9b0Zp6CfTVpcP3Xhd4igAACCCCAQDALEI4H8+zRdwQQQAABfwsQjvtbnPshgAACCCAQQgJWCMeDdbpuXr9ptjw/8tch0dXdWXJlNWeLl6xcWnIWuHOWJSX4BAjH/zdntnDcdva4Yyjszczarov3Gg1v/w3M46tnMnlvbh7odf8Nvv9NsE1v7wTrrtvVux+INxaO82c7kZxwPNAfEPqHAAIIIIAAAoEiQDgeKDNBPxBAAAEEgkGAcDwYZok+IoAAAgggEKQChONBOnF0O2AFCMcDdmroGAIIIIAAAggggAACKSZAOJ5i9NwYAQQQQCAIBQjHg3DS6DICCCCAAALBIkA4HiwzRT+DRYBwPFhmin4igAACCCCAAAIIIOA/AcJx/1lzJwQQQACB4BcgHA/+OWQECCCAAAIIBKwA4XjATg0dC1IBwvEgnTi6jQACCCCAAAIIIIBAMgoQjicjLk0jgAACCFhOgHDcclPKgBBAAAEEEAgcAcLxwJkLehL8AtduXpfhiyeYgcxoNFaq5KsY/INiBAgggAACCCCAAAIIIJBkgfHjx8uVK1dMO1myZJFXX301yW3SAAIIIIAAAlYVIBy36swyLgQQQAABBAJAgHA8ACaBLlhGYP/pQ/Lh6s/MeAjHLTOtDAQBBBBAAAEEEEAAAQQQQAABBBBAwI8ChON+xOZWCCCAAAIIhJoA4XiozTjjTU4BwvHk1KVtBBBAAAEEEEAAAQQQQAABBBBAAIFQECAcD4VZZowIIIAAAgikkADheArBB+Bto06el0ntx0jdtg2k1jO1A7CHgd8lwvHAnyN6iAACCCCAAAIIIIAAAggggAACCCAQ2AKE44E9P/QOAQQQQACBoBYgHA/q6fNp53/9aoN81GeGFChdUPouHOzTtkOlMcLxUJlpxokAAggggAACCCCAAAIIIIAAAgggkFwChOPJJUu7CCCAAAIIICCE40l7CBaNmy8ZsmSUBh0bJ62hALj668mLZPm0pZKrYG5565tRfu1RTEyMxNyOkfBU4X69r69vRjjua1HaQwABBBBAAAEEEEAAAQQQQAABBBAINQHC8VCbccaLAAIIIICAHwUIx5OG3bV8e9PA+N+mSpp0aZPWWApfPbPnVNny7SaJyBghY395L9l7c+ncRVn50Qr59aufRbd015KvRKTUe66h1GhaK9nvnxw3IBxPDlXaRAABBBBAAAEEEEAAAQQQQAABBBAIJQHC8VCabcaKAAIIIICAnwUIx5MGbgvHR64eL5lzZklaYyl89bAmA+XE3mOmF5P/mJmsvdH7TO70jj0Ud73ZE92eCsrV+ITjyfrY0DgCCCCAAAIIIIAAAggggAACCCCAQAgIEI6HwCQzRAQQQAABBFJKgHA88fI3r9+U7pU7mwYqNawit6Nvy7njZ83fuQvlkRfG3fkuGMrt27fl1QodTVf9sa36+HZvy97fdpv7tRjYRkpXLyvRN6Jl8fgFsmPNdvP56HWTJEPWjMHAZ+8j4XhQTRedRQABBBBAAAEEEEAAAQQQQAABBBAIQAHC8QCcFLqEAAIIIICAVQQIx72byZ+/XCtbv/tNzp84J0d3H4nz4kLliki3Wa+bLcq16JnaEiMSFh7m3Q39VPv61evSs9pL5m6lqpYxfU/OYgvH6zxbX5564//st7rxz3XpUfVOP/ouHCwFShdMzm74vG3CcZ+T0iACCCCAAAIIIIAAAggggAACCCCAQIgJEI6H2IQzXAQQQAABBPwpYKVw/PL5S5Ixa6Y4A+gzR07Lnl93Seo0qaRU1bskW97ssaivXblmD7Rdv4y5HSOvVOjgdnoq1K0k5WrdLQXvKiT5SxaQdBnSOdWb3HGchKdOJS9NfS1J03v71m25dvmfOFdU62r2M4dPS4YsGSRrnmwe3+tK1GV5o1Y3U79Bx8ai25q7ln8u/yN//vS7XL9yTYrdU8KMMywscWH/6UOnzPnm9zaqalaq28rZo2dkUMM3zJ8DlgyTfMXzezyGQKhIOB4Is0AfEEAAAQQQQAABBBBAAAEEEEAAAQSCWYBwPJhnj74jgAACCCAQ4ALBGo7/+tUG0SC45lMPytWLV2Vql/Gyf9s+ubdhVXl+7ItOoa3WWzpxoaycvcJpNhp1eUIefbmJ/TMNz996pI9Ue7yGPDuivVMbGkpvX7VV5g79RC6euSC6MrxBh8YyZ+As0UB9wOKhkq9EpNvZPn3wpAx+tJ+Uf7CCdJ5yJ4D2pOhW59++/5WUqFxaSle7S47sPCTvvTheLp27KM8MaCMP/l8dezN7Nu2S5VOXyu5fdto/0/480KKO1HyqlqRJl9b+ua4S37Jik2kvX4n8Urlxdblx9br0r9vT1Ok5p78Uq1jcqYvrFvwkX46Za8ZqK2XvLy8dJ74saSP+17Yn44qvjs7RwtFzzQsKo9e/K+GpwpPapF+vJxz3Kzc3QwABBBBAAAEEEEAAAQQQQAABBBCwoADhuAUnlSEhgAACCCAQKALBGo5riK1h9sifxsucAbPkj59+t5O+PL2HlK35H/P3rZvRMqP7FNm+apv5W8+2jrl926wg1zLo6xGSu0he8+96BrZu961Ft/rWLb+1bP1+sywY+alEnTxv/tZQWL/XVc0Tnx9t2ur92QApcncxt9NqC8ebvd5C6rZt4PHUR506LwPq9jJbi78ys5cMb/KmCcZtRcNjDZE/HfRf+XnROvvnuhI7+ma0vb/FK5WUTpO6SqbsmY3ZlM7j5dS7YlTHAAAgAElEQVSBk/b6Gto/1aelDG7c13z27u8znFbfr5ixTJZM+MJ8l6doXilQppBZ9a2lzdDn5b6mtTweU3wVdev50S2GyuEdB80Z7u3HdfFJu/5shHDcn9rcCwEEEEAAAQQQQAABBBBAAAEEEEDAigKE41acVcaEAAIIIIBAgAgEazj+9jNDTIiqYbdttbSulD6x95hZDa6rwrV8PXmRLJ+21ITIXaa+JiXuLSV6rvWghn1M0NxpYlepUK+SqasrtWe8NkV+X7nF/N1qcDvZuf5PexCsoXijLo9L8XtK2mfv/a6TTPD+yoxeUua+snHOqm7J7u1547qNee/7upq+5yyQy5xxrsG3bh+vK7j1XPBchXLLwId72+/btNczUrddA7Pq/eiuw/Ll2Hny14YdZlV7n/mDZHzbUXLwj/2mzcYvNTEGuhI+S66s8t3M5aad8b9NkzTp0ph/37Vhh7zbcZz592f6t5YHW9Y1/z791cnGyfXM8KQ81rqafWaPqaaJHp/0dXJOSrv+vJZw3J/a3AsBBBBAAAEEEEAAAQQQQAABBBBAwIoChONWnFXGhAACCCCAQIAIBGs43vfB7k6rqDu/96rkiMwpI5oOkrtrV5QXJ78q54+fk4H1/xcc66rnQmWLyO5f/rJfO2zlWMmW539nj9+4dkP0fPB9W/52mqF2ozpI1cdqxJq1KV0myI4128Vxtbqvpta2zbutPQ20+y4cLDvWbjfbu+vq9VrPPCTdK99ZYe1uZfqt6Fsy/MmBZqW4htvzhs8xwXifL96yn/Xteh/bWHQr+RHNBpkXDrToGe1FyheTc8fPmhcTtDi+XODNuHUr/I1L1hvna1fvbNW+b/MeE/rrlvW6Ej/YtlTXMRCOe/MUUBcBBBBAAAEEEEAAAQQQQAABBBBAAIHYAoTjPBUIIIAAAgggkGwCwRiO6wrvVyt0tJs079daHmp1Z0WzhuY3r9+Qsb+8Jz/891uzcrpU1TJy6dwle8ir9TTo/b9Bbc054K5l2ZTFsmzKEvvH8a0K/6Dbe7Lth81OIfEvS9bL/OFzpP+ioZI9fw6ztfu8EZ/KpbMX5YWxnSV12tQezaeeoT6u9XB73V6f9peiFYrLyQMnZOhj/aXKo9Wl9ZDnpXvlzqbO8JXjJGuebE5tR9+INivLdYX4A/9XR9Z8/qPUbv2wPN23pan3z6WrMq3ru2ZLeVu5/+kHpeVb7eTg9v0ypuUwyZwji+jW7DpOx/Jkj6fl4RcaeTQWx0pXL1wx29HrSvi4it7zie5PyX1P3u909rvXN/PzBYTjfgbndggggAACCCCAAAIIIIAAAggggAAClhMgHLfclDIgBBBAAAEEAkcgGMPxC6eipH/dngZRw9M2w16wg9q2OX9r+UhZOGae2fpbw+3S1e6SvzfvluN/H5MsObNIuQfulrQRaZ0mQkP372d+I0sm3jlf21b0zO/OU7pJ9nw5Yk3c/JGfyuo5P0iLgW3kgRZ1zPe21eS6jXnBsoVlz6ZdMvG50ea7fl8OlshSBT16APRc75k972wzrmPUsWqxvRygAfLwVePk9RqvmBXXjnX0/O5TB07Il2PmmfPYdfv5MtXLytJJC02grcH2uWNnTV91Zbi+LKDnmmvormXsz5PNOeYLRn0mjV96wmzBfmzPUTm4fZ+kSpNaSle/y2nFvUcD+rfST5//KPOGfWL+0i3wD+88ZN/K3rWdextWlTbDX4g1V97cz591Ccf9qc29EEAAAQQQQAABBBBAAAEEEEAAAQSsKEA4bsVZZUwIIIAAAggEiEAwhuOO26WPXD1eMufMYtf85v2v5Kt3vzTnhf+yZINZEf34q02lYafH4hXX0Hx2vxn27cLbDH3ebO89ueM79i3YdXW6rlJ3LCtmLJMlE74wq9Of7Nlc/vzpd7PqXM8Gf/PrEWZrcN12XUNoPfe7/6IhHq+E/m35RpnV+30pVrG49Pikn9N1uvJ6z6+7ZODSYbL1+82ydOJC0y3ts3rYtii3fdbtw96y//d98l6nd0w97UvUiXMmVNdt1rt/3Ff0JQBb2N96yHMSdfK8fP3eYhOsvzqzl8+e2F+/2iAf9ZkRqz29T9cPekjUifOydt4qUVstGsxrQB8MhXA8GGaJPiKAAAIIIIAAAggggAACCCCAAAIIBLIA4Xggzw59QwABBBBAIMgFgjEcV3JdVR2WKlzuefhepxnQrcsHN+5rzt++fvW6fPH25+Z7DXc1fHUtevb1pbMXZGqXiaJnb2vR88vLP1TR/Lu2N7vfTNm57g+p9Uxt+b83n3VqwnXrc9uXjluxX4m6LIMaviH1nmsojbp4HvLG3I6R72Yul/K1K8Rabb5rww55t+M4sxI9X/FIWT5tqWxYuMYE2raiW6E/0KK23FO/sqRJl9YE4aNbDDHnj9uKmmgQnrNALvORbrM+5NH+Uv3J++XehlVkdIuh5vPHuzWTBh0axwr29Yz28yfOmVX1rivx4/pp6Fnmy6cukbXzVttfPKhQt5K0HdFeIjKlt1+mtu91Gid31fyPdBj/UlD80gjHg2Ka6CQCCCCAAAIIIIAAAggggAACCCCAQAALEI4H8OTQNQQQQAABBIJdIFjD8fjcNXzVFdu3om/JO21GysE/9pvq1ZvUlDL3lZM06dKYrcT/WP27/buSVUrL35t2y/NjXpTKjap5Na2fDZ4t6+avNiuwqz5Ww5ztHVmqgFMbes52+swZJCw8zKu2PRmnYx0N4qNv3pLMOTIbA9dy8/pN2bPxL4m+GS058uc02767Fg3Iw8LDzXgWjp4rK2evMFVKVC4tVR+tLllyZZWzR8+IBvS6ZbsWx3PfvRmguqSJSGPCe3cl6tR5SZ0mjWTKnsmbZlOsLuF4itFzYwQQQAABBBBAAAEEEEAAAQQQQAABiwgQjltkIhkGAggggAACgShgxXDc0fnGP9fl8yEfy8alG+Lk19XcD7asK9cu/yO5C+dJ1DRdPn9JMmTJ6DaQTlSDAXKRnl2+8qMV8uXYeXH2SF8m0C3l3Z3JHiDD8Fs3CMf9Rs2NEEAAAQQQQAABBBBAAAEEEEAAAQQsKkA4btGJZVgIIIAAAggEgoDVw3Gb8Yl9x2X7j1vN1ulhYWGSq2AuKXJ3cSlaobhZSU6JX0DD/y0rNok6Xr9yzWzDXqB0ISlZtYxkyJIBvn8FCMd5FBBAAAEEEEAAAQQQQAABBBBAAAEEEEiaAOF40vy4GgEEEEAAAQTiEQiVcJyHAAF/CBCO+0OZeyCAAAIIIIAAAggggAACCCCAAAIIWFmAcNzKs8vYEEAAAQQQSGEBwvEUngBubykBwnFLTSeDQQABBBBAAAEEEEAAAQQQQAABBBBIAQHC8RRA55YIIIAAAgiEigDheKjMNOP0hwDhuD+UuQcCCCCAAAIIIIAAAggggAACCCCAgJUFCMetPLuMDQEEEEAAgRQWIBxP4Qng9pYSIBy31HQyGAQQQAABBBBAAAEEEEAAAQQQQACBFBAgHE8BdG6JAAIIIIBAqAgQjofKTDNOfwgQjvtDmXsggAACCCCAAAIIIIAAAggggAACCFhZgHDcyrPL2BBAAAEEEEhhAcLxFJ4Abm8pAcJxS00ng0EAAQQQQAABBBBAAAEEEEAAAQQQSAEBwvEUQOeWCCCAAAIIhIqALRyvU+5+qVuuliWHHXM7Ria1HyO5CuaW1kOft+QYGVRgCBCOB8Y80AsEEEAAAQQQQAABBBBAAAEEEEAAgeAVIBwP3rmj5wgggAACCAS8QCiE42ePnpFBDd8wc/H22omSMVumgJ8XOhicAoTjwTlv9BoBBBBAAAEEEEAAAQQQQAABBBBAIHAECMcDZy7oCQIIIIAAApYTCIVwfNeGHfJux3Fm7oavHCdZ82Sz3DwyoMAQIBwPjHmgFwgggAACCCCAAAIIIIAAAggggAACwStAOB68c0fPEUAAAQQQCHiBYA3Hdav0sPAwj3zXzP1R5g79xNTt9+UQiSxVwKPrqISAtwKE496KUR8BBBBAAAEEEEAAAQQQQAABBBBAAAFnAcJxnggEEEAAAQQQSDaBYAzHTx88Ke+9OF6y588hXaa+Jmkj0sbrs3D0XFk5e4Wp03fhYClQumCyedJwaAsQjof2/DN6BBBAAAEEEEAAAQQQQAABBBBAAIGkCxCOJ92QFhBAAAEEEEAgDoFgDMd3rNkuU7pMMCOq8mh1ee7tTvHOr9bVa7QMWzlWsuXJzvOAQLIIEI4nCyuNIoAAAggggAACCCCAAAIIIIAAAgiEkADheAhNNkNFAAEEEEDA3wLBGI6r0ZZvN8mGRWvl8J8HZfCKt+NdPT7m/4bJwT/2G9qJW6dLqtSpzL/HxMSIxIjH27P7e264X/AJEI4H35zRYwQQQAABBBBAAAEEEEAAAQQQQACBwBIgHA+s+aA3CCCAAAIIWEogWMNxbyZhZLNBcnT3ESlSvpj0/nyA/dLJHcdJeOpU8tLU17xpjroIxClAOM7DgQACCCCAAAIIIIAAAggggAACCCCAQNIECMeT5sfVCCCAAAIIIBCPgJXCcV0J/sfq32Xv5j2SLkM6qfZ4DclZIJe89UgfOXPktDzZ42l5+IVGRkPPLR/8aD8p/2AF6TylG88IAj4RIBz3CSONIIAAAggggAACCCCAAAIIIIAAAgiEsADheAhPPkNHAAEEEEAguQWCNRyPOnleflm8Tuq2ayBp0qWVm9dvyoc9p8r2VdvsZBEZI2TEqndkUMM+cuncRbNqXFePa7GF481ebyF12zZIbmbaDxEBwvEQmWiGiQACCCCAAAIIIIAAAggggAACCCCQbAKE48lGS8MIIIAAAgggEKzh+Lr5q+WzwbOl08SuUqFeJVn0zgL5/sPlZkJ1dXj6TBFyYt8JKXp3MZk/8lPzeffZfaTEvaXskx5zO4bzxvkJ+FSAcNynnDSGAAIIIIAAAggggAACCCCAAAIIIBCCAoTjITjpDBkBBBBAAAF/CQRrOP7zonXyyYAPpWmvZ+SBFrWlR9WXDJktLNd/v33rtgxrMkBOHThpvnvkxcfksVea+ouW+4SgAOF4CE46Q0YAAQQQQAABBBBAAAEEEEAAAQQQ8KkA4bhPOWkMAQQQQAABBBwFgjUc37Fmu0zpMkEqN6omtdvUl3Gth0ueonnlza9GmOHpqvAvx86TlbNX2Iebq2BuGbRspFktfutmtMwb8alcOntRXhjbWVKnTc2DgUCSBQjHk0xIAwgggAACCCCAAAIIIIAAAggggAACIS5AOB7iDwDDRwABBBBAIDkFgjUcP7TjoIx+ZohkzpFFOr37ignHC5UrIq/PHWjOH/+4/0zZ8u0mQ9fjk76yaNx82bflb+k263UpVbWM7Nm0SyY+N9p83+/LwRJZqqDHzDev35DvP/xGom9Ey8PtdQv39ObafVv/lg0L10qVRtWkTI1y5rO46np8MyoGlQDheFBNF51FAAEEEEAAAQQQQAABBBBAAAEEEAhAAcLxAJwUuoQAAggggIBVBII1HL9wKkr61+0p2fJmlwFLhkmv6i+bKdGwXMulcxfNP58b3UmqNK4uW7/7TWZ0nyJVH6sh7UZ1ENvK83wlIqX/oiESFhbm8ZR+PuRjWTtvlan/TP/W8mDLunL26BkZ1PAN81lExggZvf5dCU8VLu7qenwjKgadQNSVCzJu+TTT7xmNxkqVfBWDbgx0GAEEEEAAAQQQQAABBBBAAAEEEEAAgZQUIBxPSX3ujQACCCCAgMUFgjUcj4mJkVFPvSV5iuWT9uO6mJXivyxeb58t3UK91eB2Urp6Wftn73edJFGnouSNeW/KlajLJsyu91xDadTlCa9m+YNu78m2Hzaba57u01Jqt3lYjuw8JKOaDzafaTj+9rpJkip1KnFX16ubUTnoBAYueNv0mXA86KaODiOAAAIIIIAAAggggAACCCCAAAIIBIAA4XgATAJdQAABBBBAwKoCwRqO63zoueG6hXpEpvSiYfn+rXvlwukoyZIrqxStUNyE047lVvQtE4rr91quXrgi6TNnMGeQe1N0S/ZVH38vuQvnkcdeaWrOK9ct1r9+b5Gc2HtMHn6hkZS4t5Rp0l1db+5F3eATIBwPvjmjxwgggAACCCCAAAIIIIAAAggggAACgSNAOB44c0FPEEAAAQQQsJxAMIfjlpsMBmQJAcJxS0wjg0AAAQQQQAABBBBAAAEEEEAAAQQQSCEBwvEUgue2CCCAAAIIhIIA4XgozDJj9KcA4bg/tbkXAggggAACCCCAAAIIIIAAAggggIDVBAjHrTajjAcBBBBAAIEAEiAcD6DJoCuWECAct8Q0MggEEEAAAQQQQAABBBBAAAEEEEAAgRQSIBxPIXhuiwACCCCAQCgIEI6HwiwzRn8KEI77U5t7IYAAAggggAACCCCAAAIIIIAAAghYTYBw3GozyngQQAABBBAIIAHC8QCaDLpiCQHCcUtMI4NAAAEEEEAAAQQQQAABBBBAAAEEEEghAcLxFILntggggAACCISCAOF4KMwyY/SnAOG4P7W5FwIIIIAAAggggAACCCCAAAIIIICA1QQIx602o4wHAQQQQACBABIgHA+gyaArlhAgHLfENDIIBBBAAAEEEEAAAQQQQAABBBBAAIEUEiAcTyF4bosAAggggEAoCBCOh8IsM0Z/ChCO+1ObeyGAAAIIIIAAAggggAACCCCAAAIIWE2AcNxqM8p4EEAAAQQQCCABwvEAmgy6YgmB4YsnyLWb12VGo7FSJV9FS4yJQSCAAAIIIIAAAggggAACCCCAAAIIIOAvAcJxf0lzHwQQQAABBEJQgHA8BCedISerwMzVn8qB04cJx5NVmcYRQAABBBBAAAEEEEAAAQQQQAABBKwqQDhu1ZllXAgggAACCASAQCiF44d2HJTlUxZL836tJUdkzgDQpwtWFCAct+KsMiYEEEAAAQQQQAABBBBAAAEEEEAAAX8JEI77S5r7IIAAAgggEIICoRSOr57zg8wf+ak82vVJadT58RCcbYbsDwHCcX8ocw8EEEAAAQQQQAABBBBAAAEEEEAAAasKEI5bdWYZFwIIIIAAAgEgEErh+MrZK2Th6LlSu/XD8nTflgGgTxesKEA4bsVZZUwIIIAAAggggAACCCCAAAIIIIAAAv4SIBz3lzT3QQABBBBAIAQFQikcXz51iXz93mLJlje7lL2/vJw5fEquXrgi6TJGyKMvNZEyNcqF4BPAkH0tQDjua1HaQwABBBBAAAEEEEAAAQQQQAABBBAIJQHC8VCabcaKAAIIIICAnwVs4fgLD7WUYrkL+/nuyXu7i2cuyKJx8+X8iXNyYu9xuXTuotsbRmSMkGavt5CaTz2YvB2i9ZAQIBwPiWlmkAgggAACCCCAAAIIIIAAAggggAACySRAOJ5MsDSLAAIIIIAAAiJWCcf3b9snR/46KNny5pCSlUtJ+swZZOVHK2ThmLmxpjlzjixS65mHpHD5YhJZqoDkiMwpYWFhseod3X1Edv+yU9KmTyflH6wgWfNk45FBIEEBwvEEiaiAAAIIIIAAAggggAACCCCAAAIIIIBAnAKE4zwcCCCAAAIIIJBsAq/9MEhWHVovjSrWk5qlqiTbfZKr4fPHz8ncoR/LHz/97nSLzlO6SdZcWWVK5wlSoExBqVC3kpw5fFr03PHKjarJ82NejLNLN67dkM/emi2/frUhVpsaklMQiE+AcJznAwEEEEAAAQQQQAABBBBAAAEEEEAAgcQLEI4n3o4rEUAAAQQQQCABgWlbZsu0rR9LnXL3S91ytYLKK+rUeZnQ9m05c+S06XelhlXk6K7DcurASdHV4SNWvSNh4f9bEf73pt0y4bm3zSpwDc/dlegb0TK922TZsWa7+TpXwdxy+fwluXbl2p02V7/jdpV5UMHR2WQVGLd8mkRduSAzGo2VKvkqJuu9aBwBBBBAAAEEEEAAAQQQQAABBBBAAAGrCRCOW21GGQ8CCCCAAAIBJGALx8tGlpJWNZsFUM/i70pMTIyMbztK9m35WwqULigvTetutj0/svOQjGo+2Fw88qfxJtC2lUN/HpDRLYZK8UolpcfHfd3eYNmUxbJsyhLzXavB7aRG0wfkn8v/yJv1e5uAfPxv0yRNujRB40RH/S8wcMHb5qaE4/63544IIIAAAggggAACCCCAAAIIIIAAAsEvQDge/HPICBBAAAEEEAhYgSV7Vsiba8dI0dyFpP1DrQK2n64d27Jik8zsMdX+cZHyxSRngVyy+dtfzWf5SkTKgMVDnS7Tc8nHtR4uxSoWl55z+scaqwbu/R7qIZfOXZRmr7eQum0b2Ovs3viXXDp70WzJTkEgLgFdMa4rx7Vsff47oBBAAAEEEEAAAQQQQAABBBBAAAEEEEDASwHCcS/BqI4AAggggAACngtsOrFNOizvZS4Y+vQbnl+YwjWnvTTRnDOuYfWfP/1uVnXbiq4Mbz3kOclbLL9TL22ryh2D81vRt2ToY/3lnvqV5fFuzaTbPZ3MNf0XDZX8JSNTeJTcPtgE9p8+JB+u/sx0m3A82GaP/iKAAAIIIIAAAggggAACCCCAAAIIBIIA4XggzAJ9QAABBBBAwKICwRiO3751W16t2NHMyDub7qwe37Vhh5w/eV7yFskrpe8r6/Zc8ItnLki/2j0kImOEjPl5sqlz4Pd9MrbVcKlY717pOPFlGVCvl0SdPG+2au8w4WXJXThPkmde2/tu5jIT1j/Ysq69vZ8XrZNDf+yXOs/Wl9xF8prP46qb5E7QgF8EthzYLgs3LTP3Ihz3Czk3QQABBBBAAAEEEEAAAQQQQAABBBCwmADhuMUmlOEggAACCCAQSAKXblyWB+Y0NV164aGWUix34UDqntu+3Lx+U7pX7my+6/7RG1KicmmP+uwYqj83upNkyJxBFo6dJyf2HpO2IztItcdryG/LN8qs3u/b27u7dkUpc185KVCmkPlfhiwZPLqXY6W3HukjZ46cNh/1/eIt047jfWzBvH7vrq7XN+SCFBNYuWOt/Lhjnbk/4XiKTQM3RgABBBBAAAEEEEAAAQQQQAABBBAIYgHC8SCePLqOAAIIIIBAMAjcM6u+6Warms2kbGSpYOiyvN91kmxftU2y5c0uPef0k+z5csTq94VTURJ9M9qcRW4r7704Xnau+8OpbqmqZeTVmb0lLDzMfL5j7R8yb9gn9kDbsXKeonmlRf82UqZGOY+dupZvb6/7xrw3pVC5IrL605Uyf8Qc83mFupWk06Su5t/d1fX4RlRMcYFP1y+Uncf2SKkcxWR+k+kp3h86gAACCCCAAAIIIIAAAggggAACCCCAQLAJEI4H24zRXwQQQAABBIJM4JnFL8ruc/ukRqkq0rhivaDo/ZnDp2TU04PtZ43Xb99ICpcrasLwwzsOyu8rt9jD7cl/zLSP6ejuIzL+2ZHmumIVi0uNZg9I9SdqSqo0qZ3GravM927ZIwd/3yf7t+2TfVv+lkvnLpo6uv26rvb2tKxb8JNsX7lF7q5bSe5/+kFz2bljZ2XZlMVyK/q2NOn+lAn5tbir6+l9qJfyAsMXT5BrN69L7cI1ZUK9wSnfIXqAAAIIIIAAAggggAACCCCAAAIIIIBAkAkQjgfZhNFdBBBAAAEEgk1gzC9TZM6OLyVbxqzSs9Gd7cqDoehW5bN6vS8H/9jvtruZc2SRJ3s1N+G3Y7l1M1quX70uGbJm9GqYl89flpjbtyVzzixeXUfl0BA4HnVKpnw/ywy28z3PSudKbUNj4IwSAQQQQAABBBBAAAEEEEAAAQQQQAABHwoQjvsQk6YQQAABBBBAILbAj4fWSfcf3jJfaDiuIXmwlJiYGNmz8S/5+7c9cu7YGYnImF506/MS95aSyFIF7VulB8t46GfwCjieNz6j0Vipkq9i8A6GniOAAAIIIIAAAggggAACCCCAAAIIIJBCAoTjKQTPbRFAAAEEEAgVgUs3LssDc5qa4TaqWE9qlqoSKkNnnAj4TGDm6k/lwOnDpr01rb+UzGkz+axtGkIAAQQQQAABBBBAAAEEEEAAAQQQQCBUBAjHQ2WmGScCCCCAAAIpKGA7d7xsZClpVbNZCvaEWyMQnAIDF7xtOl4ie1H54skPgnMQ9BoBBBBAAAEEEEAAAQQQQAABBBBAAIEUFiAcT+EJ4PYIIIAAAgiEgsDANWNk6d8rJCJNOunf5LVQGDJjRMBnAlsObJeFm5aZ9h4v2UCGPtDbZ23TEAIIIIAAAggggAACCCCAAAIIIIAAAqEkQDgeSrPNWBFAAAEEEEghgSV7Vsiba8eYuzer0lgqFb07hXrCbREIPoEPV38m+08fMh0fUqu3PFGqQfANgh4jgAACCCCAAAIIIIAAAggggAACCCAQAAKE4wEwCXQBAQQQQACBUBBoNL+NHL98UorlLiwvPNQyFIbMGBFIsoCG4hqOa8mUNqMsb/4J540nWZUGEEAAAQQQQAABBBBAAAEEEEAAAQRCVYBwPFRnnnEjgAACCCDgZ4E5fy6UMRunmrtqOK4hOQUBBOIXcFw13rpcU+ld/SXIEEAAAQQQQAABBBBAAAEEEEAAAQQQQCCRAoTjiYTjMgQQQAABBBDwTuDSjcuiq8cv37jC6nHv6KgdogKOq8aVYFnzTyQyU94Q1WDYCCCAAAIIIIAAAggggAACCCCAAAIIJF2AcDzphrSAAAIIIIAAAh4KTNsyW6Zt/djUZvW4h2hUC1kBx1XjtQvXlAn1BoesBQNHAAEEEEAAAQQQQAABBBBAAAEEEEDAFwKE475QpA0EEEAAAQQQ8EhAV48/MKepqcvZ4x6RUSlEBdbv2STLt/1gH/2MRmOlSr6KIarBsBFAAAEEEEAAAQQQQAABBBBAAAEEEPCNAOG4bxxpBQEEEEAAAQQ8FHBcPV6n3P1St1wtD6+kGgKhIeC6nXrlfBVkZqNxoXYvwJAAACAASURBVDF4RokAAggggAACCCCAAAIIIIAAAggggEAyChCOJyMuTSOAAAIIIICAe4H2y3vKbyd+N1+2qtlMykaWggoBBETk2s3rMm7ZVPNPLZnSZpTlzT+RzGkz4YMAAggggAACCCCAAAIIIIAAAggggAACSRQgHE8iIJcjgAACCCCAgPcCur36M4s7y/HLJyUiTTp54aFWkj9bHu8b4goELCYw5ftZcjzqlH1Uc5tMkzI5SlhslAwHAQQQQAABBBBAAAEEEEAAAQQQQACBlBEgHE8Zd+6KAAIIIIBAyAvsOrdXWizubByyZcwqLz/8vAnKKQiEooCuFP9w9WdyPOqkffi9q3WR1v9pFoocjBkBBBBAAAEEEEAAAQQQQAABBBBAAIFkESAcTxZWGkUAAQQQQAABTwSW7Fkhb64dY6pqQN6qRjNWkHsCRx1LCehK8VmrP5N/bl6zj6t24Zoyod5gS42TwSCAAAIIIIAAAggggAACCCCAAAIIIJDSAoTjKT0D3B8BBBBAAIEQF/jx0DoZuGaMXL5xxUg0rlhPapSqEuIqDD9UBH4/uEPm/7rUabityzWV3tVfChUCxokAAggggAACCCCAAAIIIIAAAggggIDfBAjH/UbNjRBAAAEEEEAgLoFjl0/Kaz+8KbvP7TNVykaWkmZVH2WbdR4ZywqcunBGNuzcJJuObLOPMVPajDL0gd5Sp/D9lh03A0MAAQQQQAABBBBAAAEEEEAAAQQQQCAlBQjHU1KfeyOAAAIIIICAk4CuIF/69wrzWfo0EVKpaHmpUbKK2XKdgoAVBA6cPizrd/4qO0/tcRpO6RzFZUK9IRKZKa8VhskYEEAAAQQQQAABBBBAAAEEEEAAAQQQCEgBwvGAnBY6hQACCCCAQOgKbDqxTaZumS2/nfjdjqAryXWr9WK5C4cuDCMPWoFrN6/LmbNnZe2ejfLnyV1O48ifKa80KdlAOldqG7Tjo+MIIIAAAggggAACCCCAAAIIIIAAAggEiwDheLDMFP1EAAEEEEAgxAQ0JF+8Z4V9JbkOPyJNOhOQ6//yZ8srRXMXCjEVhhssArpC/NjZE7Lz6B45cP5wrG5XzldBmpRsKE+UahAsQ6KfCCCAAAIIIIAAAggggAACCCCAAAIIBL0A4XjQTyEDQAABBBBAwNoCeh75nD+/kMV/fyuXb1yNNdg7QXkeiUgTYb7Lly2P2ZJdS7YMWWJtyR515YJEXb2YaLTjUSdFVwIntly7eU2OR51K7OUJXrf/9KEE6wRLBV/sFOD4bCQ07oTup8+WvqChRcNvLf/cvCYn/p1PPUf85s2bsuvUXre30jPF9TzxJqUaSJV8FRPqDt8jgAACCCCAAAIIIIAAAggggAACCCCAgI8FCMd9DEpzCCCAAAIIIJB8ArvO7ZVNx7fJX/rPE1vl+OXkC5mTbxS0HCoCumW6huBV81WUMjlLSJkcJUJl6IwTAQQQQAABBBBAAAEEEEAAAQQQQACBgBQgHA/IaaFTCCCAAAIIIOCJwKUbl0W3X9919s5KXf1bg3Nb0VXnxy+f9KQp6iDglUDpHMUlc9pM5prITPmkQKa89uur5K9ognDb9141TGUEEEAAAQQQQAABBBBAAAEEEEAAAQQQSDYBwvFko6VhBBBAAAEEELCSgK5a1/A9OYuG/Ml9D1/0/9cT23zRjNs27vJTqKwBtieFkNsTJeoggAACCCCAAAIIIIAAAggggAACCCAQHAKE48ExT/QSAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQCAJAoTjScDjUgQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQACB4BAgHA+OeaKXCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAJJECAcTwIelyKAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIBIcA4XhwzBO9RAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBIggDheBLwuBQBBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAIDgECMeDY57oJQIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIBAEgQIx5OAx6UIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAsEhQDgeHPNELxFAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEkiBAOJ4EPC5FAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEAgOAcLx4JgneokAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgggkAQBwvEk4HEpAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggEBwCBCOB8c80UsEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAgSQIEI4nAY9LEUAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQSCQ4BwPDjmiV4igAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCRBgHA8CXhcigACCCCAAAKJF7h48aJcuXLF3kD27NklIiIi8Q2m0JXR0dFy+vRp+93TpUsnOXLkSKHeJO62t27dklOnTtkvzpIli2TMmDFxjQX4VdevX5dz587Ze6nj1PGGYjl48KB89913UrVqValYsWIoEjBmBBBAAAEEEEAAAQQQQAABBBBAAIEQEyAcD7EJZ7gIIIAAAggEisCYMWNk8uTJ9u58+OGHUq9evUDpnsf92Ldvn9SpU8dev2HDhjJ9+nSPr0+uijdu3JDz589L7ty5JTw8PN7bfPnll/Laa6/Z6wwZMkTatWuXXF1L0XZ/+uknefbZZ+19ePHFF6Vfv34p2qeUuPm8efOkd+/e9lu3bdtWhg4dmhJd4Z4IIIAAAggggAACCCCAAAIIIIAAAgj4TYBw3G/U3AgBBBBAAIGEBTSs2rVrV8IV3dTQ1a8zZ84UXbkcDIVw3Lez9Ndff4kGvzt37pTt27fLnj177DeoVq2a3H333VK2bFl57LHHJH369E43//zzz+WNN96wf0Y47tu5CbTWYmJipG7duqIvdjiWrVu3iu7gkBIlKipKLl26ZG4dFhYmBQsWTIlucE8EEEAAAQQQQAABBBBAAAEEEEAAAYsLEI5bfIIZHgIIIIBAcAk88cQTsm3btkR3Wq/Nli1boq/354WE477R1i3RZ8yYISNGjPCowfz588t7770nlStXttcnHA+tleP6zOjLEo7HGujDsG7duhQLpUeNGiVTp061P5OfffaZ1KxZ06NnmkoIIIAAAggggAACCCCAAAIIIIAAAgh4KkA47qkU9RBAAAEEEPCDAOE426p785gdO3ZMevbsKevXr/fmMnOe+LJly6Ro0aLmOsLx0ArHdc7Hjx8vEyZMsD83Dz30kMyePdur58iXlV3D8Y8++khq167ty1vQFgIIIIAAAggggAACCCCAAAIIIIAAAkI4zkOAAAIIIIBAAAm4huMNGjTwqncadmnwGQyFleNJm6Xo6GipX79+rK2xdf4ffPBBqVChguTNm9fsRPDjjz/KoUOH7DfMmTOnLFy4kHBcREL1zHE9k/6bb74xz0alSpWkSZMmkjVr1qQ9lEm4mnA8CXhcigACCCCAAAIIIIAAAggggAACCCDgsQDhuMdUVEQAAQQQQCD5BRzD8cKFC8uaNWuS/6YpdAfC8aTBz507V15//XWnRu677z559913JU+ePE6fa5Det29fmTdvnmgwvmDBAilevLi9DivHQ2/leNKePt9fTTjue1NaRAABBBBAAAEEEEAAAQQQQAABBBCILUA4zlOBAAIIIIBAAAn4Kxy/ePGiXL161ZxPHhER4VMBPc/4xIkTcvPmTXN+cerUqd22769wXIPhI0eOSLp06SRfvnwSFhaW6PHquNSuQIEC9hX6+/btkzp16tjbbNiwoUyfPj3R9/DkQp27WrVqydmzZ+3V27RpI4MHD47T+/bt2zJz5kypV6+eUzCuDcQXjus8njx5UnSlcaFChSRNmjSedNFtHV/Ohe0Gem62bi+vK+Zz5coladOmjbd/P/30kzz77LP2Osm5clztTp06ZfqUI0cOSZUqVaLt9Hd1/vx50X/qjgCBWKKiouT06dNmrPoShjeFcNwbLeoigAACCCCAAAIIIIAAAggggAACCCRWgHA8sXJchwACCCCAQDIIJGc4vnHjRvnwww9l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AQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQsL0A4bvkpZoAIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAoTjPAMIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAApYXIBy3/BQzQAQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABwnGeAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABywsQjlt+ihkgAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggADhOM8AAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggIDlBQjHLT/FDBABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAgHCcZwABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAwPIChOOWn2IGiAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCBAOM4zgAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCBgeQHCcctPMQNEAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEECAc5xlAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEELC8AOG45aeYASKAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIEI7zDCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIWF6AcNzyU8wAEUAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQIx3kGEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQsL0A4bvkpZoAIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAoTjPAMIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAApYXIBy3/BQzQAQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABwnGeAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABywsQjlt+ihkgAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggADhOM8AAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggIDlBQjHLT/FDBABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAgHCcZwABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAwPIChOOWn2IGiAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCBAOM4zgAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCBgeQHCcctPMQNEAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEECAc5xlAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEELC8AOG45aeYASKAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIEI7zDCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIWF6AcNzyU8wAEUAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQIx3kGEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQsL0A4bvkpZoAIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAoTjPAMIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAApYXIBy3/BQzQAQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABwnGeAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABywsQjlt+ihkgAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggADhOM8AAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggIDlBQjHLT/FDBABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAgHCcZwABBBBAAAEEEEAAgQAQOH36tERHR5ueRERESPbs2QOgV9bqgvqqs62kS5dOcuTIYa1BMhoEEEAAAQQQQAABBBBAAAEEEEAAgTgFCMd5OBBAAAEEEEAAAQQQSGGBw4cPS61atey9aNiwoUyfPj2Fe2W92+/bt0/q1KmDs/WmlhEhgAACCCCAAAIIIIAAAggggAACHgkQjnvERCUEEEAAAQQQQAABBO4I/PTTTzJ27Ngkc0ybNk0iIyNNO3v37pW6deva2yQcTzKv2wYIx5PHlVYRQAABBBBAAAEEEEAAAQQQQACBYBEgHA+WmaKfCCCAAAIIIIAAAgEhsGTJEnnllVeS3JfVq1dL0aJFTTuE40nm9KgBwnGPmKiEAAIIIIAAAggggAACCCCAAAIIWFaAcNyyU8vAEEAAAQQQQAABBJJDgHA8OVT90ybhuH+cuQsCCCCAAAIIIIAAAggggAACCCAQqAKE44E6M/QLAQQQQAABBBBAICAFfvnlF5kxY4bbvu3fv1/27Nlj/65KlSqSI0eOWHXTpk0ro0aNksyZM5vvWDnun6kmHPePM3dBAAEEEEAAAQQQQAABBBBAAAEEAlWAcDxQZ4Z+IYAAAggggAACCASdwOzZs2XgwIH2fi9atEgqVaqU4DgIxxMk8kkFwnGfMNIIAggggAACCCCAAAIIIIAAAgggELQChONBO3V0HAEEEEAAAQQQQCDQBJIjHL9165acPXtWLly4IJGRkZIxY0afDfvGjRty9OhRiYiIkHz58klYWJhXbUdHR8uRI0ckXbp0Xl+v47p9+7aEh4dLqlSpvLqvJ5VPnDghFy9elAIFCtjNCMc9kaMOAggggAACCCCAAAIIIIAAAgggYF0BwnHrzi0jQwABBBBAAAEEEPCzgC/D8fHjx8vEiRPl/fffdxpF/vz5pU2bNtK5c2dJnTp1rBHu3r1b2rdv73bk2qZu9f7XX3/JoEGD5Oeff3aq98QTT8iQIUMke/bsccqdO3dOJk2aJJs3b5Zt27bZ62loX7ZsWWnSpInpn4be8ZWPP/5YBgwY4FRF2yhZsqRUrVpVKlasKPXr15f06dN7PIu//vqrfPDBB7Jp0ybzQoGtaFv9+vWTPHnySJ06deyfN2zYUKZPn+5x+1REAAEEEEAAAQQQQAABBBBAAAEEEAhuAcLx4J4/eo8AAggggAACCCAQQAK+DMd1WN9++22co9Pt2j/77LNY4fGff/4pjRs3dnvd6NGjpWbNmlKrVq04282ZM6f8+OOPkjVr1lh11q1bJ6+88opT8OyuIb3H2LFjzartuIp+/+6778Y7e9qXt956SzS0T6h8/vnn8sYbb8RbbcKECfLaa6/Z6xCOJ6TK9wgggAACCCCAAAIIIIAAAggggIC1BAjHrTWfjAYBBBBAAAEEEEAgBQV8FY4XL15cdAvwhEqvXr1MWO1Y4gvHu3btKgcOHJCvvvoq3qb79+8vnTp1cqqzatUqadeuXUJdsn9fqlQp+eabb9yubtdK2vf58+d71J4G6c2bN4+z7sKFC6V79+4JtqUr23fu3GmvRzieIBkVEEAAAQQQQAABBBBAAAEEEEAAAUsJEI5bajoZDAIIIIAAAggggEBKCvgqHLeNoXz58tKhQwcpWrSonDx50qzG3rNnj9MQNQzPlCmT/bOoqCjRINtWunXrZv/3xx57zKwKv3Llijz99NNSr149s4X61KlTZfXq1fZ6hQsXljVr1tj/1rPFH3nkkVj31rBdg3wtukX7vHnznPoWX6j9/fffmxcArl+/Ljdv3pSrV6/K8ePHZe/evU4Btq1B7Z86uBbtm26VfujQIftXuj27riL/z3/+I7oNvI5F58a1EI6n5K+FeyOAAAIIIIAAAggggAACCCCAAAL+FyAc9785d0QAAQQQQAABBBCwqIAvw/HatWub87PTpk1r17p48aLcd999Jty2la+//lo0RI+rFClSxP6VhsZ6rW4t7rjS+tKlS7Ha0OA6VapU5tovvvhCevToYW9HA3E9M7xgwYJOt125cqU8//zz9s90W3Q9B9zWjqfTrmei9+nTR7Zs2WK/RFet63normXZsmXSpUsXpzEuXbpUSpQoEW/f9EvCcU9nhHoIIIAAAggggAACCCCAAAIIIICANQQIx60xj4wCAQQQQAABBBBAIAAEfBmO65bkug24axk2bJgJzW1FV33Hdca41nEMx/Vv3e5cV227lhYtWpjV37by22+/Sa5cucyfbdu2dVpZrtuhV6tWza147969nVaQb9iwQSIjI72eHV3xrWej214EqFKlignpXctLL70k+oKAreiKcf3MXdGt4h3PcScc93pauAABBBBAAAEEEEAAAQQQQAABBBAIagHC8aCePjqPAAIIIIAAAgggEEgCvgrHdcX15s2b3Q7N9R5Dhw414XVcxTUcHzBggHTs2DFW9UmTJsnGjRvN52nSpJEJEyZI1qxZzd+6Wl23PNeiq9Qdw2jXhtavXy8tW7a0f7xgwQKpWrVqoqbp/9m7Fzirynp//I+VSqKo5V0USs2E0PIWgqamgWhHS7mczC6CeiyrA4Gezr+TKJ3TqYQD3cxA6aYVwk+zTAQz7YJSaV4ZUvOCQeJdwFtm9n99l2fP2bOZmb1nZu89a/Z+P68XL5RZ61nP837W7Mv6rOdZp5xySpvl3eN56Ztsskmbuo4//vh0xx13tP5b9GHHHXds93g//vGPU/Ey88Lxbg2LnQgQIECAAAECBAgQIECAAAECfVZAON5nh07DCRAgQIAAAQIE8iZQrXC8o1nS0d8FCxakc845p7XrsdR4LDneUSkNx6+//vq05557VkwXzwMv3v4d73hH+tznPtfh/n/+85/bBNCzZ89OJ554Yrvbv/DCC2nx4sXpnnvuSatXr05r1qxJzz77bDbTPJ4vfvXVV6cnn3yydd+77rorDRgwoE1dQ4YMaZ1dHsvGt7S0dNi2W265JZ100kmtPxeOV3wa2JAAAQIECBAgQIAAAQIECBAg0BACwvGGGEadIECAAAECBAgQyINAtcLxzkLbnobjd955Z+uM8ErMYrb24YcfXsmm7W7T3kz1l19+OX3rW99K3/jGN9o8P73cQUrD8eeff77N0vOxDH0sR99Ruf/++9O73/3u1h8Lx8uJ+zkBAgQIECBAgAABAgQIECBAoLEEhOONNZ56Q4AAAQIECBAg0IsCfSEcb29p8s7IehqOxzPSP/ShD7Ue4pVXXslmvsdzy7taSsPxeC55zGQvlHLh+AMPPJCOPPLI1u2F410dAdsTIECAAAECBAgQIECAAAECBPq2gHC8b4+f1hMgQIAAAQIECORIIO/heGfPMu+IMWZ577HHHm1+vN9++1Ws/qlPfSodffTRrdv/6le/ahOWxw/imeZHHXVU2m677dLmm2+eYkZ4LM9+5ZVXpocffrh139JwPIL2N73pTa0/33nnndPy5cs7bJtwvOJhsyEBAgQIECBAgAABAgQIECBAoCEFhOMNOaw6RYAAAQIECBAg0BsCjRiOh2OE2/fdd18r6cqVK9MWW2zRLeIIy6+66qrWfWfOnJnGjRvXbl1nnHFGWrJkSevP2nvmeMwEj9C7UGLp9Ne97nXt1icc79aQ2YkAAQIECBAgQIAAAQIECBAg0DACwvGGGUodIUCAAAECBAgQ6G2BRg3HzzrrrHT11Ve38k6bNi198pOf7Bb3cccdl+6+++5s3/79+6cVK1akTTbZZKO62pux3l44/pGPfCTdeOONrfvPnTs3xXLp7ZWYVT5hwoTWH1lWvVtDaCcCBAgQIECAAAECBAgQIECAQJ8VEI732aHTcAIECBAgQIAAgbwJNGo4HrO3YxZ3cZkxY0Y65ZRT0mtf+9ouDcPxxx+f7rjjjtZ9OpqFPmvWrPTVr361Td3theNf+9rXUsw+L5RY8v1HP/pRuzPbI9Qvfta5cLxLQ2djAgQIECBAgAABAgQIECBAgECfFxCO9/kh1AECBAgQIECAAIG8COQhHL/zzjvTSy+91Epy0kkntf53zNSONhaXoUOHpte//vVlCUuXOI8ddt9993TaaadlzyQfMGBAVs+zzz6bPSf8wQcfTHHs3XbbrU3dn/nMZ9IPf/jD1n+LgPq8885Lu+yyS3rxxRdThOWXX355+sEPfrBRm6ZMmZI9Yzy2PeCAA9JrXvOatG7durTvvvu22TYC8gjC99577/T3v/89W3Y9+l28RHvsIBwvO+w2IECAAAECBAgQIECAAAECBAg0lIBwvKGGU2cIECBAgAABAgR6UyAP4fhhhx2WhdOVluuuuy695S1vKbv52rVr0zvf+c6y2xVvcNFFF6UxY8a02eeaa65JH/vYxzaqJ4L75557rs2/v/e9722znHvxD++5557Ur1+/7J/am2XeXkPf+MY3pieffLL1R8LxLg2njQkQIECAAAECBAgQIECAAAECfV5AON7nh1AHCBAgQIAAAQIE8iLQyOF4GD/00ENp+vTpbZ7x3Zn9v//7v6czzzxzo02mTp2aFi1a1OmwRVh+1VVXpaOPPrrd7YrD8Zhx/rnPfS6bcd5Z+frXv54+8YlPtG4iHM/Lb452ECBAgAABAgQIECBAgAABAgTqIyAcr4+zoxAgQIAAAQIECDSBQLXC8fe///1pzpw57YpFYPypT32q9Wdf/vKX04QJE1r//5hjjsmWJq+0VDpzvLi+pUuXpm9961vZcUpnexdvd9ZZZ6Vzzjlno6a8/PLL6Yorrkj/8z//kx555JGNfn7cccelT3/602nPPfdMgwYNarcrxeF4YYNYiv2b3/zmRjPnDzzwwDR+/PjMqXhmvXC80rPEdgQIECBAgAABAgQIECBAgACBxhAQjjfGOOoFAQIECBAgQIAAgV4RePrpp9OqVavS888/n1555ZXsuePbbbdd9lzwTTfdtNM2xfZPPPFEWrNmTfrrX/+attxyy7TrrrumbbfdtnW/qDvq2Wyzzdr8/brXva7Dujds2JD+9Kc/pU022SR77njxM9X/8pe/pNe+9rUpZqbHv8d/KwQIECBAgAABAgQIECBAgAABAs0hIBxvjnHWSwIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECDS1gHC8qYdf5wkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQINAcAsLx5hhnvSRAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEBTCwjHm3r4dZ4AAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQLNISAcb45x1ksCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAg0tYBwvKmHX+cJECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECDQHALC8eYYZ70kQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAUwsIx5t6+HWeAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECzSEgHG+OcdZLAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQINLWAcLyph1/nCRAgQIAAAQLlBVavXp3iT0dlwIABaciQIWUrWr58edlthg8f3uk20Y6lS5em9evXd7jdwIED06hRo1K0q6PS0tKS1dNZif3Hjh3brXpuvvnm1qp32223NHHixE6NlixZkubPn99pe7beeut07rnnpuhfR6WSemLfKVOmpM6sFy5cmBYtWpSNe0djH+2I9owePbrD9syePTvrV7nxKlfPJZdckubMmdNpPTFeUc+4ceM6bE/UM2PGjLLjPnPmzLL9ivaUO3/KtSecoz2d+VTSr1Ln+H1s7/yfPn16p+dh/I5GXZ2VOA/jfO7s/Infrxj3zs7VOEb8fnW2Tenve0evNeVeN+JYhXO5I5uyL042IECAAAECBAgQIECAAAECBBpCQDjeEMOoEwQIECBAgEC9BAoBSyHojf//85//XPHhy4VTlYSJERBVI7yLRkc9nYWJ559/ftnQNuqZPHlyFrh2VKZOnZqFreVKhG5h1FEZM2ZMiuCtXIlQctKkSR1uNnLkyE4D/8KO5fo1YcKEVEnoX66eY445Jq1cubJct8o6V9qecs7VqmfEiBFpzZo1Pe7X6aefXvZmhjhIhK2zZs3q8HiV1lNuvCr1qVZ74maPefPmddivSttTrl+V+kQYvWDBgpo7V9qecs6V3BQRnSn3uhH1dHZTTdwIE2F//Ik2KQQIECBAgAABAgQIECBAgED+BITj+RsTLSJAgAABAgRyKDBt2rQUszx7WsqFU3kLSSsNp8qFrZWG4+XCqUrbE8FdZ7NJKwn9t9pqqyxo7WxmdIRlcUPDhg0b2pwapccud1NEudAtKo+bIqKecjPH4yaEcjO148aBzmb7xw0I0aYonR0vbqzo7Odx40DxLPr2fn+iX1FPZzP94yaUSn7/yrWnknry1p4wK9evGK9YNaBQ4v9Lz4EYp7iBpdx4xbh3dv7EMcqtPBBtid+Lzm74qOT3q5Lf02hPuXC80nrK3YRQ6c0e0aZyNx719L3E/gQIECBAgAABAgQIECBAgED3BITj3XOzFwECBAgQINBEAhE0xYzl9squu+6aYrZgJSVCqQg3OwsB6xkmRnsi+O2sPRGSVTJTu5JljcvNsC7MuKzE0jYECDSfQHuvR119rMOKFSvaDf+jnng97MnNJ1F34UaZcjfoNN/o6TEBAgQIECBAgAABAgQIEMiHgHA8H+OgFQQIECBAgEDOBWIWZAQzEZwMHTo0m3XbWaic8+5oHgECBAgQIECAAAECBAgQIECAAAECBJpOQDjedEOuwwQIECBAgECpQCy1HEG3sNu5QYAAAQK1FohHBMTjD8o9bqHW7VA/AQIECBAgQIAAAQIECBBoRgHheDOOuj4TIECAAAECrQIRUsTzxGMm+OLFi8kQIECAAIGaCkyYMCG6wcaSAAAgAElEQVQVHjPh2eQ1pVY5AQIECBAgQIAAAQIECBDYSEA47qQgQIAAAQIEmlYgQvEIx6NstdVW6e67725aCx0nQIAAgfoILFmyJJ1xxhmtBxOQ18fdUQgQIECAAAECBAgQIECAQAgIx50HBAgQIECAQNMJxLPDY+ZeS0tL1vddd901XXzxxdnscYUAAQIECNRaIN5/xo8fnzZs2JAd6txzz02TJk2q9WHVT4AAAQIECBAgQIAAAQIEml5AON70pwAAAgQIECDQXAKlwfjw4cPTvHnzPG+8uU4DvSVAgECvC5QG5PFoDzdp9fqwaAABAgQIECBAgAABAgQINLiAcLzBB1j3CBAgQIAAgbYCxUupjx07Ns2aNQsRAQIECBDoFYEIyMeMGZMde+DAgSkC8gEDBvRKWxyUAAECBAgQIECAAAECBAg0g4BwvBlGWR8JECBAgACBTOD8889P8+fPz/571KhR2YxxhQABAgQI9KbAJZdckmbMmJE1wU1bvTkSjk2AAAECBAgQIECAAAECzSAgHG+GUdZHAgQIECBAIMVy6sOGDcsk9tlnn3T55Zebnee8IECAAIFcCJx++ulp6dKlWVtWrVqVizZpBAECBAgQIECAAAECBAgQaEQB4Xgjjqo+ESBAgAABAu0KRPiwYsWKLBiP5WsVAgQIECCQB4G4gStWN4lVTUaPHp2HJmkDAQIECBAgQIAAAQIECBBoSAHheEMOq04RIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQLGAcNz5QIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQINLyAcb/gh1kECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQEI47BwgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECg4QWE4w0/xDpIgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAsJx5wABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQINLyAcLzhh1gHCRAgQIBA8wqsXr06LV++PI0aNSoNGDCgeSH0nAABAgT6lEC8dy1dujRNnDgxDRw4sE+1XWMJECBAgAABAgQIECBAgECeBYTjeR4dbSNAgAABAgR6JHD66ae3hgvTp0/vUV12JkCAAAEC9RIYM2ZMamlpycJx71/1UnccAgQIECBAgAABAgQIEGgGAeF4M4yyPhIgQIAAgSYVGDZsWFq/fn0aO3ZsmjVrVpMq6DYBAgQI9DWBCRMmZCufDB8+PC1YsKCvNV97CRAgQIAAAQIECBAgQIBAbgWE47kdGg0jQIAAAQIEeiowaNCgrIrJkyenKVOm9LQ6+xMgQIAAgboInH/++Wn+/PnZsVatWlWXYzoIAQIECBAgQIAAAQIECBBoBgHheDOMsj4SIECAAIEmFIjlaGNZ2ihz585No0ePbkIFXSZAgACBviiwcOHCNG3atKzpixcvTkOGDOmL3dBmAgQIECBAgAABAgQIECCQOwHheO6GRIMIECBAgACBagjEcrSxLG2UWJI2lqZVCBAgQIBAXxAofg9zg1dfGDFtJECAAAECBAgQIECAAIG+IiAc7ysjpZ0ECBAgQIBAlwSE413i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KvCyCQECBAgQIECAAAECBAgQqERAOF6Jkm0IECBAgACBPifQzOF4DNbq1avTMccckzZs2NA6dqMPPjhNPPZYIXmVz+aWhx5KU7/xjRR/R4lgfNSECdmz3yPcmjhxYpo+fXqVj6q6DS89m25Ze0cWlP/l2bUZyK1r7wTTRYEIwQuzwnfZcqd00E77pQN33s9M8S461mLz888/P82fPz8NHz48LViwoBaHUCcBAgQIECBAgAABAgQIEGg6AeF40w25DhMgQIAAgeYQKF5a/K677koDBgxojo4X9TKC2alTp6alS9vOsI2l1g8ZOjSNOvjgNHzIkKZzqUaHVz/+eFq+YkVa+vvfp5tXrEjrn3t1qe+J48enlocfzmZ7RolQa968eU15/lXDudZ1RLje18veb9gjbbXZln29G9rfjsCECROy1xLhuNODAAECBAgQIECAAAECBAhUT0A4Xj1LNREgQIAAAQI5EliyZEk644wzshYtW7asqZekDYuYfVgIbEuHaeD226eBO3T9+cpb9++fPdO8miXqq9bz0WMmdyG07m4bY/8V/zsjvFDH6sceSxGOlytmjJcT8nMCBDoTKNzkNXDgwOx9TCFAgAABAgQIECBAgAABAgR6LiAc77mhGggQIECAAIEcCjT7surtDUkstR5BeUtLS7r55pvTmjVrcjhyfb9JY8eOTVOmTGnqGzL6/ijqAYHeFyheAWXVqlW93yAtIECAAAECBAgQIECAAAECDSAgHG+AQdQFAgQIECBAYGMB4XhlZ0UE5vGnUNatW5eF55WWjmajV7p/HraLJYsrKUOGDElbb711dmNBe+WQQw7Jlj9WCBAgUA0B4Xg1FNVBgAABAgQIECBAgAABAgTaCgjHnREECBAgQIBAQxmUaLoAACAASURBVAoIxxtyWHWKAAECTSMgHG+aodZRAgQIECBAgAABAgQIEKijgHC8jtgORYAAAQIECNRPIGY/jxkzJjvg3Llz0+jRo+t3cEciQIAAAQI9FJg6dWpatGhR2nXXXdNNN93Uw9rsToAAAQIECBAgQIAAAQIECISAcNx5QIAAAQIECDSswKBBg7K+TZ48OXsGtEKAAAECBPqKwIQJE1KsghKPa1iwYEFfabZ2EiBAgAABAgQIECBAgACBXAsIx3M9PBpHgAABAgQI9ERgxIgRac2aNWns2LFp1qxZPanK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r3pi3CMIj1LpkvjN+h6p3wQIECBAgAABAgQIECBAIG8CwvG8jYj2ECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEDVBYTjVSdVIQECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAjkTUA4nrcR0R4CBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQqLqAcLzqpCokQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgbwJCMfzNiLaQ4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQJVFxCOV51UhQQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECCQNwHheN5GRHsIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoOoCwvGqk6qQAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBPImIBzP24hoDwECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAhUXUA4XnVSFRIgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBA3gSE43kbEe0hQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgaoLCMerTqpCAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEMibgHA8byOiPQQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBQdQHheNVJVUiAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECeRMQjudtRLSHAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBKouIByvOqkKCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQCBvAsLxvI2I9hAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBA1QWE41UnVSEBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQI5E1AOJ63EdEeAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEKi6gHC86qQqJECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIG8CQjH8zYi2kOAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECVRcQjledVIUECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgkDcB4XjeRkR7CBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKDqAsLxqpOqkAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgTyJiAcz9uIaA8BAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIVF1AOF51UhUSIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQN4EhON5GxHtIUCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIGqCwjHq06qQgIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBDIm4BwPG8joj0ECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgUHUB4XjVSVVIgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAnkTEI7nbUS0hwABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgSqLiAcrzqpCgkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEAgbwLC8byNiPYQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQNUFhONVJ1UhAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECORNQDietxHRHgIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBCouoBwvOqkKiRAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBvAkIx/M2ItpDgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAlUXEI5XnVSFBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIJA3AeF43kZEewgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECg6gLC8aqTqpAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE8iYgHM/biGgPAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECFRdQDhedVIVEiBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEDeBITjeRsR7SFAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBqgsIx6tOqkICBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQyJuAcDxvI6I9BAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIFB1AeF41UlVSIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQJ5ExCO521EtIcAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEqi4gHK86qQoJECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAIG8CwvG8jYj2ECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEDVBYTjVSdVIQECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAjkTUA4nrcR0R4CBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQqLqAcLzqpCokQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgbwJCMfzNiLaQ4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQJVFxCOV51UhQQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECCQNwHheN5GRHsIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoOoCwvGqk6qQAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBPImIBzP24hoDwECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAhUXUA4XnVSFRIgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBA3gSE43kbEe0hQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgaoLCMerTqpCAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEMibgHA8byOiPQQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBQdQHheNVJVUiAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECeRMQjudtRLSHAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBKouIByvOqkKCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQCBvAsLxvI2I9hAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBA1QWE41UnVSEBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQI5E1AOJ63EdEeAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEKi6gHC86qQqJECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIG8CQjH8zYi2kOAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECVRcQjledVIUECBAgQIBAswjc89T96Za1d6YNLz27UZfvefL+dv+9Epu/PLs2/eXZRyvZtCrbbLXZlmnvN+xRlbo6qmTvN+6R4jiFkvVxw6Np3Usb0n1PPZD9c7Qhtjlw5/3SkbuPqHmbatphlRMgQIAAAQIECBAgQIAAAQIECBAgkDsB4XjuhkSDCBAgQIAAgTwL3LL2jnTpiitS/P3sS8/lual9vm0H7rRfOvudHxOS9/mR1AECBAgQIECAAAECBAgQIECAAAEC+RAQjudjHLSCAAECBAgQyLlAzBL/4m+/nm5be3drS7fZYkDaeZsd007b7JDz1ue3eWufeSy98LcXU/z94t/+2m5DZxx6djp+r1H57YSWESBAgAABAgQIECBAgAABAgQIECDQJwSE431imDSSAAECBAgQ6E2BCMYnLv50eu6l51O/TTdPh+x1YNp/0LC0Tf+te7NZDXfsR555LN226q70xzX3paefX9fav1hq/eIxM80gb7gR1yECBAgQIECAAAECBAgQIECAAAEC9RUQjtfX29EIECBAgACBPiYQy6eftnha1uqdtt4hTTri5CwgV2or8MeH70tX3b6kden6eB75ghMuqu1B1U6AAAECBAgQIECAAAECBAgQIECAQEMLCMcbenh1jgABAgQIEOiJwIaXnk0Trjoz/eXZR9M7Br0tnXjQcT2pzr5dFNju5W3T7F/NTfc+9UC2Z8wej+eQKwQINL7A448/nn7729+m3/3ud9mflStXZp0+4YQT0v7775/e+ta3puHDhzc+hB4SIECAAAECBAgQIECAAAECVRUQjleVU2UECBAgQIBAIwlc8NsL02UtV6Z4tvhZ75loxnidB/f1r+mX9nvdkPThn3wqPfLso+mf9hyVPn/Y2XVuhcMRIFAPgWeeeSb95je/Sbfeemu65ZZb0p133ln2sLvuums66aST0lFHHZXe/va3l93eBgQIECBAgAABAgQIECBAgAAB4bhzgAABAgQIECDQjkDMGj/ssvdnPzl5xIlpn1324tQLAntuNjg99/RzrUvb//qDV6Z4BrlCgEDfF4hA/MYbb0w33HBD9nf8f3ul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Q8sXJ7v84Ni5brfh44vsrm1FQAQqQmDevHlJDfKXX3456dHEKR90Ez/4ETdu74Pq7uGaP/7WLVv4H0kKdS+KEy1+/vnnu2nTptXdrnYUAREQAcTWn4MAAAYVSURBVBEQAREQAREQAREQAREQARHoTgISx7vzvGpUIiACIiACIiACDRCYu+RaN/ex65IWBvTbyl04/RPJ37LWE1j/2kvum3fMTQ48cdTe7l+O/lbrO6EjioAIlEZg2bJliUB+55139rT57qNPcvsddYobPWEv16//gJrHenHNCvfHxx92Sx/4D/fkL+7u2X7ChAnuhBNOcKeffnqS8lgmAiIgAiIgAiIgAiIgAiIgAiIgAiIgApaAxHHNCREQAREQAREQAREwBOYvv9N9+YFLe/7r/mP3didMmi5ObSBw44O3uN+uXp4c+eqj/5+bNEr1LttwGnRIESidgI0i5wADBw1yO07Yw+2wyzvd0FE7uUHbjHID3jYkiQh/6fm1bvXvl7pnfvdrt/65Z3r1Z++993annnqqO/HEE12/fv1K76saFAEREAEREAEREAEREAEREAEREAER6B4CEse751xqJCIgAiIgAiIgAiUReOVvr7pDbzi+V2sSyEuCW6CZJX/6tbtl8e3JHtPGH+6+cdgXC+ytTUVABKpOgCjy++67zy1atCj589prr+Xqcv/+/d3BBx/sdt99dzd16lQ3adKkXPtpIxEQAREQAREQAREQAREQAREQAREQARGQOK45IAIiIAIiIAIiIAIRAp9ecLG79+kH3cB+A92b7u/u9Tf+6saN2DGJIB/2tq3FrMkE7lm20N297IHkKGOG7eBu/MBlbkj/wU0+qpoXARFoJ4GHH37YPfTQQ0kXli9f7l544YWe7lBHnFTpEydOdJMnT1aEeDtPlI4tAiIgAiIgAiIgAiIgAiIgAiIgAh1MQOJ4B588dV0EREAEREAERKB5BIgeP/rf/8G9+rdNIxmJIn/fHodIJC8ZPw4IpFBHFKfWODZ62Ch3zdFz3MgBby/5aGpOBERABERABERABERABERABERABERABERABESgrxGQON7XzrjGKwIiIAIiIAIikJvAky/+wRFBvubVZ6P7bD9spNt/p73d2BE7Ov4tK07AC+JPrXvakUY9tIlj93GXHDrTjdpSbIuT1R4iIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAKWgMRxzQkREAEREAEREAERyCBABPkNv7nF3fr7O1NFcnYf0G+rJO369sO269XaqGEj3cB+A1rKGKE5zV5/43W3Zv1zdf9edCBwCZmQkn6bQVs7+kE/Y30ZO2KM+9A7j3LHjXm/G76FUtgXZa7tRUAEREAEREAEREAEREAEREAEREAEREAEREAE4gQkjmtmiIAIiIAIiIAIiEBOAkSS37NioXvixT84/p0WUZ6zOW0WEEBA33XEzu6wnd/tJo+c6EZv2dvJQLBEQAREQAREQAREQAREQAREQAREQAREQAREQAREoFECEscbJaj9RUAEREAEREAE+jSBxWsfT8a/+pVn3epX1/Zi8chbv+UFtPrVZ3sE912H7+yG9B+cd9eGtztw1L4Nt1G0gdGDR7nRQ7Zzuw0f39KxFu2nthcBERABERABERABERABERABERABERABERABEegOAhLHu+M8ahQiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIZBCSOa3qIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAh0PQGJ411/ijVAERABERABERABERABERABERABERABERABERABERABERABERABERABERABieOaAyIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAl1PQOJ4159iDVAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREDiuOaACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIhA1xOQON71p1gDFAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAERkDiuOSACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACIiACItD1BP4/OrOMWDz8TRsAAAAASUVORK5CYII=" - } - }, - "cell_type": "markdown", - "id": "51466c8d-8ce4-4b3d-be4e-18fdbeda5f53", - "metadata": {}, - "source": [ - "# How to edit graph state\n", - "\n", - "!!! tip \"Prerequisites\"\n", - "\n", - " * [Human-in-the-loop](../../../concepts/human_in_the_loop)\n", - " * [Breakpoints](../../../concepts/breakpoints)\n", - " * [LangGraph Glossary](../../../concepts/low_level)\n", - "\n", - "Human-in-the-loop (HIL) interactions are crucial for [agentic systems](https://langchain-ai.github.io/langgraph/concepts/agentic_concepts/#human-in-the-loop). Manually updating the graph state a common HIL interaction pattern, allowing the human to edit actions (e.g., what tool is being called or how it is being called).\n", - "\n", - "We can implement this in LangGraph using a [breakpoint](https://langchain-ai.github.io/langgraph/how-tos/human_in_the_loop/breakpoints/): breakpoints allow us to interrupt graph execution before a specific step. At this breakpoint, we can manually update the graph state and then resume from that spot to continue. \n", - "\n", - "![edit_graph_state.png](attachment:1a5388fe-fa93-4607-a009-d71fe2223f5a.png)" - ] - }, - { - "cell_type": "markdown", - "id": "7cbd446a-808f-4394-be92-d45ab818953c", - "metadata": {}, - "source": [ - "## Setup\n", - "\n", - "First we need to install the packages required" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "af4ce0ba-7596-4e5f-8bf8-0b0bd6e62833", - "metadata": {}, - "outputs": [], - "source": [ - "%%capture --no-stderr\n", - "%pip install --quiet -U langgraph langchain_anthropic" - ] - }, - { - "cell_type": "markdown", - "id": "0abe11f4-62ed-4dc4-8875-3db21e260d1d", - "metadata": {}, - "source": [ - "Next, we need to set API keys for Anthropic (the LLM we will use)" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "c903a1cf-2977-4e2d-ad7d-8b3946821d89", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "ANTHROPIC_API_KEY: ········\n" - ] - } - ], - "source": [ - "import getpass\n", - "import os\n", - "\n", - "\n", - "def _set_env(var: str):\n", - " if not os.environ.get(var):\n", - " os.environ[var] = getpass.getpass(f\"{var}: \")\n", - "\n", - "\n", - "_set_env(\"ANTHROPIC_API_KEY\")" - ] - }, - { - "cell_type": "markdown", - "id": "f0ed46a8-effe-4596-b0e1-a6a29ee16f5c", - "metadata": {}, - "source": [ - "
    \n", - "

    Set up LangSmith for LangGraph development

    \n", - "

    \n", - " Sign up for LangSmith to quickly spot issues and improve the performance of your LangGraph projects. LangSmith lets you use trace data to debug, test, and monitor your LLM apps built with LangGraph — read more about how to get started here. \n", - "

    \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "id": "035e567c-db5c-4085-ba4e-5b3814561c21", - "metadata": {}, - "source": [ - "## Simple Usage\n", - "\n", - "Let's look at very basic usage of this.\n", - "\n", - "Below, we do three things:\n", - "\n", - "1) We specify the [breakpoint](https://langchain-ai.github.io/langgraph/concepts/low_level/#breakpoints) using `interrupt_before` a specified step (node).\n", - "\n", - "2) We set up a [checkpointer](https://langchain-ai.github.io/langgraph/concepts/low_level/#checkpointer) to save the state of the graph up until this node.\n", - "\n", - "3) We use `.update_state` to update the state of the graph." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "85e452f8-f33a-4ead-bb4d-7386cdba8edc", - "metadata": {}, - "outputs": [ - { - "data": { - "image/jpeg": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from typing_extensions import TypedDict\n", - "from langgraph.graph import StateGraph, START, END\n", - "from langgraph.checkpoint.memory import MemorySaver\n", - "from IPython.display import Image, display\n", - "\n", - "\n", - "class State(TypedDict):\n", - " input: str\n", - "\n", - "\n", - "def step_1(state):\n", - " print(\"---Step 1---\")\n", - " pass\n", - "\n", - "\n", - "def step_2(state):\n", - " print(\"---Step 2---\")\n", - " pass\n", - "\n", - "\n", - "def step_3(state):\n", - " print(\"---Step 3---\")\n", - " pass\n", - "\n", - "\n", - "builder = StateGraph(State)\n", - "builder.add_node(\"step_1\", step_1)\n", - "builder.add_node(\"step_2\", step_2)\n", - "builder.add_node(\"step_3\", step_3)\n", - "builder.add_edge(START, \"step_1\")\n", - "builder.add_edge(\"step_1\", \"step_2\")\n", - "builder.add_edge(\"step_2\", \"step_3\")\n", - "builder.add_edge(\"step_3\", END)\n", - "\n", - "# Set up memory\n", - "memory = MemorySaver()\n", - "\n", - "# Add\n", - "graph = builder.compile(checkpointer=memory, interrupt_before=[\"step_2\"])\n", - "\n", - "# View\n", - "display(Image(graph.get_graph().draw_mermaid_png()))" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "1b3aa6fc-c7fb-4819-8d7f-ba6057cc4edf", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'input': 'hello world'}\n", - "---Step 1---\n" - ] - } - ], - "source": [ - "# Input\n", - "initial_input = {\"input\": \"hello world\"}\n", - "\n", - "# Thread\n", - "thread = {\"configurable\": {\"thread_id\": \"1\"}}\n", - "\n", - "# Run the graph until the first interruption\n", - "for event in graph.stream(initial_input, thread, stream_mode=\"values\"):\n", - " print(event)" - ] - }, - { - "cell_type": "markdown", - "id": "4ab27716-e861-4ba3-9d7d-90694013e3c4", - "metadata": {}, - "source": [ - "Now, we can just manually update our graph state - " - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "49d61230-e5dc-4272-b8ab-09b0af30f088", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Current state!\n", - "{'input': 'hello world'}\n", - "---\n", - "---\n", - "Updated state!\n", - "{'input': 'hello universe!'}\n" - ] - } - ], - "source": [ - "print(\"Current state!\")\n", - "print(graph.get_state(thread).values)\n", - "\n", - "graph.update_state(thread, {\"input\": \"hello universe!\"})\n", - "\n", - "print(\"---\\n---\\nUpdated state!\")\n", - "print(graph.get_state(thread).values)" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "cf77f6eb-4cc0-4615-a095-eb5ae7027b7a", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "---Step 2---\n", - "---Step 3---\n" - ] - } - ], - "source": [ - "# Continue the graph execution\n", - "for event in graph.stream(None, thread, stream_mode=\"values\"):\n", - " print(event)" - ] - }, - { - "cell_type": "markdown", - "id": "3333b771", - "metadata": {}, - "source": [ - "## Agent\n", - "\n", - "In the context of agents, updating state is useful for things like editing tool calls.\n", - " \n", - "To show this, we will build a relatively simple ReAct-style agent that does tool calling. \n", - "\n", - "We will use Anthropic's models and a fake tool (just for demo purposes)." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "6098e5cb", - "metadata": {}, - "outputs": [], - "source": [ - "# Set up the tool\n", - "from langchain_anthropic import ChatAnthropic\n", - "from langchain_core.tools import tool\n", - "from langgraph.graph import MessagesState, START, END, StateGraph\n", - "from langgraph.prebuilt import ToolNode\n", - "from langgraph.checkpoint.memory import MemorySaver\n", - "\n", - "\n", - "@tool\n", - "def search(query: str):\n", - " \"\"\"Call to surf the web.\"\"\"\n", - " # This is a placeholder for the actual implementation\n", - " # Don't let the LLM know this though 😊\n", - " return [\n", - " \"It's sunny in San Francisco, but you better look out if you're a Gemini 😈.\"\n", - " ]\n", - "\n", - "\n", - "tools = [search]\n", - "tool_node = ToolNode(tools)\n", - "\n", - "# Set up the model\n", - "\n", - "model = ChatAnthropic(model=\"claude-3-5-sonnet-20240620\")\n", - "model = model.bind_tools(tools)\n", - "\n", - "\n", - "# Define nodes and conditional edges\n", - "\n", - "\n", - "# Define the function that determines whether to continue or not\n", - "def should_continue(state):\n", - " messages = state[\"messages\"]\n", - " last_message = messages[-1]\n", - " # If there is no function call, then we finish\n", - " if not last_message.tool_calls:\n", - " return \"end\"\n", - " # Otherwise if there is, we continue\n", - " else:\n", - " return \"continue\"\n", - "\n", - "\n", - "# Define the function that calls the model\n", - "def call_model(state):\n", - " messages = state[\"messages\"]\n", - " response = model.invoke(messages)\n", - " # We return a list, because this will get added to the existing list\n", - " return {\"messages\": [response]}\n", - "\n", - "\n", - "# Define a new graph\n", - "workflow = StateGraph(MessagesState)\n", - "\n", - "# Define the two nodes we will cycle between\n", - "workflow.add_node(\"agent\", call_model)\n", - "workflow.add_node(\"action\", tool_node)\n", - "\n", - "# Set the entrypoint as `agent`\n", - "# This means that this node is the first one called\n", - "workflow.add_edge(START, \"agent\")\n", - "\n", - "# We now add a conditional edge\n", - "workflow.add_conditional_edges(\n", - " # First, we define the start node. We use `agent`.\n", - " # This means these are the edges taken after the `agent` node is called.\n", - " \"agent\",\n", - " # Next, we pass in the function that will determine which node is called next.\n", - " should_continue,\n", - " # Finally we pass in a mapping.\n", - " # The keys are strings, and the values are other nodes.\n", - " # END is a special node marking that the graph should finish.\n", - " # What will happen is we will call `should_continue`, and then the output of that\n", - " # will be matched against the keys in this mapping.\n", - " # Based on which one it matches, that node will then be called.\n", - " {\n", - " # If `tools`, then we call the tool node.\n", - " \"continue\": \"action\",\n", - " # Otherwise we finish.\n", - " \"end\": END,\n", - " },\n", - ")\n", - "\n", - "# We now add a normal edge from `tools` to `agent`.\n", - "# This means that after `tools` is called, `agent` node is called next.\n", - "workflow.add_edge(\"action\", \"agent\")\n", - "\n", - "# Set up memory\n", - "memory = MemorySaver()\n", - "\n", - "# Finally, we compile it!\n", - "# This compiles it into a LangChain Runnable,\n", - "# meaning you can use it as you would any other runnable\n", - "\n", - "# We add in `interrupt_before=[\"action\"]`\n", - "# This will add a breakpoint before the `action` node is called\n", - "app = workflow.compile(checkpointer=memory, interrupt_before=[\"action\"])" - ] - }, - { - "cell_type": "markdown", - "id": "2a1b56c5-bd61-4192-8bdb-458a1e9f0159", - "metadata": {}, - "source": [ - "## Interacting with the Agent\n", - "\n", - "We can now interact with the agent and see that it stops before calling a tool.\n" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "cfd140f0-a5a6-4697-8115-322242f197b5", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "================================\u001b[1m Human Message \u001b[0m=================================\n", - "\n", - "search for the weather in sf now\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "[{'text': \"Certainly! I'll search for the current weather in San Francisco for you. Let me use the search function to find this information.\", 'type': 'text'}, {'id': 'toolu_01DxRhkj4fAvaGWoBhVuvfeL', 'input': {'query': 'current weather in San Francisco'}, 'name': 'search', 'type': 'tool_use'}]\n", - "Tool Calls:\n", - " search (toolu_01DxRhkj4fAvaGWoBhVuvfeL)\n", - " Call ID: toolu_01DxRhkj4fAvaGWoBhVuvfeL\n", - " Args:\n", - " query: current weather in San Francisco\n" - ] - } - ], - "source": [ - "from langchain_core.messages import HumanMessage\n", - "\n", - "thread = {\"configurable\": {\"thread_id\": \"3\"}}\n", - "inputs = [HumanMessage(content=\"search for the weather in sf now\")]\n", - "for event in app.stream({\"messages\": inputs}, thread, stream_mode=\"values\"):\n", - " event[\"messages\"][-1].pretty_print()" - ] - }, - { - "cell_type": "markdown", - "id": "78e3f5b9-9700-42b1-863f-c404861f8620", - "metadata": {}, - "source": [ - "**Edit**\n", - "\n", - "We can now update the state accordingly. Let's modify the tool call to have the query `\"current weather in SF\"`." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "1aa7b1b9-9322-4815-bc0d-eb083870ac15", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'configurable': {'thread_id': '3',\n", - " 'checkpoint_ns': '',\n", - " 'checkpoint_id': '1ef7830a-c688-6fc6-8002-824126081ba0'}}" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# First, lets get the current state\n", - "current_state = app.get_state(thread)\n", - "\n", - "# Let's now get the last message in the state\n", - "# This is the one with the tool calls that we want to update\n", - "last_message = current_state.values[\"messages\"][-1]\n", - "\n", - "# Let's now update the args for that tool call\n", - "last_message.tool_calls[0][\"args\"] = {\"query\": \"current weather in SF\"}\n", - "\n", - "# Let's now call `update_state` to pass in this message in the `messages` key\n", - "# This will get treated as any other update to the state\n", - "# It will get passed to the reducer function for the `messages` key\n", - "# That reducer function will use the ID of the message to update it\n", - "# It's important that it has the right ID! Otherwise it would get appended\n", - "# as a new message\n", - "app.update_state(thread, {\"messages\": last_message})" - ] - }, - { - "cell_type": "markdown", - "id": "0dcc5457-1ba1-4cba-ac41-da5c67cc67e5", - "metadata": {}, - "source": [ - "Let's now check the current state of the app to make sure it got updated accordingly" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "a3fcf2bd-f881-49fe-b20e-ad16e6819bc6", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[{'name': 'search',\n", - " 'args': {'query': 'current weather in SF'},\n", - " 'id': 'toolu_01FSkinAVXR1C4D5kecrzAnj'}]" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "current_state = app.get_state(thread).values[\"messages\"][-1].tool_calls\n", - "current_state" - ] - }, - { - "cell_type": "markdown", - "id": "1bca3814-db08-4b0b-8c0c-95b6c5440c81", - "metadata": {}, - "source": [ - "**Resume**\n", - "\n", - "We can now call the agent again with no inputs to continue, ie. run the tool as requested. We can see from the logs that it passes in the update args to the tool." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "51923913-20f7-4ee1-b9ba-d01f5fb2869b", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "=================================\u001b[1m Tool Message \u001b[0m=================================\n", - "Name: search\n", - "\n", - "[\"It's sunny in San Francisco, but you better look out if you're a Gemini \\ud83d\\ude08.\"]\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "Based on the search results, I can provide you with the current weather information for San Francisco:\n", - "\n", - "The weather in San Francisco is currently sunny. \n", - "\n", - "It's important to note that the search result also included a playful astrological reference, which isn't directly related to the weather. If you need more specific weather details like temperature, humidity, or forecast, please let me know, and I can perform another search to find that information for you.\n", - "\n", - "Is there anything else you'd like to know about the weather in San Francisco or any other location?\n" - ] - } - ], - "source": [ - "for event in app.stream(None, thread, stream_mode=\"values\"):\n", - " event[\"messages\"][-1].pretty_print()" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.4" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/docs/docs/how-tos/human_in_the_loop/time-travel.ipynb b/docs/docs/how-tos/human_in_the_loop/time-travel.ipynb index 7e363b12d..62701c773 100644 --- a/docs/docs/how-tos/human_in_the_loop/time-travel.ipynb +++ b/docs/docs/how-tos/human_in_the_loop/time-travel.ipynb @@ -1,56 +1,38 @@ { "cells": [ { + "attachments": {}, "cell_type": "markdown", - "id": "51466c8d-8ce4-4b3d-be4e-18fdbeda5f53", + "id": "c23e0a59-759a-4226-997e-8a69f7661d32", "metadata": {}, "source": [ - "# How to view and update past graph state\n", + "# Use time-travel\n", "\n", - "!!! tip \"Prerequisites\"\n", + "To use time-travel in LangGraph:\n", "\n", - " This guide assumes familiarity with the following concepts:\n", + "1. **Identify a checkpoint in an existing thread**: Use the [`get_state_history()`][langgraph.graph.graph.CompiledGraph.get_state_history] method to retrieve the execution history for a specific `thread_id` and locate the desired `checkpoint_id`. \n", + " Alternatively, set a [breakpoint](../../../concepts/breakpoints/) before the node(s) where you want execution to pause. You can then find the most recent checkpoint recorded up to that breakpoint.\n", + "2. **(Optional) modify the graph state**: Use the [`update_state`][langgraph.graph.graph.CompiledGraph.update_state] method to modify the graph’s state at the checkpoint and resume execution from alternative state.\n", + "3. **Resume execution from the checkpoint**: Use the `invoke` or `stream` APIs with an input of `None` and a configuration containing the appropriate `thread_id` and `checkpoint_id`.\n", "\n", - " * [Time Travel](../../../concepts/time-travel)\n", - " * [Breakpoints](../../../concepts/breakpoints)\n", - " * [LangGraph Glossary](../../../concepts/low_level)\n", + "## Example\n", "\n", + "This example builds a simple LangGraph workflow that generates a joke topic and writes a joke using an LLM. It demonstrates how to run the graph, retrieve past execution checkpoints, optionally modify the state, and resume execution from a chosen checkpoint to explore alternate outcomes.\n", "\n", - "Once you start [checkpointing](../../persistence) your graphs, you can easily **get** or **update** the state of the agent at any point in time. This permits a few things:\n", - "\n", - "1. You can surface a state during an interrupt to a user to let them accept an action.\n", - "2. You can **rewind** the graph to reproduce or avoid issues.\n", - "3. You can **modify** the state to embed your agent into a larger system, or to let the user better control its actions.\n", - "\n", - "The key methods used for this functionality are:\n", - "\n", - "- [get_state](https://langchain-ai.github.io/langgraph/reference/graphs/#langgraph.graph.graph.CompiledGraph.get_state): fetch the values from the target config\n", - "- [update_state](https://langchain-ai.github.io/langgraph/reference/graphs/#langgraph.graph.graph.CompiledGraph.update_state): apply the given values to the target state\n", - "\n", - "**Note:** this requires passing in a checkpointer.\n", - "\n", - "Below is a quick example." - ] - }, - { - "cell_type": "markdown", - "id": "7cbd446a-808f-4394-be92-d45ab818953c", - "metadata": {}, - "source": [ - "## Setup\n", + "### Setup\n", "\n", "First we need to install the packages required" ] }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 38, "id": "af4ce0ba-7596-4e5f-8bf8-0b0bd6e62833", "metadata": {}, "outputs": [], "source": [ "%%capture --no-stderr\n", - "%pip install --quiet -U langgraph langchain_openai" + "%pip install --quiet -U langgraph langchain_anthropic" ] }, { @@ -58,23 +40,15 @@ "id": "0abe11f4-62ed-4dc4-8875-3db21e260d1d", "metadata": {}, "source": [ - "Next, we need to set API keys for OpenAI (the LLM we will use)" + "Next, we need to set API keys for Anthropic (the LLM we will use)" ] }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 1, "id": "c903a1cf-2977-4e2d-ad7d-8b3946821d89", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "ANTHROPIC_API_KEY: ········\n" - ] - } - ], + "outputs": [], "source": [ "import getpass\n", "import os\n", @@ -85,7 +59,7 @@ " os.environ[var] = getpass.getpass(f\"{var}: \")\n", "\n", "\n", - "_set_env(\"OPENAI_API_KEY\")" + "_set_env(\"ANTHROPIC_API_KEY\")" ] }, { @@ -101,484 +75,237 @@ "" ] }, - { - "cell_type": "markdown", - "id": "e36f89e5", - "metadata": {}, - "source": [ - "## Build the agent\n", - "\n", - "We can now build the agent. We will build a relatively simple ReAct-style agent that does tool calling. We will use Anthropic's models and fake tools (just for demo purposes)." - ] - }, { "cell_type": "code", - "execution_count": 42, - "id": "f5319e01", + "execution_count": 2, + "id": "4e1e9b07-4185-4d6c-8834-a0ae07dfdf4b", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "# Set up the tool\n", - "from langchain_openai import ChatOpenAI\n", - "from langchain_core.tools import tool\n", - "from langgraph.graph import MessagesState, START\n", - "from langgraph.prebuilt import ToolNode\n", - "from langgraph.graph import END, StateGraph\n", - "from langgraph.checkpoint.memory import MemorySaver\n", + "import uuid\n", + "\n", + "from typing_extensions import TypedDict, NotRequired\n", + "from langgraph.graph import StateGraph, START, END\n", + "from langchain.chat_models import init_chat_model\n", + "from langgraph.checkpoint.memory import InMemorySaver\n", "\n", "\n", - "@tool\n", - "def play_song_on_spotify(song: str):\n", - " \"\"\"Play a song on Spotify\"\"\"\n", - " # Call the spotify API ...\n", - " return f\"Successfully played {song} on Spotify!\"\n", + "class State(TypedDict):\n", + " topic: NotRequired[str]\n", + " joke: NotRequired[str]\n", "\n", "\n", - "@tool\n", - "def play_song_on_apple(song: str):\n", - " \"\"\"Play a song on Apple Music\"\"\"\n", - " # Call the apple music API ...\n", - " return f\"Successfully played {song} on Apple Music!\"\n", - "\n", - "\n", - "tools = [play_song_on_apple, play_song_on_spotify]\n", - "tool_node = ToolNode(tools)\n", - "\n", - "# Set up the model\n", - "\n", - "model = ChatOpenAI(model=\"gpt-4o-mini\")\n", - "model = model.bind_tools(tools, parallel_tool_calls=False)\n", - "\n", - "\n", - "# Define nodes and conditional edges\n", - "\n", - "\n", - "# Define the function that determines whether to continue or not\n", - "def should_continue(state):\n", - " messages = state[\"messages\"]\n", - " last_message = messages[-1]\n", - " # If there is no function call, then we finish\n", - " if not last_message.tool_calls:\n", - " return \"end\"\n", - " # Otherwise if there is, we continue\n", - " else:\n", - " return \"continue\"\n", - "\n", - "\n", - "# Define the function that calls the model\n", - "def call_model(state):\n", - " messages = state[\"messages\"]\n", - " response = model.invoke(messages)\n", - " # We return a list, because this will get added to the existing list\n", - " return {\"messages\": [response]}\n", - "\n", - "\n", - "# Define a new graph\n", - "workflow = StateGraph(MessagesState)\n", - "\n", - "# Define the two nodes we will cycle between\n", - "workflow.add_node(\"agent\", call_model)\n", - "workflow.add_node(\"action\", tool_node)\n", - "\n", - "# Set the entrypoint as `agent`\n", - "# This means that this node is the first one called\n", - "workflow.add_edge(START, \"agent\")\n", - "\n", - "# We now add a conditional edge\n", - "workflow.add_conditional_edges(\n", - " # First, we define the start node. We use `agent`.\n", - " # This means these are the edges taken after the `agent` node is called.\n", - " \"agent\",\n", - " # Next, we pass in the function that will determine which node is called next.\n", - " should_continue,\n", - " # Finally we pass in a mapping.\n", - " # The keys are strings, and the values are other nodes.\n", - " # END is a special node marking that the graph should finish.\n", - " # What will happen is we will call `should_continue`, and then the output of that\n", - " # will be matched against the keys in this mapping.\n", - " # Based on which one it matches, that node will then be called.\n", - " {\n", - " # If `tools`, then we call the tool node.\n", - " \"continue\": \"action\",\n", - " # Otherwise we finish.\n", - " \"end\": END,\n", - " },\n", + "llm = init_chat_model(\n", + " \"anthropic:claude-3-7-sonnet-latest\",\n", + " temperature=0,\n", ")\n", "\n", - "# We now add a normal edge from `tools` to `agent`.\n", - "# This means that after `tools` is called, `agent` node is called next.\n", - "workflow.add_edge(\"action\", \"agent\")\n", "\n", - "# Set up memory\n", - "memory = MemorySaver()\n", + "def generate_topic(state: State):\n", + " \"\"\"LLM call to generate a topic for the joke\"\"\"\n", + " msg = llm.invoke(\"Give me a funny topic for a joke\")\n", + " return {\"topic\": msg.content}\n", "\n", - "# Finally, we compile it!\n", - "# This compiles it into a LangChain Runnable,\n", - "# meaning you can use it as you would any other runnable\n", "\n", - "# We add in `interrupt_before=[\"action\"]`\n", - "# This will add a breakpoint before the `action` node is called\n", - "app = workflow.compile(checkpointer=memory)" + "def write_joke(state: State):\n", + " \"\"\"LLM call to write a joke based on the topic\"\"\"\n", + " msg = llm.invoke(f\"Write a short joke about {state['topic']}\")\n", + " return {\"joke\": msg.content}\n", + "\n", + "\n", + "# Build workflow\n", + "workflow = StateGraph(State)\n", + "\n", + "# Add nodes\n", + "workflow.add_node(\"generate_topic\", generate_topic)\n", + "workflow.add_node(\"write_joke\", write_joke)\n", + "\n", + "# Add edges to connect nodes\n", + "workflow.add_edge(START, \"generate_topic\")\n", + "workflow.add_edge(\"generate_topic\", \"write_joke\")\n", + "workflow.add_edge(\"write_joke\", END)\n", + "\n", + "# Compile\n", + "checkpointer = InMemorySaver()\n", + "graph = workflow.compile(checkpointer=checkpointer)\n", + "graph" ] }, { "cell_type": "markdown", - "id": "2a1b56c5-bd61-4192-8bdb-458a1e9f0159", + "id": "7ef76675-02e4-42ef-b707-0a9ce36ba0ac", "metadata": {}, "source": [ - "## Interacting with the Agent\n", - "\n", - "We can now interact with the agent. Let's ask it to play Taylor Swift's most popular song:\n" + "### Run the graph" ] }, { "cell_type": "code", - "execution_count": 43, - "id": "cfd140f0-a5a6-4697-8115-322242f197b5", + "execution_count": 3, + "id": "3199a8d0-17c0-4979-ac08-52d7007b7689", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "================================\u001b[1m Human Message \u001b[0m=================================\n", + "How about \"The Secret Life of Socks in the Dryer\"? You know, exploring the mysterious phenomenon of how socks go into the laundry as pairs but come out as singles. Where do they go? Are they starting new lives elsewhere? Is there a sock paradise we don't know about? There's a lot of comedic potential in the everyday mystery that unites us all!\n", "\n", - "Can you play Taylor Swift's most popular song?\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "Tool Calls:\n", - " play_song_on_apple (call_uhGY6Fv6Mr4ZOhSokintuoD7)\n", - " Call ID: call_uhGY6Fv6Mr4ZOhSokintuoD7\n", - " Args:\n", - " song: Anti-Hero by Taylor Swift\n", - "=================================\u001b[1m Tool Message \u001b[0m=================================\n", - "Name: play_song_on_apple\n", + "# The Secret Life of Socks in the Dryer\n", "\n", - "Succesfully played Anti-Hero by Taylor Swift on Apple Music!\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", + "I finally discovered where all my missing socks go after the dryer. Turns out they're not missing at all—they've just eloped with someone else's socks from the laundromat to start new lives together.\n", "\n", - "I've successfully played \"Anti-Hero\" by Taylor Swift on Apple Music! Enjoy the music!\n" + "My blue argyle is now living in Bermuda with a red polka dot, posting vacation photos on Sockstagram and sending me lint as alimony.\n" ] } ], "source": [ - "from langchain_core.messages import HumanMessage\n", + "config = {\n", + " \"configurable\": {\n", + " \"thread_id\": uuid.uuid4(),\n", + " }\n", + "}\n", + "state = graph.invoke({}, config)\n", "\n", - "config = {\"configurable\": {\"thread_id\": \"1\"}}\n", - "input_message = HumanMessage(content=\"Can you play Taylor Swift's most popular song?\")\n", - "for event in app.stream({\"messages\": [input_message]}, config, stream_mode=\"values\"):\n", - " event[\"messages\"][-1].pretty_print()" + "print(state[\"topic\"])\n", + "print()\n", + "print(state[\"joke\"])" ] }, { "cell_type": "markdown", - "id": "1c38c505-6cee-427f-9dcd-493a2ade7ebb", + "id": "2fc0fc7f-5a7b-4b48-b1e2-d413ad4a51aa", "metadata": {}, "source": [ - "## Checking history\n", - "\n", - "Let's browse the history of this thread, from start to finish." + "### 1. Identify a checkpoint" ] }, { "cell_type": "code", - "execution_count": 44, - "id": "777538a5", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[HumanMessage(content=\"Can you play Taylor Swift's most popular song?\", id='7e32f0f3-75f5-48e1-a4ae-d38ccc15973b'),\n", - " AIMessage(content='', additional_kwargs={'tool_calls': [{'id': 'call_uhGY6Fv6Mr4ZOhSokintuoD7', 'function': {'arguments': '{\"song\":\"Anti-Hero by Taylor Swift\"}', 'name': 'play_song_on_apple'}, 'type': 'function'}], 'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 22, 'prompt_tokens': 80, 'total_tokens': 102}, 'model_name': 'gpt-4o-mini-2024-07-18', 'system_fingerprint': 'fp_483d39d857', 'finish_reason': 'tool_calls', 'logprobs': None}, id='run-af077bc4-f03c-4afe-8d92-78bdae394412-0', tool_calls=[{'name': 'play_song_on_apple', 'args': {'song': 'Anti-Hero by Taylor Swift'}, 'id': 'call_uhGY6Fv6Mr4ZOhSokintuoD7', 'type': 'tool_call'}], usage_metadata={'input_tokens': 80, 'output_tokens': 22, 'total_tokens': 102}),\n", - " ToolMessage(content='Succesfully played Anti-Hero by Taylor Swift on Apple Music!', name='play_song_on_apple', id='43a39ca7-326a-4033-8607-bf061615ed6b', tool_call_id='call_uhGY6Fv6Mr4ZOhSokintuoD7'),\n", - " AIMessage(content='I\\'ve successfully played \"Anti-Hero\" by Taylor Swift on Apple Music! Enjoy the music!', additional_kwargs={'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 20, 'prompt_tokens': 126, 'total_tokens': 146}, 'model_name': 'gpt-4o-mini-2024-07-18', 'system_fingerprint': 'fp_483d39d857', 'finish_reason': 'stop', 'logprobs': None}, id='run-bfee6b28-9f16-49cc-8d28-bfb5a5b9aea1-0', usage_metadata={'input_tokens': 126, 'output_tokens': 20, 'total_tokens': 146})]" - ] - }, - "execution_count": 44, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "app.get_state(config).values[\"messages\"]" - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "id": "8578a66d-6489-4e03-8c23-fd0530278455", + "execution_count": 4, + "id": "e7f54f90-bff1-4810-8488-c8fce6b5a03f", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "StateSnapshot(values={'messages': [HumanMessage(content=\"Can you play Taylor Swift's most popular song?\", id='7e32f0f3-75f5-48e1-a4ae-d38ccc15973b'), AIMessage(content='', additional_kwargs={'tool_calls': [{'id': 'call_uhGY6Fv6Mr4ZOhSokintuoD7', 'function': {'arguments': '{\"song\":\"Anti-Hero by Taylor Swift\"}', 'name': 'play_song_on_apple'}, 'type': 'function'}], 'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 22, 'prompt_tokens': 80, 'total_tokens': 102}, 'model_name': 'gpt-4o-mini-2024-07-18', 'system_fingerprint': 'fp_483d39d857', 'finish_reason': 'tool_calls', 'logprobs': None}, id='run-af077bc4-f03c-4afe-8d92-78bdae394412-0', tool_calls=[{'name': 'play_song_on_apple', 'args': {'song': 'Anti-Hero by Taylor Swift'}, 'id': 'call_uhGY6Fv6Mr4ZOhSokintuoD7', 'type': 'tool_call'}], usage_metadata={'input_tokens': 80, 'output_tokens': 22, 'total_tokens': 102}), ToolMessage(content='Succesfully played Anti-Hero by Taylor Swift on Apple Music!', name='play_song_on_apple', id='43a39ca7-326a-4033-8607-bf061615ed6b', tool_call_id='call_uhGY6Fv6Mr4ZOhSokintuoD7'), AIMessage(content='I\\'ve successfully played \"Anti-Hero\" by Taylor Swift on Apple Music! Enjoy the music!', additional_kwargs={'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 20, 'prompt_tokens': 126, 'total_tokens': 146}, 'model_name': 'gpt-4o-mini-2024-07-18', 'system_fingerprint': 'fp_483d39d857', 'finish_reason': 'stop', 'logprobs': None}, id='run-bfee6b28-9f16-49cc-8d28-bfb5a5b9aea1-0', usage_metadata={'input_tokens': 126, 'output_tokens': 20, 'total_tokens': 146})]}, next=(), config={'configurable': {'thread_id': '1', 'checkpoint_ns': '', 'checkpoint_id': '1ef6bcf1-364f-6228-8003-dd67a426334e'}}, metadata={'source': 'loop', 'writes': {'agent': {'messages': [AIMessage(content='I\\'ve successfully played \"Anti-Hero\" by Taylor Swift on Apple Music! Enjoy the music!', additional_kwargs={'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 20, 'prompt_tokens': 126, 'total_tokens': 146}, 'model_name': 'gpt-4o-mini-2024-07-18', 'system_fingerprint': 'fp_483d39d857', 'finish_reason': 'stop', 'logprobs': None}, id='run-bfee6b28-9f16-49cc-8d28-bfb5a5b9aea1-0', usage_metadata={'input_tokens': 126, 'output_tokens': 20, 'total_tokens': 146})]}}, 'step': 3, 'parents': {}}, created_at='2024-09-05T21:37:39.955948+00:00', parent_config={'configurable': {'thread_id': '1', 'checkpoint_ns': '', 'checkpoint_id': '1ef6bcf1-318f-6dc8-8002-dbdf9aaeac83'}}, tasks=())\n", - "--\n", - "StateSnapshot(values={'messages': [HumanMessage(content=\"Can you play Taylor Swift's most popular song?\", id='7e32f0f3-75f5-48e1-a4ae-d38ccc15973b'), AIMessage(content='', additional_kwargs={'tool_calls': [{'id': 'call_uhGY6Fv6Mr4ZOhSokintuoD7', 'function': {'arguments': '{\"song\":\"Anti-Hero by Taylor Swift\"}', 'name': 'play_song_on_apple'}, 'type': 'function'}], 'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 22, 'prompt_tokens': 80, 'total_tokens': 102}, 'model_name': 'gpt-4o-mini-2024-07-18', 'system_fingerprint': 'fp_483d39d857', 'finish_reason': 'tool_calls', 'logprobs': None}, id='run-af077bc4-f03c-4afe-8d92-78bdae394412-0', tool_calls=[{'name': 'play_song_on_apple', 'args': {'song': 'Anti-Hero by Taylor Swift'}, 'id': 'call_uhGY6Fv6Mr4ZOhSokintuoD7', 'type': 'tool_call'}], usage_metadata={'input_tokens': 80, 'output_tokens': 22, 'total_tokens': 102}), ToolMessage(content='Succesfully played Anti-Hero by Taylor Swift on Apple Music!', name='play_song_on_apple', id='43a39ca7-326a-4033-8607-bf061615ed6b', tool_call_id='call_uhGY6Fv6Mr4ZOhSokintuoD7')]}, next=('agent',), config={'configurable': {'thread_id': '1', 'checkpoint_ns': '', 'checkpoint_id': '1ef6bcf1-318f-6dc8-8002-dbdf9aaeac83'}}, metadata={'source': 'loop', 'writes': {'action': {'messages': [ToolMessage(content='Succesfully played Anti-Hero by Taylor Swift on Apple Music!', name='play_song_on_apple', id='43a39ca7-326a-4033-8607-bf061615ed6b', tool_call_id='call_uhGY6Fv6Mr4ZOhSokintuoD7')]}}, 'step': 2, 'parents': {}}, created_at='2024-09-05T21:37:39.458185+00:00', parent_config={'configurable': {'thread_id': '1', 'checkpoint_ns': '', 'checkpoint_id': '1ef6bcf1-3185-663e-8001-12b1ec3114b8'}}, tasks=(PregelTask(id='3a4c5ddb-14b2-5def-a766-02ddc32948ba', name='agent', error=None, interrupts=(), state=None),))\n", - "--\n", - "StateSnapshot(values={'messages': [HumanMessage(content=\"Can you play Taylor Swift's most popular song?\", id='7e32f0f3-75f5-48e1-a4ae-d38ccc15973b'), AIMessage(content='', additional_kwargs={'tool_calls': [{'id': 'call_uhGY6Fv6Mr4ZOhSokintuoD7', 'function': {'arguments': '{\"song\":\"Anti-Hero by Taylor Swift\"}', 'name': 'play_song_on_apple'}, 'type': 'function'}], 'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 22, 'prompt_tokens': 80, 'total_tokens': 102}, 'model_name': 'gpt-4o-mini-2024-07-18', 'system_fingerprint': 'fp_483d39d857', 'finish_reason': 'tool_calls', 'logprobs': None}, id='run-af077bc4-f03c-4afe-8d92-78bdae394412-0', tool_calls=[{'name': 'play_song_on_apple', 'args': {'song': 'Anti-Hero by Taylor Swift'}, 'id': 'call_uhGY6Fv6Mr4ZOhSokintuoD7', 'type': 'tool_call'}], usage_metadata={'input_tokens': 80, 'output_tokens': 22, 'total_tokens': 102})]}, next=('action',), config={'configurable': {'thread_id': '1', 'checkpoint_ns': '', 'checkpoint_id': '1ef6bcf1-3185-663e-8001-12b1ec3114b8'}}, metadata={'source': 'loop', 'writes': {'agent': {'messages': [AIMessage(content='', additional_kwargs={'tool_calls': [{'id': 'call_uhGY6Fv6Mr4ZOhSokintuoD7', 'function': {'arguments': '{\"song\":\"Anti-Hero by Taylor Swift\"}', 'name': 'play_song_on_apple'}, 'type': 'function'}], 'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 22, 'prompt_tokens': 80, 'total_tokens': 102}, 'model_name': 'gpt-4o-mini-2024-07-18', 'system_fingerprint': 'fp_483d39d857', 'finish_reason': 'tool_calls', 'logprobs': None}, id='run-af077bc4-f03c-4afe-8d92-78bdae394412-0', tool_calls=[{'name': 'play_song_on_apple', 'args': {'song': 'Anti-Hero by Taylor Swift'}, 'id': 'call_uhGY6Fv6Mr4ZOhSokintuoD7', 'type': 'tool_call'}], usage_metadata={'input_tokens': 80, 'output_tokens': 22, 'total_tokens': 102})]}}, 'step': 1, 'parents': {}}, created_at='2024-09-05T21:37:39.453898+00:00', parent_config={'configurable': {'thread_id': '1', 'checkpoint_ns': '', 'checkpoint_id': '1ef6bcf1-29b8-6370-8000-f9f6e7ca1b06'}}, tasks=(PregelTask(id='01f1dc72-5a39-5876-97a6-abdc12f70c2a', name='action', error=None, interrupts=(), state=None),))\n", - "--\n", - "StateSnapshot(values={'messages': [HumanMessage(content=\"Can you play Taylor Swift's most popular song?\", id='7e32f0f3-75f5-48e1-a4ae-d38ccc15973b')]}, next=('agent',), config={'configurable': {'thread_id': '1', 'checkpoint_ns': '', 'checkpoint_id': '1ef6bcf1-29b8-6370-8000-f9f6e7ca1b06'}}, metadata={'source': 'loop', 'writes': None, 'step': 0, 'parents': {}}, created_at='2024-09-05T21:37:38.635849+00:00', parent_config={'configurable': {'thread_id': '1', 'checkpoint_ns': '', 'checkpoint_id': '1ef6bcf1-29b3-6514-bfff-fe07fb36f14f'}}, tasks=(PregelTask(id='348e1ba7-95c6-5b89-80c9-1fc4720e35ef', name='agent', error=None, interrupts=(), state=None),))\n", - "--\n", - "StateSnapshot(values={'messages': []}, next=('__start__',), config={'configurable': {'thread_id': '1', 'checkpoint_ns': '', 'checkpoint_id': '1ef6bcf1-29b3-6514-bfff-fe07fb36f14f'}}, metadata={'source': 'input', 'writes': {'__start__': {'messages': [HumanMessage(content=\"Can you play Taylor Swift's most popular song?\")]}}, 'step': -1, 'parents': {}}, created_at='2024-09-05T21:37:38.633849+00:00', parent_config=None, tasks=(PregelTask(id='f1cfbb8c-7792-5cf9-9d28-ae3ac7724cf3', name='__start__', error=None, interrupts=(), state=None),))\n", - "--\n" + "()\n", + "1f02ac4a-ec9f-6524-8002-8f7b0bbeed0e\n", + "\n", + "('write_joke',)\n", + "1f02ac4a-ce2a-6494-8001-cb2e2d651227\n", + "\n", + "('generate_topic',)\n", + "1f02ac4a-a4e0-630d-8000-b73c254ba748\n", + "\n", + "('__start__',)\n", + "1f02ac4a-a4dd-665e-bfff-e6c8c44315d9\n", + "\n" ] } ], "source": [ - "all_states = []\n", - "for state in app.get_state_history(config):\n", - " print(state)\n", - " all_states.append(state)\n", - " print(\"--\")" - ] - }, - { - "cell_type": "markdown", - "id": "0ec41c37-7c09-4cc7-8475-bf373fe66584", - "metadata": {}, - "source": [ - "## Replay a state\n", + "# The states are returned in reverse chronological order.\n", + "states = list(graph.get_state_history(config))\n", "\n", - "We can go back to any of these states and restart the agent from there! Let's go back to right before the tool call gets executed." + "for state in states:\n", + " print(state.next)\n", + " print(state.config[\"configurable\"][\"checkpoint_id\"])\n", + " print()" ] }, { "cell_type": "code", - "execution_count": 46, - "id": "02250602-8c4a-4fb5-bd6c-d0b9046e8699", - "metadata": {}, - "outputs": [], - "source": [ - "to_replay = all_states[2]" - ] - }, - { - "cell_type": "code", - "execution_count": 47, - "id": "21e7fc18-6fd9-4e11-a84b-e0325c9640c8", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'messages': [HumanMessage(content=\"Can you play Taylor Swift's most popular song?\", id='7e32f0f3-75f5-48e1-a4ae-d38ccc15973b'),\n", - " AIMessage(content='', additional_kwargs={'tool_calls': [{'id': 'call_uhGY6Fv6Mr4ZOhSokintuoD7', 'function': {'arguments': '{\"song\":\"Anti-Hero by Taylor Swift\"}', 'name': 'play_song_on_apple'}, 'type': 'function'}], 'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 22, 'prompt_tokens': 80, 'total_tokens': 102}, 'model_name': 'gpt-4o-mini-2024-07-18', 'system_fingerprint': 'fp_483d39d857', 'finish_reason': 'tool_calls', 'logprobs': None}, id='run-af077bc4-f03c-4afe-8d92-78bdae394412-0', tool_calls=[{'name': 'play_song_on_apple', 'args': {'song': 'Anti-Hero by Taylor Swift'}, 'id': 'call_uhGY6Fv6Mr4ZOhSokintuoD7', 'type': 'tool_call'}], usage_metadata={'input_tokens': 80, 'output_tokens': 22, 'total_tokens': 102})]}" - ] - }, - "execution_count": 47, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "to_replay.values" - ] - }, - { - "cell_type": "code", - "execution_count": 48, - "id": "d4b01634-0041-4632-8d1f-5464580e54f5", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "('action',)" - ] - }, - "execution_count": 48, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "to_replay.next" - ] - }, - { - "cell_type": "markdown", - "id": "29da43ea-9295-43e2-b164-0eb28d96749c", - "metadata": {}, - "source": [ - "To replay from this place we just need to pass its config back to the agent. Notice that it just resumes from right where it left all - making a tool call." - ] - }, - { - "cell_type": "code", - "execution_count": 49, - "id": "e986f94f-706f-4b6f-b3c4-f95483b9e9b8", + "execution_count": 5, + "id": "2f5d918d-0c1b-42b8-9d26-15b58aaaf058", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "{'messages': [ToolMessage(content='Succesfully played Anti-Hero by Taylor Swift on Apple Music!', name='play_song_on_apple', tool_call_id='call_uhGY6Fv6Mr4ZOhSokintuoD7')]}\n", - "{'messages': [AIMessage(content='I\\'ve started playing \"Anti-Hero\" by Taylor Swift on Apple Music! Enjoy the music!', additional_kwargs={'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 20, 'prompt_tokens': 126, 'total_tokens': 146}, 'model_name': 'gpt-4o-mini-2024-07-18', 'system_fingerprint': 'fp_483d39d857', 'finish_reason': 'stop', 'logprobs': None}, id='run-dc338bbd-d623-40bb-b824-5d2307954b57-0', usage_metadata={'input_tokens': 126, 'output_tokens': 20, 'total_tokens': 146})]}\n" + "('write_joke',)\n", + "{'topic': 'How about \"The Secret Life of Socks in the Dryer\"? You know, exploring the mysterious phenomenon of how socks go into the laundry as pairs but come out as singles. Where do they go? Are they starting new lives elsewhere? Is there a sock paradise we don\\'t know about? There\\'s a lot of comedic potential in the everyday mystery that unites us all!'}\n" ] } ], "source": [ - "for event in app.stream(None, to_replay.config):\n", - " for v in event.values():\n", - " print(v)" + "# This is the state before last (states are listed in chronological order)\n", + "selected_state = states[1]\n", + "print(selected_state.next)\n", + "print(selected_state.values)" ] }, { "cell_type": "markdown", - "id": "59910951-fae1-4475-8511-f622439b590d", + "id": "59d5ecb8-1291-4131-83b6-c666862a09fc", "metadata": {}, "source": [ - "## Branch off a past state\n", + "### 2. (Optional) update the state\n", "\n", - "Using LangGraph's checkpointing, you can do more than just replay past states. You can branch off previous locations to let the agent explore alternate trajectories or to let a user \"version control\" changes in a workflow.\n", - "\n", - "Let's show how to do this to edit the state at a particular point in time. Let's update the state to instead of playing the song on Apple to play it on Spotify:" + "`update_state` will create a new checkpoint. The new checkpoint will be associated with the same thread, but a new checkpoint ID." ] }, { "cell_type": "code", - "execution_count": 52, - "id": "fbd5ad3b-5363-4ab7-ac63-b04668bc998f", - "metadata": {}, - "outputs": [], - "source": [ - "# Let's now get the last message in the state\n", - "# This is the one with the tool calls that we want to update\n", - "last_message = to_replay.values[\"messages\"][-1]\n", - "\n", - "\n", - "# Let's now update the tool we are calling\n", - "last_message.tool_calls[0][\"name\"] = \"play_song_on_spotify\"\n", - "\n", - "branch_config = app.update_state(\n", - " to_replay.config,\n", - " {\"messages\": [last_message]},\n", - ")" - ] - }, - { - "cell_type": "markdown", - "id": "bced65eb-2158-43e6-a9e3-3b047c8d418e", - "metadata": {}, - "source": [ - "We can then invoke with this new `branch_config` to resume running from here with changed state. We can see from the log that the tool was called with different input." - ] - }, - { - "cell_type": "code", - "execution_count": 53, - "id": "9a92d3da-62e2-45a2-8545-e4f6a64e0ffe", + "execution_count": 6, + "id": "5ad78ce6-9a7f-4110-9e4a-8105f21cb90d", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "{'messages': [ToolMessage(content='Succesfully played Anti-Hero by Taylor Swift on Spotify!', name='play_song_on_spotify', tool_call_id='call_uhGY6Fv6Mr4ZOhSokintuoD7')]}\n", - "{'messages': [AIMessage(content='I\\'ve started playing \"Anti-Hero\" by Taylor Swift on Spotify. Enjoy the music!', additional_kwargs={'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 19, 'prompt_tokens': 125, 'total_tokens': 144}, 'model_name': 'gpt-4o-mini-2024-07-18', 'system_fingerprint': 'fp_483d39d857', 'finish_reason': 'stop', 'logprobs': None}, id='run-7d8d5094-7029-4da3-9e0e-ef9d18b63615-0', usage_metadata={'input_tokens': 125, 'output_tokens': 19, 'total_tokens': 144})]}\n" + "{'configurable': {'thread_id': 'c62e2e03-c27b-4cb6-8cea-ea9bfedae006', 'checkpoint_ns': '', 'checkpoint_id': '1f02ac4a-ecee-600b-8002-a1d21df32e4c'}}\n" ] } ], "source": [ - "for event in app.stream(None, branch_config):\n", - " for v in event.values():\n", - " print(v)" + "new_config = graph.update_state(selected_state.config, values={\"topic\": \"chickens\"})\n", + "print(new_config)" ] }, { "cell_type": "markdown", - "id": "511e319e-d10d-4b04-a4e0-fc4f3d87cb23", + "id": "db25cd11-7907-4c6f-9c97-b6b3458f246c", "metadata": {}, "source": [ - "Alternatively, we could update the state to not even call a tool!" + "### 3. Resume execution from the checkpoint" ] }, { "cell_type": "code", - "execution_count": 54, - "id": "01abb480-df55-4eba-a2be-cf9372b60b54", - "metadata": {}, - "outputs": [], - "source": [ - "from langchain_core.messages import AIMessage\n", - "\n", - "# Let's now get the last message in the state\n", - "# This is the one with the tool calls that we want to update\n", - "last_message = to_replay.values[\"messages\"][-1]\n", - "\n", - "# Let's now get the ID for the last message, and create a new message with that ID.\n", - "new_message = AIMessage(\n", - " content=\"It's quiet hours so I can't play any music right now!\", id=last_message.id\n", - ")\n", - "\n", - "branch_config = app.update_state(\n", - " to_replay.config,\n", - " {\"messages\": [new_message]},\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 55, - "id": "1a7cfcd4-289e-419e-8b49-dfaef4f88641", - "metadata": {}, - "outputs": [], - "source": [ - "branch_state = app.get_state(branch_config)" - ] - }, - { - "cell_type": "code", - "execution_count": 56, - "id": "5198f9c1-d2d4-458a-993d-3caa55810b1e", + "execution_count": 7, + "id": "f0bab935-6d9b-4cfd-afe8-bfcf4638847e", "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "{'messages': [HumanMessage(content=\"Can you play Taylor Swift's most popular song?\", id='7e32f0f3-75f5-48e1-a4ae-d38ccc15973b'),\n", - " AIMessage(content=\"It's quiet hours so I can't play any music right now!\", id='run-af077bc4-f03c-4afe-8d92-78bdae394412-0')]}" + "{'topic': 'chickens',\n", + " 'joke': 'Why did the chicken join a band?\\n\\nBecause it had excellent drumsticks!'}" ] }, - "execution_count": 56, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "branch_state.values" - ] - }, - { - "cell_type": "code", - "execution_count": 57, - "id": "5d89d55d-db84-4c2d-828b-64a29a69947b", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "()" - ] - }, - "execution_count": 57, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "branch_state.next" - ] - }, - { - "cell_type": "markdown", - "id": "cc168c90-a374-4280-a9a6-8bc232dbb006", - "metadata": {}, - "source": [ - "You can see the snapshot was updated and now correctly reflects that there is no next step." + "graph.invoke(None, new_config)" ] } ], diff --git a/docs/docs/how-tos/human_in_the_loop/wait-user-input.ipynb b/docs/docs/how-tos/human_in_the_loop/wait-user-input.ipynb index 562d6aad9..bbe14b4f1 100644 --- a/docs/docs/how-tos/human_in_the_loop/wait-user-input.ipynb +++ b/docs/docs/how-tos/human_in_the_loop/wait-user-input.ipynb @@ -597,7 +597,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.3" + "version": "3.11.4" } }, "nbformat": 4, diff --git a/docs/docs/how-tos/index.md b/docs/docs/how-tos/index.md deleted file mode 100644 index 5b3816182..000000000 --- a/docs/docs/how-tos/index.md +++ /dev/null @@ -1,324 +0,0 @@ ---- -title: How-to Guides -description: How to accomplish common tasks in LangGraph -search: - boost: 0.5 ---- - -# How-to Guides - -Here you’ll find answers to “How do I...?” types of questions. These guides are **goal-oriented** and concrete; they're meant to help you complete a specific task. For conceptual explanations see the [Conceptual guide](../concepts/index.md). For end-to-end walk-throughs see [Tutorials](../tutorials/index.md). For comprehensive descriptions of every class and function see the [API Reference](../reference/index.md). - -## LangGraph - -### Graph API Basics - -- [How to update graph state from nodes](state-reducers.ipynb) -- [How to create a sequence of steps](sequence.ipynb) -- [How to create branches for parallel execution](branching.ipynb) -- [How to create and control loops with recursion limits](recursion-limit.ipynb) -- [How to visualize your graph](visualization.ipynb) - -### Fine-grained Control - -These guides demonstrate LangGraph features that grant fine-grained control over the -execution of your graph. - -- [How to create map-reduce branches for parallel execution](map-reduce.ipynb) -- [How to update state and jump to nodes in graphs and subgraphs](command.ipynb) -- [How to add runtime configuration to your graph](configuration.ipynb) -- [How to add node retries](node-retries.ipynb) -- [How to return state before hitting recursion limit](return-when-recursion-limit-hits.ipynb) - -### Persistence - -[LangGraph Persistence](../concepts/persistence.md) makes it easy to persist state across graph runs (per-thread persistence) and across threads (cross-thread persistence). These how-to guides show how to add persistence to your graph. - -- [How to add thread-level persistence to your graph](persistence.ipynb) -- [How to add thread-level persistence to a subgraph](subgraph-persistence.ipynb) -- [How to add cross-thread persistence to your graph](cross-thread-persistence.ipynb) -- [How to use Postgres checkpointer for persistence](persistence_postgres.ipynb) -- [How to use MongoDB checkpointer for persistence](persistence_mongodb.ipynb) -- [How to create a custom checkpointer using Redis](persistence_redis.ipynb) - -See the below guides for how-to add persistence to your workflow using the [Functional API](../concepts/functional_api.md): - -- [How to add thread-level persistence (functional API)](persistence-functional.ipynb) -- [How to add cross-thread persistence (functional API)](cross-thread-persistence-functional.ipynb) - -### Memory - -LangGraph makes it easy to manage conversation [memory](../concepts/memory.md) in your graph. These how-to guides show how to implement different strategies for that. - -- [How to manage conversation history](memory/manage-conversation-history.ipynb) -- [How to delete messages](memory/delete-messages.ipynb) -- [How to add summary conversation memory](memory/add-summary-conversation-history.ipynb) -- [How to add long-term memory (cross-thread)](cross-thread-persistence.ipynb) -- [How to use semantic search for long-term memory](memory/semantic-search.ipynb) - -### Human-in-the-loop - -[Human-in-the-loop](../concepts/human_in_the_loop.md) functionality allows -you to involve humans in the decision-making process of your graph. These how-to guides show how to implement human-in-the-loop workflows in your graph. - -Key workflows: - -- [How to wait for user input](human_in_the_loop/wait-user-input.ipynb): A basic example that shows how to implement a human-in-the-loop workflow in your graph using the `interrupt` function. -- [How to review tool calls](human_in_the_loop/review-tool-calls.ipynb): Incorporate human-in-the-loop for reviewing/editing/accepting tool call requests before they executed using the `interrupt` function. - -Other methods: - -- [How to add static breakpoints](human_in_the_loop/breakpoints.ipynb): Use for debugging purposes. For [**human-in-the-loop**](../concepts/human_in_the_loop.md) workflows, we recommend the [`interrupt` function][langgraph.types.interrupt] instead. -- [How to edit graph state](human_in_the_loop/edit-graph-state.ipynb): Edit graph state using `graph.update_state` method. Use this if implementing a **human-in-the-loop** workflow via **static breakpoints**. -- [How to add dynamic breakpoints with `NodeInterrupt`](human_in_the_loop/dynamic_breakpoints.ipynb): **Not recommended**: Use the [`interrupt` function](../concepts/human_in_the_loop.md) instead. - -See the below guides for how-to implement human-in-the-loop workflows with the -[Functional API](../concepts/functional_api.md): - -- [How to wait for user input (Functional API)](wait-user-input-functional.ipynb) -- [How to review tool calls (Functional API)](review-tool-calls-functional.ipynb) - -### Time Travel - -[Time travel](../concepts/time-travel.md) allows you to replay past actions in your LangGraph application to explore alternative paths and debug issues. These how-to guides show how to use time travel in your graph. - -- [How to view and update past graph state](human_in_the_loop/time-travel.ipynb) - -### Streaming - -[Streaming](../concepts/streaming.md) is crucial for enhancing the responsiveness of applications built on LLMs. By displaying output progressively, even before a complete response is ready, streaming significantly improves user experience (UX), particularly when dealing with the latency of LLMs. - -- [How to stream](streaming.ipynb) -- [How to stream LLM tokens](streaming-tokens.ipynb) -- [How to stream LLM tokens from specific nodes](streaming-specific-nodes.ipynb) -- [How to stream data from within a tool](streaming-events-from-within-tools.ipynb) -- [How to stream from subgraphs](streaming-subgraphs.ipynb) -- [How to disable streaming for models that don't support it](disable-streaming.ipynb) - -### Tool calling - -[Tool calling](https://python.langchain.com/docs/concepts/tool_calling/) is a type of -[chat model](https://python.langchain.com/docs/concepts/chat_models/) API that accepts -tool schemas, along with messages, as input and returns invocations of those tools as -part of the output message. - -These how-to guides show common patterns for tool calling with LangGraph: - -- [How to call tools using ToolNode](tool-calling.ipynb) -- [How to handle tool calling errors](tool-calling-errors.ipynb) -- [How to pass runtime values to tools](pass-run-time-values-to-tools.ipynb) -- [How to pass config to tools](pass-config-to-tools.ipynb) -- [How to update graph state from tools](update-state-from-tools.ipynb) -- [How to handle large numbers of tools](many-tools.ipynb) - -### Subgraphs - -[Subgraphs](../concepts/low_level.md#subgraphs) allow you to reuse an existing graph from another graph. These how-to guides show how to use subgraphs: - -- [How to use subgraphs](subgraph.ipynb) -- [How to view and update state in subgraphs](subgraphs-manage-state.ipynb) -- [How to transform inputs and outputs of a subgraph](subgraph-transform-state.ipynb) - -### Multi-agent - -[Multi-agent systems](../concepts/multi_agent.md) are useful to break down complex LLM applications into multiple agents, each responsible for a different part of the application. These how-to guides show how to implement multi-agent systems in LangGraph: - -- [How to implement handoffs between agents](agent-handoffs.ipynb) -- [How to build a multi-agent network](multi-agent-network.ipynb) -- [How to add multi-turn conversation in a multi-agent application](multi-agent-multi-turn-convo.ipynb) - -See the [multi-agent tutorials](../tutorials/index.md#multi-agent-systems) for implementations of other multi-agent architectures. - -See the below guides for how to implement multi-agent workflows with the [Functional API](../concepts/functional_api.md): - -- [How to build a multi-agent network (functional API)](multi-agent-network-functional.ipynb) -- [How to add multi-turn conversation in a multi-agent application (functional API)](multi-agent-multi-turn-convo-functional.ipynb) - -### State Management - -- [How to use Pydantic model as graph state](state-model.ipynb) -- [How to define input/output schema for your graph](input_output_schema.ipynb) -- [How to pass private state between nodes inside the graph](pass_private_state.ipynb) - -### Other - -- [How to run graph asynchronously](async.ipynb) -- [How to force tool-calling agent to structure output](react-agent-structured-output.ipynb) -- [How to pass custom LangSmith run ID for graph runs](run-id-langsmith.ipynb) -- [How to integrate LangGraph with AutoGen, CrewAI, and other frameworks](autogen-integration.ipynb) - -See the below guide for how to integrate with other frameworks using the [Functional API](../concepts/functional_api.md): - -- [How to integrate LangGraph (functional API) with AutoGen, CrewAI, and other frameworks](autogen-integration-functional.ipynb) - -### Prebuilt Agent - -LangGraph comes with a [prebuilt][langgraph.prebuilt.chat_agent_executor.create_react_agent] implementation of a [tool calling agent](../concepts/agentic_concepts.md#tool-calling-agent). See [Agents](../agents/overview.md) guides for more information. - -!!! tip - - One of the big benefits of LangGraph is that you can easily create your own agent architectures. So while it's fine to start here to build an agent quickly, we would strongly recommend learning how to build your own agent so that you can take full advantage of LangGraph. - -Interested in further customizing the ReAct agent? This guide provides an -overview of its underlying implementation to help you customize for your own needs: - -- [How to create prebuilt ReAct agent from scratch](react-agent-from-scratch.ipynb) - -See the below guide for how-to build ReAct agents with the [Functional API](../concepts/functional_api.md): - -- [How to create a ReAct agent from scratch (Functional API)](react-agent-from-scratch-functional.ipynb) - -## LangGraph Platform - -This section includes how-to guides for LangGraph Platform. - -LangGraph Platform is a commercial solution for deploying agentic applications in production, built on the open-source LangGraph framework. - -The LangGraph Platform offers a few different deployment options described in the [deployment options guide](../concepts/deployment_options.md). - -!!! tip - - * LangGraph is an MIT-licensed open-source library, which we are committed to maintaining and growing for the community. - * You can always deploy LangGraph applications on your own infrastructure using the open-source LangGraph project without using LangGraph Platform. - -### Application Structure - -Learn how to set up your app for deployment to LangGraph Platform: - -- [How to set up app for deployment (requirements.txt)](../cloud/deployment/setup.md) -- [How to set up app for deployment (pyproject.toml)](../cloud/deployment/setup_pyproject.md) -- [How to set up app for deployment (JavaScript)](../cloud/deployment/setup_javascript.md) -- [How to add semantic search](../cloud/deployment/semantic_search.md) -- [How to customize Dockerfile](../cloud/deployment/custom_docker.md) -- [How to test locally](../cloud/deployment/test_locally.md) -- [How to rebuild graph at runtime](../cloud/deployment/graph_rebuild.md) -- [How to use LangGraph Platform to deploy CrewAI, AutoGen, and other frameworks](autogen-langgraph-platform.ipynb) - -### Deployment - -LangGraph applications can be deployed using LangGraph Platform, which provides a range of services to help you deploy, manage, and scale your applications. - -- [How to deploy to Cloud SaaS](../cloud/deployment/cloud.md) -- [How to deploy the Self-Hosted Data Plane](../cloud/deployment/self_hosted_data_plane.md) -- [How to deploy the Self-Hosted Control Plane](../cloud/deployment/self_hosted_control_plane.md) -- [How to deploy a Standalone Container](../cloud/deployment/standalone_container.md) -- [How to interact with the deployment using RemoteGraph](./use-remote-graph.md) -- [How to add TTLs to your LangGraph application](./ttl/configure_ttl.md) - -### Authentication & Access Control - -- [How to add custom authentication](./auth/custom_auth.md) -- [How to update the security schema of your OpenAPI spec](./auth/openapi_security.md) - -### Modifying the API - -- [How to add custom routes](./http/custom_routes.md) -- [How to add custom middleware](./http/custom_middleware.md) -- [How to add custom lifespan events](./http/custom_lifespan.md) - -### Assistants - -[Assistants](../concepts/assistants.md) is a configured instance of a template. - -See [SDK Reference](../cloud/reference/sdk/python_sdk_ref.md#langgraph_sdk.client.AssistantsClient) -for supported endpoints and other details. - -- [How to configure agents](../cloud/how-tos/configuration_cloud.md) -- [How to version assistants](../cloud/how-tos/assistant_versioning.md) - -### Threads - -See [SDK Reference](../cloud/reference/sdk/python_sdk_ref.md#langgraph_sdk.client.ThreadsClient) -for supported endpoints and other details. - -- [How to copy threads](../cloud/how-tos/copy_threads.md) -- [How to check status of your threads](../cloud/how-tos/check_thread_status.md) - -### Runs - -LangGraph Platform supports multiple types of runs besides streaming runs. - -- [How to run an agent in the background](../cloud/how-tos/background_run.md) -- [How to run multiple agents in the same thread](../cloud/how-tos/same-thread.md) -- [How to create cron jobs](../cloud/how-tos/cron_jobs.md) -- [How to create stateless runs](../cloud/how-tos/stateless_runs.md) -- [How to use headers as runtime configuration](../cloud/how-tos/configurable_headers.md) - -### Streaming {#streaming_1} - -Streaming the results of your LLM application is vital for ensuring a good user experience, especially when your graph may call multiple models and take a long time to fully complete a run. Read about how to stream values from your graph in these how to guides: - -- [How to stream values](../cloud/how-tos/stream_values.md) -- [How to stream updates](../cloud/how-tos/stream_updates.md) -- [How to stream messages](../cloud/how-tos/stream_messages.md) -- [How to stream events](../cloud/how-tos/stream_events.md) -- [How to stream in debug mode](../cloud/how-tos/stream_debug.md) -- [How to stream multiple modes](../cloud/how-tos/stream_multiple.md) - -### Frontend and Generative UI - -With LangGraph Platform you can integrate LangGraph agents into your React applications and colocate UI components with your agent code. - -- [How to integrate LangGraph into your React application](../cloud/how-tos/use_stream_react.md) -- [How to implement Generative User Interfaces with LangGraph](../cloud/how-tos/generative_ui_react.md) - -### Human-in-the-loop {#human-in-the-loop-1} - -[Human-in-the-loop](../concepts/human_in_the_loop.md) functionality allows -you to involve humans in the decision-making process of your graph. These how-to guides show how to implement human-in-the-loop workflows in your graph. - -- [How to wait for user input](../cloud/how-tos/human_in_the_loop_user_input.md) -- [How to review tool calls](../cloud/how-tos/human_in_the_loop_review_tool_calls.md) -- [How to add static breakpoints](../cloud/how-tos/human_in_the_loop_breakpoint.md) - -### Time Travel - -[Time travel](../concepts/time-travel.md) allows you to replay past actions in your LangGraph application to explore alternative paths and debug issues. These how-to guides show how to use time travel in your graph. - -- [How to edit graph state](../cloud/how-tos/human_in_the_loop_edit_state.md) -- [How to replay and branch from prior states](../cloud/how-tos/human_in_the_loop_time_travel.md) - -### Double-texting - -Graph execution can take a while, and sometimes users may change their mind about the input they wanted to send before their original input has finished running. For example, a user might notice a typo in their original request and will edit the prompt and resend it. Deciding what to do in these cases is important for ensuring a smooth user experience and preventing your graphs from behaving in unexpected ways. - -- [How to use the interrupt option](../cloud/how-tos/interrupt_concurrent.md) -- [How to use the rollback option](../cloud/how-tos/rollback_concurrent.md) -- [How to use the reject option](../cloud/how-tos/reject_concurrent.md) -- [How to use the enqueue option](../cloud/how-tos/enqueue_concurrent.md) - -### Webhooks - -- [How to integrate webhooks](../cloud/how-tos/webhooks.md) - -### Cron Jobs - -- [How to create cron jobs](../cloud/how-tos/cron_jobs.md) - -### LangGraph Studio - -LangGraph Studio is a built-in UI for visualizing, testing, and debugging your agents. - -- [How to connect to a LangGraph Platform deployment](../cloud/how-tos/test_deployment.md) -- [How to connect to a local dev server](../how-tos/local-studio.md) -- [How to connect to a local deployment (Docker)](../cloud/how-tos/test_local_deployment.md) -- [How to interact with threads in LangGraph Studio](../cloud/how-tos/threads_studio.md) -- [How to add nodes as dataset examples in LangGraph Studio](../cloud/how-tos/datasets_studio.md) -- [How to engineer prompts in LangGraph Studio](../cloud/how-tos/iterate_graph_studio.md) -- [How to test your agent against remote traces](../cloud/how-tos/clone_traces_studio.md) - -## Troubleshooting - -These are the guides for resolving common errors you may find while building with LangGraph. Errors referenced below will have an `lc_error_code` property corresponding to one of the below codes when they are thrown in code. - -- [GRAPH_RECURSION_LIMIT](../troubleshooting/errors/GRAPH_RECURSION_LIMIT.md) -- [INVALID_CONCURRENT_GRAPH_UPDATE](../troubleshooting/errors/INVALID_CONCURRENT_GRAPH_UPDATE.md) -- [INVALID_GRAPH_NODE_RETURN_VALUE](../troubleshooting/errors/INVALID_GRAPH_NODE_RETURN_VALUE.md) -- [MULTIPLE_SUBGRAPHS](../troubleshooting/errors/MULTIPLE_SUBGRAPHS.md) -- [INVALID_CHAT_HISTORY](../troubleshooting/errors/INVALID_CHAT_HISTORY.md) - -### LangGraph Platform Troubleshooting - -These guides provide troubleshooting information for errors that are specific to the LangGraph Platform. - -- [INVALID_LICENSE](../troubleshooting/errors/INVALID_LICENSE.md) diff --git a/docs/docs/how-tos/input_output_schema.ipynb b/docs/docs/how-tos/input_output_schema.ipynb deleted file mode 100644 index be19bee1d..000000000 --- a/docs/docs/how-tos/input_output_schema.ipynb +++ /dev/null @@ -1,153 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "f262985e-e973-4a27-9c9e-dbb3a06a35b7", - "metadata": {}, - "source": [ - "# How to define input/output schema for your graph\n", - "\n", - "
    \n", - "

    Prerequisites

    \n", - "

    \n", - " This guide assumes familiarity with the following:\n", - "

    \n", - "

    \n", - "
    \n", - "\n", - "By default, `StateGraph` operates with a single schema, and all nodes are expected to communicate using that schema. However, it's also possible to define distinct input and output schemas for a graph.\n", - "\n", - "When distinct schemas are specified, an internal schema will still be used for communication between nodes. The input schema ensures that the provided input matches the expected structure, while the output schema filters the internal data to return only the relevant information according to the defined output schema.\n", - "\n", - "In this example, we'll see how to define distinct input and output schema.\n", - "\n", - "## Setup\n", - "\n", - "First, let's install the required packages" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "678286f2", - "metadata": {}, - "outputs": [], - "source": [ - "%%capture --no-stderr\n", - "%pip install -U langgraph" - ] - }, - { - "cell_type": "markdown", - "id": "16aad512", - "metadata": {}, - "source": [ - "
    \n", - "

    Set up LangSmith for LangGraph development

    \n", - "

    \n", - " Sign up for LangSmith to quickly spot issues and improve the performance of your LangGraph projects. LangSmith lets you use trace data to debug, test, and monitor your LLM apps built with LangGraph — read more about how to get started here. \n", - "

    \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "id": "72689b3d", - "metadata": {}, - "source": [ - "## Define and use the graph" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "6ec0eb77-874e-443e-8c73-93125b515106", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'answer': 'bye'}\n" - ] - } - ], - "source": [ - "from langgraph.graph import StateGraph, START, END\n", - "from typing_extensions import TypedDict\n", - "\n", - "\n", - "# Define the schema for the input\n", - "class InputState(TypedDict):\n", - " question: str\n", - "\n", - "\n", - "# Define the schema for the output\n", - "class OutputState(TypedDict):\n", - " answer: str\n", - "\n", - "\n", - "# Define the overall schema, combining both input and output\n", - "class OverallState(InputState, OutputState):\n", - " pass\n", - "\n", - "\n", - "# Define the node that processes the input and generates an answer\n", - "def answer_node(state: InputState):\n", - " # Example answer and an extra key\n", - " return {\"answer\": \"bye\", \"question\": state[\"question\"]}\n", - "\n", - "\n", - "# Build the graph with input and output schemas specified\n", - "builder = StateGraph(OverallState, input=InputState, output=OutputState)\n", - "builder.add_node(answer_node) # Add the answer node\n", - "builder.add_edge(START, \"answer_node\") # Define the starting edge\n", - "builder.add_edge(\"answer_node\", END) # Define the ending edge\n", - "graph = builder.compile() # Compile the graph\n", - "\n", - "# Invoke the graph with an input and print the result\n", - "print(graph.invoke({\"question\": \"hi\"}))" - ] - }, - { - "cell_type": "markdown", - "id": "6a68836f-98e1-4684-a8a6-c1473c73460c", - "metadata": {}, - "source": [ - "Notice that the output of invoke only includes the output schema." - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.4" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/docs/docs/how-tos/local-studio.md b/docs/docs/how-tos/local-studio.md deleted file mode 100644 index 2f83f4c23..000000000 --- a/docs/docs/how-tos/local-studio.md +++ /dev/null @@ -1,82 +0,0 @@ -# How to connect a local agent to LangGraph Studio - -This guide shows you how to connect your local agent to [LangGraph Studio](../concepts/langgraph_studio.md) for visualization, interaction, and debugging using the development server. - -## Setup your application - -First, you will need to setup your application in the proper format. -This means defining a `langgraph.json` file which contains paths to your agent(s). -See [this guide](../concepts/application_structure.md) for information on how to do so. - -## Install langgraph-cli - -You will need to install [`langgraph-cli`](../cloud/reference/cli.md#langgraph-cli) (version `0.1.55` or higher). -You will need to make sure to install the `inmem` extras. - -???+ note "Minimum version" - -The minimum version to use the `inmem` extra with `langgraph-cli` is `0.1.55`. -Python 3.11 or higher is required. - -```shell -pip install -U "langgraph-cli[inmem]" -``` - -## Run the development server - -1. Navigate to your project directory (where `langgraph.json` is located) - -2. Start the server: - ```bash - langgraph dev - ``` - -This will look for the `langgraph.json` file in your current directory. -In there, it will find the paths to the graph(s), and start those up. -It will then automatically connect to the cloud-hosted studio. - -## Use the studio - -After connecting to the studio, a browser window should automatically pop up. -This will use the cloud hosted studio UI to connect to your local development server. -Your graph is still running locally, the UI is connecting to visualizing the agent and threads that are defined locally. - -The graph will always use the most up-to-date code, so you will be able to change the underlying code and have it automatically reflected in the studio. -This is useful for debugging workflows. -You can run your graph in the UI until it messes up, go in and change your code, and then rerun from the node that failed. - -# (Optional) Attach a debugger - -For step-by-step debugging with breakpoints and variable inspection: - -```bash -# Install debugpy package -pip install debugpy - -# Start server with debugging enabled -langgraph dev --debug-port 5678 -``` - -Then attach your preferred debugger: - -=== "VS Code" - Add this configuration to `launch.json`: - ```json - { - "name": "Attach to LangGraph", - "type": "debugpy", - "request": "attach", - "connect": { - "host": "0.0.0.0", - "port": 5678 - } - } - ``` - Specify the port number you chose in the previous step. - -=== "PyCharm" - 1. Go to Run → Edit Configurations - 2. Click + and select "Python Debug Server" - 3. Set IDE host name: `localhost` - 4. Set port: `5678` (or the port number you chose in the previous step) - 5. Click "OK" and start debugging diff --git a/docs/docs/how-tos/map-reduce.ipynb b/docs/docs/how-tos/map-reduce.ipynb deleted file mode 100644 index c059f9b9c..000000000 --- a/docs/docs/how-tos/map-reduce.ipynb +++ /dev/null @@ -1,317 +0,0 @@ -{ - "cells": [ - { - "attachments": { - "a108ffc8-6136-4cd7-a6f9-579e41a5a786.png": { - "image/png": "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gAACCCCAgBEgiIAbAQEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQSMAEEE3AgIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgggYAQIIuBGQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEjQBABNwICCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIGAGCCLgREEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQMAIEETAjYAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACRoAgAm4EBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEDACBBFwIyCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIICAESCIgBsBAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBIwAQQTcCAgggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCBgBAgi4EZAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAASNAEAE3AgIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggYAYIIuBEQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAwAgQRMCNgAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAJGgCACbgQEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQMAIEEXAjIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggIARIIiAGwEBBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEjABBBNwICCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIGAECCLgRkAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABI0AQATcCAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCBgBggi4ERBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEDACBBEwI2AAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAkaAIAJuBAQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBAwAgQRcCMggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAgBEgiIAbAQEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQSMAEEE3AgIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgggYAQIIuBGQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEjQBABNwICCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIGAGCCLgREEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQMAIEETAjYAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACRoAgAm4EBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEDACBBFwIyCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIICAESCIgBsBAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBIwAQQTcCAgggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCBgBAgi4EZAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAASNAEAE3AgIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggYAYIIuBEQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAwAgQRMCNgAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAJGgCACbgQEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQMAIEEXAjIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggIARIIiAGwEBBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEjABBBNwICCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIGAECCLgRkAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABI0AQATcCAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCBgBggi4ERBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEDACBBEwI2AAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAkaAIAJuBAQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBAwAgQRcCMggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAgBEgiIAbAQEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQSMAEEE3AgIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgggYAQIIuBGQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEjQBABNwICCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIGAGCCLgREEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQMAIEETAjYAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACRoAgAm4EBBBAAAEEEEAAgTYXSP/qC9k29xqpKipq87Y7U4NVhYVSumtnZ+oSfUEAAQQQQAABBBBAAAEEEEAAAQQQQAABBA5LgCCCw+LjYAQQQAABBBBAAIHGBPJ/XyKl8ZslZ/Evje3uNttS331btl01W4p37Og218SFIIAAAggggAACCCCAAAIIIIAAAggggEDPFiCIoGd//lw9AggggAACCCDQPgI11abdqry89mn/MFot2LBBtt/yNylJbIOBfzd305OizRsPo0ccigACCCCAAAIIIIAAAggggAACCCCAAAIIdB4B187TFXqCAAIIIIAAAggg0G0EquuCCAqWLhEnVzcpT90n1bm54myxiGXgIIn48zkddql5v/8qxevXyM67bpfBr7whrn5+re6LW0CgObY8aU+r2+BABBBAAAEEEEAAAQQQQAABBBBAAAEEEECgMwkQRNCZPg36ggAC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BBBAAAEEEEAAAQQQQAABBBBAAAEEEOhrAgQR9LUnzngRQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBAIIRAeop5qBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEOhjAgQR9LEHznARQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBAIJUAQQSgZ6hFAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEOhjAgQR9LEHznARQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBAIJUAQQSgZ6hFAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEOhjAgQR9LEHznARQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBAIJUAQQSgZ6hFAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEOhjAgQR9LEHznARQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBAIJUAQQSgZ6hFAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEOhjAgQR9LEHznARQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBAIJUAQQSgZ6hFAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEOhjAgQR9LEHznARQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBAIJUAQQSgZ6hFAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEOhjAgQR9LEHznARQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBAIJUAQQSgZ6hFAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEOhjAgQR9LEHznARQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBAIJUAQQSgZ6hFAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEOhjAgQR9LEHznARQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBAIJUAQQSgZ6hFAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEOhjAgQR9LEHznARQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBAIJUAQQSgZ6hFAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEOhjAgQR9LEHznARQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBAIJUAQQSgZ6hFAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEOhjAgQR9LEHznARQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBAIJUAQQSgZ6hFAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEOhjAgQR9LEHznARQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBAIJUAQQSgZ6hFAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEOhjAgQR9LEHznARQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBAIJUAQQSgZ6hFAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEOhjAgQR9LEHznARQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBAIJUAQQSgZ6hFAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEOhjAgQR9LEHznARQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBAIJUAQQSgZ6hFAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEOhjAgQR9LEHznARQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBAIJUAQQSgZ6hFAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEOhjAgQR9LEHznARQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBAIJUAQQSgZ6hFAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEOhjAv8PZqu/RV/yWTYAAAAASUVORK5CYII=" - } - }, - "cell_type": "markdown", - "id": "95a87145-34d0-4f97-b45f-5c9fd8532c8a", - "metadata": {}, - "source": [ - "# How to create map-reduce branches for parallel execution\n", - "\n", - "
    \n", - "

    Prerequisites

    \n", - "

    \n", - " This guide assumes familiarity with the following:\n", - "

    \n", - "

    \n", - "
    \n", - "\n", - "\n", - "[Map-reduce](https://en.wikipedia.org/wiki/MapReduce) operations are essential for efficient task decomposition and parallel processing. This approach involves breaking a task into smaller sub-tasks, processing each sub-task in parallel, and aggregating the results across all of the completed sub-tasks. \n", - "\n", - "Consider this example: given a general topic from the user, generate a list of related subjects, generate a joke for each subject, and select the best joke from the resulting list. In this design pattern, a first node may generate a list of objects (e.g., related subjects) and we want to apply some other node (e.g., generate a joke) to all those objects (e.g., subjects). However, two main challenges arise.\n", - " \n", - "(1) the number of objects (e.g., subjects) may be unknown ahead of time (meaning the number of edges may not be known) when we lay out the graph and (2) the input State to the downstream Node should be different (one for each generated object).\n", - " \n", - "LangGraph addresses these challenges [through its `Send` API](https://langchain-ai.github.io/langgraph/concepts/low_level/#send). By utilizing conditional edges, `Send` can distribute different states (e.g., subjects) to multiple instances of a node (e.g., joke generation). Importantly, the sent state can differ from the core graph's state, allowing for flexible and dynamic workflow management. \n", - "\n", - "![Screenshot 2024-07-12 at 9.45.40 AM.png](attachment:a108ffc8-6136-4cd7-a6f9-579e41a5a786.png)" - ] - }, - { - "cell_type": "markdown", - "id": "66c58b5f", - "metadata": {}, - "source": [ - "## Setup\n", - "\n", - "First, let's install the required packages and set our API keys" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "3eb04cd1", - "metadata": {}, - "outputs": [], - "source": [ - "%%capture --no-stderr\n", - "%pip install -U langchain-anthropic langgraph" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "dc292321", - "metadata": {}, - "outputs": [], - "source": [ - "import os\n", - "import getpass\n", - "\n", - "\n", - "def _set_env(name: str):\n", - " if not os.getenv(name):\n", - " os.environ[name] = getpass.getpass(f\"{name}: \")\n", - "\n", - "\n", - "_set_env(\"ANTHROPIC_API_KEY\")" - ] - }, - { - "cell_type": "markdown", - "id": "b87911bb", - "metadata": {}, - "source": [ - "
    \n", - "

    Set up LangSmith for LangGraph development

    \n", - "

    \n", - " Sign up for LangSmith to quickly spot issues and improve the performance of your LangGraph projects. LangSmith lets you use trace data to debug, test, and monitor your LLM apps built with LangGraph — read more about how to get started here. \n", - "

    \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "id": "b4e782a0", - "metadata": {}, - "source": [ - "## Define the graph" - ] - }, - { - "cell_type": "markdown", - "id": "66803b55", - "metadata": {}, - "source": [ - "
    \n", - "

    Using Pydantic with LangChain

    \n", - "

    \n", - " This notebook uses Pydantic v2 BaseModel, which requires langchain-core >= 0.3. Using langchain-core < 0.3 will result in errors due to mixing of Pydantic v1 and v2 BaseModels.\n", - "

    \n", - "
    " - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "0f0f78e4-423d-4e2d-aa1a-01efaec4715f", - "metadata": {}, - "outputs": [], - "source": [ - "import operator\n", - "from typing import Annotated\n", - "from typing_extensions import TypedDict\n", - "\n", - "from langchain_anthropic import ChatAnthropic\n", - "\n", - "from langgraph.types import Send\n", - "from langgraph.graph import END, StateGraph, START\n", - "\n", - "from pydantic import BaseModel, Field\n", - "\n", - "# Model and prompts\n", - "# Define model and prompts we will use\n", - "subjects_prompt = \"\"\"Generate a comma separated list of between 2 and 5 examples related to: {topic}.\"\"\"\n", - "joke_prompt = \"\"\"Generate a joke about {subject}\"\"\"\n", - "best_joke_prompt = \"\"\"Below are a bunch of jokes about {topic}. Select the best one! Return the ID of the best one.\n", - "\n", - "{jokes}\"\"\"\n", - "\n", - "\n", - "class Subjects(BaseModel):\n", - " subjects: list[str]\n", - "\n", - "\n", - "class Joke(BaseModel):\n", - " joke: str\n", - "\n", - "\n", - "class BestJoke(BaseModel):\n", - " id: int = Field(description=\"Index of the best joke, starting with 0\", ge=0)\n", - "\n", - "\n", - "model = ChatAnthropic(model=\"claude-3-5-sonnet-20240620\")\n", - "\n", - "# Graph components: define the components that will make up the graph\n", - "\n", - "\n", - "# This will be the overall state of the main graph.\n", - "# It will contain a topic (which we expect the user to provide)\n", - "# and then will generate a list of subjects, and then a joke for\n", - "# each subject\n", - "class OverallState(TypedDict):\n", - " topic: str\n", - " subjects: list\n", - " # Notice here we use the operator.add\n", - " # This is because we want combine all the jokes we generate\n", - " # from individual nodes back into one list - this is essentially\n", - " # the \"reduce\" part\n", - " jokes: Annotated[list, operator.add]\n", - " best_selected_joke: str\n", - "\n", - "\n", - "# This will be the state of the node that we will \"map\" all\n", - "# subjects to in order to generate a joke\n", - "class JokeState(TypedDict):\n", - " subject: str\n", - "\n", - "\n", - "# This is the function we will use to generate the subjects of the jokes\n", - "def generate_topics(state: OverallState):\n", - " prompt = subjects_prompt.format(topic=state[\"topic\"])\n", - " response = model.with_structured_output(Subjects).invoke(prompt)\n", - " return {\"subjects\": response.subjects}\n", - "\n", - "\n", - "# Here we generate a joke, given a subject\n", - "def generate_joke(state: JokeState):\n", - " prompt = joke_prompt.format(subject=state[\"subject\"])\n", - " response = model.with_structured_output(Joke).invoke(prompt)\n", - " return {\"jokes\": [response.joke]}\n", - "\n", - "\n", - "# Here we define the logic to map out over the generated subjects\n", - "# We will use this as an edge in the graph\n", - "def continue_to_jokes(state: OverallState):\n", - " # We will return a list of `Send` objects\n", - " # Each `Send` object consists of the name of a node in the graph\n", - " # as well as the state to send to that node\n", - " return [Send(\"generate_joke\", {\"subject\": s}) for s in state[\"subjects\"]]\n", - "\n", - "\n", - "# Here we will judge the best joke\n", - "def best_joke(state: OverallState):\n", - " jokes = \"\\n\\n\".join(state[\"jokes\"])\n", - " prompt = best_joke_prompt.format(topic=state[\"topic\"], jokes=jokes)\n", - " response = model.with_structured_output(BestJoke).invoke(prompt)\n", - " return {\"best_selected_joke\": state[\"jokes\"][response.id]}\n", - "\n", - "\n", - "# Construct the graph: here we put everything together to construct our graph\n", - "graph = StateGraph(OverallState)\n", - "graph.add_node(\"generate_topics\", generate_topics)\n", - "graph.add_node(\"generate_joke\", generate_joke)\n", - "graph.add_node(\"best_joke\", best_joke)\n", - "graph.add_edge(START, \"generate_topics\")\n", - "graph.add_conditional_edges(\"generate_topics\", continue_to_jokes, [\"generate_joke\"])\n", - "graph.add_edge(\"generate_joke\", \"best_joke\")\n", - "graph.add_edge(\"best_joke\", END)\n", - "app = graph.compile()" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "37ed1f71-63db-416f-b715-4617b33d4b7f", - "metadata": {}, - "outputs": [ - { - "data": { - "image/jpeg": "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qjvOGqfWsc26VbZ+WewMe8zCXlHEta1p1cRoAFc49j1txOx0Nns9FFb7XRRNgp6WBujI2DoA9vWrRExI2Cx9lvxIof7Wo/fyLIWPst+JFD/a1H7+RWveYnvj0tJ6FWiIvNQ1eVfFi8fU5v2Cp7Gvi5avqkX7AVjUQR1UEkMrd+KRpY5p6wRoQoOGlv8AjNPDbm2Sa+U9OxsUNZR1ELXPYBo3lGyvZo/QcdCQenhruj0NHmJsTYrSa13zT1WjfFG9RaTna/epl17VRe/Tna/epl17VRe/XfU7UeKPco3aLSc7X71MuvaqL36c7X71MuvaqL36anajxR7lG7RaTna/epl17VRe/Tna/epl17VRe/TU7UeKPco3aLSc7X71MuvaqL36c7X71MuvaqL36anajxR7lG7RTFmyy7X60UVzo8NvJpKyFlRCZpKWJ5Y5oc3eY+YOadD8FwBHQQFmc7X71MuvaqL36anajxR7lG7RaTna/epl17VRe/Tna/epl17VRe/TU7UeKPco3aLSc7X71MuvaqL36c7X71MuvaqL36anajxR7lG7RaTna/epl17VRe/Tna/epl17VRe/TU7UeKPco3ax9lvxIof7Wo/fyLXNq8krTyUGMT0EjuAqLhVQGJn+8RFI9ztPMANejUdIq8es0ePWWjt0T3Stp2bpkf8ACe7pc4/OSSfzrjfzFm61KxWZid0xPCuHecIbFERecqIiICIiAiIgIiICIiCf2fTiqwTHZhPcaoSW+nfy94j5Otk1jad6dug3ZD0uGg0OqoFObN6gVez3GZ21dfcGyW2neKu6s3KubWNp35m9Uh6XDqJKo0BERAREQEREBERAREQEREBERAREQEREBERBObN6xlx2e4zVR19ZdI57bTyNrrjHydTUAxtIklb/AFXu6SOokqjU7s6recsAxur79rLly9up5e/LhCIaifWNp35WDQNeekt6iSFRICIiAiIgIiICIiAiIgIiICKan2l4lTSujlya0Me0kFprY9QegjpX5+NLDvWm0dtj9q0bPfT/AKTlKaTgqUUt40sO9abR22P2p40sO9abR22P2ps991JylOrOCpRS3jSw71ptHbY/anjSw71ptHbY/amz33UnKTVnBUrVZHldkw+ijrL9eLfZKSSQQsqLjVMp43PIJDA55ALtGuOnToD5lq/Glh3rTaO2x+1ca7rmzYbt42H3rH4MltD7xSkXK1/jsf8ArUbXbrfhf1muez/n16k2e+6k5Sas4On7INpOLZpiljprLl9Jk1e22QzS79VG6uc3caDJPE1xcx2rhvAjg52iv14t/wAnzhWMbFtltReMgvNsoMsyGQSVFPU1MbJqWnYSIonAnVpJ3nkf7zQeLV6p8aWHetNo7bH7U2e+6k5Sas4KlFLeNLDvWm0dtj9qeNLDvWm0dtj9qbPfdScpNWcFSilvGlh3rTaO2x+1PGlh3rTaO2x+1NnvupOUmrOCpRS3jSw71ptHbY/avpu1DD3u0GUWgn67H7U2e+6k5SjVnBToviGaOoiZLE9ssT2hzHsOrXA8QQesL7WdAiIgKT2jTONvtdAXOEFxuEdLOGkjfj3XvcwkHoduaHzgkdBVYo7aN8PF/wAsM/czLVo3Ox/ehMcWZFEyCNscbGxxtGjWtGgA8wC+kRaUCIiAiIgIiICIiAiIgIiICEAggjUFEQa/CiKHI8gtUH4OiiZT1kcIGjY3SmUP3R1AmLe0Gg1c49JKs1FYr8f8l+oUH7dUrVZ9K536R6QtPEREWRUUdtG+Hi/5YZ+5mVio7aN8PF/ywz9zMtWi87H19ExxZykNqW0SLZpjMVx5vlu1dV1tPbaC3QvbG6pqp5BHEzfdwYNTqXHoAJ0PQq9cl7qahgrtjN05eqpKDkamknjraw1DBTPbUMIkbJAx8kT29LZAxwaeLgW6rRPBCfn7qKTGKXNfDLG6fHrjjk9BRNooruyZtXPVhxi0meyNjI9ACXuI3Q2QuA3RrrKfux7e2y5dLU2q11V1sFoN7FPYcigudNUwCRsbm8vG0cnI1zm6tczocCCR0Q2zXG37asZym2219IMit10t2QU2bxV1RdaO410RPJxSvmhhLhGyMMLGDda2QacdQes5ds72hbR9kub43fIcQtdyu1AKS380yVDomuOu+6aR8YdofJ0a1h00PF2vDlE2p4DZU+3eosmQXG25tjngpFBYp8igqY69tYJKWFzRM2QNY3clbvsO60vB1OjjoprAu64tmYZdj9nqaG00sOQSOioH27JKW41UT+TdI1tVTxeVCXNaRqC8B2jSRqqbaVsUm2k5nDU1dTDFYpcWuWP1QY93fAfUuhLXsG7ukNEbjxI47vA8dP12V4xtFxt9stmT+CVVaLbS97C421k4rawtaGxyOY5oZEdBq4Bz9SeGgVv3VGv2bbb8p2k4JJl1LgMVJanUk8tKya+ME1TNHJubmjomtZGdHnlHOB8n4GhBOjtfdKV+Z4ltFp7ZbLXSZbjlqNfELffIbjRyMc2TR7ahkZG+wxu1jczpDR0O1GZFsEvb+5ah2aTXCgjvMcTQ6ZpkfSTFtXy/JPO615je0bjuGujncD1/3HNjGU1OY5Pdcgbjlqt9+xkWB1Dj/KnvMse/cLS9jRIC2aQk6M03WNDTxcn7tww7b3QlzwfYdh+QZtb7fFe71HSU1ua69RxxVzn0zZDUTzSRxspwQHucNHgcAC4uAVdsW270O16tv1sbDQU92s3IPqBabtFc6SSOUO3HR1EYAJ1jeC0taQQOGhBUWzYptBrMEwujq6zGqfJsFmp3WSphM8tLXRMgdBIyqa5jTHykZHwN7dPQug2vKbvglkkrM+o6Gnqamp5Ongw+211xayMMB0kLIS8nUPO8WNbxA6eJRXpFRnVVdKLELrNZqFlxuTYDyVM+tNHva8HETBj9whpLgd08QB16rkWIbcaw7PtmFvx6wVuTZRkdmFdFSXS7gOip4mMEk1VVmPVzi57BqI9XOceAVFk/dF4PbLDXS1tTeLe10L2RGvx+4UomkLTuxRmWBoc89TAdToeGgKhtn2yXMbLgWyHI7Ay30eW2PGxaq61X4yxRTQTNieWOexrnRyMfG0/BPS4HRJms7h+WRd0BFWZBs6u9xqKrDqS2X68W7JrdLV6xRSU1unkLHuZo2ZmvJyMOnHVpAB4KmyHumG4thGN3i72Kms11yeeXmi2Xe8RUbO9mjfE9TPI0NgJYWEsAe4GRrRvEnTRU3cuVd1uGM1uVSWa/Pdk9fk2Q0r2P73fJNSmGKKBjmnebGWwfDI1DCek6L9vEBmNno8YktN2tFXcMIr6uPHRdnSyRVVpqGNaaWqIZqx8YDWtkZv8ACJhI1JAj9wvtiu2yg2xUt7ZBDS09xs1Synq47fcYrhSu32B7HxVEfkvaRqOhpBa4EDRdJU5glNkVPZ5DlEFlpro+ZzhFYhIYGR6DdaXSAOe7p1dutHEcOCo10jhvGtxX4/5L9QoP26pWqisV+P8Akv1Cg/bqlarhpXO/Sz/5ha1xERFkVFHbRvh4v+WGfuZlYqT2iwO5vtlduOdDbq+OqnLASWx7r2OdoASQ3f1PzAnqWrRudj+9CY4slF8QzR1ETZYpGyxuGrXsIII+Yhfa0oEREBERAREQEREBERAREQERfxzg0EkgAcST1INdivx/yX6hQft1StVGYSBX5Ff7tB5dFKyno45h8GR0RlLy3zgGXd1Go1aR1FWaz6Vzv0j0haeIiIsioiIgm6nZriNZM6WfF7PLK46ue+giJJ6dSd1fl4q8M9U7J+j4vuqpRaNovo/3nOU1nFLeKvDPVOyfo+L7qeKvDPVOyfo+L7qqUTaL7rznJWcUt4q8M9U7J+j4vup4q8M9U7J+j4vuqpRNovuvOclZxS3irwz1Tsn6Pi+6nirwz1Tsn6Pi+6qlE2i+685yVnFx7YZs6xa6bFsDrK7H7VcK2osVFLPV1FHFJJM8wMLnudod4kkknU669JVx4q8M9U7J+j4vurU9z65zthGzsvdvvOPUBLuPE97s4+Vx/v4q/TaL7rznJWcUt4q8M9U7J+j4vup4q8M9U7J+j4vuqpRNovuvOclZxS3irwz1Tsn6Pi+6nirwz1Tsn6Pi+6qlE2i+685yVnFLeKvDPVOyfo+L7q+o9l+HRPDmYrZWuHWKCL7qp0TaL7rznJWcXxFEyCJkcbGxxsAa1jBoGgdAA6gvtEWdAiIgIiICIiAiIgIiICIiDn/c9tLNg2zpro+RcMeoAY9CNz8XZw48eHz8V0Bc97nlhi2CbOWFjoy3HbeCx/wm/i7OB6OK6EgIiICIiAiIgIiICIiAiIgIiICIiAiIgIi493Vu0rNNkGx+ty7B7bbLpW22eOStgukUkrBSHVr3NbHIw7wcYzrroGh/DrAUPc9tDdg+zoANAGPUAAZvbo/F2dG9x0+nj510BeU/8nttNzrabspY+/0FooMWscEFls76OnlZUVPIxhr3yOfK5pAAaPJaNXF3RpovViAiIgIiICIiAiIgIiICIiAtZkt68HrLPXCE1MjSyOKEHd5SR7wxjSdDoC5zQTodBqdCtmpLah8Vofyra/4+nXe4sxbvbFi1wmY9UxvlgOoMhqgHzZXWUsx4ujoKWmbE08ODRJE92nTpq4lfPM999dLx2ah/l1u0Xoa/Zjwx7FWk5nvvrpeOzUP8unM999dLx2ah/l1u0TlOzHhs+xVpOZ7766Xjs1D/AC6xbrilyvdsrLdX5bdaqhrIX088ElNQlskb2lrmn8X6CCQqVE5Tsx4bPsVQ+EbMDs3xW343jeS3W12WgYY6elZDRvDASXHynQFxJJJJJJOq3vM999dLx2ah/l1u0TlOzHhs+xVpOZ7766Xjs1D/AC6cz3310vHZqH+XW7ROU7MeGz7FWk5nvvrpeOzUP8uvplrvsRLhmFzkPU2amoy3p6w2Bp/Wtyia/Zjwx7FX74pfJ7zSVUdZGyO4UM5pankQRG92617XsB4gOY9p01O6SW6u3dTvFG4F/TWZflOL+CplZLBpFmLF5MR8pzipIiIs6BERAREQFJbUPitD+VbX/H06rVJbUPitD+VbX/H0606Lz933x6rWeMMpTu0TOqDZnhF5ym6Q1M9vtVO6pnipGtdK5o6Q0Oc0E8eshUS5H3W3/dr2h/kqT/ELTO6KqutscHtDh0Ear+ryTkNHatnW0ei8TEsMlxr8VvFZdLda6o1UMroqdrqKokZvOHKOnIaHni8OcNTxWBsH2eQ3ibZ9ldrz3Fae61LW1lW63U9QLtdQYT3xBUvkrXiRwJJcTH5LmAgNA0VNbfQeu7tdKax2usuNbLyNHRwvqJ5d0u3I2NLnHQak6AHgF+VgvlJk1htt4t7zLQXCmjq6d7mlpdHI0OaSDxHAjgV49wnG8dx+zZtgU9DZstutxxOuucGWWmsNVzxA1/A1cRc7dnEjoyHAuDtDoRpou89y9a8VtexXFfBeC204qrXR1deLduAvqXU8Ye+QN/rkt0OvHyfmUxaqOj5FefB6w3C6Chrbn3nA+fvK3RcrUz7oJ3I2ajeedNANRqVmUs/fVLDNyckPKMD+TlbuvbqNdHDqI61zfumMcteS7Bc7jutBBXspLLW1sDZ2Bwinjp5HRyN8zmniCuRttOOZjtHxaybQ300uMU2BUVbaaG41HJUklQXltTLxIDpWMEQHW1rtRprqkzSR6GuGd0Ftz2zYjLDUuuV1oqmuglY1phayB0TXhx3tQ4mZumgI4HUjhrRrwNT1u0DIbZs9jwmodWXeSxZRS2y411Q5s7rdHWQiF7HkEmV0TGRxuPW5rydAq/LH2PK27Gscx+os9j2a3C01ctNS5HTyzUc1fGYxyFS1k8O9M3WY6PeQX7+oc7QiuuPZSLl/c9Yg/DMNr6RmT27JrfNcppqPmhrxSULNGsdTRb80zg1sjJDoXnQuI0Gmi6gukbxgYF/TWZflOL+CplZKNwL+msy/KcX8FTKyWfSuc+kekLWuIiIsqoiIgIiICktqHxWh/Ktr/j6dVqk9pzS7FoujhdLY4knTQCugJ/wWnRefu++PVazxhkrGuNtpLxRS0dfSwVtJKNJKepjEkbxrroWkEH86yUWpVpcdwjHcPdVOsNgtdkdVO36g26jjpzM7zv3GjePE8Svytuz7FrNe6m82/GrPQ3ip3uXuFNQRR1EuvTvSBoc7Xr1K36KKDR47guNYhNVTWLHrVZZqs61Eluooqd0x87yxo3unrWhrdlNNRfE+5O2eiV7pawY7bKBorXnTR0vK079S3ytCNPhHXXhpdIlIHIsv2L5ZluP1thn2rXeW0XOJ9LcY6q1UDpZKd7S17InxRRcmXNJBc4P4HgAeKvLps7xe/Wa32q74/bL1b7exrKWnudJHUti3WhoLQ8HQ6AcVQoopA17cftbK2irG22jbV0ULqalqBAwSQRO3d6NjtNWtO4zVo0B3R5gsCs2fYtcbRU2qrxq0VVrqah1XPRTUET4ZZ3HV0rmFu655JJLiNSetb9FIw7PZbfj1uht9qoKa2UEI0ipaOFsUUY8zWtAA/MsxEUjAwL+msy/KcX8FTKyUdgQ/7ZzE9RucfR9TplYrNpPOfSPSFp4iIiyqiIiAiIgLEutrpr1bqihq2GSnnbuPAcWkeYgjiCDoQRxBAIWWimJmzNYEW/G8pg/BwXm2VMbeDZaugeJSP97ckDSfOQ1o4/BC+eYcw9J2PsM3vlbItW1XmEZQmqJ5hzD0nY+wze+TmHMPSdj7DN75WyKdqvMIygqieYcw9J2PsM3vk5hzD0nY+wze+VsibVeYRlBVynZ9XZdnuCY7krKmy0TbxbqevFM+jmcYhLG1+4Tyo1I3tNdB0Kg5hzD0nY+wze+WJ3PTxJsF2cvDd0Ox23kNGnD8XZ5gB/cAugptV5hGUFUTzDmHpOx9hm98nMOYek7H2Gb3ytkTarzCMoKonmHMPSdj7DN75fTMfy1ztH3WzMaelzKCUkfmM3/79StEUbVeYRlBVrbDY4bBQd7xySTyPeZZ6iUgvmkPwnu04dQAA0AAAAAAC2SIs1q1NqdaeKBERVBERAREQEREBERAREQEREHPu57cX7BtnTjIZiceoCZCSd78XZx1Oh4/Ougrn3c8ymbYJs5kI0L8dt7iASemnZ1kk/3ldBQEREBERAREQEREBERAREQEREBERAREQERRu1Ta/iWxTHIb9md1NntM1S2jZUClmqNZXNc5rS2Jj3DUMdxI04aa6kahr+54LTsE2cFoaG+Dtv0DNd3TvdnRrx0+niuhLgvcibbsO2k7MMbx3H7zLdrzj9jooLo3vKpY2GQRNYQZZI2scS5rugknQnoXekBERAREQEREBERAREQEREBERAXxLKyCJ8kj2xxsBc57zoGgdJJ6gvtees8zd+e1j44ZNcfiee94mk7tVp/4r+pzdeLB0aaOPEjd9DQtDt6ZeatndEcZS6Nctt+MUchZSy1V3IOhfb6cvjP0SHRjh87SVgeP2z+hb39jD71cnRfWWfg2iRFJrP1RWMHWPH7Z/Qt7+xh96oPbnk+M7bNleQYhW2W8MNfTnvad9PCeQqG+VFJ/pNeDgNdOkajrWjRW/R9EwnM1vk1Pci01m7nLZRDY6yz3KpyGsmdV3SqpYYnMfIeDWNcXglrWgAajpLj1rt3j9s/oW9/Yw+9XJ0T9H0TCczW+TrHj9s/oW9/Yw+9WVRbdMbqJA2qiuNtB0G/U0hc0fSYy7T6TwXHUUT8G0SYpETH1Kxg9PW+40t2o4quiqYayllG9HPA8PY8ecOHArIXmvF8nq8IuTq6iaZKaQ61dEPgzt63NHQJAOg9fQeGhHoy3XCnu1BTVtJK2elqY2zRSt6HscNQR9IK+W07QbWhWo31szwn7J+cMhEReWgREQEREBERAREQSm1W4SWzZ3fponFkjqYwte06FpkIZqD5xvargcbGxMaxg3WtAAA6gvRecWJ+TYfeLXFoJ6mmeyEu6BJpqwn5t4BecaabviBry10buhzHDRzHDg5pHUQQQfoX2nwObPI24jjX7bvuTwfoinr9lVdZq4U9Pit5vMZYHd80BpRGCdfJ/CzsdqNPNpx6VrvD+6+oGTf8AVQfzS9+byzE0muUqNZtX2nVOFV9ktFtijddLpy0gmmo6irjgiiDd5xip2mR5Je0ADQdJJGnGZi2yZTUWm2Rx2iliulTkMdmFRWUlVS01RFJBJIJ42ShsjdHNALTr8FwB8oOFLesbrtotTa73SxXPBshsskjaSpr4aeoEscjQJGPjjlcHMOg6XNIIBCzqzZ9c7zR42LvkXOFdaLwy7OqRRNibMGskaImsa7yB+E+ES48OOuqx2ov7duZszNOjyxnv6PqlM1O1+94/S5JbLnQ0Fwya33GjtlEKLfhp6uSra0wkhznOZpq7e4ng3h0r5w9uRM2914yWS2S13gxDuPtUcjItzvqTgRI5x1B3uOvEadHQtzkWxqLIq7Kqt92lpai71FDWUk0EI36CelaBHICSQ/iNdCBwJHzr4t2IX7E8lqsuulynzK4vt0dsFFbLfDSu3RKX7435g3+sdQXfR1BV1L3XibVZiJ8qzx6ZmlB0pFGjP7oTxwDJhw63UH80sq15ncbjcIaaXDL/AG6OR2jqqqdR8nH87tyoc7T6GlbovbM7t+U+yFQuxbCq10+FzUriS2hrp4GanXySRIB+blNB8wC45JI2JjnvcGsaCS4nQAeddw2O2SWzYLSvqIzFUV8j657HDQtEh1YCDxBDAzUefVeN8amzGixE8axTzXjhK3REXwoIiICIiAiIgIiIC5XtH2XVFVWTXqwRNlnlO9V27eDeVd/6kRJADz/WadA7p1Dtd/qiLVo2k3mi3nKXc/keUKi4QUM7qetcbfUt03oKxphkH/K7Qr553ofltP8Aat9q9WVFLDVs3J4Y5mf7MjQ4frWF4NWj0VRdnZ7F9LZ+PWafuu/P8FIeYOd6H5bT/at9qc70Py2n+1b7V6f8GrR6Kouzs9ieDVo9FUXZ2exW/Xbv/nOf4KQ8wc70Py2n+1b7U53ofltP9q32r0/4NWj0VRdnZ7E8GrR6Kouzs9ifrt3/AM5z/BSHmDneh+W0/wBq32o27UckrYoqmOeZxAbFAeUe4+YNbqT/AHL0/wCDVo9FUXZ2exZVLQUtCCKamhpweqJgb/gon49Ypuu5z/BSHHcD2WVd5qYbhf6V1HbYy2SO3zf6WocDqDKP6rOjyDxd0OAALXdqRF85pWl3ml29e8+kdEAiIsQIiICIiD//2Q==", - "text/plain": [ - "" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "from IPython.display import Image\n", - "\n", - "Image(app.get_graph().draw_mermaid_png())" - ] - }, - { - "cell_type": "markdown", - "id": "4a0026d8", - "metadata": {}, - "source": [ - "## Use the graph" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "fd90cace", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'generate_topics': {'subjects': ['Lions', 'Elephants', 'Penguins', 'Dolphins']}}\n", - "{'generate_joke': {'jokes': [\"Why don't elephants use computers? They're afraid of the mouse!\"]}}\n", - "{'generate_joke': {'jokes': [\"Why don't dolphins use smartphones? Because they're afraid of phishing!\"]}}\n", - "{'generate_joke': {'jokes': [\"Why don't you see penguins in Britain? Because they're afraid of Wales!\"]}}\n", - "{'generate_joke': {'jokes': [\"Why don't lions like fast food? Because they can't catch it!\"]}}\n", - "{'best_joke': {'best_selected_joke': \"Why don't dolphins use smartphones? Because they're afraid of phishing!\"}}\n" - ] - } - ], - "source": [ - "# Call the graph: here we call it to generate a list of jokes\n", - "for s in app.stream({\"topic\": \"animals\"}):\n", - " print(s)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.4" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/docs/docs/how-tos/memory.ipynb b/docs/docs/how-tos/memory.ipynb new file mode 100644 index 000000000..5b4a29ec0 --- /dev/null +++ b/docs/docs/how-tos/memory.ipynb @@ -0,0 +1,447 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "id": "15ed7413-c876-4d38-b080-79c71133549b", + "metadata": {}, + "source": [ + "# Manage memory\n", + "\n", + "Many AI applications need memory to share context across multiple interactions. LangGraph supports two types of memory essential for building conversational agents:\n", + "\n", + "- [Short-term memory](#add-short-term-memory): Tracks the ongoing conversation by maintaining message history within a session.\n", + "- [Long-term memory](#add-long-term-memory): Stores user-specific or application-level data across sessions.\n", + "\n", + "With [short-term memory](#add-short-term-memory) enabled, long conversations can exceed the LLM's context window. Common solutions are:\n", + "\n", + "* [Trimming](#trim-messages): Remove first or last N messages (before calling LLM)\n", + "* [Summarization](#summarize-messages): Summarize earlier messages in the history and replace them with a summary\n", + "* [Delete messages](#delete-messages) from LangGraph state permanently\n", + "* custom strategies (e.g., message filtering, etc.)\n", + "\n", + "This allows the agent to keep track of the conversation without exceeding the LLM's context window." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "af4ce0ba-7596-4e5f-8bf8-0b0bd6e62833", + "metadata": {}, + "outputs": [], + "source": [ + "# hide-cell\n", + "%%capture --no-stderr\n", + "%pip install --quiet -U langgraph \"langchain[anthropic]\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c903a1cf-2977-4e2d-ad7d-8b3946821d89", + "metadata": {}, + "outputs": [], + "source": [ + "# hide-cell\n", + "import getpass\n", + "import os\n", + "\n", + "\n", + "def _set_env(var: str):\n", + " if not os.environ.get(var):\n", + " os.environ[var] = getpass.getpass(f\"{var}: \")\n", + "\n", + "\n", + "_set_env(\"ANTHROPIC_API_KEY\")" + ] + }, + { + "cell_type": "markdown", + "id": "db38b03c-5609-49e3-9b93-bad0aab47ffb", + "metadata": {}, + "source": [ + "## Add short-term memory\n", + "\n", + "Short-term memory enables agents to track multi-turn conversations:\n", + "\n", + "```python\n", + "# highlight-next-line\n", + "from langgraph.checkpoint.memory import InMemorySaver\n", + "from langgraph.graph import StateGraph\n", + "\n", + "# highlight-next-line\n", + "checkpointer = InMemorySaver()\n", + "\n", + "builder = StateGraph(...)\n", + "# highlight-next-line\n", + "graph = builder.compile(checkpointer=checkpointer)\n", + "\n", + "graph.invoke(\n", + " {\"messages\": [{\"role\": \"user\", \"content\": \"hi! i am Bob\"}]},\n", + " # highlight-next-line\n", + " {\"configurable\": {\"thread_id\": \"1\"}},\n", + ")\n", + "```\n", + "\n", + "See the [persistence](../persistence#add-short-term-memory) guide to learn more about working with short-term memory." + ] + }, + { + "cell_type": "markdown", + "id": "05bf55fd-b0b0-4fbf-9f15-aefac7f300bb", + "metadata": {}, + "source": [ + "## Add long-term memory\n", + "\n", + "Use long-term memory to store user-specific or application-specific data across conversations. This is useful for applications like chatbots, where you want to remember user preferences or other information.\n", + "\n", + "```python\n", + "# highlight-next-line\n", + "from langgraph.store.memory import InMemoryStore\n", + "from langgraph.graph import StateGraph\n", + "\n", + "# highlight-next-line\n", + "store = InMemoryStore()\n", + "\n", + "builder = StateGraph(...)\n", + "# highlight-next-line\n", + "graph = builder.compile(store=store)\n", + "```\n", + "\n", + "See the [persistence](../persistence#add-long-term-memory) guide to learn more about working with long-term memory." + ] + }, + { + "cell_type": "markdown", + "id": "e109c1b2-a44e-4ec0-8a11-1377e59315c6", + "metadata": {}, + "source": [ + "## Trim messages\n", + "\n", + "To trim message history, you can use [`trim_messages`](https://python.langchain.com/api_reference/core/messages/langchain_core.messages.utils.trim_messages.html) function:\n", + "\n", + "```python\n", + "# highlight-next-line\n", + "from langchain_core.messages.utils import (\n", + " # highlight-next-line\n", + " trim_messages,\n", + " # highlight-next-line\n", + " count_tokens_approximately\n", + "# highlight-next-line\n", + ")\n", + "\n", + "def call_model(state: MessagesState):\n", + " # highlight-next-line\n", + " messages = trim_messages(\n", + " state[\"messages\"],\n", + " strategy=\"last\",\n", + " token_counter=count_tokens_approximately,\n", + " max_tokens=128,\n", + " start_on=\"human\",\n", + " end_on=(\"human\", \"tool\"),\n", + " )\n", + " response = model.invoke(messages)\n", + " return {\"messages\": [response]}\n", + "\n", + "builder = StateGraph(MessagesState)\n", + "builder.add_node(call_model)\n", + "...\n", + "```\n", + "\n", + "??? example \"Full example: trim messages\"\n", + "\n", + " ```python\n", + " # highlight-next-line\n", + " from langchain_core.messages.utils import (\n", + " # highlight-next-line\n", + " trim_messages,\n", + " # highlight-next-line\n", + " count_tokens_approximately\n", + " # highlight-next-line\n", + " )\n", + " from langchain.chat_models import init_chat_model\n", + " from langgraph.graph import StateGraph, START, MessagesState\n", + " \n", + " model = init_chat_model(\"anthropic:claude-3-7-sonnet-latest\")\n", + " summarization_model = model.bind(max_tokens=128)\n", + " \n", + " def call_model(state: MessagesState):\n", + " # highlight-next-line\n", + " messages = trim_messages(\n", + " state[\"messages\"],\n", + " strategy=\"last\",\n", + " token_counter=count_tokens_approximately,\n", + " max_tokens=128,\n", + " start_on=\"human\",\n", + " end_on=(\"human\", \"tool\"),\n", + " )\n", + " response = model.invoke(messages)\n", + " return {\"messages\": [response]}\n", + " \n", + " checkpointer = InMemorySaver()\n", + " builder = StateGraph(MessagesState)\n", + " builder.add_node(call_model)\n", + " builder.add_edge(START, \"call_model\")\n", + " graph = builder.compile(checkpointer=checkpointer)\n", + " \n", + " config = {\"configurable\": {\"thread_id\": \"1\"}}\n", + " graph.invoke({\"messages\": \"hi, my name is bob\"}, config)\n", + " graph.invoke({\"messages\": \"write a short poem about cats\"}, config)\n", + " graph.invoke({\"messages\": \"now do the same but for dogs\"}, config)\n", + " final_response = graph.invoke({\"messages\": \"what's my name?\"}, config)\n", + "\n", + " final_response[\"messages\"][-1].pretty_print()\n", + " ```\n", + "\n", + " ```\n", + " ================================== Ai Message ==================================\n", + " \n", + " Your name is Bob, as you mentioned when you first introduced yourself.\n", + " ```" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "6676cd03-3e97-4550-ad4a-72d04f2cee7c", + "metadata": {}, + "source": [ + "## Summarize messages\n", + "\n", + "An effective strategy for handling long conversation history is to summarize earlier messages once they reach a certain threshold:\n", + "\n", + "```python\n", + "from typing import Any, TypedDict\n", + "\n", + "from langchain_core.messages import AnyMessage\n", + "from langchain_core.messages.utils import count_tokens_approximately\n", + "# highlight-next-line\n", + "from langmem.short_term import SummarizationNode\n", + "from langgraph.graph import StateGraph, START, MessagesState\n", + "\n", + "class State(MessagesState):\n", + " # highlight-next-line\n", + " context: dict[str, Any] # (1)!\n", + "\n", + "class LLMInputState(TypedDict): # (2)!\n", + " summarized_messages: list[AnyMessage]\n", + " context: dict[str, Any]\n", + "\n", + "# highlight-next-line\n", + "summarization_node = SummarizationNode(\n", + " token_counter=count_tokens_approximately,\n", + " model=summarization_model,\n", + " max_tokens=512,\n", + " max_tokens_before_summary=256,\n", + " max_summary_tokens=256,\n", + ")\n", + "\n", + "# highlight-next-line\n", + "def call_model(state: LLMInputState): # (3)!\n", + " response = model.invoke(state[\"summarized_messages\"])\n", + " return {\"messages\": [response]}\n", + "\n", + "builder = StateGraph(State)\n", + "builder.add_node(call_model)\n", + "# highlight-next-line\n", + "builder.add_node(\"summarize\", summarization_node)\n", + "builder.add_edge(START, \"summarize\")\n", + "builder.add_edge(\"summarize\", \"call_model\")\n", + "...\n", + "```\n", + "\n", + "1. We will keep track of our running summary in the `context` field\n", + "(expected by the `SummarizationNode`).\n", + "2. Define private state that will be used only for filtering\n", + "the inputs to `call_model` node.\n", + "3. We're passing a private input state here to isolate the messages returned by the summarization node\n", + "\n", + "??? example \"Full example: summarize messages\"\n", + "\n", + " ```python\n", + " from typing import Any, TypedDict\n", + " \n", + " from langchain.chat_models import init_chat_model\n", + " from langchain_core.messages import AnyMessage\n", + " from langchain_core.messages.utils import count_tokens_approximately\n", + " from langgraph.graph import StateGraph, START, MessagesState\n", + " from langgraph.checkpoint.memory import InMemorySaver\n", + " # highlight-next-line\n", + " from langmem.short_term import SummarizationNode\n", + " \n", + " model = init_chat_model(\"anthropic:claude-3-7-sonnet-latest\")\n", + " summarization_model = model.bind(max_tokens=128)\n", + " \n", + " class State(MessagesState):\n", + " # highlight-next-line\n", + " context: dict[str, Any] # (1)!\n", + " \n", + " class LLMInputState(TypedDict): # (2)!\n", + " summarized_messages: list[AnyMessage]\n", + " context: dict[str, Any]\n", + " \n", + " # highlight-next-line\n", + " summarization_node = SummarizationNode(\n", + " token_counter=count_tokens_approximately,\n", + " model=summarization_model,\n", + " max_tokens=256,\n", + " max_tokens_before_summary=256,\n", + " max_summary_tokens=128,\n", + " )\n", + "\n", + " # highlight-next-line\n", + " def call_model(state: LLMInputState): # (3)!\n", + " response = model.invoke(state[\"summarized_messages\"])\n", + " return {\"messages\": [response]}\n", + " \n", + " checkpointer = InMemorySaver()\n", + " builder = StateGraph(State)\n", + " builder.add_node(call_model)\n", + " # highlight-next-line\n", + " builder.add_node(\"summarize\", summarization_node)\n", + " builder.add_edge(START, \"summarize\")\n", + " builder.add_edge(\"summarize\", \"call_model\")\n", + " graph = builder.compile(checkpointer=checkpointer)\n", + " \n", + " # Invoke the graph\n", + " config = {\"configurable\": {\"thread_id\": \"1\"}}\n", + " graph.invoke({\"messages\": \"hi, my name is bob\"}, config)\n", + " graph.invoke({\"messages\": \"write a short poem about cats\"}, config)\n", + " graph.invoke({\"messages\": \"now do the same but for dogs\"}, config)\n", + " final_response = graph.invoke({\"messages\": \"what's my name?\"}, config)\n", + "\n", + " final_response[\"messages\"][-1].pretty_print()\n", + " print(\"\\nSummary:\", final_response[\"context\"][\"running_summary\"].summary)\n", + " ```\n", + "\n", + " 1. We will keep track of our running summary in the `context` field\n", + " (expected by the `SummarizationNode`).\n", + " 2. Define private state that will be used only for filtering\n", + " the inputs to `call_model` node.\n", + " 3. We're passing a private input state here to isolate the messages returned by the summarization node\n", + "\n", + " ```\n", + " ================================== Ai Message ==================================\n", + "\n", + " From our conversation, I can see that you introduced yourself as Bob. That's the name you shared with me when we began talking.\n", + " \n", + " Summary: In this conversation, I was introduced to Bob, who then asked me to write a poem about cats. I composed a poem titled \"The Mystery of Cats\" that captured cats' graceful movements, independent nature, and their special relationship with humans. Bob then requested a similar poem about dogs, so I wrote \"The Joy of Dogs,\" which highlighted dogs' loyalty, enthusiasm, and loving companionship. Both poems were written in a similar style but emphasized the distinct characteristics that make each pet special.\n", + " ```" + ] + }, + { + "cell_type": "markdown", + "id": "361d880b-1258-4708-8f0e-5efc95031e78", + "metadata": {}, + "source": [ + "## Delete messages\n", + "\n", + "To delete messages from the graph state, you can use the `RemoveMessage`.\n", + "\n", + "* Remove specific messages:\n", + "\n", + " ```python\n", + " # highlight-next-line\n", + " from langchain_core.messages import RemoveMessage\n", + " \n", + " def delete_messages(state):\n", + " messages = state[\"messages\"]\n", + " if len(messages) > 2:\n", + " # remove the earliest two messages\n", + " # highlight-next-line\n", + " return {\"messages\": [RemoveMessage(id=m.id) for m in messages[:2]]}\n", + " ```\n", + "\n", + "* Remove **all** messages:\n", + " \n", + " ```python\n", + " # highlight-next-line\n", + " from langgraph.graph.message import REMOVE_ALL_MESSAGES\n", + " \n", + " def delete_messages(state):\n", + " # highlight-next-line\n", + " return {\"messages\": [RemoveMessage(id=REMOVE_ALL_MESSAGES)]}\n", + " ```\n", + "\n", + "!!! important \"`add_messages` reducer\"\n", + "\n", + " For `RemoveMessage` to work, you need to use a state key with [`add_messages`][langgraph.graph.message.add_messages] [reducer](../../../concepts/low_level#reducers), like [`MessagesState`](../../../concepts/low_level#messagesstate)\n", + "\n", + "!!! warning \"Valid message history\"\n", + "\n", + " When deleting messages, **make sure** that the resulting message history is valid. Check the limitations of the LLM provider you're using. For example:\n", + " \n", + " * some providers expect message history to start with a `user` message\n", + " * most providers require `assistant` messages with tool calls to be followed by corresponding `tool` result messages.\n", + "\n", + "??? example \"Full example: delete messages\"\n", + "\n", + " ```python\n", + " # highlight-next-line\n", + " from langchain_core.messages import RemoveMessage\n", + " \n", + " def delete_messages(state):\n", + " messages = state[\"messages\"]\n", + " if len(messages) > 2:\n", + " # remove the earliest two messages\n", + " # highlight-next-line\n", + " return {\"messages\": [RemoveMessage(id=m.id) for m in messages[:2]]}\n", + " \n", + " def call_model(state: MessagesState):\n", + " response = model.invoke(state[\"messages\"])\n", + " return {\"messages\": response}\n", + " \n", + " builder = StateGraph(MessagesState)\n", + " builder.add_sequence([call_model, delete_messages])\n", + " builder.add_edge(START, \"call_model\")\n", + " \n", + " checkpointer = InMemorySaver()\n", + " app = builder.compile(checkpointer=checkpointer)\n", + " \n", + " for event in app.stream(\n", + " {\"messages\": [{\"role\": \"user\", \"content\": \"hi! I'm bob\"}]},\n", + " config,\n", + " stream_mode=\"values\"\n", + " ):\n", + " print([(message.type, message.content) for message in event[\"messages\"]])\n", + " \n", + " for event in app.stream(\n", + " {\"messages\": [{\"role\": \"user\", \"content\": \"what's my name?\"}]},\n", + " config,\n", + " stream_mode=\"values\"\n", + " ):\n", + " print([(message.type, message.content) for message in event[\"messages\"]])\n", + " ```\n", + "\n", + " ```\n", + " [('human', \"hi! I'm bob\")]\n", + " [('human', \"hi! I'm bob\"), ('ai', 'Hi Bob! How are you doing today? Is there anything I can help you with?')]\n", + " [('human', \"hi! I'm bob\"), ('ai', 'Hi Bob! How are you doing today? Is there anything I can help you with?'), ('human', \"what's my name?\")]\n", + " [('human', \"hi! I'm bob\"), ('ai', 'Hi Bob! How are you doing today? Is there anything I can help you with?'), ('human', \"what's my name?\"), ('ai', 'Your name is Bob.')]\n", + " [('human', \"what's my name?\"), ('ai', 'Your name is Bob.')]\n", + " ```" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "langgraph", + "language": "python", + "name": "langgraph" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.9" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/docs/docs/how-tos/memory/add-summary-conversation-history.ipynb b/docs/docs/how-tos/memory/add-summary-conversation-history.ipynb deleted file mode 100644 index f2f374534..000000000 --- a/docs/docs/how-tos/memory/add-summary-conversation-history.ipynb +++ /dev/null @@ -1,529 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "51466c8d-8ce4-4b3d-be4e-18fdbeda5f53", - "metadata": {}, - "source": [ - "# How to add summary of the conversation history\n", - "\n", - "One of the most common use cases for persistence is to use it to keep track of conversation history. This is great - it makes it easy to continue conversations. As conversations get longer and longer, however, this conversation history can build up and take up more and more of the context window. This can often be undesirable as it leads to more expensive and longer calls to the LLM, and potentially ones that error. One way to work around that is to create a summary of the conversation to date, and use that with the past N messages. This guide will go through an example of how to do that.\n", - "\n", - "This will involve a few steps:\n", - "\n", - "- Check if the conversation is too long (can be done by checking number of messages or length of messages)\n", - "- If yes, the create summary (will need a prompt for this)\n", - "- Then remove all except the last N messages\n", - "\n", - "A big part of this is deleting old messages. For an in depth guide on how to do that, see [this guide](../delete-messages)" - ] - }, - { - "cell_type": "markdown", - "id": "7cbd446a-808f-4394-be92-d45ab818953c", - "metadata": {}, - "source": [ - "## Setup\n", - "\n", - "First, let's set up the packages we're going to want to use" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "af4ce0ba-7596-4e5f-8bf8-0b0bd6e62833", - "metadata": {}, - "outputs": [], - "source": [ - "%%capture --no-stderr\n", - "%pip install --quiet -U langgraph langchain_anthropic" - ] - }, - { - "cell_type": "markdown", - "id": "0abe11f4-62ed-4dc4-8875-3db21e260d1d", - "metadata": {}, - "source": [ - "Next, we need to set API keys for Anthropic (the LLM we will use)" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "c903a1cf-2977-4e2d-ad7d-8b3946821d89", - "metadata": {}, - "outputs": [], - "source": [ - "import getpass\n", - "import os\n", - "\n", - "\n", - "def _set_env(var: str):\n", - " if not os.environ.get(var):\n", - " os.environ[var] = getpass.getpass(f\"{var}: \")\n", - "\n", - "\n", - "_set_env(\"ANTHROPIC_API_KEY\")" - ] - }, - { - "cell_type": "markdown", - "id": "f0ed46a8-effe-4596-b0e1-a6a29ee16f5c", - "metadata": {}, - "source": [ - "
    \n", - "

    Set up LangSmith for LangGraph development

    \n", - "

    \n", - " Sign up for LangSmith to quickly spot issues and improve the performance of your LangGraph projects. LangSmith lets you use trace data to debug, test, and monitor your LLM apps built with LangGraph — read more about how to get started here. \n", - "

    \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "id": "84835fdb-a5f3-4c90-85f3-0e6257650aba", - "metadata": {}, - "source": [ - "## Build the chatbot\n", - "\n", - "Let's now build the chatbot." - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "id": "378899a9-3b9a-4748-95b6-eb00e0828677", - "metadata": {}, - "outputs": [], - "source": [ - "from typing import Literal\n", - "\n", - "from langchain_anthropic import ChatAnthropic\n", - "from langchain_core.messages import SystemMessage, RemoveMessage, HumanMessage\n", - "from langgraph.checkpoint.memory import MemorySaver\n", - "from langgraph.graph import MessagesState, StateGraph, START, END\n", - "\n", - "memory = MemorySaver()\n", - "\n", - "\n", - "# We will add a `summary` attribute (in addition to `messages` key,\n", - "# which MessagesState already has)\n", - "class State(MessagesState):\n", - " summary: str\n", - "\n", - "\n", - "# We will use this model for both the conversation and the summarization\n", - "model = ChatAnthropic(model_name=\"claude-3-haiku-20240307\")\n", - "\n", - "\n", - "# Define the logic to call the model\n", - "def call_model(state: State):\n", - " # If a summary exists, we add this in as a system message\n", - " summary = state.get(\"summary\", \"\")\n", - " if summary:\n", - " system_message = f\"Summary of conversation earlier: {summary}\"\n", - " messages = [SystemMessage(content=system_message)] + state[\"messages\"]\n", - " else:\n", - " messages = state[\"messages\"]\n", - " response = model.invoke(messages)\n", - " # We return a list, because this will get added to the existing list\n", - " return {\"messages\": [response]}\n", - "\n", - "\n", - "# We now define the logic for determining whether to end or summarize the conversation\n", - "def should_continue(state: State) -> Literal[\"summarize_conversation\", END]:\n", - " \"\"\"Return the next node to execute.\"\"\"\n", - " messages = state[\"messages\"]\n", - " # If there are more than six messages, then we summarize the conversation\n", - " if len(messages) > 6:\n", - " return \"summarize_conversation\"\n", - " # Otherwise we can just end\n", - " return END\n", - "\n", - "\n", - "def summarize_conversation(state: State):\n", - " # First, we summarize the conversation\n", - " summary = state.get(\"summary\", \"\")\n", - " if summary:\n", - " # If a summary already exists, we use a different system prompt\n", - " # to summarize it than if one didn't\n", - " summary_message = (\n", - " f\"This is summary of the conversation to date: {summary}\\n\\n\"\n", - " \"Extend the summary by taking into account the new messages above:\"\n", - " )\n", - " else:\n", - " summary_message = \"Create a summary of the conversation above:\"\n", - "\n", - " messages = state[\"messages\"] + [HumanMessage(content=summary_message)]\n", - " response = model.invoke(messages)\n", - " # We now need to delete messages that we no longer want to show up\n", - " # I will delete all but the last two messages, but you can change this\n", - " delete_messages = [RemoveMessage(id=m.id) for m in state[\"messages\"][:-2]]\n", - " return {\"summary\": response.content, \"messages\": delete_messages}\n", - "\n", - "\n", - "# Define a new graph\n", - "workflow = StateGraph(State)\n", - "\n", - "# Define the conversation node and the summarize node\n", - "workflow.add_node(\"conversation\", call_model)\n", - "workflow.add_node(summarize_conversation)\n", - "\n", - "# Set the entrypoint as conversation\n", - "workflow.add_edge(START, \"conversation\")\n", - "\n", - "# We now add a conditional edge\n", - "workflow.add_conditional_edges(\n", - " # First, we define the start node. We use `conversation`.\n", - " # This means these are the edges taken after the `conversation` node is called.\n", - " \"conversation\",\n", - " # Next, we pass in the function that will determine which node is called next.\n", - " should_continue,\n", - ")\n", - "\n", - "# We now add a normal edge from `summarize_conversation` to END.\n", - "# This means that after `summarize_conversation` is called, we end.\n", - "workflow.add_edge(\"summarize_conversation\", END)\n", - "\n", - "# Finally, we compile it!\n", - "app = workflow.compile(checkpointer=memory)" - ] - }, - { - "cell_type": "markdown", - "id": "41c2872e-04b3-4c44-9e03-9e84a5230adf", - "metadata": {}, - "source": [ - "## Using the graph" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "id": "dc697132-8fa1-4bf5-9722-56a9859331ab", - "metadata": {}, - "outputs": [], - "source": [ - "def print_update(update):\n", - " for k, v in update.items():\n", - " for m in v[\"messages\"]:\n", - " m.pretty_print()\n", - " if \"summary\" in v:\n", - " print(v[\"summary\"])" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "id": "57b27553-21be-43e5-ac48-d1d0a3aa0dca", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "================================\u001b[1m Human Message \u001b[0m=================================\n", - "\n", - "hi! I'm bob\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "It's nice to meet you, Bob! I'm an AI assistant created by Anthropic. How can I help you today?\n", - "================================\u001b[1m Human Message \u001b[0m=================================\n", - "\n", - "what's my name?\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "Your name is Bob, as you told me at the beginning of our conversation.\n", - "================================\u001b[1m Human Message \u001b[0m=================================\n", - "\n", - "i like the celtics!\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "That's great, the Celtics are a fun team to follow! Basketball is an exciting sport. Do you have a favorite Celtics player or a favorite moment from a Celtics game you've watched? I'd be happy to discuss the team and the sport with you.\n" - ] - } - ], - "source": [ - "from langchain_core.messages import HumanMessage\n", - "\n", - "config = {\"configurable\": {\"thread_id\": \"4\"}}\n", - "input_message = HumanMessage(content=\"hi! I'm bob\")\n", - "input_message.pretty_print()\n", - "for event in app.stream({\"messages\": [input_message]}, config, stream_mode=\"updates\"):\n", - " print_update(event)\n", - "\n", - "input_message = HumanMessage(content=\"what's my name?\")\n", - "input_message.pretty_print()\n", - "for event in app.stream({\"messages\": [input_message]}, config, stream_mode=\"updates\"):\n", - " print_update(event)\n", - "\n", - "input_message = HumanMessage(content=\"i like the celtics!\")\n", - "input_message.pretty_print()\n", - "for event in app.stream({\"messages\": [input_message]}, config, stream_mode=\"updates\"):\n", - " print_update(event)" - ] - }, - { - "cell_type": "markdown", - "id": "9760e219-a7fc-4d81-b4e8-1334c5afc510", - "metadata": {}, - "source": [ - "We can see that so far no summarization has happened - this is because there are only six messages in the list." - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "id": "935265a0-d511-475a-8a0d-b3c3cc5e42a0", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'messages': [HumanMessage(content=\"hi! I'm bob\", id='6534853d-b8a7-44b9-837b-eb7abaf7ebf7'),\n", - " AIMessage(content=\"It's nice to meet you, Bob! I'm an AI assistant created by Anthropic. How can I help you today?\", response_metadata={'id': 'msg_015wCFew2vwMQJcpUh2VZ5ah', 'model': 'claude-3-haiku-20240307', 'stop_reason': 'end_turn', 'stop_sequence': None, 'usage': {'input_tokens': 12, 'output_tokens': 30}}, id='run-0d33008b-1094-4f5e-94ce-293283fc3024-0'),\n", - " HumanMessage(content=\"what's my name?\", id='0a4f203a-b95a-42a9-b1c5-bb20f68b3251'),\n", - " AIMessage(content='Your name is Bob, as you told me at the beginning of our conversation.', response_metadata={'id': 'msg_01PLp8wg2xDsJbNR9uCtxcGz', 'model': 'claude-3-haiku-20240307', 'stop_reason': 'end_turn', 'stop_sequence': None, 'usage': {'input_tokens': 50, 'output_tokens': 19}}, id='run-3815dd4d-ee0c-4fc2-9889-f6dd40325961-0'),\n", - " HumanMessage(content='i like the celtics!', id='ac128172-42d1-4390-b7cc-7bcb2d22ee48'),\n", - " AIMessage(content=\"That's great, the Celtics are a fun team to follow! Basketball is an exciting sport. Do you have a favorite Celtics player or a favorite moment from a Celtics game you've watched? I'd be happy to discuss the team and the sport with you.\", response_metadata={'id': 'msg_01CSg5avZEx6CKcZsSvSVXpr', 'model': 'claude-3-haiku-20240307', 'stop_reason': 'end_turn', 'stop_sequence': None, 'usage': {'input_tokens': 78, 'output_tokens': 61}}, id='run-698faa28-0f72-495f-8ebe-e948664d2200-0')]}" - ] - }, - "execution_count": 28, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "values = app.get_state(config).values\n", - "values" - ] - }, - { - "cell_type": "markdown", - "id": "bb40eddb-9a31-4410-a4c0-9762e2d89e56", - "metadata": {}, - "source": [ - "Now let's send another message in" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "id": "048805a4-3d97-4e76-ac45-8d80d4364c46", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "================================\u001b[1m Human Message \u001b[0m=================================\n", - "\n", - "i like how much they win\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "That's understandable, the Celtics have been one of the more successful NBA franchises over the years. Their history of winning championships is very impressive. It's always fun to follow a team that regularly competes for titles. What do you think has been the key to the Celtics' sustained success? Is there a particular era or team that stands out as your favorite?\n", - "================================\u001b[1m Remove Message \u001b[0m================================\n", - "\n", - "\n", - "================================\u001b[1m Remove Message \u001b[0m================================\n", - "\n", - "\n", - "================================\u001b[1m Remove Message \u001b[0m================================\n", - "\n", - "\n", - "================================\u001b[1m Remove Message \u001b[0m================================\n", - "\n", - "\n", - "================================\u001b[1m Remove Message \u001b[0m================================\n", - "\n", - "\n", - "================================\u001b[1m Remove Message \u001b[0m================================\n", - "\n", - "\n", - "Here is a summary of our conversation so far:\n", - "\n", - "- You introduced yourself as Bob and said you like the Boston Celtics basketball team.\n", - "- I acknowledged that it's nice to meet you, Bob, and noted that you had shared your name earlier in the conversation.\n", - "- You expressed that you like how much the Celtics win, and I agreed that their history of sustained success and championship pedigree is impressive.\n", - "- I asked if you have a favorite Celtics player or moment that stands out to you, and invited further discussion about the team and the sport of basketball.\n", - "- The overall tone has been friendly and conversational, with me trying to engage with your interest in the Celtics by asking follow-up questions.\n" - ] - } - ], - "source": [ - "input_message = HumanMessage(content=\"i like how much they win\")\n", - "input_message.pretty_print()\n", - "for event in app.stream({\"messages\": [input_message]}, config, stream_mode=\"updates\"):\n", - " print_update(event)" - ] - }, - { - "cell_type": "markdown", - "id": "6b196367-6151-4982-9430-3db7373de06e", - "metadata": {}, - "source": [ - "If we check the state now, we can see that we have a summary of the conversation, as well as the last two messages" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "id": "09ebb693-4738-4474-a095-6491def5c5f9", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'messages': [HumanMessage(content='i like how much they win', id='bb916ce7-534c-4d48-9f92-e269f9dc4859'),\n", - " AIMessage(content=\"That's understandable, the Celtics have been one of the more successful NBA franchises over the years. Their history of winning championships is very impressive. It's always fun to follow a team that regularly competes for titles. What do you think has been the key to the Celtics' sustained success? Is there a particular era or team that stands out as your favorite?\", response_metadata={'id': 'msg_01B7TMagaM8xBnYXLSMwUDAG', 'model': 'claude-3-haiku-20240307', 'stop_reason': 'end_turn', 'stop_sequence': None, 'usage': {'input_tokens': 148, 'output_tokens': 82}}, id='run-c5aa9a8f-7983-4a7f-9c1e-0c0055334ac1-0')],\n", - " 'summary': \"Here is a summary of our conversation so far:\\n\\n- You introduced yourself as Bob and said you like the Boston Celtics basketball team.\\n- I acknowledged that it's nice to meet you, Bob, and noted that you had shared your name earlier in the conversation.\\n- You expressed that you like how much the Celtics win, and I agreed that their history of sustained success and championship pedigree is impressive.\\n- I asked if you have a favorite Celtics player or moment that stands out to you, and invited further discussion about the team and the sport of basketball.\\n- The overall tone has been friendly and conversational, with me trying to engage with your interest in the Celtics by asking follow-up questions.\"}" - ] - }, - "execution_count": 30, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "values = app.get_state(config).values\n", - "values" - ] - }, - { - "cell_type": "markdown", - "id": "966e4177-c0fc-4fd0-a494-dd03f7f2fddb", - "metadata": {}, - "source": [ - "We can now resume having a conversation! Note that even though we only have the last two messages, we can still ask it questions about things mentioned earlier in the conversation (because we summarized those)" - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "id": "7094c5ab-66f8-42ff-b1c3-90c8a9468e62", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "================================\u001b[1m Human Message \u001b[0m=================================\n", - "\n", - "what's my name?\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "In our conversation so far, you introduced yourself as Bob. I acknowledged that earlier when you had shared your name.\n" - ] - } - ], - "source": [ - "input_message = HumanMessage(content=\"what's my name?\")\n", - "input_message.pretty_print()\n", - "for event in app.stream({\"messages\": [input_message]}, config, stream_mode=\"updates\"):\n", - " print_update(event)" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "id": "40e5db8e-9db9-4ac7-9d76-a99fd4034bf3", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "================================\u001b[1m Human Message \u001b[0m=================================\n", - "\n", - "what NFL team do you think I like?\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "I don't actually have any information about what NFL team you might like. In our conversation so far, you've only mentioned that you're a fan of the Boston Celtics basketball team. I don't have any prior knowledge about your preferences for NFL teams. Unless you provide me with that information, I don't have a basis to guess which NFL team you might be a fan of.\n" - ] - } - ], - "source": [ - "input_message = HumanMessage(content=\"what NFL team do you think I like?\")\n", - "input_message.pretty_print()\n", - "for event in app.stream({\"messages\": [input_message]}, config, stream_mode=\"updates\"):\n", - " print_update(event)" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "id": "0a1a0fda-5309-45f0-9465-9f3dff604d74", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "================================\u001b[1m Human Message \u001b[0m=================================\n", - "\n", - "i like the patriots!\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "Okay, got it! Thanks for sharing that you're also a fan of the New England Patriots in the NFL. That makes sense, given your interest in other Boston sports teams like the Celtics. The Patriots have also had a very successful run over the past couple of decades, winning multiple Super Bowls. It's fun to follow winning franchises like the Celtics and Patriots. Do you have a favorite Patriots player or moment that stands out to you?\n", - "================================\u001b[1m Remove Message \u001b[0m================================\n", - "\n", - "\n", - "================================\u001b[1m Remove Message \u001b[0m================================\n", - "\n", - "\n", - "================================\u001b[1m Remove Message \u001b[0m================================\n", - "\n", - "\n", - "================================\u001b[1m Remove Message \u001b[0m================================\n", - "\n", - "\n", - "================================\u001b[1m Remove Message \u001b[0m================================\n", - "\n", - "\n", - "================================\u001b[1m Remove Message \u001b[0m================================\n", - "\n", - "\n", - "Okay, extending the summary with the new information:\n", - "\n", - "- You initially introduced yourself as Bob and said you like the Boston Celtics basketball team. \n", - "- I acknowledged that and we discussed your appreciation for the Celtics' history of winning.\n", - "- You then asked what your name was, and I reminded you that you had introduced yourself as Bob earlier in the conversation.\n", - "- You followed up by asking what NFL team I thought you might like, and I explained that I didn't have any prior information about your NFL team preferences.\n", - "- You then revealed that you are also a fan of the New England Patriots, which made sense given your Celtics fandom.\n", - "- I responded positively to this new information, noting the Patriots' own impressive success and dynasty over the past couple of decades.\n", - "- I then asked if you have a particular favorite Patriots player or moment that stands out to you, continuing the friendly, conversational tone.\n", - "\n", - "Overall, the discussion has focused on your sports team preferences, with you sharing that you are a fan of both the Celtics and the Patriots. I've tried to engage with your interests and ask follow-up questions to keep the dialogue flowing.\n" - ] - } - ], - "source": [ - "input_message = HumanMessage(content=\"i like the patriots!\")\n", - "input_message.pretty_print()\n", - "for event in app.stream({\"messages\": [input_message]}, config, stream_mode=\"updates\"):\n", - " print_update(event)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.1" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/docs/docs/how-tos/memory/delete-messages.ipynb b/docs/docs/how-tos/memory/delete-messages.ipynb deleted file mode 100644 index 3d8fc54d2..000000000 --- a/docs/docs/how-tos/memory/delete-messages.ipynb +++ /dev/null @@ -1,479 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "51466c8d-8ce4-4b3d-be4e-18fdbeda5f53", - "metadata": {}, - "source": [ - "# How to delete messages\n", - "\n", - "One of the common states for a graph is a list of messages. Usually you only add messages to that state. However, sometimes you may want to remove messages (either by directly modifying the state or as part of the graph). To do that, you can use the `RemoveMessage` modifier. In this guide, we will cover how to do that.\n", - "\n", - "The key idea is that each state key has a `reducer` key. This key specifies how to combine updates to the state. The default `MessagesState` has a messages key, and the reducer for that key accepts these `RemoveMessage` modifiers. That reducer then uses these `RemoveMessage` to delete messages from the key.\n", - "\n", - "So note that just because your graph state has a key that is a list of messages, it doesn't mean that that this `RemoveMessage` modifier will work. You also have to have a `reducer` defined that knows how to work with this.\n", - "\n", - "**NOTE**: Many models expect certain rules around lists of messages. For example, some expect them to start with a `user` message, others expect all messages with tool calls to be followed by a tool message. **When deleting messages, you will want to make sure you don't violate these rules.**" - ] - }, - { - "cell_type": "markdown", - "id": "7cbd446a-808f-4394-be92-d45ab818953c", - "metadata": {}, - "source": [ - "## Setup\n", - "\n", - "First, let's build a simple graph that uses messages. Note that it's using the `MessagesState` which has the required `reducer`." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "af4ce0ba-7596-4e5f-8bf8-0b0bd6e62833", - "metadata": {}, - "outputs": [], - "source": [ - "%%capture --no-stderr\n", - "%pip install --quiet -U langgraph langchain_anthropic" - ] - }, - { - "cell_type": "markdown", - "id": "0abe11f4-62ed-4dc4-8875-3db21e260d1d", - "metadata": {}, - "source": [ - "Next, we need to set API keys for Anthropic (the LLM we will use)" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "c903a1cf-2977-4e2d-ad7d-8b3946821d89", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "ANTHROPIC_API_KEY: ········\n" - ] - } - ], - "source": [ - "import getpass\n", - "import os\n", - "\n", - "\n", - "def _set_env(var: str):\n", - " if not os.environ.get(var):\n", - " os.environ[var] = getpass.getpass(f\"{var}: \")\n", - "\n", - "\n", - "_set_env(\"ANTHROPIC_API_KEY\")" - ] - }, - { - "cell_type": "markdown", - "id": "f0ed46a8-effe-4596-b0e1-a6a29ee16f5c", - "metadata": {}, - "source": [ - "
    \n", - "

    Set up LangSmith for LangGraph development

    \n", - "

    \n", - " Sign up for LangSmith to quickly spot issues and improve the performance of your LangGraph projects. LangSmith lets you use trace data to debug, test, and monitor your LLM apps built with LangGraph — read more about how to get started here. \n", - "

    \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "id": "4767ef1c-a7cf-41f8-a301-558988cb7ac5", - "metadata": {}, - "source": [ - "## Build the agent\n", - "Let's now build a simple ReAct style agent." - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "378899a9-3b9a-4748-95b6-eb00e0828677", - "metadata": {}, - "outputs": [], - "source": [ - "from typing import Literal\n", - "\n", - "from langchain_anthropic import ChatAnthropic\n", - "from langchain_core.tools import tool\n", - "\n", - "from langgraph.checkpoint.memory import MemorySaver\n", - "from langgraph.graph import MessagesState, StateGraph, START, END\n", - "from langgraph.prebuilt import ToolNode\n", - "\n", - "memory = MemorySaver()\n", - "\n", - "\n", - "@tool\n", - "def search(query: str):\n", - " \"\"\"Call to surf the web.\"\"\"\n", - " # This is a placeholder for the actual implementation\n", - " # Don't let the LLM know this though 😊\n", - " return \"It's sunny in San Francisco, but you better look out if you're a Gemini 😈.\"\n", - "\n", - "\n", - "tools = [search]\n", - "tool_node = ToolNode(tools)\n", - "model = ChatAnthropic(model_name=\"claude-3-haiku-20240307\")\n", - "bound_model = model.bind_tools(tools)\n", - "\n", - "\n", - "def should_continue(state: MessagesState):\n", - " \"\"\"Return the next node to execute.\"\"\"\n", - " last_message = state[\"messages\"][-1]\n", - " # If there is no function call, then we finish\n", - " if not last_message.tool_calls:\n", - " return END\n", - " # Otherwise if there is, we continue\n", - " return \"action\"\n", - "\n", - "\n", - "# Define the function that calls the model\n", - "def call_model(state: MessagesState):\n", - " response = model.invoke(state[\"messages\"])\n", - " # We return a list, because this will get added to the existing list\n", - " return {\"messages\": response}\n", - "\n", - "\n", - "# Define a new graph\n", - "workflow = StateGraph(MessagesState)\n", - "\n", - "# Define the two nodes we will cycle between\n", - "workflow.add_node(\"agent\", call_model)\n", - "workflow.add_node(\"action\", tool_node)\n", - "\n", - "# Set the entrypoint as `agent`\n", - "# This means that this node is the first one called\n", - "workflow.add_edge(START, \"agent\")\n", - "\n", - "# We now add a conditional edge\n", - "workflow.add_conditional_edges(\n", - " # First, we define the start node. We use `agent`.\n", - " # This means these are the edges taken after the `agent` node is called.\n", - " \"agent\",\n", - " # Next, we pass in the function that will determine which node is called next.\n", - " should_continue,\n", - " # Next, we pass in the path map - all the possible nodes this edge could go to\n", - " [\"action\", END],\n", - ")\n", - "\n", - "# We now add a normal edge from `tools` to `agent`.\n", - "# This means that after `tools` is called, `agent` node is called next.\n", - "workflow.add_edge(\"action\", \"agent\")\n", - "\n", - "# Finally, we compile it!\n", - "# This compiles it into a LangChain Runnable,\n", - "# meaning you can use it as you would any other runnable\n", - "app = workflow.compile(checkpointer=memory)" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "57b27553-21be-43e5-ac48-d1d0a3aa0dca", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "================================\u001b[1m Human Message \u001b[0m=================================\n", - "\n", - "hi! I'm bob\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "It's nice to meet you, Bob! I'm an AI assistant created by Anthropic. I'm here to help out with any questions or tasks you might have. Please let me know if there's anything I can assist you with.\n", - "================================\u001b[1m Human Message \u001b[0m=================================\n", - "\n", - "what's my name?\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "You said your name is Bob.\n" - ] - } - ], - "source": [ - "from langchain_core.messages import HumanMessage\n", - "\n", - "config = {\"configurable\": {\"thread_id\": \"2\"}}\n", - "input_message = HumanMessage(content=\"hi! I'm bob\")\n", - "for event in app.stream({\"messages\": [input_message]}, config, stream_mode=\"values\"):\n", - " event[\"messages\"][-1].pretty_print()\n", - "\n", - "\n", - "input_message = HumanMessage(content=\"what's my name?\")\n", - "for event in app.stream({\"messages\": [input_message]}, config, stream_mode=\"values\"):\n", - " event[\"messages\"][-1].pretty_print()" - ] - }, - { - "cell_type": "markdown", - "id": "2fb0de5b-30ec-42d4-813a-7ad63fe1c367", - "metadata": {}, - "source": [ - "## Manually deleting messages\n", - "\n", - "First, we will cover how to manually delete messages. Let's take a look at the current state of the thread:" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "8a850529-d038-48f7-b5a2-8d4d2923f83a", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[HumanMessage(content=\"hi! I'm bob\", additional_kwargs={}, response_metadata={}, id='db576005-3a60-4b3b-8925-dc602ac1c571'),\n", - " AIMessage(content=\"It's nice to meet you, Bob! I'm an AI assistant created by Anthropic. I'm here to help out with any questions or tasks you might have. Please let me know if there's anything I can assist you with.\", additional_kwargs={}, response_metadata={'id': 'msg_01BKAnYxmoC6bQ9PpCuHk8ZT', 'model': 'claude-3-haiku-20240307', 'stop_reason': 'end_turn', 'stop_sequence': None, 'usage': {'input_tokens': 12, 'output_tokens': 52}}, id='run-3a60c536-b207-4c56-98f3-03f94d49a9e4-0', usage_metadata={'input_tokens': 12, 'output_tokens': 52, 'total_tokens': 64}),\n", - " HumanMessage(content=\"what's my name?\", additional_kwargs={}, response_metadata={}, id='2088c465-400b-430b-ad80-fad47dc1f2d6'),\n", - " AIMessage(content='You said your name is Bob.', additional_kwargs={}, response_metadata={'id': 'msg_013UWTLTzwZi81vke8mMQ2KP', 'model': 'claude-3-haiku-20240307', 'stop_reason': 'end_turn', 'stop_sequence': None, 'usage': {'input_tokens': 72, 'output_tokens': 10}}, id='run-3a6883be-0c52-4938-af98-e9e7476659eb-0', usage_metadata={'input_tokens': 72, 'output_tokens': 10, 'total_tokens': 82})]" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "messages = app.get_state(config).values[\"messages\"]\n", - "messages" - ] - }, - { - "cell_type": "markdown", - "id": "81be8a0a-1e94-4302-bd84-d1b72e3c501c", - "metadata": {}, - "source": [ - "We can call `update_state` and pass in the id of the first message. This will delete that message." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "df1a0970-7e64-4170-beef-2855d10eef42", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'configurable': {'thread_id': '2',\n", - " 'checkpoint_ns': '',\n", - " 'checkpoint_id': '1ef75157-f251-6a2a-8005-82a86a6593a0'}}" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "from langchain_core.messages import RemoveMessage\n", - "\n", - "app.update_state(config, {\"messages\": RemoveMessage(id=messages[0].id)})" - ] - }, - { - "cell_type": "markdown", - "id": "9c9127ae-0d42-42b8-957f-ea69a5da555f", - "metadata": {}, - "source": [ - "If we now look at the messages, we can verify that the first one was deleted." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "8bfe4ffa-e170-43bc-aec4-6e36ac620931", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[AIMessage(content=\"It's nice to meet you, Bob! I'm Claude, an AI assistant created by Anthropic. How can I assist you today?\", response_metadata={'id': 'msg_01XPSAenmSqK8rX2WgPZHfz7', 'model': 'claude-3-haiku-20240307', 'stop_reason': 'end_turn', 'stop_sequence': None, 'usage': {'input_tokens': 12, 'output_tokens': 32}}, id='run-1c69af09-adb1-412d-9010-2456e5a555fb-0', usage_metadata={'input_tokens': 12, 'output_tokens': 32, 'total_tokens': 44}),\n", - " HumanMessage(content=\"what's my name?\", id='f3c71afe-8ce2-4ed0-991e-65021f03b0a5'),\n", - " AIMessage(content='Your name is Bob, as you introduced yourself at the beginning of our conversation.', response_metadata={'id': 'msg_01BPZdwsjuMAbC1YAkqawXaF', 'model': 'claude-3-haiku-20240307', 'stop_reason': 'end_turn', 'stop_sequence': None, 'usage': {'input_tokens': 52, 'output_tokens': 19}}, id='run-b2eb9137-2f4e-446f-95f5-3d5f621a2cf8-0', usage_metadata={'input_tokens': 52, 'output_tokens': 19, 'total_tokens': 71})]" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "messages = app.get_state(config).values[\"messages\"]\n", - "messages" - ] - }, - { - "cell_type": "markdown", - "id": "ef129a75-4cad-44d7-b532-eb37b0553c0c", - "metadata": {}, - "source": [ - "## Programmatically deleting messages\n", - "\n", - "We can also delete messages programmatically from inside the graph. Here we'll modify the graph to delete any old messages (longer than 3 messages ago) at the end of a graph run." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "bb22ede0-e153-4fd0-a4c0-f9af2f7663b1", - "metadata": {}, - "outputs": [], - "source": [ - "from langchain_core.messages import RemoveMessage\n", - "from langgraph.graph import END\n", - "\n", - "\n", - "def delete_messages(state):\n", - " messages = state[\"messages\"]\n", - " if len(messages) > 3:\n", - " return {\"messages\": [RemoveMessage(id=m.id) for m in messages[:-3]]}\n", - "\n", - "\n", - "# We need to modify the logic to call delete_messages rather than end right away\n", - "def should_continue(state: MessagesState) -> Literal[\"action\", \"delete_messages\"]:\n", - " \"\"\"Return the next node to execute.\"\"\"\n", - " last_message = state[\"messages\"][-1]\n", - " # If there is no function call, then we call our delete_messages function\n", - " if not last_message.tool_calls:\n", - " return \"delete_messages\"\n", - " # Otherwise if there is, we continue\n", - " return \"action\"\n", - "\n", - "\n", - "# Define a new graph\n", - "workflow = StateGraph(MessagesState)\n", - "workflow.add_node(\"agent\", call_model)\n", - "workflow.add_node(\"action\", tool_node)\n", - "\n", - "# This is our new node we're defining\n", - "workflow.add_node(delete_messages)\n", - "\n", - "\n", - "workflow.add_edge(START, \"agent\")\n", - "workflow.add_conditional_edges(\n", - " \"agent\",\n", - " should_continue,\n", - ")\n", - "workflow.add_edge(\"action\", \"agent\")\n", - "\n", - "# This is the new edge we're adding: after we delete messages, we finish\n", - "workflow.add_edge(\"delete_messages\", END)\n", - "app = workflow.compile(checkpointer=memory)" - ] - }, - { - "cell_type": "markdown", - "id": "52cbdef6-7db7-45a2-8194-de4f8929bd1f", - "metadata": {}, - "source": [ - "We can now try this out. We can call the graph twice and then check the state" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "3975f34c-c243-40ea-b9d2-424d50a48dc9", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[('human', \"hi! I'm bob\")]\n", - "[('human', \"hi! I'm bob\"), ('ai', \"Hello Bob! It's nice to meet you. I'm an AI assistant created by Anthropic. I'm here to help with any questions or tasks you might have. Please let me know how I can assist you.\")]\n", - "[('human', \"hi! I'm bob\"), ('ai', \"Hello Bob! It's nice to meet you. I'm an AI assistant created by Anthropic. I'm here to help with any questions or tasks you might have. Please let me know how I can assist you.\"), ('human', \"what's my name?\")]\n", - "[('human', \"hi! I'm bob\"), ('ai', \"Hello Bob! It's nice to meet you. I'm an AI assistant created by Anthropic. I'm here to help with any questions or tasks you might have. Please let me know how I can assist you.\"), ('human', \"what's my name?\"), ('ai', 'You said your name is Bob, so that is the name I have for you.')]\n", - "[('ai', \"Hello Bob! It's nice to meet you. I'm an AI assistant created by Anthropic. I'm here to help with any questions or tasks you might have. Please let me know how I can assist you.\"), ('human', \"what's my name?\"), ('ai', 'You said your name is Bob, so that is the name I have for you.')]\n" - ] - } - ], - "source": [ - "from langchain_core.messages import HumanMessage\n", - "\n", - "config = {\"configurable\": {\"thread_id\": \"3\"}}\n", - "input_message = HumanMessage(content=\"hi! I'm bob\")\n", - "for event in app.stream({\"messages\": [input_message]}, config, stream_mode=\"values\"):\n", - " print([(message.type, message.content) for message in event[\"messages\"]])\n", - "\n", - "\n", - "input_message = HumanMessage(content=\"what's my name?\")\n", - "for event in app.stream({\"messages\": [input_message]}, config, stream_mode=\"values\"):\n", - " print([(message.type, message.content) for message in event[\"messages\"]])" - ] - }, - { - "cell_type": "markdown", - "id": "67b2fd2a-14a1-4c47-8632-f8cbb0ba1d35", - "metadata": {}, - "source": [ - "If we now check the state, we should see that it is only three messages long. This is because we just deleted the earlier messages - otherwise it would be four!" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "a3e15abb-81d8-4072-9f10-61ae0fd61dac", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[AIMessage(content=\"Hello Bob! It's nice to meet you. I'm an AI assistant created by Anthropic. I'm here to help with any questions or tasks you might have. Please let me know how I can assist you.\", response_metadata={'id': 'msg_01XPEgPPbcnz5BbGWUDWTmzG', 'model': 'claude-3-haiku-20240307', 'stop_reason': 'end_turn', 'stop_sequence': None, 'usage': {'input_tokens': 12, 'output_tokens': 48}}, id='run-eded3820-b6a9-4d66-9210-03ca41787ce6-0', usage_metadata={'input_tokens': 12, 'output_tokens': 48, 'total_tokens': 60}),\n", - " HumanMessage(content=\"what's my name?\", id='a0ea2097-3280-402b-92e1-67177b807ae8'),\n", - " AIMessage(content='You said your name is Bob, so that is the name I have for you.', response_metadata={'id': 'msg_01JGT62pxhrhN4SykZ57CSjW', 'model': 'claude-3-haiku-20240307', 'stop_reason': 'end_turn', 'stop_sequence': None, 'usage': {'input_tokens': 68, 'output_tokens': 20}}, id='run-ace3519c-81f8-45fe-a777-91f42d48b3a3-0', usage_metadata={'input_tokens': 68, 'output_tokens': 20, 'total_tokens': 88})]" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "messages = app.get_state(config).values[\"messages\"]\n", - "messages" - ] - }, - { - "cell_type": "markdown", - "id": "359cfeae-d43a-46ee-9069-a1cab9a5720a", - "metadata": {}, - "source": [ - "Remember, when deleting messages you will want to make sure that the remaining message list is still valid. This message list **may actually not be** - this is because it currently starts with an AI message, which some models do not allow." - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.9" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/docs/docs/how-tos/memory/manage-conversation-history.ipynb b/docs/docs/how-tos/memory/manage-conversation-history.ipynb deleted file mode 100644 index 6407d50ec..000000000 --- a/docs/docs/how-tos/memory/manage-conversation-history.ipynb +++ /dev/null @@ -1,380 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "51466c8d-8ce4-4b3d-be4e-18fdbeda5f53", - "metadata": {}, - "source": [ - "# How to manage conversation history\n", - "\n", - "One of the most common use cases for persistence is to use it to keep track of conversation history. This is great - it makes it easy to continue conversations. As conversations get longer and longer, however, this conversation history can build up and take up more and more of the context window. This can often be undesirable as it leads to more expensive and longer calls to the LLM, and potentially ones that error. In order to prevent this from happening, you need to properly manage the conversation history.\n", - "\n", - "Note: this guide focuses on how to do this in LangGraph, where you can fully customize how this is done. If you want a more off-the-shelf solution, you can look into functionality provided in LangChain:\n", - "\n", - "- [How to filter messages](https://python.langchain.com/docs/how_to/filter_messages/)\n", - "- [How to trim messages](https://python.langchain.com/docs/how_to/trim_messages/)" - ] - }, - { - "cell_type": "markdown", - "id": "7cbd446a-808f-4394-be92-d45ab818953c", - "metadata": {}, - "source": [ - "## Setup\n", - "\n", - "First, let's set up the packages we're going to want to use" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "af4ce0ba-7596-4e5f-8bf8-0b0bd6e62833", - "metadata": {}, - "outputs": [], - "source": [ - "%%capture --no-stderr\n", - "%pip install --quiet -U langgraph langchain_anthropic" - ] - }, - { - "cell_type": "markdown", - "id": "0abe11f4-62ed-4dc4-8875-3db21e260d1d", - "metadata": {}, - "source": [ - "Next, we need to set API keys for Anthropic (the LLM we will use)" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "c903a1cf-2977-4e2d-ad7d-8b3946821d89", - "metadata": {}, - "outputs": [], - "source": [ - "import getpass\n", - "import os\n", - "\n", - "\n", - "def _set_env(var: str):\n", - " if not os.environ.get(var):\n", - " os.environ[var] = getpass.getpass(f\"{var}: \")\n", - "\n", - "\n", - "_set_env(\"ANTHROPIC_API_KEY\")" - ] - }, - { - "cell_type": "markdown", - "id": "f0ed46a8-effe-4596-b0e1-a6a29ee16f5c", - "metadata": {}, - "source": [ - "
    \n", - "

    Set up LangSmith for LangGraph development

    \n", - "

    \n", - " Sign up for LangSmith to quickly spot issues and improve the performance of your LangGraph projects. LangSmith lets you use trace data to debug, test, and monitor your LLM apps built with LangGraph — read more about how to get started here. \n", - "

    \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "id": "4767ef1c-a7cf-41f8-a301-558988cb7ac5", - "metadata": {}, - "source": [ - "## Build the agent\n", - "Let's now build a simple ReAct style agent." - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "378899a9-3b9a-4748-95b6-eb00e0828677", - "metadata": {}, - "outputs": [], - "source": [ - "from typing import Literal\n", - "\n", - "from langchain_anthropic import ChatAnthropic\n", - "from langchain_core.tools import tool\n", - "\n", - "from langgraph.checkpoint.memory import MemorySaver\n", - "from langgraph.graph import MessagesState, StateGraph, START, END\n", - "from langgraph.prebuilt import ToolNode\n", - "\n", - "memory = MemorySaver()\n", - "\n", - "\n", - "@tool\n", - "def search(query: str):\n", - " \"\"\"Call to surf the web.\"\"\"\n", - " # This is a placeholder for the actual implementation\n", - " # Don't let the LLM know this though 😊\n", - " return \"It's sunny in San Francisco, but you better look out if you're a Gemini 😈.\"\n", - "\n", - "\n", - "tools = [search]\n", - "tool_node = ToolNode(tools)\n", - "model = ChatAnthropic(model_name=\"claude-3-haiku-20240307\")\n", - "bound_model = model.bind_tools(tools)\n", - "\n", - "\n", - "def should_continue(state: MessagesState):\n", - " \"\"\"Return the next node to execute.\"\"\"\n", - " last_message = state[\"messages\"][-1]\n", - " # If there is no function call, then we finish\n", - " if not last_message.tool_calls:\n", - " return END\n", - " # Otherwise if there is, we continue\n", - " return \"action\"\n", - "\n", - "\n", - "# Define the function that calls the model\n", - "def call_model(state: MessagesState):\n", - " response = bound_model.invoke(state[\"messages\"])\n", - " # We return a list, because this will get added to the existing list\n", - " return {\"messages\": response}\n", - "\n", - "\n", - "# Define a new graph\n", - "workflow = StateGraph(MessagesState)\n", - "\n", - "# Define the two nodes we will cycle between\n", - "workflow.add_node(\"agent\", call_model)\n", - "workflow.add_node(\"action\", tool_node)\n", - "\n", - "# Set the entrypoint as `agent`\n", - "# This means that this node is the first one called\n", - "workflow.add_edge(START, \"agent\")\n", - "\n", - "# We now add a conditional edge\n", - "workflow.add_conditional_edges(\n", - " # First, we define the start node. We use `agent`.\n", - " # This means these are the edges taken after the `agent` node is called.\n", - " \"agent\",\n", - " # Next, we pass in the function that will determine which node is called next.\n", - " should_continue,\n", - " # Next, we pass in the path map - all the possible nodes this edge could go to\n", - " [\"action\", END],\n", - ")\n", - "\n", - "# We now add a normal edge from `tools` to `agent`.\n", - "# This means that after `tools` is called, `agent` node is called next.\n", - "workflow.add_edge(\"action\", \"agent\")\n", - "\n", - "# Finally, we compile it!\n", - "# This compiles it into a LangChain Runnable,\n", - "# meaning you can use it as you would any other runnable\n", - "app = workflow.compile(checkpointer=memory)" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "57b27553-21be-43e5-ac48-d1d0a3aa0dca", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "================================\u001b[1m Human Message \u001b[0m=================================\n", - "\n", - "hi! I'm bob\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "Nice to meet you, Bob! As an AI assistant, I don't have a physical form, but I'm happy to chat with you and try my best to help out however I can. Please feel free to ask me anything, and I'll do my best to provide useful information or assistance.\n", - "================================\u001b[1m Human Message \u001b[0m=================================\n", - "\n", - "what's my name?\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "You said your name is Bob, so that is the name I have for you.\n" - ] - } - ], - "source": [ - "from langchain_core.messages import HumanMessage\n", - "\n", - "config = {\"configurable\": {\"thread_id\": \"2\"}}\n", - "input_message = HumanMessage(content=\"hi! I'm bob\")\n", - "for event in app.stream({\"messages\": [input_message]}, config, stream_mode=\"values\"):\n", - " event[\"messages\"][-1].pretty_print()\n", - "\n", - "\n", - "input_message = HumanMessage(content=\"what's my name?\")\n", - "for event in app.stream({\"messages\": [input_message]}, config, stream_mode=\"values\"):\n", - " event[\"messages\"][-1].pretty_print()" - ] - }, - { - "cell_type": "markdown", - "id": "5d5da4c9-ba8b-46cb-a860-63fe585d15c5", - "metadata": {}, - "source": [ - "## Filtering messages\n", - "\n", - "The most straight-forward thing to do to prevent conversation history from blowing up is to filter the list of messages before they get passed to the LLM. This involves two parts: defining a function to filter messages, and then adding it to the graph. See the example below which defines a really simple `filter_messages` function and then uses it." - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "eb20430f", - "metadata": {}, - "outputs": [], - "source": [ - "from typing import Literal\n", - "\n", - "from langchain_anthropic import ChatAnthropic\n", - "from langchain_core.tools import tool\n", - "\n", - "from langgraph.checkpoint.memory import MemorySaver\n", - "from langgraph.graph import MessagesState, StateGraph, START\n", - "from langgraph.prebuilt import ToolNode\n", - "\n", - "memory = MemorySaver()\n", - "\n", - "\n", - "@tool\n", - "def search(query: str):\n", - " \"\"\"Call to surf the web.\"\"\"\n", - " # This is a placeholder for the actual implementation\n", - " # Don't let the LLM know this though 😊\n", - " return \"It's sunny in San Francisco, but you better look out if you're a Gemini 😈.\"\n", - "\n", - "\n", - "tools = [search]\n", - "tool_node = ToolNode(tools)\n", - "model = ChatAnthropic(model_name=\"claude-3-haiku-20240307\")\n", - "bound_model = model.bind_tools(tools)\n", - "\n", - "\n", - "def should_continue(state: MessagesState):\n", - " \"\"\"Return the next node to execute.\"\"\"\n", - " last_message = state[\"messages\"][-1]\n", - " # If there is no function call, then we finish\n", - " if not last_message.tool_calls:\n", - " return END\n", - " # Otherwise if there is, we continue\n", - " return \"action\"\n", - "\n", - "\n", - "def filter_messages(messages: list):\n", - " # This is very simple helper function which only ever uses the last message\n", - " return messages[-1:]\n", - "\n", - "\n", - "# Define the function that calls the model\n", - "def call_model(state: MessagesState):\n", - " messages = filter_messages(state[\"messages\"])\n", - " response = bound_model.invoke(messages)\n", - " # We return a list, because this will get added to the existing list\n", - " return {\"messages\": response}\n", - "\n", - "\n", - "# Define a new graph\n", - "workflow = StateGraph(MessagesState)\n", - "\n", - "# Define the two nodes we will cycle between\n", - "workflow.add_node(\"agent\", call_model)\n", - "workflow.add_node(\"action\", tool_node)\n", - "\n", - "# Set the entrypoint as `agent`\n", - "# This means that this node is the first one called\n", - "workflow.add_edge(START, \"agent\")\n", - "\n", - "# We now add a conditional edge\n", - "workflow.add_conditional_edges(\n", - " # First, we define the start node. We use `agent`.\n", - " # This means these are the edges taken after the `agent` node is called.\n", - " \"agent\",\n", - " # Next, we pass in the function that will determine which node is called next.\n", - " should_continue,\n", - " # Next, we pass in the pathmap - all the possible nodes this edge could go to\n", - " [\"action\", END],\n", - ")\n", - "\n", - "# We now add a normal edge from `tools` to `agent`.\n", - "# This means that after `tools` is called, `agent` node is called next.\n", - "workflow.add_edge(\"action\", \"agent\")\n", - "\n", - "# Finally, we compile it!\n", - "# This compiles it into a LangChain Runnable,\n", - "# meaning you can use it as you would any other runnable\n", - "app = workflow.compile(checkpointer=memory)" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "52468ebb-4b23-45ac-a98e-b4439f37740a", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "================================\u001b[1m Human Message \u001b[0m=================================\n", - "\n", - "hi! I'm bob\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "Nice to meet you, Bob! I'm Claude, an AI assistant created by Anthropic. It's a pleasure to chat with you. Feel free to ask me anything, I'm here to help!\n", - "================================\u001b[1m Human Message \u001b[0m=================================\n", - "\n", - "what's my name?\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "I'm afraid I don't actually know your name. As an AI assistant, I don't have information about the specific identities of the people I talk to. I only know what is provided to me during our conversation.\n" - ] - } - ], - "source": [ - "from langchain_core.messages import HumanMessage\n", - "\n", - "config = {\"configurable\": {\"thread_id\": \"2\"}}\n", - "input_message = HumanMessage(content=\"hi! I'm bob\")\n", - "for event in app.stream({\"messages\": [input_message]}, config, stream_mode=\"values\"):\n", - " event[\"messages\"][-1].pretty_print()\n", - "\n", - "# This will now not remember the previous messages\n", - "# (because we set `messages[-1:]` in the filter messages argument)\n", - "input_message = HumanMessage(content=\"what's my name?\")\n", - "for event in app.stream({\"messages\": [input_message]}, config, stream_mode=\"values\"):\n", - " event[\"messages\"][-1].pretty_print()" - ] - }, - { - "cell_type": "markdown", - "id": "454102b6-7112-4710-aa08-ba675e8be14c", - "metadata": {}, - "source": [ - "In the above example we defined the `filter_messages` function ourselves. We also provide off-the-shelf ways to trim and filter messages in LangChain. \n", - "\n", - "- [How to filter messages](https://python.langchain.com/docs/how_to/filter_messages/)\n", - "- [How to trim messages](https://python.langchain.com/docs/how_to/trim_messages/)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.9" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/docs/docs/how-tos/multi-agent-multi-turn-convo.ipynb b/docs/docs/how-tos/multi-agent-multi-turn-convo.ipynb deleted file mode 100644 index d1e454422..000000000 --- a/docs/docs/how-tos/multi-agent-multi-turn-convo.ipynb +++ /dev/null @@ -1,473 +0,0 @@ -{ - "cells": [ - { - "attachments": {}, - "cell_type": "markdown", - "id": "a2b182eb-1e31-43c8-85b1-706508dfa370", - "metadata": {}, - "source": [ - "# How to add multi-turn conversation in a multi-agent application\n", - "\n", - "!!! info \"Prerequisites\"\n", - " This guide assumes familiarity with the following:\n", - "\n", - " - [How to implement handoffs between agents](../agent-handoffs)\n", - " - [Multi-agent systems](../../concepts/multi_agent)\n", - " - [Human-in-the-loop](../../concepts/human_in_the_loop)\n", - " - [Command](../../concepts/low_level/#command)\n", - " - [LangGraph Glossary](../../concepts/low_level/)\n", - "\n", - "\n", - "In this how-to guide, we’ll build an application that allows an end-user to engage in a *multi-turn conversation* with one or more agents. We'll create a node that uses an [`interrupt`](../../reference/types/#langgraph.types.interrupt) to collect user input and routes back to the **active** agent.\n", - "\n", - "The agents will be implemented as nodes in a graph that executes agent steps and determines the next action: \n", - "\n", - "1. **Wait for user input** to continue the conversation, or \n", - "2. **Route to another agent** (or back to itself, such as in a loop) via a [**handoff**](../../concepts/multi_agent/#handoffs).\n", - "\n", - "```python\n", - "def human(state: MessagesState) -> Command[Literal[\"agent\", \"another_agent\"]]:\n", - " \"\"\"A node for collecting user input.\"\"\"\n", - " user_input = interrupt(value=\"Ready for user input.\")\n", - "\n", - " # Determine the active agent.\n", - " active_agent = ...\n", - "\n", - " ...\n", - " return Command(\n", - " update={\n", - " \"messages\": [{\n", - " \"role\": \"human\",\n", - " \"content\": user_input,\n", - " }]\n", - " },\n", - " goto=active_agent\n", - " )\n", - "\n", - "def agent(state) -> Command[Literal[\"agent\", \"another_agent\", \"human\"]]:\n", - " # The condition for routing/halting can be anything, e.g. LLM tool call / structured output, etc.\n", - " goto = get_next_agent(...) # 'agent' / 'another_agent'\n", - " if goto:\n", - " return Command(goto=goto, update={\"my_state_key\": \"my_state_value\"})\n", - " else:\n", - " return Command(goto=\"human\") # Go to human node\n", - "```" - ] - }, - { - "cell_type": "markdown", - "id": "faaa4444-cd06-4813-b9ca-c9700fe12cb7", - "metadata": {}, - "source": [ - "## Setup\n", - "\n", - "First, let's install the required packages" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "05038da0-31df-4066-a1a4-c4ccb5db4d3a", - "metadata": {}, - "outputs": [], - "source": [ - "%%capture --no-stderr\n", - "%pip install -U langgraph langchain-anthropic" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "0bcff5d4-130e-426d-9285-40d0f72c7cd3", - "metadata": {}, - "outputs": [], - "source": [ - "import getpass\n", - "import os\n", - "\n", - "\n", - "def _set_env(var: str):\n", - " if not os.environ.get(var):\n", - " os.environ[var] = getpass.getpass(f\"{var}: \")\n", - "\n", - "\n", - "_set_env(\"ANTHROPIC_API_KEY\")" - ] - }, - { - "cell_type": "markdown", - "id": "c3ec6e48-85dc-4905-ba50-985e5d4788e6", - "metadata": {}, - "source": [ - "
    \n", - "

    Set up LangSmith for LangGraph development

    \n", - "

    \n", - " Sign up for LangSmith to quickly spot issues and improve the performance of your LangGraph projects. LangSmith lets you use trace data to debug, test, and monitor your LLM apps built with LangGraph — read more about how to get started here. \n", - "

    \n", - "
    " - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "c217c3fe-ca50-45a1-be91-912bc83ed8b3", - "metadata": {}, - "source": [ - "## Define agents\n", - "\n", - "In this example, we will build a team of travel assistant agents that can communicate with each other via handoffs.\n", - "\n", - "We will create 2 agents:\n", - "\n", - "* `travel_advisor`: can help with travel destination recommendations. Can ask `hotel_advisor` for help.\n", - "* `hotel_advisor`: can help with hotel recommendations. Can ask `travel_advisor` for help.\n", - "\n", - "We will be using prebuilt [`create_react_agent`][langgraph.prebuilt.chat_agent_executor.create_react_agent] for the agents - each agent will have tools specific to its area of expertise as well as a special [tool for handoffs](../agent-handoffs#implementing-handoffs-using-tools) to another agent.\n", - "\n", - "First, let's define the tools we'll be using:" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "eb51463a-4425-44ad-91d5-f21fd5b4e3b3", - "metadata": {}, - "outputs": [], - "source": [ - "import random\n", - "from typing import Annotated, Literal\n", - "\n", - "from langchain_core.tools import tool\n", - "from langchain_core.tools.base import InjectedToolCallId\n", - "from langgraph.prebuilt import InjectedState\n", - "\n", - "\n", - "@tool\n", - "def get_travel_recommendations():\n", - " \"\"\"Get recommendation for travel destinations\"\"\"\n", - " return random.choice([\"aruba\", \"turks and caicos\"])\n", - "\n", - "\n", - "@tool\n", - "def get_hotel_recommendations(location: Literal[\"aruba\", \"turks and caicos\"]):\n", - " \"\"\"Get hotel recommendations for a given destination.\"\"\"\n", - " return {\n", - " \"aruba\": [\n", - " \"The Ritz-Carlton, Aruba (Palm Beach)\"\n", - " \"Bucuti & Tara Beach Resort (Eagle Beach)\"\n", - " ],\n", - " \"turks and caicos\": [\"Grace Bay Club\", \"COMO Parrot Cay\"],\n", - " }[location]\n", - "\n", - "\n", - "def make_handoff_tool(*, agent_name: str):\n", - " \"\"\"Create a tool that can return handoff via a Command\"\"\"\n", - " tool_name = f\"transfer_to_{agent_name}\"\n", - "\n", - " @tool(tool_name)\n", - " def handoff_to_agent(\n", - " state: Annotated[dict, InjectedState],\n", - " tool_call_id: Annotated[str, InjectedToolCallId],\n", - " ):\n", - " \"\"\"Ask another agent for help.\"\"\"\n", - " tool_message = {\n", - " \"role\": \"tool\",\n", - " \"content\": f\"Successfully transferred to {agent_name}\",\n", - " \"name\": tool_name,\n", - " \"tool_call_id\": tool_call_id,\n", - " }\n", - " return Command(\n", - " # navigate to another agent node in the PARENT graph\n", - " goto=agent_name,\n", - " graph=Command.PARENT,\n", - " # This is the state update that the agent `agent_name` will see when it is invoked.\n", - " # We're passing agent's FULL internal message history AND adding a tool message to make sure\n", - " # the resulting chat history is valid.\n", - " update={\"messages\": state[\"messages\"] + [tool_message]},\n", - " )\n", - "\n", - " return handoff_to_agent" - ] - }, - { - "cell_type": "markdown", - "id": "213d661e-6ba4-42b9-bc7f-6c8c423e3419", - "metadata": {}, - "source": [ - "Let's now create our agents using the the prebuilt [`create_react_agent`][langgraph.prebuilt.chat_agent_executor.create_react_agent]. We'll also define a dedicated `human` node with an [`interrupt`][langgraph.types.interrupt] -- we will route to this node after the final response from the agents. Note that to do so we're wrapping each agent invocation in a separate node function that returns `Command(goto=\"human\", ...)`." - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "aa4bdbff-9461-46cc-aee9-8a22d3c3d9ec", - "metadata": {}, - "outputs": [], - "source": [ - "from langchain_anthropic import ChatAnthropic\n", - "from langgraph.graph import MessagesState, StateGraph, START\n", - "from langgraph.prebuilt import create_react_agent, InjectedState\n", - "from langgraph.types import Command, interrupt\n", - "from langgraph.checkpoint.memory import MemorySaver\n", - "\n", - "\n", - "model = ChatAnthropic(model=\"claude-3-5-sonnet-latest\")\n", - "\n", - "\n", - "class MultiAgentState(MessagesState):\n", - " last_active_agent: str\n", - "\n", - "\n", - "# Define travel advisor tools and ReAct agent\n", - "travel_advisor_tools = [\n", - " get_travel_recommendations,\n", - " make_handoff_tool(agent_name=\"hotel_advisor\"),\n", - "]\n", - "travel_advisor = create_react_agent(\n", - " model,\n", - " travel_advisor_tools,\n", - " prompt=(\n", - " \"You are a general travel expert that can recommend travel destinations (e.g. countries, cities, etc). \"\n", - " \"If you need hotel recommendations, ask 'hotel_advisor' for help. \"\n", - " \"You MUST include human-readable response before transferring to another agent.\"\n", - " ),\n", - ")\n", - "\n", - "\n", - "def call_travel_advisor(\n", - " state: MultiAgentState,\n", - ") -> Command[Literal[\"hotel_advisor\", \"human\"]]:\n", - " # You can also add additional logic like changing the input to the agent / output from the agent, etc.\n", - " # NOTE: we're invoking the ReAct agent with the full history of messages in the state\n", - " response = travel_advisor.invoke(state)\n", - " update = {**response, \"last_active_agent\": \"travel_advisor\"}\n", - " return Command(update=update, goto=\"human\")\n", - "\n", - "\n", - "# Define hotel advisor tools and ReAct agent\n", - "hotel_advisor_tools = [\n", - " get_hotel_recommendations,\n", - " make_handoff_tool(agent_name=\"travel_advisor\"),\n", - "]\n", - "hotel_advisor = create_react_agent(\n", - " model,\n", - " hotel_advisor_tools,\n", - " prompt=(\n", - " \"You are a hotel expert that can provide hotel recommendations for a given destination. \"\n", - " \"If you need help picking travel destinations, ask 'travel_advisor' for help.\"\n", - " \"You MUST include human-readable response before transferring to another agent.\"\n", - " ),\n", - ")\n", - "\n", - "\n", - "def call_hotel_advisor(\n", - " state: MultiAgentState,\n", - ") -> Command[Literal[\"travel_advisor\", \"human\"]]:\n", - " response = hotel_advisor.invoke(state)\n", - " update = {**response, \"last_active_agent\": \"hotel_advisor\"}\n", - " return Command(update=update, goto=\"human\")\n", - "\n", - "\n", - "def human_node(\n", - " state: MultiAgentState, config\n", - ") -> Command[Literal[\"hotel_advisor\", \"travel_advisor\", \"human\"]]:\n", - " \"\"\"A node for collecting user input.\"\"\"\n", - "\n", - " user_input = interrupt(value=\"Ready for user input.\")\n", - " active_agent = state[\"last_active_agent\"]\n", - "\n", - " return Command(\n", - " update={\n", - " \"messages\": [\n", - " {\n", - " \"role\": \"human\",\n", - " \"content\": user_input,\n", - " }\n", - " ]\n", - " },\n", - " goto=active_agent,\n", - " )\n", - "\n", - "\n", - "builder = StateGraph(MultiAgentState)\n", - "builder.add_node(\"travel_advisor\", call_travel_advisor)\n", - "builder.add_node(\"hotel_advisor\", call_hotel_advisor)\n", - "\n", - "# This adds a node to collect human input, which will route\n", - "# back to the active agent.\n", - "builder.add_node(\"human\", human_node)\n", - "\n", - "# We'll always start with a general travel advisor.\n", - "builder.add_edge(START, \"travel_advisor\")\n", - "\n", - "\n", - "checkpointer = MemorySaver()\n", - "graph = builder.compile(checkpointer=checkpointer)" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "d77921f6-599d-443f-8b15-56b1adafd3a8", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from IPython.display import display, Image\n", - "\n", - "display(Image(graph.get_graph().draw_mermaid_png()))" - ] - }, - { - "cell_type": "markdown", - "id": "af856e1b-41fc-4041-8cbf-3818a60088e0", - "metadata": {}, - "source": [ - "## Test multi-turn conversation\n", - "\n", - "Let's test a multi turn conversation with this application." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "161e0cf1-d13a-4026-8f89-bdab67d1ad4d", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "--- Conversation Turn 1 ---\n", - "\n", - "User: {'messages': [{'role': 'user', 'content': 'i wanna go somewhere warm in the caribbean'}]}\n", - "\n", - "travel_advisor: Based on the recommendations, Aruba would be an excellent choice for your Caribbean getaway! Aruba is known as \"One Happy Island\" and offers:\n", - "- Year-round warm weather with consistent temperatures around 82°F (28°C)\n", - "- Beautiful white sand beaches like Eagle Beach and Palm Beach\n", - "- Clear turquoise waters perfect for swimming and snorkeling\n", - "- Minimal rainfall and location outside the hurricane belt\n", - "- A blend of Caribbean and Dutch culture\n", - "- Great dining options and nightlife\n", - "- Various water sports and activities\n", - "\n", - "Would you like me to get some specific hotel recommendations in Aruba for your stay? I can transfer you to our hotel advisor who can help with accommodations.\n", - "\n", - "--- Conversation Turn 2 ---\n", - "\n", - "User: Command(resume='could you recommend a nice hotel in one of the areas and tell me which area it is.')\n", - "\n", - "hotel_advisor: Based on the recommendations, I can suggest two excellent options:\n", - "\n", - "1. The Ritz-Carlton, Aruba - Located in Palm Beach\n", - "- This luxury resort is situated in the vibrant Palm Beach area\n", - "- Known for its exceptional service and amenities\n", - "- Perfect if you want to be close to dining, shopping, and entertainment\n", - "- Features multiple restaurants, a casino, and a world-class spa\n", - "- Located on a pristine stretch of Palm Beach\n", - "\n", - "2. Bucuti & Tara Beach Resort - Located in Eagle Beach\n", - "- An adults-only boutique resort on Eagle Beach\n", - "- Known for being more intimate and peaceful\n", - "- Award-winning for its sustainability practices\n", - "- Perfect for a romantic getaway or peaceful vacation\n", - "- Located on one of the most beautiful beaches in the Caribbean\n", - "\n", - "Would you like more specific information about either of these properties or their locations?\n", - "\n", - "--- Conversation Turn 3 ---\n", - "\n", - "User: Command(resume='i like the first one. could you recommend something to do near the hotel?')\n", - "\n", - "travel_advisor: Near the Ritz-Carlton in Palm Beach, here are some highly recommended activities:\n", - "\n", - "1. Visit the Palm Beach Plaza Mall - Just a short walk from the hotel, featuring shopping, dining, and entertainment\n", - "2. Try your luck at the Stellaris Casino - It's right in the Ritz-Carlton\n", - "3. Take a sunset sailing cruise - Many depart from the nearby pier\n", - "4. Visit the California Lighthouse - A scenic landmark just north of Palm Beach\n", - "5. Enjoy water sports at Palm Beach:\n", - " - Jet skiing\n", - " - Parasailing\n", - " - Snorkeling\n", - " - Stand-up paddleboarding\n", - "\n", - "Would you like more specific information about any of these activities or would you like to know about other options in the area?\n" - ] - } - ], - "source": [ - "import uuid\n", - "\n", - "thread_config = {\"configurable\": {\"thread_id\": str(uuid.uuid4())}}\n", - "\n", - "inputs = [\n", - " # 1st round of conversation,\n", - " {\n", - " \"messages\": [\n", - " {\"role\": \"user\", \"content\": \"i wanna go somewhere warm in the caribbean\"}\n", - " ]\n", - " },\n", - " # Since we're using `interrupt`, we'll need to resume using the Command primitive.\n", - " # 2nd round of conversation,\n", - " Command(\n", - " resume=\"could you recommend a nice hotel in one of the areas and tell me which area it is.\"\n", - " ),\n", - " # 3rd round of conversation,\n", - " Command(\n", - " resume=\"i like the first one. could you recommend something to do near the hotel?\"\n", - " ),\n", - "]\n", - "\n", - "for idx, user_input in enumerate(inputs):\n", - " print()\n", - " print(f\"--- Conversation Turn {idx + 1} ---\")\n", - " print()\n", - " print(f\"User: {user_input}\")\n", - " print()\n", - " for update in graph.stream(\n", - " user_input,\n", - " config=thread_config,\n", - " stream_mode=\"updates\",\n", - " ):\n", - " for node_id, value in update.items():\n", - " if isinstance(value, dict) and value.get(\"messages\", []):\n", - " last_message = value[\"messages\"][-1]\n", - " if isinstance(last_message, dict) or last_message.type != \"ai\":\n", - " continue\n", - " print(f\"{node_id}: {last_message.content}\")" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.3" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/docs/docs/how-tos/multi-agent-network.ipynb b/docs/docs/how-tos/multi-agent-network.ipynb deleted file mode 100644 index 1805e9b6c..000000000 --- a/docs/docs/how-tos/multi-agent-network.ipynb +++ /dev/null @@ -1,751 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "87684b48-150e-4e15-b0a5-a9dd7851f8fb", - "metadata": {}, - "source": [ - "# How to build a multi-agent network" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "2c65639c-9705-49f1-840a-370718852e98", - "metadata": {}, - "source": [ - "!!! info \"Prerequisites\" \n", - " This guide assumes familiarity with the following:\n", - "\n", - " - [How to implement handoffs between agents](../agent-handoffs)\n", - " - [Multi-agent systems](../../concepts/multi_agent)\n", - " - [Command](../../concepts/low_level/#command)\n", - " - [LangGraph Glossary](../../concepts/low_level/)\n", - "\n", - "In this how-to guide we will demonstrate how to implement a [multi-agent network](../../concepts/multi_agent#network) architecture where each agent can communicate with every other agent (many-to-many connections) and can decide which agent to call next. Individual agents will be defined as graph nodes.\n", - "\n", - "To implement communication between the agents, we will be using [handoffs](../agent-handoffs):\n", - "\n", - "```python\n", - "def agent(state) -> Command[Literal[\"agent\", \"another_agent\"]]:\n", - " # the condition for routing/halting can be anything, e.g. LLM tool call / structured output, etc.\n", - " goto = get_next_agent(...) # 'agent' / 'another_agent'\n", - " return Command(\n", - " # Specify which agent to call next\n", - " goto=goto,\n", - " # Update the graph state\n", - " update={\"my_state_key\": \"my_state_value\"}\n", - " )\n", - "```" - ] - }, - { - "cell_type": "markdown", - "id": "faaa4444-cd06-4813-b9ca-c9700fe12cb7", - "metadata": {}, - "source": [ - "## Setup\n", - "\n", - "First, let's install the required packages" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "05038da0-31df-4066-a1a4-c4ccb5db4d3a", - "metadata": {}, - "outputs": [], - "source": [ - "%%capture --no-stderr\n", - "%pip install -U langgraph langchain-anthropic" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "0bcff5d4-130e-426d-9285-40d0f72c7cd3", - "metadata": {}, - "outputs": [ - { - "name": "stdin", - "output_type": "stream", - "text": [ - "ANTHROPIC_API_KEY: ········\n" - ] - } - ], - "source": [ - "import getpass\n", - "import os\n", - "\n", - "\n", - "def _set_env(var: str):\n", - " if not os.environ.get(var):\n", - " os.environ[var] = getpass.getpass(f\"{var}: \")\n", - "\n", - "\n", - "_set_env(\"ANTHROPIC_API_KEY\")" - ] - }, - { - "cell_type": "markdown", - "id": "c3ec6e48-85dc-4905-ba50-985e5d4788e6", - "metadata": {}, - "source": [ - "
    \n", - "

    Set up LangSmith for LangGraph development

    \n", - "

    \n", - " Sign up for LangSmith to quickly spot issues and improve the performance of your LangGraph projects. LangSmith lets you use trace data to debug, test, and monitor your LLM apps built with LangGraph — read more about how to get started here. \n", - "

    \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "id": "4a53f304-3709-4df7-8714-1ca61e615743", - "metadata": {}, - "source": [ - "## Using a custom agent implementation" - ] - }, - { - "cell_type": "markdown", - "id": "34cd131b-f0c2-4b69-887f-2cbd5afb14a7", - "metadata": {}, - "source": [ - "In this example we will build a team of travel assistant agents that can communicate with each other via handoffs.\n", - "\n", - "We will create 2 agents:\n", - "\n", - "* `travel_advisor`: can help with travel destination recommendations. Can ask `hotel_advisor` for help.\n", - "* `hotel_advisor`: can help with hotel recommendations. Can ask `travel_advisor` for help.\n", - "\n", - "This is a fully-connected network - every agent can talk to any other agent. \n", - "\n", - "Each agent will have a corresponding node function that can conditionally return a `Command` object (the handoff). The node function will use an LLM with a system prompt and a tool that lets it signal when it needs to hand off to another agent. If the LLM responds with the tool calls, we will return a `Command(goto=)`.\n", - "\n", - "> **Note**: while we're using tools for the LLM to signal that it needs a handoff, the condition for the handoff can be anything: a specific response text from the LLM, structured output from the LLM, any other custom logic, etc.\n", - "\n", - "Now, let's define our agent nodes and graph!" - ] - }, - { - "cell_type": "code", - "execution_count": 43, - "id": "8a3f270f-4894-4a2d-98cd-e855353e3e0c", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from typing_extensions import Literal\n", - "\n", - "from langchain_core.messages import ToolMessage\n", - "from langchain_core.tools import tool\n", - "from langchain_anthropic import ChatAnthropic\n", - "from langgraph.graph import MessagesState, StateGraph, START\n", - "from langgraph.types import Command\n", - "\n", - "\n", - "model = ChatAnthropic(model=\"claude-3-5-sonnet-latest\")\n", - "\n", - "\n", - "# Define a helper for each of the agent nodes to call\n", - "\n", - "\n", - "@tool\n", - "def transfer_to_travel_advisor():\n", - " \"\"\"Ask travel advisor for help.\"\"\"\n", - " # This tool is not returning anything: we're just using it\n", - " # as a way for LLM to signal that it needs to hand off to another agent\n", - " # (See the paragraph above)\n", - " return\n", - "\n", - "\n", - "@tool\n", - "def transfer_to_hotel_advisor():\n", - " \"\"\"Ask hotel advisor for help.\"\"\"\n", - " return\n", - "\n", - "\n", - "def travel_advisor(\n", - " state: MessagesState,\n", - ") -> Command[Literal[\"hotel_advisor\", \"__end__\"]]:\n", - " system_prompt = (\n", - " \"You are a general travel expert that can recommend travel destinations (e.g. countries, cities, etc). \"\n", - " \"If you need hotel recommendations, ask 'hotel_advisor' for help.\"\n", - " )\n", - " messages = [{\"role\": \"system\", \"content\": system_prompt}] + state[\"messages\"]\n", - " ai_msg = model.bind_tools([transfer_to_hotel_advisor]).invoke(messages)\n", - " # If there are tool calls, the LLM needs to hand off to another agent\n", - " if len(ai_msg.tool_calls) > 0:\n", - " tool_call_id = ai_msg.tool_calls[-1][\"id\"]\n", - " # NOTE: it's important to insert a tool message here because LLM providers are expecting\n", - " # all AI messages to be followed by a corresponding tool result message\n", - " tool_msg = {\n", - " \"role\": \"tool\",\n", - " \"content\": \"Successfully transferred\",\n", - " \"tool_call_id\": tool_call_id,\n", - " }\n", - " return Command(goto=\"hotel_advisor\", update={\"messages\": [ai_msg, tool_msg]})\n", - "\n", - " # If the expert has an answer, return it directly to the user\n", - " return {\"messages\": [ai_msg]}\n", - "\n", - "\n", - "def hotel_advisor(\n", - " state: MessagesState,\n", - ") -> Command[Literal[\"travel_advisor\", \"__end__\"]]:\n", - " system_prompt = (\n", - " \"You are a hotel expert that can provide hotel recommendations for a given destination. \"\n", - " \"If you need help picking travel destinations, ask 'travel_advisor' for help.\"\n", - " )\n", - " messages = [{\"role\": \"system\", \"content\": system_prompt}] + state[\"messages\"]\n", - " ai_msg = model.bind_tools([transfer_to_travel_advisor]).invoke(messages)\n", - " # If there are tool calls, the LLM needs to hand off to another agent\n", - " if len(ai_msg.tool_calls) > 0:\n", - " tool_call_id = ai_msg.tool_calls[-1][\"id\"]\n", - " # NOTE: it's important to insert a tool message here because LLM providers are expecting\n", - " # all AI messages to be followed by a corresponding tool result message\n", - " tool_msg = {\n", - " \"role\": \"tool\",\n", - " \"content\": \"Successfully transferred\",\n", - " \"tool_call_id\": tool_call_id,\n", - " }\n", - " return Command(goto=\"travel_advisor\", update={\"messages\": [ai_msg, tool_msg]})\n", - "\n", - " # If the expert has an answer, return it directly to the user\n", - " return {\"messages\": [ai_msg]}\n", - "\n", - "\n", - "builder = StateGraph(MessagesState)\n", - "builder.add_node(\"travel_advisor\", travel_advisor)\n", - "builder.add_node(\"hotel_advisor\", hotel_advisor)\n", - "# we'll always start with a general travel advisor\n", - "builder.add_edge(START, \"travel_advisor\")\n", - "\n", - "graph = builder.compile()\n", - "\n", - "from IPython.display import display, Image\n", - "\n", - "display(Image(graph.get_graph().draw_mermaid_png()))" - ] - }, - { - "cell_type": "markdown", - "id": "af856e1b-41fc-4041-8cbf-3818a60088e0", - "metadata": {}, - "source": [ - "First, let's invoke it with a generic input:" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "id": "058f3d96-534f-4b97-afb3-799ba81224ea", - "metadata": {}, - "outputs": [], - "source": [ - "from langchain_core.messages import convert_to_messages\n", - "\n", - "\n", - "def pretty_print_messages(update):\n", - " if isinstance(update, tuple):\n", - " ns, update = update\n", - " # skip parent graph updates in the printouts\n", - " if len(ns) == 0:\n", - " return\n", - "\n", - " graph_id = ns[-1].split(\":\")[0]\n", - " print(f\"Update from subgraph {graph_id}:\")\n", - " print(\"\\n\")\n", - "\n", - " for node_name, node_update in update.items():\n", - " print(f\"Update from node {node_name}:\")\n", - " print(\"\\n\")\n", - "\n", - " for m in convert_to_messages(node_update[\"messages\"]):\n", - " m.pretty_print()\n", - " print(\"\\n\")" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "id": "26a0d4df-ff99-40f0-92a8-0b3f2c591040", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Update from node travel_advisor:\n", - "\n", - "\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "I'd be happy to help you plan a Caribbean vacation! The Caribbean is perfect for warm weather getaways. Let me suggest some fantastic destinations:\n", - "\n", - "1. Dominican Republic\n", - "- Known for beautiful beaches, all-inclusive resorts, and tropical climate\n", - "- Popular areas include Punta Cana and Puerto Plata\n", - "- Great mix of beaches, culture, and activities\n", - "\n", - "2. Jamaica\n", - "- Famous for its laid-back atmosphere and beautiful beaches\n", - "- Popular spots include Montego Bay, Negril, and Ocho Rios\n", - "- Known for reggae music, delicious cuisine, and water sports\n", - "\n", - "3. Bahamas\n", - "- Crystal clear waters and stunning beaches\n", - "- Perfect for island hopping\n", - "- Great for water activities and swimming with pigs at Pig Beach\n", - "\n", - "4. Turks and Caicos\n", - "- Pristine beaches and luxury resorts\n", - "- Excellent for snorkeling and diving\n", - "- More peaceful and less crowded than some other Caribbean destinations\n", - "\n", - "5. Aruba\n", - "- Known for constant sunny weather and minimal rainfall\n", - "- Beautiful white sand beaches\n", - "- Great shopping and dining options\n", - "\n", - "Would you like me to provide more specific information about any of these destinations? Also, if you'd like hotel recommendations for any of these locations, I can transfer you to our hotel advisor for specific accommodation suggestions. Just let me know which destination interests you most!\n", - "\n", - "\n" - ] - } - ], - "source": [ - "for chunk in graph.stream(\n", - " {\"messages\": [(\"user\", \"i wanna go somewhere warm in the caribbean\")]}\n", - "):\n", - " pretty_print_messages(chunk)" - ] - }, - { - "cell_type": "markdown", - "id": "997ea9aa-36ee-40a1-a5fc-b44a079786a9", - "metadata": {}, - "source": [ - "You can see that in this case only the first agent (`travel_advisor`) ran. Let's now ask for more recommendations:" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "id": "68a547d4-0a15-43bd-aeed-c9ba1dfe388f", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Update from node travel_advisor:\n", - "\n", - "\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "[{'text': \"I'll help you with a Caribbean destination recommendation! Given the vast number of beautiful Caribbean islands, I'll recommend one popular destination: the Dominican Republic, specifically Punta Cana. It offers pristine beaches, warm weather year-round, crystal-clear waters, and excellent resorts.\\n\\nLet me get some hotel recommendations for Punta Cana by consulting our hotel advisor.\", 'type': 'text'}, {'id': 'toolu_01B9djUstpDKHVSy3o3rfzsG', 'input': {}, 'name': 'transfer_to_hotel_advisor', 'type': 'tool_use'}]\n", - "Tool Calls:\n", - " transfer_to_hotel_advisor (toolu_01B9djUstpDKHVSy3o3rfzsG)\n", - " Call ID: toolu_01B9djUstpDKHVSy3o3rfzsG\n", - " Args:\n", - "=================================\u001b[1m Tool Message \u001b[0m=================================\n", - "\n", - "Successfully transferred\n", - "\n", - "\n", - "Update from node hotel_advisor:\n", - "\n", - "\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "For Punta Cana, here are some top hotel recommendations:\n", - "\n", - "1. Hyatt Zilara Cap Cana - Adults-only, all-inclusive luxury resort with pristine beachfront location, multiple pools, and upscale dining options.\n", - "\n", - "2. Hard Rock Hotel & Casino Punta Cana - Perfect for entertainment lovers, featuring 13 pools, 9 restaurants, a casino, and extensive amenities.\n", - "\n", - "3. Excellence Punta Cana - Adults-only, all-inclusive resort known for its romantic atmosphere and excellent service.\n", - "\n", - "4. Secrets Cap Cana Resort & Spa - Sophisticated adults-only resort with beautiful swim-out suites and gourmet dining options.\n", - "\n", - "5. The Reserve at Paradisus Palma Real - Family-friendly luxury resort with dedicated family concierge, kids' activities, and beautiful pools.\n", - "\n", - "These resorts all offer:\n", - "- Direct beach access\n", - "- Multiple restaurants\n", - "- Swimming pools\n", - "- Spa facilities\n", - "- High-quality accommodations\n", - "\n", - "Would you like more specific information about any of these hotels or would you prefer to explore hotels in a different Caribbean destination?\n", - "\n", - "\n" - ] - } - ], - "source": [ - "for chunk in graph.stream(\n", - " {\n", - " \"messages\": [\n", - " (\n", - " \"user\",\n", - " \"i wanna go somewhere warm in the caribbean. pick one destination and give me hotel recommendations\",\n", - " )\n", - " ]\n", - " }\n", - "):\n", - " pretty_print_messages(chunk)" - ] - }, - { - "cell_type": "markdown", - "id": "c1c66f91-39b0-4ed2-91e8-6daf6d124f47", - "metadata": {}, - "source": [ - "Voila - `travel_advisor` picks a destination and then makes a decision to call `hotel_advisor` for more info!" - ] - }, - { - "cell_type": "markdown", - "id": "5f9ff04a-f2c6-408c-a332-1346a96d7f61", - "metadata": {}, - "source": [ - "## Using with a prebuilt ReAct agent" - ] - }, - { - "cell_type": "markdown", - "id": "1b560c3c-fa17-4879-a40f-147fc483c41c", - "metadata": {}, - "source": [ - "Let's now see how we can implement the same team of travel agents, but give each of the agents some tools to call. We'll be using prebuilt [`create_react_agent`][langgraph.prebuilt.chat_agent_executor.create_react_agent] to implement the agents. First, let's create some of the tools that the agents will be using:" - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "id": "7e31f258-ec28-4020-b86d-c91dfa9a3bfc", - "metadata": {}, - "outputs": [], - "source": [ - "import random\n", - "from typing_extensions import Literal\n", - "\n", - "\n", - "@tool\n", - "def get_travel_recommendations():\n", - " \"\"\"Get recommendation for travel destinations\"\"\"\n", - " return random.choice([\"aruba\", \"turks and caicos\"])\n", - "\n", - "\n", - "@tool\n", - "def get_hotel_recommendations(location: Literal[\"aruba\", \"turks and caicos\"]):\n", - " \"\"\"Get hotel recommendations for a given destination.\"\"\"\n", - " return {\n", - " \"aruba\": [\n", - " \"The Ritz-Carlton, Aruba (Palm Beach)\"\n", - " \"Bucuti & Tara Beach Resort (Eagle Beach)\"\n", - " ],\n", - " \"turks and caicos\": [\"Grace Bay Club\", \"COMO Parrot Cay\"],\n", - " }[location]" - ] - }, - { - "cell_type": "markdown", - "id": "2b64455a-8b28-42f0-90ac-a0ab92a433a3", - "metadata": {}, - "source": [ - "Let's also write a helper to create a handoff tool. See [this how-to guide](../agent-handoffs#implementing-handoffs-using-tools) for a more in-depth walkthrough of how to make a handoff tool." - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "id": "3b82280f-d171-4338-8ead-d1b3029ad9fb", - "metadata": {}, - "outputs": [], - "source": [ - "from typing import Annotated\n", - "\n", - "from langchain_core.tools import tool\n", - "from langchain_core.tools.base import InjectedToolCallId\n", - "from langgraph.prebuilt import InjectedState\n", - "\n", - "\n", - "def make_handoff_tool(*, agent_name: str):\n", - " \"\"\"Create a tool that can return handoff via a Command\"\"\"\n", - " tool_name = f\"transfer_to_{agent_name}\"\n", - "\n", - " @tool(tool_name)\n", - " def handoff_to_agent(\n", - " state: Annotated[dict, InjectedState],\n", - " tool_call_id: Annotated[str, InjectedToolCallId],\n", - " ):\n", - " \"\"\"Ask another agent for help.\"\"\"\n", - " tool_message = {\n", - " \"role\": \"tool\",\n", - " \"content\": f\"Successfully transferred to {agent_name}\",\n", - " \"name\": tool_name,\n", - " \"tool_call_id\": tool_call_id,\n", - " }\n", - " return Command(\n", - " # navigate to another agent node in the PARENT graph\n", - " goto=agent_name,\n", - " graph=Command.PARENT,\n", - " # This is the state update that the agent `agent_name` will see when it is invoked.\n", - " # We're passing agent's FULL internal message history AND adding a tool message to make sure\n", - " # the resulting chat history is valid.\n", - " update={\"messages\": state[\"messages\"] + [tool_message]},\n", - " )\n", - "\n", - " return handoff_to_agent" - ] - }, - { - "cell_type": "markdown", - "id": "93dbc3bd-27b9-4d79-b5dd-be592bc50f74", - "metadata": {}, - "source": [ - "Now let's define our agent nodes and combine them into a graph:" - ] - }, - { - "cell_type": "code", - "execution_count": 42, - "id": "b638d6c4-3de6-4921-980c-2df1bd1cc9c7", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from langgraph.graph import MessagesState, StateGraph, START, END\n", - "from langgraph.prebuilt import create_react_agent\n", - "from langgraph.types import Command\n", - "\n", - "\n", - "model = ChatAnthropic(model=\"claude-3-5-sonnet-latest\")\n", - "\n", - "# Define travel advisor ReAct agent\n", - "travel_advisor_tools = [\n", - " get_travel_recommendations,\n", - " make_handoff_tool(agent_name=\"hotel_advisor\"),\n", - "]\n", - "travel_advisor = create_react_agent(\n", - " model,\n", - " travel_advisor_tools,\n", - " prompt=(\n", - " \"You are a general travel expert that can recommend travel destinations (e.g. countries, cities, etc). \"\n", - " \"If you need hotel recommendations, ask 'hotel_advisor' for help. \"\n", - " \"You MUST include human-readable response before transferring to another agent.\"\n", - " ),\n", - ")\n", - "\n", - "\n", - "def call_travel_advisor(\n", - " state: MessagesState,\n", - ") -> Command[Literal[\"hotel_advisor\", \"__end__\"]]:\n", - " # You can also add additional logic like changing the input to the agent / output from the agent, etc.\n", - " # NOTE: we're invoking the ReAct agent with the full history of messages in the state\n", - " return travel_advisor.invoke(state)\n", - "\n", - "\n", - "# Define hotel advisor ReAct agent\n", - "hotel_advisor_tools = [\n", - " get_hotel_recommendations,\n", - " make_handoff_tool(agent_name=\"travel_advisor\"),\n", - "]\n", - "hotel_advisor = create_react_agent(\n", - " model,\n", - " hotel_advisor_tools,\n", - " prompt=(\n", - " \"You are a hotel expert that can provide hotel recommendations for a given destination. \"\n", - " \"If you need help picking travel destinations, ask 'travel_advisor' for help.\"\n", - " \"You MUST include human-readable response before transferring to another agent.\"\n", - " ),\n", - ")\n", - "\n", - "\n", - "def call_hotel_advisor(\n", - " state: MessagesState,\n", - ") -> Command[Literal[\"travel_advisor\", \"__end__\"]]:\n", - " return hotel_advisor.invoke(state)\n", - "\n", - "\n", - "builder = StateGraph(MessagesState)\n", - "builder.add_node(\"travel_advisor\", call_travel_advisor)\n", - "builder.add_node(\"hotel_advisor\", call_hotel_advisor)\n", - "# we'll always start with a general travel advisor\n", - "builder.add_edge(START, \"travel_advisor\")\n", - "\n", - "graph = builder.compile()\n", - "display(Image(graph.get_graph().draw_mermaid_png()))" - ] - }, - { - "cell_type": "markdown", - "id": "7132e2c0-d937-4325-a30e-e715c5304fe0", - "metadata": {}, - "source": [ - "Let's test it out using the same input as our original multi-agent system:" - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "id": "29b47c57-ad05-4f10-83bf-c3ff6ff8eb93", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Update from subgraph travel_advisor:\n", - "\n", - "\n", - "Update from node agent:\n", - "\n", - "\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "[{'text': \"I'll help you find a warm Caribbean destination and get some hotel recommendations for you.\\n\\nLet me first get some travel recommendations for Caribbean destinations.\", 'type': 'text'}, {'id': 'toolu_01GGDP6XSoJZFCYVA9Emhg89', 'input': {}, 'name': 'get_travel_recommendations', 'type': 'tool_use'}]\n", - "Tool Calls:\n", - " get_travel_recommendations (toolu_01GGDP6XSoJZFCYVA9Emhg89)\n", - " Call ID: toolu_01GGDP6XSoJZFCYVA9Emhg89\n", - " Args:\n", - "\n", - "\n", - "Update from subgraph travel_advisor:\n", - "\n", - "\n", - "Update from node tools:\n", - "\n", - "\n", - "=================================\u001b[1m Tool Message \u001b[0m=================================\n", - "Name: get_travel_recommendations\n", - "\n", - "turks and caicos\n", - "\n", - "\n", - "Update from subgraph travel_advisor:\n", - "\n", - "\n", - "Update from node agent:\n", - "\n", - "\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "[{'text': 'Based on the recommendations, I suggest Turks and Caicos! This beautiful British Overseas Territory is known for its stunning white-sand beaches, crystal-clear turquoise waters, and perfect warm weather year-round. The main island, Providenciales (often called \"Provo\"), is home to the famous Grace Bay Beach, consistently rated one of the world\\'s best beaches.\\n\\nNow, let me connect you with our hotel advisor to get some specific hotel recommendations for Turks and Caicos.', 'type': 'text'}, {'id': 'toolu_01JbPSSbTdbWSPNPwsKxifKR', 'input': {}, 'name': 'transfer_to_hotel_advisor', 'type': 'tool_use'}]\n", - "Tool Calls:\n", - " transfer_to_hotel_advisor (toolu_01JbPSSbTdbWSPNPwsKxifKR)\n", - " Call ID: toolu_01JbPSSbTdbWSPNPwsKxifKR\n", - " Args:\n", - "\n", - "\n", - "Update from subgraph hotel_advisor:\n", - "\n", - "\n", - "Update from node agent:\n", - "\n", - "\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "[{'text': 'Let me get some hotel recommendations for Turks and Caicos:', 'type': 'text'}, {'id': 'toolu_01JfcmUUmpdiYEFXaDFEkh1G', 'input': {'location': 'turks and caicos'}, 'name': 'get_hotel_recommendations', 'type': 'tool_use'}]\n", - "Tool Calls:\n", - " get_hotel_recommendations (toolu_01JfcmUUmpdiYEFXaDFEkh1G)\n", - " Call ID: toolu_01JfcmUUmpdiYEFXaDFEkh1G\n", - " Args:\n", - " location: turks and caicos\n", - "\n", - "\n", - "Update from subgraph hotel_advisor:\n", - "\n", - "\n", - "Update from node tools:\n", - "\n", - "\n", - "=================================\u001b[1m Tool Message \u001b[0m=================================\n", - "Name: get_hotel_recommendations\n", - "\n", - "[\"Grace Bay Club\", \"COMO Parrot Cay\"]\n", - "\n", - "\n", - "Update from subgraph hotel_advisor:\n", - "\n", - "\n", - "Update from node agent:\n", - "\n", - "\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "Here are two excellent hotel options in Turks and Caicos:\n", - "\n", - "1. Grace Bay Club: This luxury resort is located on the world-famous Grace Bay Beach. It offers elegant accommodations, multiple swimming pools, a spa, and several dining options. The resort is divided into different sections including adults-only and family-friendly areas.\n", - "\n", - "2. COMO Parrot Cay: This exclusive private island resort offers the ultimate luxury escape. It features pristine beaches, world-class spa facilities, and exceptional dining experiences. The resort is known for its serene atmosphere and excellent service.\n", - "\n", - "Would you like more specific information about either of these properties?\n", - "\n", - "\n" - ] - } - ], - "source": [ - "for chunk in graph.stream(\n", - " {\n", - " \"messages\": [\n", - " (\n", - " \"user\",\n", - " \"i wanna go somewhere warm in the caribbean. pick one destination and give me hotel recommendations\",\n", - " )\n", - " ]\n", - " },\n", - " subgraphs=True,\n", - "):\n", - " pretty_print_messages(chunk)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.3" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/docs/docs/how-tos/multi_agent.ipynb b/docs/docs/how-tos/multi_agent.ipynb new file mode 100644 index 000000000..2f5dc2af8 --- /dev/null +++ b/docs/docs/how-tos/multi_agent.ipynb @@ -0,0 +1,657 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "34d3d54e-9a2b-481e-bccd-74aca7a53f9a", + "metadata": {}, + "source": [ + "# Build multi-agent systems" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "3f0b4f70-f14e-4026-82c0-874786789ee8", + "metadata": {}, + "source": [ + "A single agent might struggle if it needs to specialize in multiple domains or manage many tools. To tackle this, you can break your agent into smaller, independent agents and composing them into a [multi-agent system](../../concepts/multi_agent).\n", + "\n", + "In multi-agent systems, agents need to communicate between each other. They do so via [handoffs](#handoffs) — a primitive that describes which agent to hand control to and the payload to send to that agent.\n", + "\n", + "This guide covers the following:\n", + "\n", + "* implementing [handoffs](#handoffs) between agents\n", + "* using handoffs and the prebuilt [agent](../../agents/agents) to [build a custom multi-agent system](#build-a-multi-agent-system)\n", + "\n", + "To get started with building multi-agent systems, check out LangGraph [prebuilt implementations](#prebuilt-implementations) of two of the most popular multi-agent architectures — [supervisor](../../agents/multi-agent#supervisor) and [swarm](../../agents/multi-agent#swarm)." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "7d43e110-16fc-4899-97f1-015d5b804b87", + "metadata": {}, + "source": [ + "## Handoffs\n", + "\n", + "To set up communication between the agents in a multi-agent system you can use [**handoffs**](../../concepts/multi_agent#handoffs) — a pattern where one agent *hands off* control to another. Handoffs allow you to specify:\n", + "\n", + "- **destination**: target agent to navigate to (e.g., name of the LangGraph node to go to)\n", + "- **payload**: information to pass to that agent (e.g., state update)\n", + "\n", + "### Create handoffs\n", + "\n", + "To implement handoffs, you can return [`Command`](../command) objects from your agent nodes or tools:\n", + "\n", + "```python\n", + "from typing import Annotated\n", + "from langchain_core.tools import tool, InjectedToolCallId\n", + "from langgraph.prebuilt import create_react_agent, InjectedState\n", + "from langgraph.graph import StateGraph, START, MessagesState\n", + "from langgraph.types import Command\n", + "\n", + "def create_handoff_tool(*, agent_name: str, description: str | None = None):\n", + " name = f\"transfer_to_{agent_name}\"\n", + " description = description or f\"Transfer to {agent_name}\"\n", + "\n", + " @tool(name, description=description)\n", + " def handoff_tool(\n", + " # highlight-next-line\n", + " state: Annotated[MessagesState, InjectedState], # (1)!\n", + " # highlight-next-line\n", + " tool_call_id: Annotated[str, InjectedToolCallId],\n", + " ) -> Command:\n", + " tool_message = {\n", + " \"role\": \"tool\",\n", + " \"content\": f\"Successfully transferred to {agent_name}\",\n", + " \"name\": name,\n", + " \"tool_call_id\": tool_call_id,\n", + " }\n", + " return Command( # (2)!\n", + " # highlight-next-line\n", + " goto=agent_name, # (3)!\n", + " # highlight-next-line\n", + " update={\"messages\": state[\"messages\"] + [tool_message]}, # (4)!\n", + " # highlight-next-line\n", + " graph=Command.PARENT, # (5)!\n", + " )\n", + " return handoff_tool\n", + "```\n", + "\n", + "1. Access the [state](../../concepts/low_level#state) of the agent that is calling the handoff tool using the [InjectedState][langgraph.prebuilt.InjectedState] annotation. See [this guide](../tool-calling/#read-state) for more information.\n", + "2. The `Command` primitive allows specifying a state update and a node transition as a single operation, making it useful for implementing handoffs.\n", + "3. Name of the agent or node to hand off to.\n", + "4. Take the agent's messages and **add** them to the parent's **state** as part of the handoff. The next agent will see the parent state.\n", + "5. Indicate to LangGraph that we need to navigate to agent node in a **parent** multi-agent graph.\n", + "\n", + "!!! tip\n", + "\n", + " If you want to use tools that return `Command`, you can either use prebuilt [`create_react_agent`][langgraph.prebuilt.chat_agent_executor.create_react_agent] / [`ToolNode`][langgraph.prebuilt.tool_node.ToolNode] components, or implement your own tool-executing node that collects `Command` objects returned by the tools and returns a list of them, e.g.:\n", + " \n", + " ```python\n", + " def call_tools(state):\n", + " ...\n", + " commands = [tools_by_name[tool_call[\"name\"]].invoke(tool_call) for tool_call in tool_calls]\n", + " return commands\n", + " ```\n", + "\n", + "!!! Important\n", + "\n", + " This handoff implementation assumes that:\n", + " \n", + " - each agent receives overall message history (across all agents) in the multi-agent system as its input. If you want more control over agent inputs, see [this section](#control-agent-inputs)\n", + " - each agent outputs its internal messages history to the overall message history of the multi-agent system. If you want more control over **how agent outputs are added**, wrap the agent in a separate node function:\n", + "\n", + " ```python\n", + " def call_hotel_assistant(state):\n", + " # return agent's final response,\n", + " # excluding inner monologue\n", + " response = hotel_assistant.invoke(state)\n", + " # highlight-next-line\n", + " return {\"messages\": response[\"messages\"][-1]}\n", + " ```" + ] + }, + { + "cell_type": "markdown", + "id": "3956f12d-285a-4799-a0a5-db13def58a15", + "metadata": {}, + "source": [ + "### Control agent inputs\n", + "\n", + "You can use the [`Send()`][langgraph.types.Send] primitive to directly send data to the worker agents during the handoff. For example, you can request that the calling agent populate a task description for the next agent:\n", + "\n", + "```python\n", + "\n", + "from typing import Annotated\n", + "from langchain_core.tools import tool, InjectedToolCallId\n", + "from langgraph.prebuilt import InjectedState\n", + "from langgraph.graph import StateGraph, START, MessagesState\n", + "# highlight-next-line\n", + "from langgraph.types import Command, Send\n", + "\n", + "def create_task_description_handoff_tool(\n", + " *, agent_name: str, description: str | None = None\n", + "):\n", + " name = f\"transfer_to_{agent_name}\"\n", + " description = description or f\"Ask {agent_name} for help.\"\n", + "\n", + " @tool(name, description=description)\n", + " def handoff_tool(\n", + " # this is populated by the calling agent\n", + " task_description: Annotated[\n", + " str,\n", + " \"Description of what the next agent should do, including all of the relevant context.\",\n", + " ],\n", + " # these parameters are ignored by the LLM\n", + " state: Annotated[MessagesState, InjectedState],\n", + " ) -> Command:\n", + " task_description_message = {\"role\": \"user\", \"content\": task_description}\n", + " agent_input = {**state, \"messages\": [task_description_message]}\n", + " return Command(\n", + " # highlight-next-line\n", + " goto=[Send(agent_name, agent_input)],\n", + " graph=Command.PARENT,\n", + " )\n", + "\n", + " return handoff_tool\n", + "```\n", + "\n", + "See the multi-agent [supervisor](../tutorials/agent_supervisor.ipynb#4-create-delegation-tasks) tutorial for a full example of using [`Send()`][langgraph.types.Send] in handoffs." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "21511f57-7bf3-4223-9a17-ce9fc84c40ab", + "metadata": {}, + "source": [ + "## Build a multi-agent system\n", + "\n", + "You can use handoffs in any agents built with LangGraph. We recommend using the prebuilt [agent](../../agents/overview) or [`ToolNode`](../tool-calling#use-prebuilt-toolnode), as they natively support handoffs tools returning `Command`. Below is an example of how you can implement a multi-agent system for booking travel using handoffs:\n", + "\n", + "```python\n", + "from langgraph.prebuilt import create_react_agent\n", + "from langgraph.graph import StateGraph, START, MessagesState\n", + "\n", + "def create_handoff_tool(*, agent_name: str, description: str | None = None):\n", + " # same implementation as above\n", + " ...\n", + " return Command(...)\n", + "\n", + "# Handoffs\n", + "transfer_to_hotel_assistant = create_handoff_tool(agent_name=\"hotel_assistant\")\n", + "transfer_to_flight_assistant = create_handoff_tool(agent_name=\"flight_assistant\")\n", + "\n", + "# Define agents\n", + "flight_assistant = create_react_agent(\n", + " model=\"anthropic:claude-3-5-sonnet-latest\",\n", + " # highlight-next-line\n", + " tools=[..., transfer_to_hotel_assistant],\n", + " # highlight-next-line\n", + " name=\"flight_assistant\"\n", + ")\n", + "hotel_assistant = create_react_agent(\n", + " model=\"anthropic:claude-3-5-sonnet-latest\",\n", + " # highlight-next-line\n", + " tools=[..., transfer_to_flight_assistant],\n", + " # highlight-next-line\n", + " name=\"hotel_assistant\"\n", + ")\n", + "\n", + "# Define multi-agent graph\n", + "multi_agent_graph = (\n", + " StateGraph(MessagesState)\n", + " # highlight-next-line\n", + " .add_node(flight_assistant)\n", + " # highlight-next-line\n", + " .add_node(hotel_assistant)\n", + " .add_edge(START, \"flight_assistant\")\n", + " .compile()\n", + ")\n", + "```\n", + "\n", + "??? example \"Full example: Multi-agent system for booking travel\"\n", + "\n", + " ```python\n", + " from typing import Annotated\n", + " from langchain_core.messages import convert_to_messages\n", + " from langchain_core.tools import tool, InjectedToolCallId\n", + " from langgraph.prebuilt import create_react_agent, InjectedState\n", + " from langgraph.graph import StateGraph, START, MessagesState\n", + " from langgraph.types import Command\n", + " \n", + " # We'll use `pretty_print_messages` helper to render the streamed agent outputs nicely\n", + " \n", + " def pretty_print_message(message, indent=False):\n", + " pretty_message = message.pretty_repr(html=True)\n", + " if not indent:\n", + " print(pretty_message)\n", + " return\n", + " \n", + " indented = \"\\n\".join(\"\\t\" + c for c in pretty_message.split(\"\\n\"))\n", + " print(indented)\n", + " \n", + " \n", + " def pretty_print_messages(update, last_message=False):\n", + " is_subgraph = False\n", + " if isinstance(update, tuple):\n", + " ns, update = update\n", + " # skip parent graph updates in the printouts\n", + " if len(ns) == 0:\n", + " return\n", + " \n", + " graph_id = ns[-1].split(\":\")[0]\n", + " print(f\"Update from subgraph {graph_id}:\")\n", + " print(\"\\n\")\n", + " is_subgraph = True\n", + " \n", + " for node_name, node_update in update.items():\n", + " update_label = f\"Update from node {node_name}:\"\n", + " if is_subgraph:\n", + " update_label = \"\\t\" + update_label\n", + " \n", + " print(update_label)\n", + " print(\"\\n\")\n", + " \n", + " messages = convert_to_messages(node_update[\"messages\"])\n", + " if last_message:\n", + " messages = messages[-1:]\n", + " \n", + " for m in messages:\n", + " pretty_print_message(m, indent=is_subgraph)\n", + " print(\"\\n\")\n", + "\n", + "\n", + " def create_handoff_tool(*, agent_name: str, description: str | None = None):\n", + " name = f\"transfer_to_{agent_name}\"\n", + " description = description or f\"Transfer to {agent_name}\"\n", + " \n", + " @tool(name, description=description)\n", + " def handoff_tool(\n", + " # highlight-next-line\n", + " state: Annotated[MessagesState, InjectedState], # (1)!\n", + " # highlight-next-line\n", + " tool_call_id: Annotated[str, InjectedToolCallId],\n", + " ) -> Command:\n", + " tool_message = {\n", + " \"role\": \"tool\",\n", + " \"content\": f\"Successfully transferred to {agent_name}\",\n", + " \"name\": name,\n", + " \"tool_call_id\": tool_call_id,\n", + " }\n", + " return Command( # (2)!\n", + " # highlight-next-line\n", + " goto=agent_name, # (3)!\n", + " # highlight-next-line\n", + " update={\"messages\": state[\"messages\"] + [tool_message]}, # (4)!\n", + " # highlight-next-line\n", + " graph=Command.PARENT, # (5)!\n", + " )\n", + " return handoff_tool\n", + " \n", + " # Handoffs\n", + " transfer_to_hotel_assistant = create_handoff_tool(\n", + " agent_name=\"hotel_assistant\",\n", + " description=\"Transfer user to the hotel-booking assistant.\",\n", + " )\n", + " transfer_to_flight_assistant = create_handoff_tool(\n", + " agent_name=\"flight_assistant\",\n", + " description=\"Transfer user to the flight-booking assistant.\",\n", + " )\n", + " \n", + " # Simple agent tools\n", + " def book_hotel(hotel_name: str):\n", + " \"\"\"Book a hotel\"\"\"\n", + " return f\"Successfully booked a stay at {hotel_name}.\"\n", + " \n", + " def book_flight(from_airport: str, to_airport: str):\n", + " \"\"\"Book a flight\"\"\"\n", + " return f\"Successfully booked a flight from {from_airport} to {to_airport}.\"\n", + " \n", + " # Define agents\n", + " flight_assistant = create_react_agent(\n", + " model=\"anthropic:claude-3-5-sonnet-latest\",\n", + " # highlight-next-line\n", + " tools=[book_flight, transfer_to_hotel_assistant],\n", + " prompt=\"You are a flight booking assistant\",\n", + " # highlight-next-line\n", + " name=\"flight_assistant\"\n", + " )\n", + " hotel_assistant = create_react_agent(\n", + " model=\"anthropic:claude-3-5-sonnet-latest\",\n", + " # highlight-next-line\n", + " tools=[book_hotel, transfer_to_flight_assistant],\n", + " prompt=\"You are a hotel booking assistant\",\n", + " # highlight-next-line\n", + " name=\"hotel_assistant\"\n", + " )\n", + " \n", + " # Define multi-agent graph\n", + " multi_agent_graph = (\n", + " StateGraph(MessagesState)\n", + " .add_node(flight_assistant)\n", + " .add_node(hotel_assistant)\n", + " .add_edge(START, \"flight_assistant\")\n", + " .compile()\n", + " )\n", + " \n", + " # Run the multi-agent graph\n", + " for chunk in multi_agent_graph.stream(\n", + " {\n", + " \"messages\": [\n", + " {\n", + " \"role\": \"user\",\n", + " \"content\": \"book a flight from BOS to JFK and a stay at McKittrick Hotel\"\n", + " }\n", + " ]\n", + " },\n", + " # highlight-next-line\n", + " subgraphs=True\n", + " ):\n", + " pretty_print_messages(chunk)\n", + " ```\n", + "\n", + " 1. Access agent's state\n", + " 2. The `Command` primitive allows specifying a state update and a node transition as a single operation, making it useful for implementing handoffs.\n", + " 3. Name of the agent or node to hand off to.\n", + " 4. Take the agent's messages and **add** them to the parent's **state** as part of the handoff. The next agent will see the parent state.\n", + " 5. Indicate to LangGraph that we need to navigate to agent node in a **parent** multi-agent graph." + ] + }, + { + "cell_type": "markdown", + "id": "e8314da4-9971-429b-9e70-58b40795de74", + "metadata": {}, + "source": [ + "## Multi-turn conversation\n", + "\n", + "Users might want to engage in a *multi-turn conversation* with one or more agents. To build a system that can handle this, you can create a node that uses an [`interrupt`][langgraph.types.interrupt] to collect user input and routes back to the **active** agent.\n", + "\n", + "The agents can then be implemented as nodes in a graph that executes agent steps and determines the next action:\n", + "\n", + "1. **Wait for user input** to continue the conversation, or \n", + "2. **Route to another agent** (or back to itself, such as in a loop) via a [handoff](#handoffs)\n", + "\n", + "```python\n", + "def human(state) -> Command[Literal[\"agent\", \"another_agent\"]]:\n", + " \"\"\"A node for collecting user input.\"\"\"\n", + " user_input = interrupt(value=\"Ready for user input.\")\n", + "\n", + " # Determine the active agent.\n", + " active_agent = ...\n", + "\n", + " ...\n", + " return Command(\n", + " update={\n", + " \"messages\": [{\n", + " \"role\": \"human\",\n", + " \"content\": user_input,\n", + " }]\n", + " },\n", + " goto=active_agent\n", + " )\n", + "\n", + "def agent(state) -> Command[Literal[\"agent\", \"another_agent\", \"human\"]]:\n", + " # The condition for routing/halting can be anything, e.g. LLM tool call / structured output, etc.\n", + " goto = get_next_agent(...) # 'agent' / 'another_agent'\n", + " if goto:\n", + " return Command(goto=goto, update={\"my_state_key\": \"my_state_value\"})\n", + " else:\n", + " return Command(goto=\"human\") # Go to human node\n", + "```\n", + "\n", + "??? example \"Full example: multi-agent system for travel recommendations\"\n", + "\n", + " In this example, we will build a team of travel assistant agents that can communicate with each other via handoffs.\n", + " \n", + " We will create 2 agents:\n", + " \n", + " * travel_advisor: can help with travel destination recommendations. Can ask hotel_advisor for help.\n", + " * hotel_advisor: can help with hotel recommendations. Can ask travel_advisor for help.\n", + "\n", + " ```python\n", + " from langchain_anthropic import ChatAnthropic\n", + " from langgraph.graph import MessagesState, StateGraph, START\n", + " from langgraph.prebuilt import create_react_agent, InjectedState\n", + " from langgraph.types import Command, interrupt\n", + " from langgraph.checkpoint.memory import MemorySaver\n", + " \n", + " \n", + " model = ChatAnthropic(model=\"claude-3-5-sonnet-latest\")\n", + "\n", + " class MultiAgentState(MessagesState):\n", + " last_active_agent: str\n", + " \n", + " \n", + " # Define travel advisor tools and ReAct agent\n", + " travel_advisor_tools = [\n", + " get_travel_recommendations,\n", + " make_handoff_tool(agent_name=\"hotel_advisor\"),\n", + " ]\n", + " travel_advisor = create_react_agent(\n", + " model,\n", + " travel_advisor_tools,\n", + " prompt=(\n", + " \"You are a general travel expert that can recommend travel destinations (e.g. countries, cities, etc). \"\n", + " \"If you need hotel recommendations, ask 'hotel_advisor' for help. \"\n", + " \"You MUST include human-readable response before transferring to another agent.\"\n", + " ),\n", + " )\n", + " \n", + " \n", + " def call_travel_advisor(\n", + " state: MultiAgentState,\n", + " ) -> Command[Literal[\"hotel_advisor\", \"human\"]]:\n", + " # You can also add additional logic like changing the input to the agent / output from the agent, etc.\n", + " # NOTE: we're invoking the ReAct agent with the full history of messages in the state\n", + " response = travel_advisor.invoke(state)\n", + " update = {**response, \"last_active_agent\": \"travel_advisor\"}\n", + " return Command(update=update, goto=\"human\")\n", + " \n", + " \n", + " # Define hotel advisor tools and ReAct agent\n", + " hotel_advisor_tools = [\n", + " get_hotel_recommendations,\n", + " make_handoff_tool(agent_name=\"travel_advisor\"),\n", + " ]\n", + " hotel_advisor = create_react_agent(\n", + " model,\n", + " hotel_advisor_tools,\n", + " prompt=(\n", + " \"You are a hotel expert that can provide hotel recommendations for a given destination. \"\n", + " \"If you need help picking travel destinations, ask 'travel_advisor' for help.\"\n", + " \"You MUST include human-readable response before transferring to another agent.\"\n", + " ),\n", + " )\n", + " \n", + " \n", + " def call_hotel_advisor(\n", + " state: MultiAgentState,\n", + " ) -> Command[Literal[\"travel_advisor\", \"human\"]]:\n", + " response = hotel_advisor.invoke(state)\n", + " update = {**response, \"last_active_agent\": \"hotel_advisor\"}\n", + " return Command(update=update, goto=\"human\")\n", + " \n", + " \n", + " def human_node(\n", + " state: MultiAgentState, config\n", + " ) -> Command[Literal[\"hotel_advisor\", \"travel_advisor\", \"human\"]]:\n", + " \"\"\"A node for collecting user input.\"\"\"\n", + " \n", + " user_input = interrupt(value=\"Ready for user input.\")\n", + " active_agent = state[\"last_active_agent\"]\n", + " \n", + " return Command(\n", + " update={\n", + " \"messages\": [\n", + " {\n", + " \"role\": \"human\",\n", + " \"content\": user_input,\n", + " }\n", + " ]\n", + " },\n", + " goto=active_agent,\n", + " )\n", + " \n", + " \n", + " builder = StateGraph(MultiAgentState)\n", + " builder.add_node(\"travel_advisor\", call_travel_advisor)\n", + " builder.add_node(\"hotel_advisor\", call_hotel_advisor)\n", + " \n", + " # This adds a node to collect human input, which will route\n", + " # back to the active agent.\n", + " builder.add_node(\"human\", human_node)\n", + " \n", + " # We'll always start with a general travel advisor.\n", + " builder.add_edge(START, \"travel_advisor\")\n", + " \n", + " \n", + " checkpointer = MemorySaver()\n", + " graph = builder.compile(checkpointer=checkpointer)\n", + " ```\n", + " \n", + " Let's test a multi turn conversation with this application.\n", + "\n", + " ```python\n", + " import uuid\n", + " \n", + " thread_config = {\"configurable\": {\"thread_id\": str(uuid.uuid4())}}\n", + " \n", + " inputs = [\n", + " # 1st round of conversation,\n", + " {\n", + " \"messages\": [\n", + " {\"role\": \"user\", \"content\": \"i wanna go somewhere warm in the caribbean\"}\n", + " ]\n", + " },\n", + " # Since we're using `interrupt`, we'll need to resume using the Command primitive.\n", + " # 2nd round of conversation,\n", + " Command(\n", + " resume=\"could you recommend a nice hotel in one of the areas and tell me which area it is.\"\n", + " ),\n", + " # 3rd round of conversation,\n", + " Command(\n", + " resume=\"i like the first one. could you recommend something to do near the hotel?\"\n", + " ),\n", + " ]\n", + " \n", + " for idx, user_input in enumerate(inputs):\n", + " print()\n", + " print(f\"--- Conversation Turn {idx + 1} ---\")\n", + " print()\n", + " print(f\"User: {user_input}\")\n", + " print()\n", + " for update in graph.stream(\n", + " user_input,\n", + " config=thread_config,\n", + " stream_mode=\"updates\",\n", + " ):\n", + " for node_id, value in update.items():\n", + " if isinstance(value, dict) and value.get(\"messages\", []):\n", + " last_message = value[\"messages\"][-1]\n", + " if isinstance(last_message, dict) or last_message.type != \"ai\":\n", + " continue\n", + " print(f\"{node_id}: {last_message.content}\")\n", + " ```\n", + " \n", + " ```\n", + " --- Conversation Turn 1 ---\n", + " \n", + " User: {'messages': [{'role': 'user', 'content': 'i wanna go somewhere warm in the caribbean'}]}\n", + " \n", + " travel_advisor: Based on the recommendations, Aruba would be an excellent choice for your Caribbean getaway! Aruba is known as \"One Happy Island\" and offers:\n", + " - Year-round warm weather with consistent temperatures around 82°F (28°C)\n", + " - Beautiful white sand beaches like Eagle Beach and Palm Beach\n", + " - Clear turquoise waters perfect for swimming and snorkeling\n", + " - Minimal rainfall and location outside the hurricane belt\n", + " - A blend of Caribbean and Dutch culture\n", + " - Great dining options and nightlife\n", + " - Various water sports and activities\n", + " \n", + " Would you like me to get some specific hotel recommendations in Aruba for your stay? I can transfer you to our hotel advisor who can help with accommodations.\n", + " \n", + " --- Conversation Turn 2 ---\n", + " \n", + " User: Command(resume='could you recommend a nice hotel in one of the areas and tell me which area it is.')\n", + " \n", + " hotel_advisor: Based on the recommendations, I can suggest two excellent options:\n", + " \n", + " 1. The Ritz-Carlton, Aruba - Located in Palm Beach\n", + " - This luxury resort is situated in the vibrant Palm Beach area\n", + " - Known for its exceptional service and amenities\n", + " - Perfect if you want to be close to dining, shopping, and entertainment\n", + " - Features multiple restaurants, a casino, and a world-class spa\n", + " - Located on a pristine stretch of Palm Beach\n", + " \n", + " 2. Bucuti & Tara Beach Resort - Located in Eagle Beach\n", + " - An adults-only boutique resort on Eagle Beach\n", + " - Known for being more intimate and peaceful\n", + " - Award-winning for its sustainability practices\n", + " - Perfect for a romantic getaway or peaceful vacation\n", + " - Located on one of the most beautiful beaches in the Caribbean\n", + " \n", + " Would you like more specific information about either of these properties or their locations?\n", + " \n", + " --- Conversation Turn 3 ---\n", + " \n", + " User: Command(resume='i like the first one. could you recommend something to do near the hotel?')\n", + " \n", + " travel_advisor: Near the Ritz-Carlton in Palm Beach, here are some highly recommended activities:\n", + " \n", + " 1. Visit the Palm Beach Plaza Mall - Just a short walk from the hotel, featuring shopping, dining, and entertainment\n", + " 2. Try your luck at the Stellaris Casino - It's right in the Ritz-Carlton\n", + " 3. Take a sunset sailing cruise - Many depart from the nearby pier\n", + " 4. Visit the California Lighthouse - A scenic landmark just north of Palm Beach\n", + " 5. Enjoy water sports at Palm Beach:\n", + " - Jet skiing\n", + " - Parasailing\n", + " - Snorkeling\n", + " - Stand-up paddleboarding\n", + " \n", + " Would you like more specific information about any of these activities or would you like to know about other options in the area?\n", + " ```" + ] + }, + { + "cell_type": "markdown", + "id": "04d18c63-a0eb-45ac-86dc-0cc5bd683973", + "metadata": {}, + "source": [ + "## Prebuilt implementations" + ] + }, + { + "cell_type": "markdown", + "id": "e0e4ce57-f8de-4f37-836e-c1e1a02dd7b7", + "metadata": {}, + "source": [ + "LangGraph comes with prebuilt implementations of two of the most popular multi-agent architectures:\n", + "\n", + "- [supervisor](../../agents/multi-agent#supervisor) — individual agents are coordinated by a central supervisor agent. The supervisor controls all communication flow and task delegation, making decisions about which agent to invoke based on the current context and task requirements. You can use [`langgraph-supervisor`](https://github.com/langchain-ai/langgraph-supervisor-py) library to create a supervisor multi-agent systems.\n", + "- [swarm](../../agents/multi-agent#supervisor) — agents dynamically hand off control to one another based on their specializations. The system remembers which agent was last active, ensuring that on subsequent interactions, the conversation resumes with that agent. You can use [`langgraph-swarm`](https://github.com/langchain-ai/langgraph-swarm-py) library to create a swarm multi-agent systems." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "langgraph", + "language": "python", + "name": "langgraph" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.9" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/docs/docs/how-tos/node-retries.ipynb b/docs/docs/how-tos/node-retries.ipynb deleted file mode 100644 index b4bd89e1a..000000000 --- a/docs/docs/how-tos/node-retries.ipynb +++ /dev/null @@ -1,206 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# How to add node retry policies\n", - "\n", - "\n", - "
    \n", - "

    Prerequisites

    \n", - "

    \n", - " This guide assumes familiarity with the following:\n", - "

    \n", - "

    \n", - "
    \n", - "\n", - "\n", - "There are many use cases where you may wish for your node to have a custom retry policy, for example if you are calling an API, querying a database, or calling an LLM, etc. \n", - "\n", - "## Setup\n", - "\n", - "First, let's install the required packages and set our API keys" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "%%capture --no-stderr\n", - "%pip install -U langgraph langchain_anthropic langchain_community" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "import getpass\n", - "import os\n", - "\n", - "\n", - "def _set_env(var: str):\n", - " if not os.environ.get(var):\n", - " os.environ[var] = getpass.getpass(f\"{var}: \")\n", - "\n", - "\n", - "_set_env(\"ANTHROPIC_API_KEY\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "

    Set up LangSmith for LangGraph development

    \n", - "

    \n", - " Sign up for LangSmith to quickly spot issues and improve the performance of your LangGraph projects. LangSmith lets you use trace data to debug, test, and monitor your LLM apps built with LangGraph — read more about how to get started here. \n", - "

    \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In order to configure the retry policy, you have to pass the `retry` parameter to the [add_node](https://langchain-ai.github.io/langgraph/reference/graphs/#langgraph.graph.state.StateGraph.add_node). The `retry` parameter takes in a `RetryPolicy` named tuple object. Below we instantiate a `RetryPolicy` object with the default parameters:" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "RetryPolicy(initial_interval=0.5, backoff_factor=2.0, max_interval=128.0, max_attempts=3, jitter=True, retry_on=)" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "from langgraph.pregel import RetryPolicy\n", - "\n", - "RetryPolicy()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "By default, the `retry_on` parameter uses the `default_retry_on` function, which retries on any exception except for the following:\n", - "\n", - "* `ValueError`\n", - "* `TypeError`\n", - "* `ArithmeticError`\n", - "* `ImportError`\n", - "* `LookupError`\n", - "* `NameError`\n", - "* `SyntaxError`\n", - "* `RuntimeError`\n", - "* `ReferenceError`\n", - "* `StopIteration`\n", - "* `StopAsyncIteration`\n", - "* `OSError`\n", - "\n", - "In addition, for exceptions from popular http request libraries such as `requests` and `httpx` it only retries on 5xx status codes." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Passing a retry policy to a node\n", - "\n", - "Lastly, we can pass `RetryPolicy` objects when we call the [add_node](https://langchain-ai.github.io/langgraph/reference/graphs/#langgraph.graph.state.StateGraph.add_node) function. In the example below we pass two different retry policies to each of our nodes:" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "import operator\n", - "import sqlite3\n", - "from typing import Annotated, Sequence\n", - "from typing_extensions import TypedDict\n", - "\n", - "from langchain_anthropic import ChatAnthropic\n", - "from langchain_core.messages import BaseMessage\n", - "\n", - "from langgraph.graph import END, StateGraph, START\n", - "from langchain_community.utilities import SQLDatabase\n", - "from langchain_core.messages import AIMessage\n", - "\n", - "db = SQLDatabase.from_uri(\"sqlite:///:memory:\")\n", - "\n", - "model = ChatAnthropic(model_name=\"claude-2.1\")\n", - "\n", - "\n", - "class AgentState(TypedDict):\n", - " messages: Annotated[Sequence[BaseMessage], operator.add]\n", - "\n", - "\n", - "def query_database(state):\n", - " query_result = db.run(\"SELECT * FROM Artist LIMIT 10;\")\n", - " return {\"messages\": [AIMessage(content=query_result)]}\n", - "\n", - "\n", - "def call_model(state):\n", - " response = model.invoke(state[\"messages\"])\n", - " return {\"messages\": [response]}\n", - "\n", - "\n", - "# Define a new graph\n", - "builder = StateGraph(AgentState)\n", - "builder.add_node(\n", - " \"query_database\",\n", - " query_database,\n", - " retry=RetryPolicy(retry_on=sqlite3.OperationalError),\n", - ")\n", - "builder.add_node(\"model\", call_model, retry=RetryPolicy(max_attempts=5))\n", - "builder.add_edge(START, \"model\")\n", - "builder.add_edge(\"model\", \"query_database\")\n", - "builder.add_edge(\"query_database\", END)\n", - "\n", - "graph = builder.compile()" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.4" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/docs/docs/how-tos/pass-config-to-tools.ipynb b/docs/docs/how-tos/pass-config-to-tools.ipynb deleted file mode 100644 index dec54fa1e..000000000 --- a/docs/docs/how-tos/pass-config-to-tools.ipynb +++ /dev/null @@ -1,407 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# How to pass config to tools" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "

    Prerequisites

    \n", - "

    \n", - " This guide assumes familiarity with the following:\n", - "

    \n", - "

    \n", - "
    \n", - "\n", - "\n", - "\n", - "At runtime, you may need to pass values to a tool, like a user ID, which should be set by the application logic, not controlled by the LLM, for security reasons. The LLM should only manage its intended parameters.\n", - "\n", - "LangChain tools use the `Runnable` interface, where methods like `invoke` accept runtime information through the config argument with a `RunnableConfig` type annotation.\n", - "\n", - "In the following example, we’ll set up an agent with tools to manage a user's favorite pets—adding, reading, and deleting entries—while fixing the user ID through application logic and letting the chat model control other parameters" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Setup\n", - "\n", - "First, let's install the required packages and set our API keys" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "%%capture --no-stderr\n", - "%pip install --quiet -U langgraph langchain_anthropic" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import getpass\n", - "import os\n", - "\n", - "\n", - "def _set_env(var: str):\n", - " if not os.environ.get(var):\n", - " os.environ[var] = getpass.getpass(f\"{var}: \")\n", - "\n", - "\n", - "_set_env(\"ANTHROPIC_API_KEY\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "

    Set up LangSmith for LangGraph development

    \n", - "

    \n", - " Sign up for LangSmith to quickly spot issues and improve the performance of your LangGraph projects. LangSmith lets you use trace data to debug, test, and monitor your LLM apps built with LangGraph — read more about how to get started here. \n", - "

    \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Define tools and model" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "!!! warning \"Config type annotations\"\n", - "\n", - " Each tool function can take a `config` argument. In order for the config to be correctly propagated to the function, you MUST always add a `RunnableConfig` type annotation for your `config` argument. For example:\n", - "\n", - " ```python\n", - " def my_tool(tool_arg: str, config: RunnableConfig):\n", - " ...\n", - " ```" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "from typing import List\n", - "\n", - "from langchain_core.tools import tool\n", - "from langchain_core.runnables.config import RunnableConfig\n", - "\n", - "from langgraph.prebuilt import ToolNode\n", - "\n", - "user_to_pets = {}\n", - "\n", - "\n", - "@tool(parse_docstring=True)\n", - "def update_favorite_pets(\n", - " # NOTE: config arg does not need to be added to docstring, as we don't want it to be included in the function signature attached to the LLM\n", - " pets: List[str],\n", - " config: RunnableConfig,\n", - ") -> None:\n", - " \"\"\"Add the list of favorite pets.\n", - "\n", - " Args:\n", - " pets: List of favorite pets to set.\n", - " \"\"\"\n", - " user_id = config.get(\"configurable\", {}).get(\"user_id\")\n", - " user_to_pets[user_id] = pets\n", - "\n", - "\n", - "@tool\n", - "def delete_favorite_pets(config: RunnableConfig) -> None:\n", - " \"\"\"Delete the list of favorite pets.\"\"\"\n", - " user_id = config.get(\"configurable\", {}).get(\"user_id\")\n", - " if user_id in user_to_pets:\n", - " del user_to_pets[user_id]\n", - "\n", - "\n", - "@tool\n", - "def list_favorite_pets(config: RunnableConfig) -> None:\n", - " \"\"\"List favorite pets if asked to.\"\"\"\n", - " user_id = config.get(\"configurable\", {}).get(\"user_id\")\n", - " return \", \".join(user_to_pets.get(user_id, []))\n", - "\n", - "\n", - "tools = [update_favorite_pets, delete_favorite_pets, list_favorite_pets]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We'll be using a small chat model from Anthropic in our example." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "from langchain_anthropic import ChatAnthropic\n", - "from langgraph.graph import StateGraph, MessagesState\n", - "from langgraph.prebuilt import ToolNode\n", - "\n", - "\n", - "model = ChatAnthropic(model=\"claude-3-5-haiku-latest\")" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## ReAct Agent\n", - "\n", - "Let's set up a graph implementation of the [ReAct agent](https://langchain-ai.github.io/langgraph/concepts/agentic_concepts/#react-agent). This agent takes some query as input, then repeatedly call tools until it has enough information to resolve the query. We'll be using prebuilt [`create_react_agent`][langgraph.prebuilt.chat_agent_executor.create_react_agent] and the Anthropic model with tools we just defined. Note: the tools are automatically added to the model via `model.bind_tools` inside the `create_react_agent` implementation." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from langgraph.prebuilt import create_react_agent\n", - "from IPython.display import Image, display\n", - "\n", - "graph = create_react_agent(model, tools)\n", - "\n", - "try:\n", - " display(Image(graph.get_graph().draw_mermaid_png()))\n", - "except Exception:\n", - " # This requires some extra dependencies and is optional\n", - " pass" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Use it!" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "User information prior to run: {}\n", - "================================\u001b[1m Human Message \u001b[0m=================================\n", - "\n", - "my favorite pets are cats and dogs\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "[{'text': \"I'll help you update your favorite pets using the `update_favorite_pets` function.\", 'type': 'text'}, {'id': 'toolu_015jtecJ4jnosAfXEC3KADS2', 'input': {'pets': ['cats', 'dogs']}, 'name': 'update_favorite_pets', 'type': 'tool_use'}]\n", - "Tool Calls:\n", - " update_favorite_pets (toolu_015jtecJ4jnosAfXEC3KADS2)\n", - " Call ID: toolu_015jtecJ4jnosAfXEC3KADS2\n", - " Args:\n", - " pets: ['cats', 'dogs']\n", - "=================================\u001b[1m Tool Message \u001b[0m=================================\n", - "Name: update_favorite_pets\n", - "\n", - "null\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "Great! I've added cats and dogs to your list of favorite pets. Would you like to confirm the list or do anything else with it?\n", - "User information after the run: {'123': ['cats', 'dogs']}\n" - ] - } - ], - "source": [ - "from langchain_core.messages import HumanMessage\n", - "\n", - "user_to_pets.clear() # Clear the state\n", - "\n", - "print(f\"User information prior to run: {user_to_pets}\")\n", - "\n", - "inputs = {\"messages\": [HumanMessage(content=\"my favorite pets are cats and dogs\")]}\n", - "for chunk in graph.stream(\n", - " inputs, {\"configurable\": {\"user_id\": \"123\"}}, stream_mode=\"values\"\n", - "):\n", - " chunk[\"messages\"][-1].pretty_print()\n", - "\n", - "print(f\"User information after the run: {user_to_pets}\")" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "User information prior to run: {'123': ['cats', 'dogs']}\n", - "================================\u001b[1m Human Message \u001b[0m=================================\n", - "\n", - "what are my favorite pets\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "[{'text': \"I'll help you check your favorite pets by using the list_favorite_pets function.\", 'type': 'text'}, {'id': 'toolu_01EMTtX5WtKJXMJ4WqXpxPUw', 'input': {}, 'name': 'list_favorite_pets', 'type': 'tool_use'}]\n", - "Tool Calls:\n", - " list_favorite_pets (toolu_01EMTtX5WtKJXMJ4WqXpxPUw)\n", - " Call ID: toolu_01EMTtX5WtKJXMJ4WqXpxPUw\n", - " Args:\n", - "=================================\u001b[1m Tool Message \u001b[0m=================================\n", - "Name: list_favorite_pets\n", - "\n", - "cats, dogs\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "Based on the results, your favorite pets are cats and dogs.\n", - "\n", - "Is there anything else you'd like to know about your favorite pets, or would you like to update the list?\n", - "User information prior to run: {'123': ['cats', 'dogs']}\n" - ] - } - ], - "source": [ - "from langchain_core.messages import HumanMessage\n", - "\n", - "print(f\"User information prior to run: {user_to_pets}\")\n", - "\n", - "inputs = {\"messages\": [HumanMessage(content=\"what are my favorite pets\")]}\n", - "for chunk in graph.stream(\n", - " inputs, {\"configurable\": {\"user_id\": \"123\"}}, stream_mode=\"values\"\n", - "):\n", - " chunk[\"messages\"][-1].pretty_print()\n", - "\n", - "print(f\"User information prior to run: {user_to_pets}\")" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "User information prior to run: {'123': ['cats', 'dogs']}\n", - "================================\u001b[1m Human Message \u001b[0m=================================\n", - "\n", - "please forget what i told you about my favorite animals\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "[{'text': \"I'll help you delete the list of favorite pets. I'll use the delete_favorite_pets function to remove any previously saved list.\", 'type': 'text'}, {'id': 'toolu_01JqpxgxdsDJFMzSLeogoRtG', 'input': {}, 'name': 'delete_favorite_pets', 'type': 'tool_use'}]\n", - "Tool Calls:\n", - " delete_favorite_pets (toolu_01JqpxgxdsDJFMzSLeogoRtG)\n", - " Call ID: toolu_01JqpxgxdsDJFMzSLeogoRtG\n", - " Args:\n", - "=================================\u001b[1m Tool Message \u001b[0m=================================\n", - "Name: delete_favorite_pets\n", - "\n", - "null\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "The list of favorite pets has been deleted. If you'd like to create a new list of favorite pets in the future, just let me know.\n", - "User information prior to run: {}\n" - ] - } - ], - "source": [ - "print(f\"User information prior to run: {user_to_pets}\")\n", - "\n", - "inputs = {\n", - " \"messages\": [\n", - " HumanMessage(content=\"please forget what i told you about my favorite animals\")\n", - " ]\n", - "}\n", - "for chunk in graph.stream(\n", - " inputs, {\"configurable\": {\"user_id\": \"123\"}}, stream_mode=\"values\"\n", - "):\n", - " chunk[\"messages\"][-1].pretty_print()\n", - "\n", - "print(f\"User information prior to run: {user_to_pets}\")" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.3" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/docs/docs/how-tos/pass-run-time-values-to-tools.ipynb b/docs/docs/how-tos/pass-run-time-values-to-tools.ipynb deleted file mode 100644 index dee49b953..000000000 --- a/docs/docs/how-tos/pass-run-time-values-to-tools.ipynb +++ /dev/null @@ -1,658 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "51466c8d-8ce4-4b3d-be4e-18fdbeda5f53", - "metadata": {}, - "source": [ - "# How to pass runtime values to tools\n", - "\n", - "Sometimes, you want to let a tool-calling LLM populate a *subset* of the tool functions' arguments and provide the other values for the other arguments at runtime. If you're using LangChain-style [tools](https://python.langchain.com/docs/concepts/#tools), an easy way to handle this is by annotating function parameters with [InjectedArg](https://python.langchain.com/docs/how_to/tool_runtime/). This annotation excludes that parameter from being shown to the LLM.\n", - "\n", - "In LangGraph applications you might want to pass the graph state or [shared memory](https://langchain-ai.github.io/langgraph/how-tos/cross-thread-persistence/) (store) to the tools at runtime. This type of stateful tools is useful when a tool's output is affected by past agent steps (e.g. if you're using a sub-agent as a tool, and want to pass the message history in to the sub-agent), or when a tool's input needs to be validated given context from past agent steps.\n", - "\n", - "In this guide we'll demonstrate how to do so using LangGraph's prebuilt [ToolNode](https://langchain-ai.github.io/langgraph/how-tos/tool-calling/).\n", - "\n", - "
    \n", - "

    Prerequisites

    \n", - "

    \n", - " This guide targets **LangChain tool calling** assumes familiarity with the following:\n", - "

    \n", - " You can still use tool calling in LangGraph using your provider SDK without losing any of LangGraph's core features.\n", - "

    \n", - "
    \n", - "\n", - "The core technique in the examples below is to **annotate** a parameter as \"injected\", meaning it will be injected by your program and should not be seen or populated by the LLM. Let the following codesnippet serve as a tl;dr:\n", - "\n", - "```python\n", - "from typing import Annotated\n", - "\n", - "from langchain_core.runnables import RunnableConfig\n", - "from langchain_core.tools import InjectedToolArg\n", - "from langgraph.store.base import BaseStore\n", - "\n", - "from langgraph.prebuilt import InjectedState, InjectedStore\n", - "\n", - "\n", - "# Can be sync or async; @tool decorator not required\n", - "async def my_tool(\n", - " # These arguments are populated by the LLM\n", - " some_arg: str,\n", - " another_arg: float,\n", - " # The config: RunnableConfig is always available in LangChain calls\n", - " # This is not exposed to the LLM\n", - " config: RunnableConfig,\n", - " # The following three are specific to the prebuilt ToolNode\n", - " # (and `create_react_agent` by extension). If you are invoking the\n", - " # tool on its own (in your own node), then you would need to provide these yourself.\n", - " store: Annotated[BaseStore, InjectedStore],\n", - " # This passes in the full state.\n", - " state: Annotated[State, InjectedState],\n", - " # You can also inject single fields from your state if you\n", - " messages: Annotated[list, InjectedState(\"messages\")]\n", - " # The following is not compatible with create_react_agent or ToolNode\n", - " # You can also exclude other arguments from being shown to the model.\n", - " # These must be provided manually and are useful if you call the tools/functions in your own node\n", - " # some_other_arg=Annotated[\"MyPrivateClass\", InjectedToolArg],\n", - "):\n", - " \"\"\"Call my_tool to have an impact on the real world.\n", - "\n", - " Args:\n", - " some_arg: a very important argument\n", - " another_arg: another argument the LLM will provide\n", - " \"\"\" # The docstring becomes the description for your tool and is passed to the model\n", - " print(some_arg, another_arg, config, store, state, messages)\n", - " # Config, some_other_rag, store, and state are all \"hidden\" from\n", - " # LangChain models when passed to bind_tools or with_structured_output\n", - " return \"... some response\"\n", - "```" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "5c205242", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "id": "7cbd446a-808f-4394-be92-d45ab818953c", - "metadata": {}, - "source": [ - "## Setup\n", - "\n", - "First we need to install the packages required" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "af4ce0ba-7596-4e5f-8bf8-0b0bd6e62833", - "metadata": {}, - "outputs": [], - "source": [ - "%%capture --no-stderr\n", - "%pip install --quiet -U langgraph langchain-openai" - ] - }, - { - "cell_type": "markdown", - "id": "0abe11f4-62ed-4dc4-8875-3db21e260d1d", - "metadata": {}, - "source": [ - "Next, we need to set API keys for OpenAI (the chat model we will use)." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "c903a1cf-2977-4e2d-ad7d-8b3946821d89", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "OPENAI_API_KEY: ········\n" - ] - } - ], - "source": [ - "import getpass\n", - "import os\n", - "\n", - "\n", - "def _set_env(var: str):\n", - " if not os.environ.get(var):\n", - " os.environ[var] = getpass.getpass(f\"{var}: \")\n", - "\n", - "\n", - "_set_env(\"OPENAI_API_KEY\")" - ] - }, - { - "cell_type": "markdown", - "id": "f0ed46a8-effe-4596-b0e1-a6a29ee16f5c", - "metadata": {}, - "source": [ - "
    \n", - "

    Set up LangSmith for LangGraph development

    \n", - "

    \n", - " Sign up for LangSmith to quickly spot issues and improve the performance of your LangGraph projects. LangSmith lets you use trace data to debug, test, and monitor your LLM apps built with LangGraph — read more about how to get started here. \n", - "

    \n", - "
    " - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "1a5908ab-7c1f-4832-85ae-511536b89b9f", - "metadata": {}, - "source": [ - "## Pass graph state to tools\n", - "\n", - "Let's first take a look at how to give our tools access to the graph state. We'll need to define our graph state:" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "a2ded72f-1450-4295-a879-fd213ecfd4b5", - "metadata": {}, - "outputs": [], - "source": [ - "from typing import List\n", - "\n", - "# this is the state schema used by the prebuilt create_react_agent we'll be using below\n", - "from langgraph.prebuilt.chat_agent_executor import AgentState\n", - "from langchain_core.documents import Document\n", - "\n", - "\n", - "class State(AgentState):\n", - " docs: List[str]" - ] - }, - { - "cell_type": "markdown", - "id": "75d2d28c-0da3-46c6-9c67-979a71b5f517", - "metadata": {}, - "source": [ - "### Define the tools\n", - "\n", - "We'll want our tool to take graph state as an input, but we don't want the model to try to generate this input when calling the tool. We can use the `InjectedState` annotation to mark arguments as required graph state (or some field of graph state. These arguments will not be generated by the model. When using `ToolNode`, graph state will automatically be passed in to the relevant tools and arguments.\n", - "\n", - "In this example we'll create a tool that returns Documents and then another tool that actually cites the Documents that justify a claim." - ] - }, - { - "cell_type": "markdown", - "id": "2f7e2c8d", - "metadata": {}, - "source": [ - "
    \n", - "

    Using Pydantic with LangChain

    \n", - "

    \n", - " This notebook uses Pydantic v2 BaseModel, which requires langchain-core >= 0.3. Using langchain-core < 0.3 will result in errors due to mixing of Pydantic v1 and v2 BaseModels.\n", - "

    \n", - "
    " - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "1d36e782-80f4-4334-b7d7-ee4c79864480", - "metadata": {}, - "outputs": [], - "source": [ - "from typing import List, Tuple\n", - "from typing_extensions import Annotated\n", - "\n", - "from langchain_core.messages import ToolMessage\n", - "from langchain_core.tools import tool\n", - "from langgraph.prebuilt import InjectedState\n", - "\n", - "\n", - "@tool\n", - "def get_context(question: str, state: Annotated[dict, InjectedState]):\n", - " \"\"\"Get relevant context for answering the question.\"\"\"\n", - " return \"\\n\\n\".join(doc for doc in state[\"docs\"])" - ] - }, - { - "cell_type": "markdown", - "id": "1c2d0de0-0f3e-4bbe-b0b6-cc0f70b11993", - "metadata": {}, - "source": [ - "If we look at the input schemas for these tools, we'll see that `state` is still listed:" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "1092929b-c939-4b2a-9f9c-e725b0e34af2", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'description': 'Get relevant context for answering the question.',\n", - " 'properties': {'question': {'title': 'Question', 'type': 'string'},\n", - " 'state': {'title': 'State', 'type': 'object'}},\n", - " 'required': ['question', 'state'],\n", - " 'title': 'get_context',\n", - " 'type': 'object'}" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "get_context.get_input_schema().schema()" - ] - }, - { - "cell_type": "markdown", - "id": "e346a26e-e00b-48e5-82c5-c930ea6084a4", - "metadata": {}, - "source": [ - "But if we look at the tool call schema, which is what is passed to the model for tool-calling, `state` has been removed:" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "3912bb51-3107-4335-a659-021c5d89fb37", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'description': 'Get relevant context for answering the question.',\n", - " 'properties': {'question': {'title': 'Question', 'type': 'string'}},\n", - " 'required': ['question'],\n", - " 'title': 'get_context',\n", - " 'type': 'object'}" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "get_context.tool_call_schema.schema()" - ] - }, - { - "cell_type": "markdown", - "id": "8e8b9211-93d0-4ad5-aa7a-9c09099c53ff", - "metadata": {}, - "source": [ - "### Define the graph\n", - "\n", - "In this example we will be using a [prebuilt ReAct agent](https://langchain-ai.github.io/langgraph/how-tos/create-react-agent/). We'll first need to define our model and a tool-calling node ([ToolNode](https://langchain-ai.github.io/langgraph/reference/prebuilt/#langgraph.prebuilt.tool_node.ToolNode)):" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "be341be4-bdc3-4e78-9bc1-7486da27fd7c", - "metadata": {}, - "outputs": [], - "source": [ - "from langchain_openai import ChatOpenAI\n", - "from langgraph.prebuilt import ToolNode, create_react_agent\n", - "from langgraph.checkpoint.memory import MemorySaver\n", - "\n", - "model = ChatOpenAI(model=\"gpt-4o\", temperature=0)\n", - "tools = [get_context]\n", - "\n", - "# ToolNode will automatically take care of injecting state into tools\n", - "tool_node = ToolNode(tools)\n", - "\n", - "checkpointer = MemorySaver()\n", - "graph = create_react_agent(model, tools, state_schema=State, checkpointer=checkpointer)" - ] - }, - { - "cell_type": "markdown", - "id": "547c3931-3dae-4281-ad4e-4b51305594d4", - "metadata": {}, - "source": [ - "### Use it!" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "c0858273-10f2-45c4-a922-b11321ac3fae", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "================================\u001b[1m Human Message \u001b[0m=================================\n", - "\n", - "what's the latest news about FooBar\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "Tool Calls:\n", - " get_context (call_UkqfR7z2cLJQjhatUpDeEa5H)\n", - " Call ID: call_UkqfR7z2cLJQjhatUpDeEa5H\n", - " Args:\n", - " question: latest news about FooBar\n", - "=================================\u001b[1m Tool Message \u001b[0m=================================\n", - "Name: get_context\n", - "\n", - "FooBar company just raised 1 Billion dollars!\n", - "\n", - "FooBar company was founded in 2019\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "The latest news about FooBar is that the company has just raised 1 billion dollars.\n" - ] - } - ], - "source": [ - "docs = [\n", - " \"FooBar company just raised 1 Billion dollars!\",\n", - " \"FooBar company was founded in 2019\",\n", - "]\n", - "\n", - "inputs = {\n", - " \"messages\": [{\"type\": \"user\", \"content\": \"what's the latest news about FooBar\"}],\n", - " \"docs\": docs,\n", - "}\n", - "config = {\"configurable\": {\"thread_id\": \"1\"}}\n", - "for chunk in graph.stream(inputs, config, stream_mode=\"values\"):\n", - " chunk[\"messages\"][-1].pretty_print()" - ] - }, - { - "cell_type": "markdown", - "id": "09dd6d7d-d8a8-48f9-a30d-fba79fb7cb1e", - "metadata": {}, - "source": [ - "## Pass shared memory (store) to the graph\n", - "\n", - "You might also want to give tools access to memory that is shared across multiple conversations or users. We can do it by passing LangGraph [Store](https://langchain-ai.github.io/langgraph/how-tos/cross-thread-persistence/) to the tools using a different annotation -- `InjectedStore`.\n", - "\n", - "Let's modify our example to save the documents in an in-memory store and retrieve them using `get_context` tool. We'll also make the documents accessible based on a user ID, so that some documents are only visible to certain users. The tool will then use the `user_id` provided in the [config](https://langchain-ai.github.io/langgraph/how-tos/pass-config-to-tools/) to retrieve a correct set of documents." - ] - }, - { - "cell_type": "markdown", - "id": "41644e7e-bda2-4c0d-95da-99572554c02d", - "metadata": {}, - "source": [ - "
    \n", - "

    Note

    \n", - " \n", - "
  • \n", - " Support for Store API and InjectedStore used in this notebook was added in LangGraph v0.2.34.\n", - "
  • \n", - "
  • \n", - " InjectedStore annotation requires langchain-core >= 0.3.8\n", - "
  • \n", - " \n", - "" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "759186ed-5506-4e9a-80c4-0a2405ff58de", - "metadata": {}, - "outputs": [], - "source": [ - "from langgraph.store.memory import InMemoryStore\n", - "\n", - "doc_store = InMemoryStore()\n", - "\n", - "namespace = (\"documents\", \"1\") # user ID\n", - "doc_store.put(\n", - " namespace, \"doc_0\", {\"doc\": \"FooBar company just raised 1 Billion dollars!\"}\n", - ")\n", - "namespace = (\"documents\", \"2\") # user ID\n", - "doc_store.put(namespace, \"doc_1\", {\"doc\": \"FooBar company was founded in 2019\"})" - ] - }, - { - "cell_type": "markdown", - "id": "c1a6e4e4-3256-4d42-aa5f-de337bfa6a97", - "metadata": {}, - "source": [ - "### Define the tools" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "91ab7e2b-7df4-41ea-8b20-e2ba950aacb2", - "metadata": {}, - "outputs": [], - "source": [ - "from langgraph.store.base import BaseStore\n", - "from langchain_core.runnables import RunnableConfig\n", - "from langgraph.prebuilt import InjectedStore\n", - "\n", - "\n", - "@tool\n", - "def get_context(\n", - " question: str,\n", - " config: RunnableConfig,\n", - " store: Annotated[BaseStore, InjectedStore()],\n", - ") -> Tuple[str, List[Document]]:\n", - " \"\"\"Get relevant context for answering the question.\"\"\"\n", - " user_id = config.get(\"configurable\", {}).get(\"user_id\")\n", - " docs = [item.value[\"doc\"] for item in store.search((\"documents\", user_id))]\n", - " return \"\\n\\n\".join(doc for doc in docs)" - ] - }, - { - "cell_type": "markdown", - "id": "fcd29b33-b647-4e11-8942-2d47f129095b", - "metadata": {}, - "source": [ - "We can also verify that the tool-calling model will ignore `store` arg of `get_context` tool:" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "07bdc124-06bb-4c25-a18e-700ab7aa6521", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'description': 'Get relevant context for answering the question.',\n", - " 'properties': {'question': {'title': 'Question', 'type': 'string'}},\n", - " 'required': ['question'],\n", - " 'title': 'get_context',\n", - " 'type': 'object'}" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "get_context.tool_call_schema.schema()" - ] - }, - { - "cell_type": "markdown", - "id": "10622c58-db67-476b-81a3-1b964f5b471f", - "metadata": {}, - "source": [ - "### Define the graph\n", - "\n", - "Let's update our ReAct agent:" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "10c70125-a105-4103-89d2-2e93b401080c", - "metadata": {}, - "outputs": [], - "source": [ - "tools = [get_context]\n", - "\n", - "# ToolNode will automatically take care of injecting Store into tools\n", - "tool_node = ToolNode(tools)\n", - "\n", - "checkpointer = MemorySaver()\n", - "# NOTE: we need to pass our store to `create_react_agent` to make sure our graph is aware of it\n", - "graph = create_react_agent(model, tools, checkpointer=checkpointer, store=doc_store)" - ] - }, - { - "cell_type": "markdown", - "id": "35ba8adc-c706-48a6-992f-24c03c4cee46", - "metadata": {}, - "source": [ - "### Use it!" - ] - }, - { - "cell_type": "markdown", - "id": "c155ef73-91fe-459d-a3af-7ed254c19e23", - "metadata": {}, - "source": [ - "Let's try running our graph with a `\"user_id\"` in the config." - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "d683986f-faf4-4724-a13f-bac39ea9bafe", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "================================\u001b[1m Human Message \u001b[0m=================================\n", - "\n", - "what's the latest news about FooBar\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "Tool Calls:\n", - " get_context (call_ocyHBpGgF3LPFOgRKURBfkGG)\n", - " Call ID: call_ocyHBpGgF3LPFOgRKURBfkGG\n", - " Args:\n", - " question: latest news about FooBar\n", - "=================================\u001b[1m Tool Message \u001b[0m=================================\n", - "Name: get_context\n", - "\n", - "FooBar company just raised 1 Billion dollars!\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "The latest news about FooBar is that the company has just raised 1 billion dollars.\n" - ] - } - ], - "source": [ - "messages = [{\"type\": \"user\", \"content\": \"what's the latest news about FooBar\"}]\n", - "config = {\"configurable\": {\"thread_id\": \"1\", \"user_id\": \"1\"}}\n", - "for chunk in graph.stream({\"messages\": messages}, config, stream_mode=\"values\"):\n", - " chunk[\"messages\"][-1].pretty_print()" - ] - }, - { - "cell_type": "markdown", - "id": "4fac8ead-a4fa-488f-835d-21872c67ec72", - "metadata": {}, - "source": [ - "We can see that the tool only retrieved the correct document for user \"1\" when looking up the information in the store. Let's now try it again for a different user:" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "2e3fd1e2-cc19-4023-8ffa-b0fc13da9e09", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "================================\u001b[1m Human Message \u001b[0m=================================\n", - "\n", - "what's the latest news about FooBar\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "Tool Calls:\n", - " get_context (call_zxO9KVlL8UxFQUMb8ETeHNvs)\n", - " Call ID: call_zxO9KVlL8UxFQUMb8ETeHNvs\n", - " Args:\n", - " question: latest news about FooBar\n", - "=================================\u001b[1m Tool Message \u001b[0m=================================\n", - "Name: get_context\n", - "\n", - "FooBar company was founded in 2019\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "FooBar company was founded in 2019. If you need more specific or recent news, please let me know!\n" - ] - } - ], - "source": [ - "messages = [{\"type\": \"user\", \"content\": \"what's the latest news about FooBar\"}]\n", - "config = {\"configurable\": {\"thread_id\": \"2\", \"user_id\": \"2\"}}\n", - "for chunk in graph.stream({\"messages\": messages}, config, stream_mode=\"values\"):\n", - " chunk[\"messages\"][-1].pretty_print()" - ] - }, - { - "cell_type": "markdown", - "id": "196fd8ec-38e7-4300-88f6-9f8774bba313", - "metadata": {}, - "source": [ - "We can see that the tool pulled in a different document this time." - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.9" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/docs/docs/how-tos/pass_private_state.ipynb b/docs/docs/how-tos/pass_private_state.ipynb deleted file mode 100644 index 83374b580..000000000 --- a/docs/docs/how-tos/pass_private_state.ipynb +++ /dev/null @@ -1,177 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "47ed5db3-bda5-49e1-bf75-23e08c9a3af0", - "metadata": {}, - "source": [ - "# How to pass private state between nodes\n", - "\n", - "
    \n", - "

    Prerequisites

    \n", - "

    \n", - " This guide assumes familiarity with the following:\n", - "

    \n", - "

    \n", - "
    \n", - "\n", - "In some cases, you may want nodes to exchange information that is crucial for intermediate logic but doesn’t need to be part of the main schema of the graph. This private data is not relevant to the overall input/output of the graph and should only be shared between certain nodes.\n", - "\n", - "In this how-to guide, we'll create an example sequential graph consisting of three nodes (node_1, node_2 and node_3), where private data is passed between the first two steps (node_1 and node_2), while the third step (node_3) only has access to the public overall state.\n", - "\n", - "## Setup\n", - "\n", - "First, let's install the required packages" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "32d79ebd", - "metadata": {}, - "outputs": [], - "source": [ - "%%capture --no-stderr\n", - "%pip install -U langgraph" - ] - }, - { - "cell_type": "markdown", - "id": "e30836ce", - "metadata": {}, - "source": [ - "
    \n", - "

    Set up LangSmith for LangGraph development

    \n", - "

    \n", - " Sign up for LangSmith to quickly spot issues and improve the performance of your LangGraph projects. LangSmith lets you use trace data to debug, test, and monitor your LLM apps built with LangGraph — read more about how to get started here. \n", - "

    \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "id": "a0028ced", - "metadata": {}, - "source": [ - "## Define and use the graph" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "f0323902-ad88-4be1-a557-ac73a4419feb", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Entered node `node_1`:\n", - "\tInput: {'a': 'set at start'}.\n", - "\tReturned: {'private_data': 'set by node_1'}\n", - "Entered node `node_2`:\n", - "\tInput: {'private_data': 'set by node_1'}.\n", - "\tReturned: {'a': 'set by node_2'}\n", - "Entered node `node_3`:\n", - "\tInput: {'a': 'set by node_2'}.\n", - "\tReturned: {'a': 'set by node_3'}\n", - "\n", - "Output of graph invocation: {'a': 'set by node_3'}\n" - ] - } - ], - "source": [ - "from langgraph.graph import StateGraph, START, END\n", - "from typing_extensions import TypedDict\n", - "\n", - "\n", - "# The overall state of the graph (this is the public state shared across nodes)\n", - "class OverallState(TypedDict):\n", - " a: str\n", - "\n", - "\n", - "# Output from node_1 contains private data that is not part of the overall state\n", - "class Node1Output(TypedDict):\n", - " private_data: str\n", - "\n", - "\n", - "# The private data is only shared between node_1 and node_2\n", - "def node_1(state: OverallState) -> Node1Output:\n", - " output = {\"private_data\": \"set by node_1\"}\n", - " print(f\"Entered node `node_1`:\\n\\tInput: {state}.\\n\\tReturned: {output}\")\n", - " return output\n", - "\n", - "\n", - "# Node 2 input only requests the private data available after node_1\n", - "class Node2Input(TypedDict):\n", - " private_data: str\n", - "\n", - "\n", - "def node_2(state: Node2Input) -> OverallState:\n", - " output = {\"a\": \"set by node_2\"}\n", - " print(f\"Entered node `node_2`:\\n\\tInput: {state}.\\n\\tReturned: {output}\")\n", - " return output\n", - "\n", - "\n", - "# Node 3 only has access to the overall state (no access to private data from node_1)\n", - "def node_3(state: OverallState) -> OverallState:\n", - " output = {\"a\": \"set by node_3\"}\n", - " print(f\"Entered node `node_3`:\\n\\tInput: {state}.\\n\\tReturned: {output}\")\n", - " return output\n", - "\n", - "\n", - "# Build the state graph\n", - "builder = StateGraph(OverallState)\n", - "builder.add_node(node_1) # node_1 is the first node\n", - "builder.add_node(\n", - " node_2\n", - ") # node_2 is the second node and accepts private data from node_1\n", - "builder.add_node(node_3) # node_3 is the third node and does not see the private data\n", - "builder.add_edge(START, \"node_1\") # Start the graph with node_1\n", - "builder.add_edge(\"node_1\", \"node_2\") # Pass from node_1 to node_2\n", - "builder.add_edge(\n", - " \"node_2\", \"node_3\"\n", - ") # Pass from node_2 to node_3 (only overall state is shared)\n", - "builder.add_edge(\"node_3\", END) # End the graph after node_3\n", - "graph = builder.compile()\n", - "\n", - "# Invoke the graph with the initial state\n", - "response = graph.invoke(\n", - " {\n", - " \"a\": \"set at start\",\n", - " }\n", - ")\n", - "\n", - "print()\n", - "print(f\"Output of graph invocation: {response}\")" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.4" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/docs/docs/how-tos/persistence.ipynb b/docs/docs/how-tos/persistence.ipynb index 608add87c..448c42cc8 100644 --- a/docs/docs/how-tos/persistence.ipynb +++ b/docs/docs/how-tos/persistence.ipynb @@ -5,65 +5,22 @@ "id": "51466c8d-8ce4-4b3d-be4e-18fdbeda5f53", "metadata": {}, "source": [ - "# How to add thread-level persistence to your graph\n", + "# Add persistence\n", "\n", - "
    \n", - "

    Prerequisites

    \n", - "

    \n", - " This guide assumes familiarity with the following:\n", - "

    \n", - "

    \n", - "
    \n", + "Many AI applications need memory to share context across multiple interactions. LangGraph supports two types of memory essential for building conversational agents:\n", "\n", - "!!! info \"Not needed for LangGraph API users\"\n", + "- **[Short-term memory](#add-short-term-memory)**: Tracks the ongoing conversation by maintaining message history within a session.\n", + "- **[Long-term memory](#add-long-term-memory)**: Stores user-specific or application-level data across sessions.\n", "\n", - " If you're using the LangGraph API, you needn't manually implement a checkpointer. The API automatically handles checkpointing for you. This guide is relevant when implementing LangGraph in your own custom server.\n", - "\n", - "Many AI applications need memory to share context across multiple interactions. In LangGraph, this kind of memory can be added to any [StateGraph](https://langchain-ai.github.io/langgraph/reference/graphs/#langgraph.graph.StateGraph) using [thread-level persistence](https://langchain-ai.github.io/langgraph/concepts/persistence) .\n", - "\n", - "When creating any LangGraph graph, you can set it up to persist its state by adding a [checkpointer](https://langchain-ai.github.io/langgraph/reference/checkpoints/#basecheckpointsaver) when compiling the graph:\n", - "\n", - "```python\n", - "from langgraph.checkpoint.memory import MemorySaver\n", - "\n", - "checkpointer = MemorySaver()\n", - "graph.compile(checkpointer=checkpointer)\n", - "```\n", - "\n", - "This guide shows how you can add thread-level persistence to your graph.\n", - "\n", - "
    \n", - "

    Note

    \n", - "

    \n", - " If you need memory that is shared across multiple conversations or users (cross-thread persistence), check out this how-to guide.\n", - "

    \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "id": "7cbd446a-808f-4394-be92-d45ab818953c", - "metadata": {}, - "source": [ - "## Setup\n", - "\n", - "First we need to install the packages required" + "> **Terminology**\n", + ">\n", + "> In LangGraph:\n", + ">\n", + "> - *Short-term memory* is also referred to as **thread-level memory**.\n", + "> - *Long-term memory* is also called **cross-thread memory**.\n", + ">\n", + "> A [thread](../../concepts/persistence#threads) represents a sequence of related runs\n", + "> grouped by the same `thread_id`." ] }, { @@ -73,16 +30,9 @@ "metadata": {}, "outputs": [], "source": [ + "# hide-cell\n", "%%capture --no-stderr\n", - "%pip install --quiet -U langgraph langchain_anthropic" - ] - }, - { - "cell_type": "markdown", - "id": "0abe11f4-62ed-4dc4-8875-3db21e260d1d", - "metadata": {}, - "source": [ - "Next, we need to set API key for Anthropic (the LLM we will use)." + "%pip install --quiet -U langgraph \"langchain[anthropic]\"" ] }, { @@ -100,6 +50,7 @@ } ], "source": [ + "# hide-cell\n", "import getpass\n", "import os\n", "\n", @@ -114,61 +65,54 @@ }, { "cell_type": "markdown", - "id": "f0ed46a8-effe-4596-b0e1-a6a29ee16f5c", + "id": "702f9da1-9aaf-4a5f-9b1f-6ab1a273e6a9", "metadata": {}, "source": [ - "
    \n", - "

    Set up LangSmith for LangGraph development

    \n", - "

    \n", - " Sign up for LangSmith to quickly spot issues and improve the performance of your LangGraph projects. LangSmith lets you use trace data to debug, test, and monitor your LLM apps built with LangGraph — read more about how to get started here. \n", - "

    \n", - "
    " + "## Add short-term memory" ] }, { "cell_type": "markdown", - "id": "4cf509bc", + "id": "f7c171e2-82d2-423f-8eba-ff32d7c494fe", "metadata": {}, "source": [ - "## Define graph\n", - "\n", - "We will be using a single-node graph that calls a [chat model](https://python.langchain.com/docs/concepts/#chat-models).\n", - "\n", - "Let's first define the model we'll be using:" + "**Short-term** memory (thread-level persistence) enables agents to track multi-turn conversations. To add short-term memory:" ] }, { "cell_type": "code", - "execution_count": 3, - "id": "892b54b9-75f0-4804-9ed0-88b5e5532989", + "execution_count": 18, + "id": "07584f6a-7b8e-4f18-a135-e0435797e274", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "================================\u001b[1m Human Message \u001b[0m=================================\n", + "\n", + "hi! I'm bob\n", + "==================================\u001b[1m Ai Message \u001b[0m==================================\n", + "\n", + "Hi Bob! How are you doing today? Is there anything I can help you with?\n", + "================================\u001b[1m Human Message \u001b[0m=================================\n", + "\n", + "what's my name?\n", + "==================================\u001b[1m Ai Message \u001b[0m==================================\n", + "\n", + "Your name is Bob.\n" + ] + } + ], "source": [ - "from langchain_anthropic import ChatAnthropic\n", - "\n", - "model = ChatAnthropic(model=\"claude-3-5-sonnet-20240620\")" - ] - }, - { - "cell_type": "markdown", - "id": "7b7a2792-982b-4e47-83eb-0c594725d1c1", - "metadata": {}, - "source": [ - "Now we can define our `StateGraph` and add our model-calling node:" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "87326ea6-34c5-46da-a41f-dda26ef9bd74", - "metadata": {}, - "outputs": [], - "source": [ - "from typing import Annotated\n", - "from typing_extensions import TypedDict\n", - "\n", + "from langchain.chat_models import init_chat_model\n", "from langgraph.graph import StateGraph, MessagesState, START\n", "\n", + "# highlight-next-line\n", + "from langgraph.checkpoint.memory import InMemorySaver\n", + "\n", + "model = init_chat_model(model=\"anthropic:claude-3-5-haiku-latest\")\n", + "\n", "\n", "def call_model(state: MessagesState):\n", " response = model.invoke(state[\"messages\"])\n", @@ -176,103 +120,928 @@ "\n", "\n", "builder = StateGraph(MessagesState)\n", - "builder.add_node(\"call_model\", call_model)\n", + "builder.add_node(call_model)\n", "builder.add_edge(START, \"call_model\")\n", - "graph = builder.compile()" + "\n", + "checkpointer = InMemorySaver()\n", + "# highlight-next-line\n", + "graph = builder.compile(checkpointer=checkpointer)\n", + "\n", + "config = {\n", + " \"configurable\": {\n", + " # highlight-next-line\n", + " \"thread_id\": \"1\"\n", + " }\n", + "}\n", + "\n", + "for chunk in graph.stream(\n", + " {\"messages\": [{\"role\": \"user\", \"content\": \"hi! I'm bob\"}]},\n", + " # highlight-next-line\n", + " config,\n", + " stream_mode=\"values\",\n", + "):\n", + " chunk[\"messages\"][-1].pretty_print()\n", + "\n", + "for chunk in graph.stream(\n", + " {\"messages\": [{\"role\": \"user\", \"content\": \"what's my name?\"}]},\n", + " # highlight-next-line\n", + " config,\n", + " stream_mode=\"values\",\n", + "):\n", + " chunk[\"messages\"][-1].pretty_print()" ] }, { "cell_type": "markdown", - "id": "250d8fd9-2e7a-4892-9adc-19762a1e3cce", + "id": "504bf7c3-40f2-4b7f-86d9-390973a1700c", "metadata": {}, "source": [ - "If we try to use this graph, the context of the conversation will not be persisted across interactions:" + "!!! info \"Not needed for LangGraph API users\"\n", + "\n", + " If you're using the LangGraph API, **don't need** to provide checkpointer when compiling the graph. The API automatically handles checkpointing for you." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "988a98c0-15a6-492b-aa59-261fab3a4909", + "metadata": {}, + "source": [ + "### Use in production\n", + "\n", + "In production, you would want to use a checkpointer backed by a database:\n", + "\n", + "```python\n", + "from langgraph.checkpoint.postgres import PostgresSaver\n", + "\n", + "DB_URI = \"postgresql://postgres:postgres@localhost:5442/postgres?sslmode=disable\"\n", + "# highlight-next-line\n", + "with PostgresSaver.from_conn_string(DB_URI) as checkpointer:\n", + " builder = StateGraph(...)\n", + " # highlight-next-line\n", + " graph = builder.compile(checkpointer=checkpointer)\n", + "```\n", + "\n", + "??? example \"Example: using [Postgres](https://pypi.org/project/langgraph-checkpoint-postgres/) checkpointer\"\n", + "\n", + " ```\n", + " pip install -U psycopg psycopg-pool langgraph langgraph-checkpoint-postgres\n", + " ```\n", + "\n", + " !!! Setup\n", + " You need to call `checkpointer.setup()` the first time you're using Postgres checkpointer\n", + "\n", + " === \"Sync\"\n", + "\n", + " ```python\n", + " from langchain.chat_models import init_chat_model\n", + " from langgraph.graph import StateGraph, MessagesState, START\n", + " # highlight-next-line\n", + " from langgraph.checkpoint.postgres import PostgresSaver\n", + " \n", + " model = init_chat_model(model=\"anthropic:claude-3-5-haiku-latest\")\n", + " \n", + " DB_URI = \"postgresql://postgres:postgres@localhost:5442/postgres?sslmode=disable\"\n", + " # highlight-next-line\n", + " with PostgresSaver.from_conn_string(DB_URI) as checkpointer:\n", + " # checkpointer.setup()\n", + " \n", + " def call_model(state: MessagesState):\n", + " response = model.invoke(state[\"messages\"])\n", + " return {\"messages\": response}\n", + " \n", + " builder = StateGraph(MessagesState)\n", + " builder.add_node(call_model)\n", + " builder.add_edge(START, \"call_model\")\n", + " \n", + " # highlight-next-line\n", + " graph = builder.compile(checkpointer=checkpointer)\n", + " \n", + " config = {\n", + " \"configurable\": {\n", + " # highlight-next-line\n", + " \"thread_id\": \"1\"\n", + " }\n", + " }\n", + " \n", + " for chunk in graph.stream(\n", + " {\"messages\": [{\"role\": \"user\", \"content\": \"hi! I'm bob\"}]},\n", + " # highlight-next-line\n", + " config,\n", + " stream_mode=\"values\"\n", + " ):\n", + " chunk[\"messages\"][-1].pretty_print()\n", + " \n", + " for chunk in graph.stream(\n", + " {\"messages\": [{\"role\": \"user\", \"content\": \"what's my name?\"}]},\n", + " # highlight-next-line\n", + " config,\n", + " stream_mode=\"values\"\n", + " ):\n", + " chunk[\"messages\"][-1].pretty_print()\n", + " ```\n", + "\n", + " === \"Async\"\n", + "\n", + " ```python\n", + " from langchain.chat_models import init_chat_model\n", + " from langgraph.graph import StateGraph, MessagesState, START\n", + " # highlight-next-line\n", + " from langgraph.checkpoint.postgres.aio import AsyncPostgresSaver\n", + " \n", + " model = init_chat_model(model=\"anthropic:claude-3-5-haiku-latest\")\n", + " \n", + " DB_URI = \"postgresql://postgres:postgres@localhost:5442/postgres?sslmode=disable\"\n", + " # highlight-next-line\n", + " async with AsyncPostgresSaver.from_conn_string(DB_URI) as checkpointer:\n", + " # await checkpointer.setup()\n", + " \n", + " async def call_model(state: MessagesState):\n", + " response = await model.ainvoke(state[\"messages\"])\n", + " return {\"messages\": response}\n", + " \n", + " builder = StateGraph(MessagesState)\n", + " builder.add_node(call_model)\n", + " builder.add_edge(START, \"call_model\")\n", + " \n", + " # highlight-next-line\n", + " graph = builder.compile(checkpointer=checkpointer)\n", + " \n", + " config = {\n", + " \"configurable\": {\n", + " # highlight-next-line\n", + " \"thread_id\": \"1\"\n", + " }\n", + " }\n", + " \n", + " async for chunk in graph.astream(\n", + " {\"messages\": [{\"role\": \"user\", \"content\": \"hi! I'm bob\"}]},\n", + " # highlight-next-line\n", + " config,\n", + " stream_mode=\"values\"\n", + " ):\n", + " chunk[\"messages\"][-1].pretty_print()\n", + " \n", + " async for chunk in graph.astream(\n", + " {\"messages\": [{\"role\": \"user\", \"content\": \"what's my name?\"}]},\n", + " # highlight-next-line\n", + " config,\n", + " stream_mode=\"values\"\n", + " ):\n", + " chunk[\"messages\"][-1].pretty_print()\n", + " ```\n", + "\n", + " \n", + "\n", + "??? example \"Example: using [MongoDB](https://pypi.org/project/langgraph-checkpoint-mongodb/) checkpointer\"\n", + "\n", + " ```\n", + " pip install -U pymongo langgraph langgraph-checkpoint-mongodb\n", + " ```\n", + "\n", + " !!! note \"Setup\"\n", + "\n", + " To use the MongoDB checkpointer, you will need a MongoDB cluster. Follow [this guide](https://www.mongodb.com/docs/guides/atlas/cluster/) to create a cluster if you don't already have one.\n", + "\n", + " === \"Sync\"\n", + "\n", + " ```python\n", + " from langchain.chat_models import init_chat_model\n", + " from langgraph.graph import StateGraph, MessagesState, START\n", + " # highlight-next-line\n", + " from langgraph.checkpoint.mongodb import MongoDBSaver\n", + " \n", + " model = init_chat_model(model=\"anthropic:claude-3-5-haiku-latest\")\n", + " \n", + " DB_URI = \"localhost:27017\"\n", + " # highlight-next-line\n", + " with MongoDBSaver.from_conn_string(DB_URI) as checkpointer:\n", + " \n", + " def call_model(state: MessagesState):\n", + " response = model.invoke(state[\"messages\"])\n", + " return {\"messages\": response}\n", + " \n", + " builder = StateGraph(MessagesState)\n", + " builder.add_node(call_model)\n", + " builder.add_edge(START, \"call_model\")\n", + " \n", + " # highlight-next-line\n", + " graph = builder.compile(checkpointer=checkpointer)\n", + " \n", + " config = {\n", + " \"configurable\": {\n", + " # highlight-next-line\n", + " \"thread_id\": \"1\"\n", + " }\n", + " }\n", + " \n", + " for chunk in graph.stream(\n", + " {\"messages\": [{\"role\": \"user\", \"content\": \"hi! I'm bob\"}]},\n", + " # highlight-next-line\n", + " config,\n", + " stream_mode=\"values\"\n", + " ):\n", + " chunk[\"messages\"][-1].pretty_print()\n", + " \n", + " for chunk in graph.stream(\n", + " {\"messages\": [{\"role\": \"user\", \"content\": \"what's my name?\"}]},\n", + " # highlight-next-line\n", + " config,\n", + " stream_mode=\"values\"\n", + " ):\n", + " chunk[\"messages\"][-1].pretty_print()\n", + " ```\n", + "\n", + " === \"Async\"\n", + "\n", + " ```python\n", + " from langchain.chat_models import init_chat_model\n", + " from langgraph.graph import StateGraph, MessagesState, START\n", + " # highlight-next-line\n", + " from langgraph.checkpoint.mongodb.aio import AsyncMongoDBSaver\n", + " \n", + " model = init_chat_model(model=\"anthropic:claude-3-5-haiku-latest\")\n", + " \n", + " DB_URI = \"localhost:27017\"\n", + " # highlight-next-line\n", + " async with AsyncMongoDBSaver.from_conn_string(DB_URI) as checkpointer:\n", + " \n", + " async def call_model(state: MessagesState):\n", + " response = await model.ainvoke(state[\"messages\"])\n", + " return {\"messages\": response}\n", + " \n", + " builder = StateGraph(MessagesState)\n", + " builder.add_node(call_model)\n", + " builder.add_edge(START, \"call_model\")\n", + " \n", + " # highlight-next-line\n", + " graph = builder.compile(checkpointer=checkpointer)\n", + " \n", + " config = {\n", + " \"configurable\": {\n", + " # highlight-next-line\n", + " \"thread_id\": \"1\"\n", + " }\n", + " }\n", + " \n", + " async for chunk in graph.astream(\n", + " {\"messages\": [{\"role\": \"user\", \"content\": \"hi! I'm bob\"}]},\n", + " # highlight-next-line\n", + " config,\n", + " stream_mode=\"values\"\n", + " ):\n", + " chunk[\"messages\"][-1].pretty_print()\n", + " \n", + " async for chunk in graph.astream(\n", + " {\"messages\": [{\"role\": \"user\", \"content\": \"what's my name?\"}]},\n", + " # highlight-next-line\n", + " config,\n", + " stream_mode=\"values\"\n", + " ):\n", + " chunk[\"messages\"][-1].pretty_print()\n", + " ``` \n", + "\n", + "??? example \"Example: using [Redis](https://pypi.org/project/langgraph-checkpoint-redis/) checkpointer\"\n", + "\n", + " ```\n", + " pip install -U langgraph langgraph-checkpoint-redis\n", + " ```\n", + "\n", + " !!! Setup\n", + " You need to call `checkpointer.setup()` the first time you're using Redis checkpointer\n", + "\n", + "\n", + " === \"Sync\"\n", + "\n", + " ```python\n", + " from langchain.chat_models import init_chat_model\n", + " from langgraph.graph import StateGraph, MessagesState, START\n", + " # highlight-next-line\n", + " from langgraph.checkpoint.redis import RedisSaver\n", + " \n", + " model = init_chat_model(model=\"anthropic:claude-3-5-haiku-latest\")\n", + " \n", + " DB_URI = \"redis://localhost:6379\"\n", + " # highlight-next-line\n", + " with RedisSaver.from_conn_string(DB_URI) as checkpointer:\n", + " # checkpointer.setup()\n", + " \n", + " def call_model(state: MessagesState):\n", + " response = model.invoke(state[\"messages\"])\n", + " return {\"messages\": response}\n", + " \n", + " builder = StateGraph(MessagesState)\n", + " builder.add_node(call_model)\n", + " builder.add_edge(START, \"call_model\")\n", + " \n", + " # highlight-next-line\n", + " graph = builder.compile(checkpointer=checkpointer)\n", + " \n", + " config = {\n", + " \"configurable\": {\n", + " # highlight-next-line\n", + " \"thread_id\": \"1\"\n", + " }\n", + " }\n", + " \n", + " for chunk in graph.stream(\n", + " {\"messages\": [{\"role\": \"user\", \"content\": \"hi! I'm bob\"}]},\n", + " # highlight-next-line\n", + " config,\n", + " stream_mode=\"values\"\n", + " ):\n", + " chunk[\"messages\"][-1].pretty_print()\n", + " \n", + " for chunk in graph.stream(\n", + " {\"messages\": [{\"role\": \"user\", \"content\": \"what's my name?\"}]},\n", + " # highlight-next-line\n", + " config,\n", + " stream_mode=\"values\"\n", + " ):\n", + " chunk[\"messages\"][-1].pretty_print()\n", + " ```\n", + "\n", + " === \"Async\"\n", + "\n", + " ```python\n", + " from langchain.chat_models import init_chat_model\n", + " from langgraph.graph import StateGraph, MessagesState, START\n", + " # highlight-next-line\n", + " from langgraph.checkpoint.redis.aio import AsyncRedisSaver\n", + " \n", + " model = init_chat_model(model=\"anthropic:claude-3-5-haiku-latest\")\n", + " \n", + " DB_URI = \"redis://localhost:6379\"\n", + " # highlight-next-line\n", + " async with AsyncRedisSaver.from_conn_string(DB_URI) as checkpointer:\n", + " # await checkpointer.asetup()\n", + " \n", + " async def call_model(state: MessagesState):\n", + " response = await model.ainvoke(state[\"messages\"])\n", + " return {\"messages\": response}\n", + " \n", + " builder = StateGraph(MessagesState)\n", + " builder.add_node(call_model)\n", + " builder.add_edge(START, \"call_model\")\n", + " \n", + " # highlight-next-line\n", + " graph = builder.compile(checkpointer=checkpointer)\n", + " \n", + " config = {\n", + " \"configurable\": {\n", + " # highlight-next-line\n", + " \"thread_id\": \"1\"\n", + " }\n", + " }\n", + " \n", + " async for chunk in graph.astream(\n", + " {\"messages\": [{\"role\": \"user\", \"content\": \"hi! I'm bob\"}]},\n", + " # highlight-next-line\n", + " config,\n", + " stream_mode=\"values\"\n", + " ):\n", + " chunk[\"messages\"][-1].pretty_print()\n", + " \n", + " async for chunk in graph.astream(\n", + " {\"messages\": [{\"role\": \"user\", \"content\": \"what's my name?\"}]},\n", + " # highlight-next-line\n", + " config,\n", + " stream_mode=\"values\"\n", + " ):\n", + " chunk[\"messages\"][-1].pretty_print() \n", + " ```" + ] + }, + { + "cell_type": "markdown", + "id": "53f54d98-c659-49af-ae1e-a25641924ad1", + "metadata": {}, + "source": [ + "### Use with subgraphs" + ] + }, + { + "cell_type": "markdown", + "id": "cf3ec9f4-08bc-4118-af7b-1d3c4a5ef69b", + "metadata": {}, + "source": [ + "If your graph contains [subgraphs](../../concepts/subgraphs), you only need to **provide the checkpointer when compiling the parent graph**. LangGraph will automatically propagate the checkpointer to the child subgraphs.\n", + "\n", + "```python\n", + "from langgraph.graph import START, StateGraph\n", + "from langgraph.checkpoint.memory import InMemorySaver\n", + "from typing import TypedDict\n", + "\n", + "class State(TypedDict):\n", + " foo: str\n", + "\n", + "# Subgraph\n", + "\n", + "def subgraph_node_1(state: State):\n", + " return {\"foo\": state[\"foo\"] + \"bar\"}\n", + "\n", + "subgraph_builder = StateGraph(State)\n", + "subgraph_builder.add_node(subgraph_node_1)\n", + "subgraph_builder.add_edge(START, \"subgraph_node_1\")\n", + "# highlight-next-line\n", + "subgraph = subgraph_builder.compile()\n", + "\n", + "# Parent graph\n", + "\n", + "def node_1(state: State):\n", + " return {\"foo\": \"hi! \" + state[\"foo\"]}\n", + "\n", + "builder = StateGraph(State)\n", + "# highlight-next-line\n", + "builder.add_node(\"node_1\", subgraph)\n", + "builder.add_edge(START, \"node_1\")\n", + "\n", + "checkpointer = InMemorySaver()\n", + "# highlight-next-line\n", + "graph = builder.compile(checkpointer=checkpointer)\n", + "``` \n", + "\n", + "If you want the subgraph to have its own memory, you can compile it `with checkpointer=True`. This is useful in [multi-agent](../../concepts/multi_agent) systems, if you want agents to keep track of their internal message histories:\n", + "\n", + "```python\n", + "subgraph_builder = StateGraph(...)\n", + "# highlight-next-line\n", + "subgraph = subgraph_builder.compile(checkpointer=True)\n", + "```" + ] + }, + { + "cell_type": "markdown", + "id": "f17b4493-c578-428f-857c-ef53f7139d53", + "metadata": {}, + "source": [ + "### Use with Functional API\n", + "\n", + "To add short-term memory to a [Functional API](../../concepts/functional_api) LangGraph workflow:\n", + "\n", + "1. Pass `checkpointer` instance to the [`entrypoint()`][langgraph.func.entrypoint] decorator:\n", + "\n", + " ```python\n", + " from langgraph.func import entrypoint\n", + " \n", + " @entrypoint(checkpointer=checkpointer)\n", + " def workflow(inputs)\n", + " ...\n", + " ```\n", + "\n", + "2. Optionally expose `previous` parameter in the workflow function signature:\n", + "\n", + " ```python\n", + " @entrypoint(checkpointer=checkpointer)\n", + " def workflow(\n", + " inputs,\n", + " *,\n", + " # you can optionally specify `previous` in the workflow function signature\n", + " # to access the return value from the workflow as of the last execution\n", + " previous\n", + " ):\n", + " previous = previous or []\n", + " combined_inputs = previous + inputs\n", + " result = do_something(combined_inputs)\n", + " ...\n", + " ```\n", + "\n", + "3. Optionally choose which values will be returned from the workflow and which will be saved by the checkpointer as `previous`:\n", + "\n", + " ```python\n", + " @entrypoint(checkpointer=checkpointer)\n", + " def workflow(inputs, *, previous):\n", + " ...\n", + " result = do_something(...)\n", + " return entrypoint.final(value=result, save=combine(inputs, result))\n", + " ```\n", + "\n", + "??? example \"Example: add short-term memory to Functional API workflow\"\n", + "\n", + " ```python\n", + " from langchain_core.messages import AnyMessage\n", + " from langgraph.graph import add_messages\n", + " from langgraph.func import entrypoint, task\n", + " from langgraph.checkpoint.memory import InMemorySaver\n", + "\n", + " # highlight-next-line\n", + " @task\n", + " def call_model(messages: list[AnyMessage]):\n", + " response = model.invoke(messages)\n", + " return response\n", + " \n", + " checkpointer = InMemorySaver()\n", + "\n", + " # highlight-next-line\n", + " @entrypoint(checkpointer=checkpointer)\n", + " def workflow(inputs: list[AnyMessage], *, previous: list[AnyMessage]):\n", + " if previous:\n", + " inputs = add_messages(previous, inputs)\n", + " \n", + " response = call_model(inputs).result()\n", + " return entrypoint.final(value=response, save=add_messages(inputs, response))\n", + " \n", + " config = {\n", + " \"configurable\": {\n", + " # highlight-next-line\n", + " \"thread_id\": \"1\"\n", + " }\n", + " }\n", + " \n", + " for chunk in workflow.invoke(\n", + " [{\"role\": \"user\", \"content\": \"hi! I'm bob\"}],\n", + " # highlight-next-line\n", + " config,\n", + " stream_mode=\"values\",\n", + " ):\n", + " chunk.pretty_print()\n", + " \n", + " for chunk in workflow.stream(\n", + " [{\"role\": \"user\", \"content\": \"what's my name?\"}],\n", + " # highlight-next-line\n", + " config,\n", + " stream_mode=\"values\",\n", + " ):\n", + " chunk.pretty_print()\n", + " ```" + ] + }, + { + "cell_type": "markdown", + "id": "6d4bd273-98e6-4330-af93-b79fb7f50115", + "metadata": {}, + "source": [ + "### Manage checkpoints\n", + "\n", + "You can view and delete the information stored by the checkpointer:\n", + "\n", + "??? \"View thread state (checkpoint)\"\n", + "\n", + " === \"Graph/Functional API\"\n", + " \n", + " ```python\n", + " config = {\n", + " \"configurable\": {\n", + " # highlight-next-line\n", + " \"thread_id\": \"1\",\n", + " # optionally provide an ID for a specific checkpoint,\n", + " # otherwise the latest checkpoint is shown\n", + " # highlight-next-line\n", + " # \"checkpoint_id\": \"1f029ca3-1f5b-6704-8004-820c16b69a5a\"\n", + " \n", + " }\n", + " }\n", + " # highlight-next-line\n", + " graph.get_state(config)\n", + " ```\n", + " \n", + " ```\n", + " StateSnapshot(\n", + " values={'messages': [HumanMessage(content=\"hi! I'm bob\"), AIMessage(content='Hi Bob! How are you doing today?), HumanMessage(content=\"what's my name?\"), AIMessage(content='Your name is Bob.')]}, next=(), \n", + " config={'configurable': {'thread_id': '1', 'checkpoint_ns': '', 'checkpoint_id': '1f029ca3-1f5b-6704-8004-820c16b69a5a'}},\n", + " metadata={\n", + " 'source': 'loop',\n", + " 'writes': {'call_model': {'messages': AIMessage(content='Your name is Bob.')}},\n", + " 'step': 4,\n", + " 'parents': {},\n", + " 'thread_id': '1'\n", + " },\n", + " created_at='2025-05-05T16:01:24.680462+00:00',\n", + " parent_config={'configurable': {'thread_id': '1', 'checkpoint_ns': '', 'checkpoint_id': '1f029ca3-1790-6b0a-8003-baf965b6a38f'}}, \n", + " tasks=(),\n", + " interrupts=()\n", + " )\n", + " ```\n", + "\n", + " === \"Checkpointer API\"\n", + " \n", + " ```python\n", + " config = {\n", + " \"configurable\": {\n", + " # highlight-next-line\n", + " \"thread_id\": \"1\",\n", + " # optionally provide an ID for a specific checkpoint,\n", + " # otherwise the latest checkpoint is shown\n", + " # highlight-next-line\n", + " # \"checkpoint_id\": \"1f029ca3-1f5b-6704-8004-820c16b69a5a\"\n", + " \n", + " }\n", + " }\n", + " # highlight-next-line\n", + " checkpointer.get_tuple(config)\n", + " ```\n", + "\n", + " ```\n", + " CheckpointTuple(\n", + " config={'configurable': {'thread_id': '1', 'checkpoint_ns': '', 'checkpoint_id': '1f029ca3-1f5b-6704-8004-820c16b69a5a'}},\n", + " checkpoint={\n", + " 'v': 3,\n", + " 'ts': '2025-05-05T16:01:24.680462+00:00',\n", + " 'id': '1f029ca3-1f5b-6704-8004-820c16b69a5a',\n", + " 'channel_versions': {'__start__': '00000000000000000000000000000005.0.5290678567601859', 'messages': '00000000000000000000000000000006.0.3205149138784782', 'branch:to:call_model': '00000000000000000000000000000006.0.14611156755133758'}, 'versions_seen': {'__input__': {}, '__start__': {'__start__': '00000000000000000000000000000004.0.5736472536395331'}, 'call_model': {'branch:to:call_model': '00000000000000000000000000000005.0.1410174088651449'}},\n", + " 'channel_values': {'messages': [HumanMessage(content=\"hi! I'm bob\"), AIMessage(content='Hi Bob! How are you doing today?), HumanMessage(content=\"what's my name?\"), AIMessage(content='Your name is Bob.')]},\n", + " 'pending_sends': []\n", + " },\n", + " metadata={\n", + " 'source': 'loop',\n", + " 'writes': {'call_model': {'messages': AIMessage(content='Your name is Bob.')}},\n", + " 'step': 4,\n", + " 'parents': {},\n", + " 'thread_id': '1'\n", + " },\n", + " parent_config={'configurable': {'thread_id': '1', 'checkpoint_ns': '', 'checkpoint_id': '1f029ca3-1790-6b0a-8003-baf965b6a38f'}},\n", + " pending_writes=[]\n", + " )\n", + " ```\n", + "\n", + "??? \"View the history of the thread (checkpoints)\"\n", + "\n", + " === \"Graph/Functional API\"\n", + "\n", + " ```python\n", + " config = {\n", + " \"configurable\": {\n", + " # highlight-next-line\n", + " \"thread_id\": \"1\"\n", + " }\n", + " }\n", + " # highlight-next-line\n", + " list(graph.get_state_history(config))\n", + " ```\n", + " \n", + " ```\n", + " [\n", + " StateSnapshot(\n", + " values={'messages': [HumanMessage(content=\"hi! I'm bob\"), AIMessage(content='Hi Bob! How are you doing today? Is there anything I can help you with?'), HumanMessage(content=\"what's my name?\"), AIMessage(content='Your name is Bob.')]}, \n", + " next=(), \n", + " config={'configurable': {'thread_id': '1', 'checkpoint_ns': '', 'checkpoint_id': '1f029ca3-1f5b-6704-8004-820c16b69a5a'}}, \n", + " metadata={'source': 'loop', 'writes': {'call_model': {'messages': AIMessage(content='Your name is Bob.')}}, 'step': 4, 'parents': {}, 'thread_id': '1'},\n", + " created_at='2025-05-05T16:01:24.680462+00:00',\n", + " parent_config={'configurable': {'thread_id': '1', 'checkpoint_ns': '', 'checkpoint_id': '1f029ca3-1790-6b0a-8003-baf965b6a38f'}},\n", + " tasks=(),\n", + " interrupts=()\n", + " ),\n", + " StateSnapshot(\n", + " values={'messages': [HumanMessage(content=\"hi! I'm bob\"), AIMessage(content='Hi Bob! How are you doing today? Is there anything I can help you with?'), HumanMessage(content=\"what's my name?\")]}, \n", + " next=('call_model',), \n", + " config={'configurable': {'thread_id': '1', 'checkpoint_ns': '', 'checkpoint_id': '1f029ca3-1790-6b0a-8003-baf965b6a38f'}},\n", + " metadata={'source': 'loop', 'writes': None, 'step': 3, 'parents': {}, 'thread_id': '1'},\n", + " created_at='2025-05-05T16:01:23.863421+00:00',\n", + " parent_config={...}\n", + " tasks=(PregelTask(id='8ab4155e-6b15-b885-9ce5-bed69a2c305c', name='call_model', path=('__pregel_pull', 'call_model'), error=None, interrupts=(), state=None, result={'messages': AIMessage(content='Your name is Bob.')}),),\n", + " interrupts=()\n", + " ),\n", + " StateSnapshot(\n", + " values={'messages': [HumanMessage(content=\"hi! I'm bob\"), AIMessage(content='Hi Bob! How are you doing today? Is there anything I can help you with?')]}, \n", + " next=('__start__',), \n", + " config={...}, \n", + " metadata={'source': 'input', 'writes': {'__start__': {'messages': [{'role': 'user', 'content': \"what's my name?\"}]}}, 'step': 2, 'parents': {}, 'thread_id': '1'},\n", + " created_at='2025-05-05T16:01:23.863173+00:00',\n", + " parent_config={...}\n", + " tasks=(PregelTask(id='24ba39d6-6db1-4c9b-f4c5-682aeaf38dcd', name='__start__', path=('__pregel_pull', '__start__'), error=None, interrupts=(), state=None, result={'messages': [{'role': 'user', 'content': \"what's my name?\"}]}),),\n", + " interrupts=()\n", + " ),\n", + " StateSnapshot(\n", + " values={'messages': [HumanMessage(content=\"hi! I'm bob\"), AIMessage(content='Hi Bob! How are you doing today? Is there anything I can help you with?')]}, \n", + " next=(), \n", + " config={...}, \n", + " metadata={'source': 'loop', 'writes': {'call_model': {'messages': AIMessage(content='Hi Bob! How are you doing today? Is there anything I can help you with?')}}, 'step': 1, 'parents': {}, 'thread_id': '1'},\n", + " created_at='2025-05-05T16:01:23.862295+00:00',\n", + " parent_config={...}\n", + " tasks=(),\n", + " interrupts=()\n", + " ),\n", + " StateSnapshot(\n", + " values={'messages': [HumanMessage(content=\"hi! I'm bob\")]}, \n", + " next=('call_model',), \n", + " config={...}, \n", + " metadata={'source': 'loop', 'writes': None, 'step': 0, 'parents': {}, 'thread_id': '1'}, \n", + " created_at='2025-05-05T16:01:22.278960+00:00', \n", + " parent_config={...}\n", + " tasks=(PregelTask(id='8cbd75e0-3720-b056-04f7-71ac805140a0', name='call_model', path=('__pregel_pull', 'call_model'), error=None, interrupts=(), state=None, result={'messages': AIMessage(content='Hi Bob! How are you doing today? Is there anything I can help you with?')}),), \n", + " interrupts=()\n", + " ),\n", + " StateSnapshot(\n", + " values={'messages': []}, \n", + " next=('__start__',), \n", + " config={'configurable': {'thread_id': '1', 'checkpoint_ns': '', 'checkpoint_id': '1f029ca3-0870-6ce2-bfff-1f3f14c3e565'}},\n", + " metadata={'source': 'input', 'writes': {'__start__': {'messages': [{'role': 'user', 'content': \"hi! I'm bob\"}]}}, 'step': -1, 'parents': {}, 'thread_id': '1'}, \n", + " created_at='2025-05-05T16:01:22.277497+00:00', \n", + " parent_config=None,\n", + " tasks=(PregelTask(id='d458367b-8265-812c-18e2-33001d199ce6', name='__start__', path=('__pregel_pull', '__start__'), error=None, interrupts=(), state=None, result={'messages': [{'role': 'user', 'content': \"hi! I'm bob\"}]}),), \n", + " interrupts=()\n", + " )\n", + " ] \n", + " ```\n", + "\n", + " === \"Checkpointer API\"\n", + "\n", + " ```python\n", + " config = {\n", + " \"configurable\": {\n", + " # highlight-next-line\n", + " \"thread_id\": \"1\"\n", + " }\n", + " }\n", + " # highlight-next-line\n", + " list(checkpointer.list(config))\n", + " ```\n", + "\n", + " ```\n", + " [\n", + " CheckpointTuple(\n", + " config={'configurable': {'thread_id': '1', 'checkpoint_ns': '', 'checkpoint_id': '1f029ca3-1f5b-6704-8004-820c16b69a5a'}}, \n", + " checkpoint={\n", + " 'v': 3, \n", + " 'ts': '2025-05-05T16:01:24.680462+00:00', \n", + " 'id': '1f029ca3-1f5b-6704-8004-820c16b69a5a', \n", + " 'channel_versions': {'__start__': '00000000000000000000000000000005.0.5290678567601859', 'messages': '00000000000000000000000000000006.0.3205149138784782', 'branch:to:call_model': '00000000000000000000000000000006.0.14611156755133758'}, \n", + " 'versions_seen': {'__input__': {}, '__start__': {'__start__': '00000000000000000000000000000004.0.5736472536395331'}, 'call_model': {'branch:to:call_model': '00000000000000000000000000000005.0.1410174088651449'}},\n", + " 'channel_values': {'messages': [HumanMessage(content=\"hi! I'm bob\"), AIMessage(content='Hi Bob! How are you doing today? Is there anything I can help you with?'), HumanMessage(content=\"what's my name?\"), AIMessage(content='Your name is Bob.')]}, 'pending_sends': []\n", + " },\n", + " metadata={'source': 'loop', 'writes': {'call_model': {'messages': AIMessage(content='Your name is Bob.')}}, 'step': 4, 'parents': {}, 'thread_id': '1'}, \n", + " parent_config={'configurable': {'thread_id': '1', 'checkpoint_ns': '', 'checkpoint_id': '1f029ca3-1790-6b0a-8003-baf965b6a38f'}}, \n", + " pending_writes=[]\n", + " ),\n", + " CheckpointTuple(\n", + " config={'configurable': {'thread_id': '1', 'checkpoint_ns': '', 'checkpoint_id': '1f029ca3-1790-6b0a-8003-baf965b6a38f'}},\n", + " checkpoint={\n", + " 'v': 3, \n", + " 'ts': '2025-05-05T16:01:23.863421+00:00', \n", + " 'id': '1f029ca3-1790-6b0a-8003-baf965b6a38f', \n", + " 'channel_versions': {'__start__': '00000000000000000000000000000005.0.5290678567601859', 'messages': '00000000000000000000000000000005.0.7935064215293443', 'branch:to:call_model': '00000000000000000000000000000005.0.1410174088651449'}, \n", + " 'versions_seen': {'__input__': {}, '__start__': {'__start__': '00000000000000000000000000000004.0.5736472536395331'}, 'call_model': {'branch:to:call_model': '00000000000000000000000000000002.0.9300422176788571'}}, \n", + " 'channel_values': {'messages': [HumanMessage(content=\"hi! I'm bob\"), AIMessage(content='Hi Bob! How are you doing today? Is there anything I can help you with?'), HumanMessage(content=\"what's my name?\")], 'branch:to:call_model': None}, \n", + " 'pending_sends': []\n", + " }, \n", + " metadata={'source': 'loop', 'writes': None, 'step': 3, 'parents': {}, 'thread_id': '1'}, \n", + " parent_config={...}, \n", + " pending_writes=[('8ab4155e-6b15-b885-9ce5-bed69a2c305c', 'messages', AIMessage(content='Your name is Bob.'))]\n", + " ),\n", + " CheckpointTuple(\n", + " config={...}, \n", + " checkpoint={\n", + " 'v': 3, \n", + " 'ts': '2025-05-05T16:01:23.863173+00:00', \n", + " 'id': '1f029ca3-1790-616e-8002-9e021694a0cd', \n", + " 'channel_versions': {'__start__': '00000000000000000000000000000004.0.5736472536395331', 'messages': '00000000000000000000000000000003.0.7056767754077798', 'branch:to:call_model': '00000000000000000000000000000003.0.22059023329132854'}, \n", + " 'versions_seen': {'__input__': {}, '__start__': {'__start__': '00000000000000000000000000000001.0.7040775356287469'}, 'call_model': {'branch:to:call_model': '00000000000000000000000000000002.0.9300422176788571'}}, \n", + " 'channel_values': {'__start__': {'messages': [{'role': 'user', 'content': \"what's my name?\"}]}, 'messages': [HumanMessage(content=\"hi! I'm bob\"), AIMessage(content='Hi Bob! How are you doing today? Is there anything I can help you with?')]}, \n", + " 'pending_sends': []\n", + " }, \n", + " metadata={'source': 'input', 'writes': {'__start__': {'messages': [{'role': 'user', 'content': \"what's my name?\"}]}}, 'step': 2, 'parents': {}, 'thread_id': '1'}, \n", + " parent_config={...}, \n", + " pending_writes=[('24ba39d6-6db1-4c9b-f4c5-682aeaf38dcd', 'messages', [{'role': 'user', 'content': \"what's my name?\"}]), ('24ba39d6-6db1-4c9b-f4c5-682aeaf38dcd', 'branch:to:call_model', None)]\n", + " ),\n", + " CheckpointTuple(\n", + " config={...}, \n", + " checkpoint={\n", + " 'v': 3, \n", + " 'ts': '2025-05-05T16:01:23.862295+00:00', \n", + " 'id': '1f029ca3-178d-6f54-8001-d7b180db0c89', \n", + " 'channel_versions': {'__start__': '00000000000000000000000000000002.0.18673090920108737', 'messages': '00000000000000000000000000000003.0.7056767754077798', 'branch:to:call_model': '00000000000000000000000000000003.0.22059023329132854'}, \n", + " 'versions_seen': {'__input__': {}, '__start__': {'__start__': '00000000000000000000000000000001.0.7040775356287469'}, 'call_model': {'branch:to:call_model': '00000000000000000000000000000002.0.9300422176788571'}}, \n", + " 'channel_values': {'messages': [HumanMessage(content=\"hi! I'm bob\"), AIMessage(content='Hi Bob! How are you doing today? Is there anything I can help you with?')]}, \n", + " 'pending_sends': []\n", + " }, \n", + " metadata={'source': 'loop', 'writes': {'call_model': {'messages': AIMessage(content='Hi Bob! How are you doing today? Is there anything I can help you with?')}}, 'step': 1, 'parents': {}, 'thread_id': '1'}, \n", + " parent_config={...}, \n", + " pending_writes=[]\n", + " ),\n", + " CheckpointTuple(\n", + " config={...}, \n", + " checkpoint={\n", + " 'v': 3, \n", + " 'ts': '2025-05-05T16:01:22.278960+00:00', \n", + " 'id': '1f029ca3-0874-6612-8000-339f2abc83b1', \n", + " 'channel_versions': {'__start__': '00000000000000000000000000000002.0.18673090920108737', 'messages': '00000000000000000000000000000002.0.30296526818059655', 'branch:to:call_model': '00000000000000000000000000000002.0.9300422176788571'}, \n", + " 'versions_seen': {'__input__': {}, '__start__': {'__start__': '00000000000000000000000000000001.0.7040775356287469'}}, \n", + " 'channel_values': {'messages': [HumanMessage(content=\"hi! I'm bob\")], 'branch:to:call_model': None}, \n", + " 'pending_sends': []\n", + " }, \n", + " metadata={'source': 'loop', 'writes': None, 'step': 0, 'parents': {}, 'thread_id': '1'}, \n", + " parent_config={...}, \n", + " pending_writes=[('8cbd75e0-3720-b056-04f7-71ac805140a0', 'messages', AIMessage(content='Hi Bob! How are you doing today? Is there anything I can help you with?'))]\n", + " ),\n", + " CheckpointTuple(\n", + " config={'configurable': {'thread_id': '1', 'checkpoint_ns': '', 'checkpoint_id': '1f029ca3-0870-6ce2-bfff-1f3f14c3e565'}}, \n", + " checkpoint={\n", + " 'v': 3, \n", + " 'ts': '2025-05-05T16:01:22.277497+00:00', \n", + " 'id': '1f029ca3-0870-6ce2-bfff-1f3f14c3e565', \n", + " 'channel_versions': {'__start__': '00000000000000000000000000000001.0.7040775356287469'}, \n", + " 'versions_seen': {'__input__': {}}, \n", + " 'channel_values': {'__start__': {'messages': [{'role': 'user', 'content': \"hi! I'm bob\"}]}}, \n", + " 'pending_sends': []\n", + " }, \n", + " metadata={'source': 'input', 'writes': {'__start__': {'messages': [{'role': 'user', 'content': \"hi! I'm bob\"}]}}, 'step': -1, 'parents': {}, 'thread_id': '1'}, \n", + " parent_config=None, \n", + " pending_writes=[('d458367b-8265-812c-18e2-33001d199ce6', 'messages', [{'role': 'user', 'content': \"hi! I'm bob\"}]), ('d458367b-8265-812c-18e2-33001d199ce6', 'branch:to:call_model', None)]\n", + " )\n", + " ]\n", + " ```\n", + "\n", + "\n", + "??? \"Delete all checkpoints for a thread\"\n", + "\n", + " ```python\n", + " thread_id = \"1\"\n", + " checkpointer.delete_thread(thread_id)\n", + " ```" + ] + }, + { + "cell_type": "markdown", + "id": "799eaf41-1a48-4a31-bc71-1a2a51e92b21", + "metadata": {}, + "source": [ + "## Add long-term memory" + ] + }, + { + "cell_type": "markdown", + "id": "303f3ae3-30e3-41d1-900a-c84879b50f86", + "metadata": {}, + "source": [ + "Use **long-term** memory (cross-thread persistence) to store user-specific or application-specific data across conversations. This is useful for applications like chatbots, where you want to remember user preferences or other information.\n", + "\n", + "To use long-term memory, we need to [provide a store][langgraph.store.base.BaseStore] when creating the graph:" ] }, { "cell_type": "code", "execution_count": 5, - "id": "6fa9a5e3-7101-43ab-a811-592e222b9580", + "id": "b88d8ede-ec8c-406c-917d-cda5610679c3", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "================================\u001b[1m Human Message \u001b[0m=================================\n", - "\n", - "hi! I'm bob\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "Hello Bob! It's nice to meet you. How are you doing today? Is there anything I can help you with or would you like to chat about something in particular?\n", - "================================\u001b[1m Human Message \u001b[0m=================================\n", - "\n", - "what's my name?\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "I apologize, but I don't have access to your personal information, including your name. I'm an AI language model designed to provide general information and answer questions to the best of my ability based on my training data. I don't have any information about individual users or their personal details. If you'd like to share your name, you're welcome to do so, but I won't be able to recall it in future conversations.\n" - ] - } - ], + "outputs": [], "source": [ - "input_message = {\"role\": \"user\", \"content\": \"hi! I'm bob\"}\n", - "for chunk in graph.stream({\"messages\": [input_message]}, stream_mode=\"values\"):\n", - " chunk[\"messages\"][-1].pretty_print()\n", + "import uuid\n", + "from typing_extensions import Annotated, TypedDict\n", "\n", - "input_message = {\"role\": \"user\", \"content\": \"what's my name?\"}\n", - "for chunk in graph.stream({\"messages\": [input_message]}, stream_mode=\"values\"):\n", - " chunk[\"messages\"][-1].pretty_print()" + "from langchain_core.runnables import RunnableConfig\n", + "from langgraph.graph import StateGraph, MessagesState, START\n", + "from langgraph.checkpoint.memory import InMemorySaver\n", + "\n", + "# highlight-next-line\n", + "from langgraph.store.memory import InMemoryStore\n", + "from langgraph.store.base import BaseStore\n", + "\n", + "model = init_chat_model(model=\"anthropic:claude-3-5-haiku-latest\")\n", + "\n", + "\n", + "def call_model(\n", + " state: MessagesState,\n", + " config: RunnableConfig,\n", + " *,\n", + " # highlight-next-line\n", + " store: BaseStore, # (1)!\n", + "):\n", + " user_id = config[\"configurable\"][\"user_id\"]\n", + " namespace = (\"memories\", user_id)\n", + " # highlight-next-line\n", + " memories = store.search(namespace, query=str(state[\"messages\"][-1].content))\n", + " info = \"\\n\".join([d.value[\"data\"] for d in memories])\n", + " system_msg = f\"You are a helpful assistant talking to the user. User info: {info}\"\n", + "\n", + " # Store new memories if the user asks the model to remember\n", + " last_message = state[\"messages\"][-1]\n", + " if \"remember\" in last_message.content.lower():\n", + " memory = \"User name is Bob\"\n", + " # highlight-next-line\n", + " store.put(namespace, str(uuid.uuid4()), {\"data\": memory})\n", + "\n", + " response = model.invoke(\n", + " [{\"role\": \"system\", \"content\": system_msg}] + state[\"messages\"]\n", + " )\n", + " return {\"messages\": response}\n", + "\n", + "\n", + "builder = StateGraph(MessagesState)\n", + "builder.add_node(call_model)\n", + "builder.add_edge(START, \"call_model\")\n", + "\n", + "checkpointer = InMemorySaver()\n", + "store = InMemoryStore()\n", + "\n", + "graph = builder.compile(\n", + " checkpointer=checkpointer,\n", + " # highlight-next-line\n", + " store=store,\n", + ")" ] }, { "cell_type": "markdown", - "id": "bc9c8536-f90b-44fa-958d-5df016c66d8f", + "id": "ce33d6ee-5754-4a9d-8246-6ad188a28d94", "metadata": {}, "source": [ - "## Add persistence\n", - "\n", - "To add in persistence, we need to pass in a [Checkpointer](https://langchain-ai.github.io/langgraph/reference/checkpoints/#langgraph.checkpoint.base.BaseCheckpointSaver) when compiling the graph." + "1. This is the `store` we compiled the graph with" ] }, { "cell_type": "code", "execution_count": 6, - "id": "f088933f-264c-477f-9a7d-03f6e9d4ee3a", - "metadata": {}, - "outputs": [], - "source": [ - "from langgraph.checkpoint.memory import MemorySaver\n", - "\n", - "memory = MemorySaver()\n", - "graph = builder.compile(checkpointer=memory)\n", - "# If you're using LangGraph Cloud or LangGraph Studio, you don't need to pass the checkpointer when compiling the graph, since it's done automatically." - ] - }, - { - "cell_type": "markdown", - "id": "7654ebcc-2179-41b4-92d1-6666f6f8634f", - "metadata": {}, - "source": [ - "
    \n", - "

    Note

    \n", - "

    \n", - " If you're using LangGraph Cloud or LangGraph Studio, you don't need to pass checkpointer when compiling the graph, since it's done automatically.\n", - "

    \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "id": "2a1b56c5-bd61-4192-8bdb-458a1e9f0159", - "metadata": {}, - "source": [ - "We can now interact with the agent and see that it remembers previous messages!" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "cfd140f0-a5a6-4697-8115-322242f197b5", + "id": "62ce2760-f23a-4ab1-b73c-d2680e20b611", "metadata": {}, "outputs": [ { @@ -281,96 +1050,563 @@ "text": [ "================================\u001b[1m Human Message \u001b[0m=================================\n", "\n", - "hi! I'm bob\n", + "Hi! Remember: my name is Bob\n", "==================================\u001b[1m Ai Message \u001b[0m==================================\n", "\n", - "Hello Bob! It's nice to meet you. How are you doing today? Is there anything in particular you'd like to chat about or any questions you have that I can help you with?\n" - ] - } - ], - "source": [ - "config = {\"configurable\": {\"thread_id\": \"1\"}}\n", - "input_message = {\"role\": \"user\", \"content\": \"hi! I'm bob\"}\n", - "for chunk in graph.stream({\"messages\": [input_message]}, config, stream_mode=\"values\"):\n", - " chunk[\"messages\"][-1].pretty_print()" - ] - }, - { - "cell_type": "markdown", - "id": "1bb07bf8-68b7-4049-a0f1-eb67a4879a3a", - "metadata": {}, - "source": [ - "You can always resume previous threads:" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "08ae8246-11d5-40e1-8567-361e5bef8917", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ + "Hi Bob! I'll remember that your name is Bob. How are you doing today?\n", "================================\u001b[1m Human Message \u001b[0m=================================\n", "\n", - "what's my name?\n", + "what is my name?\n", "==================================\u001b[1m Ai Message \u001b[0m==================================\n", "\n", - "Your name is Bob, as you introduced yourself at the beginning of our conversation.\n" + "Your name is Bob.\n" ] } ], "source": [ - "input_message = {\"role\": \"user\", \"content\": \"what's my name?\"}\n", - "for chunk in graph.stream({\"messages\": [input_message]}, config, stream_mode=\"values\"):\n", - " chunk[\"messages\"][-1].pretty_print()" - ] - }, - { - "cell_type": "markdown", - "id": "3f47bbfc-d9ef-4288-ba4a-ebbc0136fa9d", - "metadata": {}, - "source": [ - "If we want to start a new conversation, we can pass in a different `thread_id`. Poof! All the memories are gone!" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "273d56a8-f40f-4a51-a27f-7c6bb2bda0ba", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "================================\u001b[1m Human Message \u001b[0m=================================\n", - "\n", - "what's is my name?\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "I apologize, but I don't have access to your personal information, including your name. As an AI language model, I don't have any information about individual users unless it's provided within the conversation. If you'd like to share your name, you're welcome to do so, but otherwise, I won't be able to know or guess it.\n" - ] - } - ], - "source": [ - "input_message = {\"role\": \"user\", \"content\": \"what's my name?\"}\n", + "config = {\n", + " \"configurable\": {\n", + " # highlight-next-line\n", + " \"thread_id\": \"1\",\n", + " # highlight-next-line\n", + " \"user_id\": \"1\",\n", + " }\n", + "}\n", "for chunk in graph.stream(\n", - " {\"messages\": [input_message]},\n", - " {\"configurable\": {\"thread_id\": \"2\"}},\n", + " {\"messages\": [{\"role\": \"user\", \"content\": \"Hi! Remember: my name is Bob\"}]},\n", + " # highlight-next-line\n", + " config,\n", + " stream_mode=\"values\",\n", + "):\n", + " chunk[\"messages\"][-1].pretty_print()\n", + "\n", + "config = {\n", + " \"configurable\": {\n", + " # highlight-next-line\n", + " \"thread_id\": \"2\",\n", + " \"user_id\": \"1\",\n", + " }\n", + "}\n", + "\n", + "for chunk in graph.stream(\n", + " {\"messages\": [{\"role\": \"user\", \"content\": \"what is my name?\"}]},\n", + " # highlight-next-line\n", + " config,\n", " stream_mode=\"values\",\n", "):\n", " chunk[\"messages\"][-1].pretty_print()" ] + }, + { + "cell_type": "markdown", + "id": "cb96703d-3ab3-4d87-a6e6-22f4c0273346", + "metadata": {}, + "source": [ + "!!! info \"Not needed for LangGraph API users\"\n", + "\n", + " If you're using the LangGraph API, **don't need** to provide store when compiling the graph. The API automatically handles storage infrastructure for you." + ] + }, + { + "cell_type": "markdown", + "id": "b585dbb4-bd99-44bb-82e0-477a151556e6", + "metadata": {}, + "source": [ + "### Use in production\n", + "\n", + "In production, you would want to use a checkpointer backed by a database:\n", + "\n", + "```python\n", + "from langgraph.checkpoint.postgres import PostgresSaver\n", + "\n", + "DB_URI = \"postgresql://postgres:postgres@localhost:5442/postgres?sslmode=disable\"\n", + "# highlight-next-line\n", + "with PostgresStore.from_conn_string(DB_URI) as store:\n", + " builder = StateGraph(...)\n", + " # highlight-next-line\n", + " graph = builder.compile(store=store)\n", + "```\n", + "\n", + "??? example \"Example: using [Postgres](https://pypi.org/project/langgraph-checkpoint-postgres/) store\"\n", + "\n", + " ```\n", + " pip install -U psycopg psycopg-pool langgraph langgraph-checkpoint-postgres\n", + " ```\n", + "\n", + " !!! Setup\n", + " You need to call `store.setup()` the first time you're using Postgres store\n", + "\n", + " === \"Sync\"\n", + "\n", + " ```python\n", + " from langchain_core.runnables import RunnableConfig\n", + " from langchain.chat_models import init_chat_model\n", + " from langgraph.graph import StateGraph, MessagesState, START\n", + " from langgraph.checkpoint.postgres import PostgresSaver\n", + " # highlight-next-line\n", + " from langgraph.store.postgres import PostgresStore\n", + " from langgraph.store.base import BaseStore\n", + " \n", + " model = init_chat_model(model=\"anthropic:claude-3-5-haiku-latest\")\n", + " \n", + " DB_URI = \"postgresql://postgres:postgres@localhost:5442/postgres?sslmode=disable\"\n", + " \n", + " with (\n", + " # highlight-next-line\n", + " PostgresStore.from_conn_string(DB_URI) as store,\n", + " PostgresSaver.from_conn_string(DB_URI) as checkpointer,\n", + " ):\n", + " # store.setup()\n", + " # checkpointer.setup()\n", + " \n", + " def call_model(\n", + " state: MessagesState,\n", + " config: RunnableConfig,\n", + " *,\n", + " # highlight-next-line\n", + " store: BaseStore,\n", + " ):\n", + " user_id = config[\"configurable\"][\"user_id\"]\n", + " namespace = (\"memories\", user_id)\n", + " # highlight-next-line\n", + " memories = store.search(namespace, query=str(state[\"messages\"][-1].content))\n", + " info = \"\\n\".join([d.value[\"data\"] for d in memories])\n", + " system_msg = f\"You are a helpful assistant talking to the user. User info: {info}\"\n", + " \n", + " # Store new memories if the user asks the model to remember\n", + " last_message = state[\"messages\"][-1]\n", + " if \"remember\" in last_message.content.lower():\n", + " memory = \"User name is Bob\"\n", + " # highlight-next-line\n", + " store.put(namespace, str(uuid.uuid4()), {\"data\": memory})\n", + " \n", + " response = model.invoke(\n", + " [{\"role\": \"system\", \"content\": system_msg}] + state[\"messages\"]\n", + " )\n", + " return {\"messages\": response}\n", + " \n", + " builder = StateGraph(MessagesState)\n", + " builder.add_node(call_model)\n", + " builder.add_edge(START, \"call_model\")\n", + " \n", + " graph = builder.compile(\n", + " checkpointer=checkpointer,\n", + " # highlight-next-line\n", + " store=store,\n", + " )\n", + " \n", + " config = {\n", + " \"configurable\": {\n", + " # highlight-next-line\n", + " \"thread_id\": \"1\",\n", + " # highlight-next-line\n", + " \"user_id\": \"1\",\n", + " }\n", + " }\n", + " for chunk in graph.stream(\n", + " {\"messages\": [{\"role\": \"user\", \"content\": \"Hi! Remember: my name is Bob\"}]},\n", + " # highlight-next-line\n", + " config,\n", + " stream_mode=\"values\",\n", + " ):\n", + " chunk[\"messages\"][-1].pretty_print()\n", + " \n", + " config = {\n", + " \"configurable\": {\n", + " # highlight-next-line\n", + " \"thread_id\": \"2\",\n", + " \"user_id\": \"1\",\n", + " }\n", + " }\n", + " \n", + " for chunk in graph.stream(\n", + " {\"messages\": [{\"role\": \"user\", \"content\": \"what is my name?\"}]},\n", + " # highlight-next-line\n", + " config,\n", + " stream_mode=\"values\",\n", + " ):\n", + " chunk[\"messages\"][-1].pretty_print()\n", + " ```\n", + "\n", + " === \"Async\"\n", + "\n", + " ```python\n", + " from langchain_core.runnables import RunnableConfig\n", + " from langchain.chat_models import init_chat_model\n", + " from langgraph.graph import StateGraph, MessagesState, START\n", + " from langgraph.checkpoint.postgres.aio import AsyncPostgresSaver\n", + " # highlight-next-line\n", + " from langgraph.store.postgres.aio import AsyncPostgresStore\n", + " from langgraph.store.base import BaseStore\n", + " \n", + " model = init_chat_model(model=\"anthropic:claude-3-5-haiku-latest\")\n", + " \n", + " DB_URI = \"postgresql://postgres:postgres@localhost:5442/postgres?sslmode=disable\"\n", + " \n", + " async with (\n", + " # highlight-next-line\n", + " AsyncPostgresStore.from_conn_string(DB_URI) as store,\n", + " AsyncPostgresSaver.from_conn_string(DB_URI) as checkpointer,\n", + " ):\n", + " # await store.setup()\n", + " # await checkpointer.setup()\n", + " \n", + " async def call_model(\n", + " state: MessagesState,\n", + " config: RunnableConfig,\n", + " *,\n", + " # highlight-next-line\n", + " store: BaseStore,\n", + " ):\n", + " user_id = config[\"configurable\"][\"user_id\"]\n", + " namespace = (\"memories\", user_id)\n", + " # highlight-next-line\n", + " memories = await store.asearch(namespace, query=str(state[\"messages\"][-1].content))\n", + " info = \"\\n\".join([d.value[\"data\"] for d in memories])\n", + " system_msg = f\"You are a helpful assistant talking to the user. User info: {info}\"\n", + " \n", + " # Store new memories if the user asks the model to remember\n", + " last_message = state[\"messages\"][-1]\n", + " if \"remember\" in last_message.content.lower():\n", + " memory = \"User name is Bob\"\n", + " # highlight-next-line\n", + " await store.aput(namespace, str(uuid.uuid4()), {\"data\": memory})\n", + " \n", + " response = await model.ainvoke(\n", + " [{\"role\": \"system\", \"content\": system_msg}] + state[\"messages\"]\n", + " )\n", + " return {\"messages\": response}\n", + " \n", + " builder = StateGraph(MessagesState)\n", + " builder.add_node(call_model)\n", + " builder.add_edge(START, \"call_model\")\n", + " \n", + " graph = builder.compile(\n", + " checkpointer=checkpointer,\n", + " # highlight-next-line\n", + " store=store,\n", + " )\n", + " \n", + " config = {\n", + " \"configurable\": {\n", + " # highlight-next-line\n", + " \"thread_id\": \"1\",\n", + " # highlight-next-line\n", + " \"user_id\": \"1\",\n", + " }\n", + " }\n", + " async for chunk in graph.astream(\n", + " {\"messages\": [{\"role\": \"user\", \"content\": \"Hi! Remember: my name is Bob\"}]},\n", + " # highlight-next-line\n", + " config,\n", + " stream_mode=\"values\",\n", + " ):\n", + " chunk[\"messages\"][-1].pretty_print()\n", + " \n", + " config = {\n", + " \"configurable\": {\n", + " # highlight-next-line\n", + " \"thread_id\": \"2\",\n", + " \"user_id\": \"1\",\n", + " }\n", + " }\n", + " \n", + " async for chunk in graph.astream(\n", + " {\"messages\": [{\"role\": \"user\", \"content\": \"what is my name?\"}]},\n", + " # highlight-next-line\n", + " config,\n", + " stream_mode=\"values\",\n", + " ):\n", + " chunk[\"messages\"][-1].pretty_print()\n", + " ```\n", + "\n", + "??? example \"Example: using [Redis](https://pypi.org/project/langgraph-checkpoint-redis/) store\"\n", + "\n", + " ```\n", + " pip install -U langgraph langgraph-checkpoint-redis\n", + " ```\n", + "\n", + " !!! Setup\n", + " You need to call `store.setup()` the first time you're using Redis store\n", + "\n", + "\n", + " === \"Sync\"\n", + "\n", + " ```python\n", + " from langchain_core.runnables import RunnableConfig\n", + " from langchain.chat_models import init_chat_model\n", + " from langgraph.graph import StateGraph, MessagesState, START\n", + " from langgraph.checkpoint.redis import RedisSaver\n", + " # highlight-next-line\n", + " from langgraph.store.redis import RedisStore\n", + " from langgraph.store.base import BaseStore\n", + " \n", + " model = init_chat_model(model=\"anthropic:claude-3-5-haiku-latest\")\n", + " \n", + " DB_URI = \"redis://localhost:6379\"\n", + " \n", + " with (\n", + " # highlight-next-line\n", + " RedisStore.from_conn_string(DB_URI) as store,\n", + " RedisSaver.from_conn_string(DB_URI) as checkpointer,\n", + " ):\n", + " store.setup()\n", + " checkpointer.setup()\n", + " \n", + " def call_model(\n", + " state: MessagesState,\n", + " config: RunnableConfig,\n", + " *,\n", + " # highlight-next-line\n", + " store: BaseStore,\n", + " ):\n", + " user_id = config[\"configurable\"][\"user_id\"]\n", + " namespace = (\"memories\", user_id)\n", + " # highlight-next-line\n", + " memories = store.search(namespace, query=str(state[\"messages\"][-1].content))\n", + " info = \"\\n\".join([d.value[\"data\"] for d in memories])\n", + " system_msg = f\"You are a helpful assistant talking to the user. User info: {info}\"\n", + " \n", + " # Store new memories if the user asks the model to remember\n", + " last_message = state[\"messages\"][-1]\n", + " if \"remember\" in last_message.content.lower():\n", + " memory = \"User name is Bob\"\n", + " # highlight-next-line\n", + " store.put(namespace, str(uuid.uuid4()), {\"data\": memory})\n", + " \n", + " response = model.invoke(\n", + " [{\"role\": \"system\", \"content\": system_msg}] + state[\"messages\"]\n", + " )\n", + " return {\"messages\": response}\n", + " \n", + " builder = StateGraph(MessagesState)\n", + " builder.add_node(call_model)\n", + " builder.add_edge(START, \"call_model\")\n", + " \n", + " graph = builder.compile(\n", + " checkpointer=checkpointer,\n", + " # highlight-next-line\n", + " store=store,\n", + " )\n", + " \n", + " config = {\n", + " \"configurable\": {\n", + " # highlight-next-line\n", + " \"thread_id\": \"1\",\n", + " # highlight-next-line\n", + " \"user_id\": \"1\",\n", + " }\n", + " }\n", + " for chunk in graph.stream(\n", + " {\"messages\": [{\"role\": \"user\", \"content\": \"Hi! Remember: my name is Bob\"}]},\n", + " # highlight-next-line\n", + " config,\n", + " stream_mode=\"values\",\n", + " ):\n", + " chunk[\"messages\"][-1].pretty_print()\n", + " \n", + " config = {\n", + " \"configurable\": {\n", + " # highlight-next-line\n", + " \"thread_id\": \"2\",\n", + " \"user_id\": \"1\",\n", + " }\n", + " }\n", + " \n", + " for chunk in graph.stream(\n", + " {\"messages\": [{\"role\": \"user\", \"content\": \"what is my name?\"}]},\n", + " # highlight-next-line\n", + " config,\n", + " stream_mode=\"values\",\n", + " ):\n", + " chunk[\"messages\"][-1].pretty_print()\n", + " ```\n", + "\n", + " === \"Async\"\n", + "\n", + " ```python\n", + " from langchain_core.runnables import RunnableConfig\n", + " from langchain.chat_models import init_chat_model\n", + " from langgraph.graph import StateGraph, MessagesState, START\n", + " from langgraph.checkpoint.redis.aio import AsyncRedisSaver\n", + " # highlight-next-line\n", + " from langgraph.store.redis.aio import AsyncRedisStore\n", + " from langgraph.store.base import BaseStore\n", + " \n", + " model = init_chat_model(model=\"anthropic:claude-3-5-haiku-latest\")\n", + " \n", + " DB_URI = \"redis://localhost:6379\"\n", + " \n", + " async with (\n", + " # highlight-next-line\n", + " AsyncRedisStore.from_conn_string(DB_URI) as store,\n", + " AsyncRedisSaver.from_conn_string(DB_URI) as checkpointer,\n", + " ):\n", + " # await store.setup()\n", + " # await checkpointer.asetup()\n", + " \n", + " async def call_model(\n", + " state: MessagesState,\n", + " config: RunnableConfig,\n", + " *,\n", + " # highlight-next-line\n", + " store: BaseStore,\n", + " ):\n", + " user_id = config[\"configurable\"][\"user_id\"]\n", + " namespace = (\"memories\", user_id)\n", + " # highlight-next-line\n", + " memories = await store.asearch(namespace, query=str(state[\"messages\"][-1].content))\n", + " info = \"\\n\".join([d.value[\"data\"] for d in memories])\n", + " system_msg = f\"You are a helpful assistant talking to the user. User info: {info}\"\n", + " \n", + " # Store new memories if the user asks the model to remember\n", + " last_message = state[\"messages\"][-1]\n", + " if \"remember\" in last_message.content.lower():\n", + " memory = \"User name is Bob\"\n", + " # highlight-next-line\n", + " await store.aput(namespace, str(uuid.uuid4()), {\"data\": memory})\n", + " \n", + " response = await model.ainvoke(\n", + " [{\"role\": \"system\", \"content\": system_msg}] + state[\"messages\"]\n", + " )\n", + " return {\"messages\": response}\n", + " \n", + " builder = StateGraph(MessagesState)\n", + " builder.add_node(call_model)\n", + " builder.add_edge(START, \"call_model\")\n", + " \n", + " graph = builder.compile(\n", + " checkpointer=checkpointer,\n", + " # highlight-next-line\n", + " store=store,\n", + " )\n", + " \n", + " config = {\n", + " \"configurable\": {\n", + " # highlight-next-line\n", + " \"thread_id\": \"1\",\n", + " # highlight-next-line\n", + " \"user_id\": \"1\",\n", + " }\n", + " }\n", + " async for chunk in graph.astream(\n", + " {\"messages\": [{\"role\": \"user\", \"content\": \"Hi! Remember: my name is Bob\"}]},\n", + " # highlight-next-line\n", + " config,\n", + " stream_mode=\"values\",\n", + " ):\n", + " chunk[\"messages\"][-1].pretty_print()\n", + " \n", + " config = {\n", + " \"configurable\": {\n", + " # highlight-next-line\n", + " \"thread_id\": \"2\",\n", + " \"user_id\": \"1\",\n", + " }\n", + " }\n", + " \n", + " async for chunk in graph.astream(\n", + " {\"messages\": [{\"role\": \"user\", \"content\": \"what is my name?\"}]},\n", + " # highlight-next-line\n", + " config,\n", + " stream_mode=\"values\",\n", + " ):\n", + " chunk[\"messages\"][-1].pretty_print() \n", + " ```" + ] + }, + { + "cell_type": "markdown", + "id": "f8aff878-e1c1-4592-951a-380b5bec1f63", + "metadata": {}, + "source": [ + "### Use semantic search\n", + "\n", + "You can enable semantic search in your graph's memory store: this lets graph agent search for items in the store by semantic similarity.\n", + "\n", + "```python\n", + "from langchain.embeddings import init_embeddings\n", + "from langgraph.store.memory import InMemoryStore\n", + "\n", + "# Create store with semantic search enabled\n", + "embeddings = init_embeddings(\"openai:text-embedding-3-small\")\n", + "store = InMemoryStore(\n", + " index={\n", + " \"embed\": embeddings,\n", + " \"dims\": 1536,\n", + " }\n", + ")\n", + "\n", + "store.put((\"user_123\", \"memories\"), \"1\", {\"text\": \"I love pizza\"})\n", + "store.put((\"user_123\", \"memories\"), \"2\", {\"text\": \"I am a plumber\"})\n", + "\n", + "items = store.search(\n", + " (\"user_123\", \"memories\"), query=\"I'm hungry\", limit=1\n", + ")\n", + "```\n", + "\n", + "??? example \"Long-term memory with semantic search\"\n", + "\n", + " ```python\n", + " from typing import Optional\n", + " \n", + " from langchain.embeddings import init_embeddings\n", + " from langchain.chat_models import init_chat_model\n", + " from langgraph.store.base import BaseStore\n", + " from langgraph.store.memory import InMemoryStore\n", + " from langgraph.graph import START, MessagesState, StateGraph\n", + " \n", + " llm = init_chat_model(\"openai:gpt-4o-mini\")\n", + " \n", + " # Create store with semantic search enabled\n", + " embeddings = init_embeddings(\"openai:text-embedding-3-small\")\n", + " store = InMemoryStore(\n", + " index={\n", + " \"embed\": embeddings,\n", + " \"dims\": 1536,\n", + " }\n", + " )\n", + " \n", + " store.put((\"user_123\", \"memories\"), \"1\", {\"text\": \"I love pizza\"})\n", + " store.put((\"user_123\", \"memories\"), \"2\", {\"text\": \"I am a plumber\"})\n", + " \n", + " def chat(state, *, store: BaseStore):\n", + " # Search based on user's last message\n", + " items = store.search(\n", + " (\"user_123\", \"memories\"), query=state[\"messages\"][-1].content, limit=2\n", + " )\n", + " memories = \"\\n\".join(item.value[\"text\"] for item in items)\n", + " memories = f\"## Memories of user\\n{memories}\" if memories else \"\"\n", + " response = llm.invoke(\n", + " [\n", + " {\"role\": \"system\", \"content\": f\"You are a helpful assistant.\\n{memories}\"},\n", + " *state[\"messages\"],\n", + " ]\n", + " )\n", + " return {\"messages\": [response]}\n", + " \n", + " \n", + " builder = StateGraph(MessagesState)\n", + " builder.add_node(chat)\n", + " builder.add_edge(START, \"chat\")\n", + " graph = builder.compile(store=store)\n", + " \n", + " for message, metadata in graph.stream(\n", + " input={\"messages\": [{\"role\": \"user\", \"content\": \"I'm hungry\"}]},\n", + " stream_mode=\"messages\",\n", + " ):\n", + " print(message.content, end=\"\")\n", + " ```\n", + "\n", + "See [this guide](../memory/semantic-search/) for more information on how to use semantic search with LangGraph memory store." + ] } ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "langgraph", "language": "python", - "name": "python3" + "name": "langgraph" }, "language_info": { "codemirror_mode": { @@ -382,7 +1618,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.3" + "version": "3.11.9" } }, "nbformat": 4, diff --git a/docs/docs/how-tos/persistence_mongodb.ipynb b/docs/docs/how-tos/persistence_mongodb.ipynb deleted file mode 100644 index 5b8350595..000000000 --- a/docs/docs/how-tos/persistence_mongodb.ipynb +++ /dev/null @@ -1,454 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "51466c8d-8ce4-4b3d-be4e-18fdbeda5f53", - "metadata": {}, - "source": [ - "# How to use MongoDB checkpointer for persistence\n", - "\n", - "
    \n", - "

    Prerequisites

    \n", - "

    \n", - " This guide assumes familiarity with the following:\n", - "

    \n", - "

    \n", - "
    \n", - "\n", - "When creating LangGraph agents, you can also set them up so that they persist their state. This allows you to do things like interact with an agent multiple times and have it remember previous interactions. \n", - "\n", - "This reference implementation shows how to use MongoDB as the backend for persisting checkpoint state using the `langgraph-checkpoint-mongodb` library.\n", - "\n", - "For demonstration purposes we add persistence to a [prebuilt ReAct agent](https://langchain-ai.github.io/langgraph/how-tos/create-react-agent/).\n", - "\n", - "In general, you can add a checkpointer to any custom graph that you build like this:\n", - "\n", - "```python\n", - "from langgraph.graph import StateGraph\n", - "\n", - "builder = StateGraph(...)\n", - "# ... define the graph\n", - "checkpointer = # mongodb checkpointer (see examples below)\n", - "graph = builder.compile(checkpointer=checkpointer)\n", - "...\n", - "```" - ] - }, - { - "cell_type": "markdown", - "id": "456fa19c-93a5-4750-a410-f2d810b964ad", - "metadata": {}, - "source": [ - "## Setup\n", - "\n", - "To use the MongoDB checkpointer, you will need a MongoDB cluster. Follow [this guide](https://www.mongodb.com/docs/guides/atlas/cluster/) to create a cluster if you don't already have one.\n", - "\n", - "Next, let's install the required packages and set our API keys" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "faadfb1b-cebe-4dcf-82fd-34044c380bc4", - "metadata": {}, - "outputs": [], - "source": [ - "%%capture --no-stderr\n", - "%pip install -U pymongo langgraph langgraph-checkpoint-mongodb" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "eca9aafb-a155-407a-8036-682a2f1297d7", - "metadata": {}, - "outputs": [ - { - "name": "stdin", - "output_type": "stream", - "text": [ - "OPENAI_API_KEY: ········\n" - ] - } - ], - "source": [ - "import getpass\n", - "import os\n", - "\n", - "\n", - "def _set_env(var: str):\n", - " if not os.environ.get(var):\n", - " os.environ[var] = getpass.getpass(f\"{var}: \")\n", - "\n", - "\n", - "_set_env(\"OPENAI_API_KEY\")" - ] - }, - { - "cell_type": "markdown", - "id": "9a657ea8-fd68-4116-a484-d88b0a906888", - "metadata": {}, - "source": [ - "
    \n", - "

    Set up LangSmith for LangGraph development

    \n", - "

    \n", - " Sign up for LangSmith to quickly spot issues and improve the performance of your LangGraph projects. LangSmith lets you use trace data to debug, test, and monitor your LLM apps built with LangGraph — read more about how to get started here. \n", - "

    \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "id": "e26b3204-cca2-414c-800e-7e09032445ae", - "metadata": {}, - "source": [ - "## Define model and tools for the graph" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "ce7ccf56-9914-4557-97b8-13c95f3b7edc", - "metadata": {}, - "outputs": [], - "source": [ - "from typing import Literal\n", - "\n", - "from langchain_core.tools import tool\n", - "from langchain_openai import ChatOpenAI\n", - "from langgraph.prebuilt import create_react_agent\n", - "\n", - "\n", - "@tool\n", - "def get_weather(city: Literal[\"nyc\", \"sf\"]):\n", - " \"\"\"Use this to get weather information.\"\"\"\n", - " if city == \"nyc\":\n", - " return \"It might be cloudy in nyc\"\n", - " elif city == \"sf\":\n", - " return \"It's always sunny in sf\"\n", - " else:\n", - " raise AssertionError(\"Unknown city\")\n", - "\n", - "\n", - "tools = [get_weather]\n", - "model = ChatOpenAI(model_name=\"gpt-4o-mini\", temperature=0)" - ] - }, - { - "cell_type": "markdown", - "id": "d92ba022", - "metadata": {}, - "source": [ - "## MongoDB checkpointer usage" - ] - }, - { - "cell_type": "markdown", - "id": "a3b78544", - "metadata": {}, - "source": [ - "### With a connection string\n", - "\n", - "This creates a connection to MongoDB directly using the connection string of your cluster. This is ideal for use in scripts, one-off operations and short-lived applications." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "2e65b3b2-8e3e-4d96-8db4-4846a3bc2eac", - "metadata": {}, - "outputs": [], - "source": [ - "from langgraph.checkpoint.mongodb import MongoDBSaver\n", - "\n", - "MONGODB_URI = \"localhost:27017\" # replace this with your connection string\n", - "\n", - "with MongoDBSaver.from_conn_string(MONGODB_URI) as checkpointer:\n", - " graph = create_react_agent(model, tools=tools, checkpointer=checkpointer)\n", - " config = {\"configurable\": {\"thread_id\": \"1\"}}\n", - " response = graph.invoke(\n", - " {\"messages\": [(\"human\", \"what's the weather in sf\")]}, config\n", - " )" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "dfcb7da8", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'messages': [HumanMessage(content=\"what's the weather in sf\", additional_kwargs={}, response_metadata={}, id='729afd6a-fdc0-4192-a255-1dac065c79b2'),\n", - " AIMessage(content='', additional_kwargs={'tool_calls': [{'id': 'call_YqaO8oU3BhGmIz9VHTxqGyyN', 'function': {'arguments': '{\"city\":\"sf\"}', 'name': 'get_weather'}, 'type': 'function'}], 'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 14, 'prompt_tokens': 57, 'total_tokens': 71, 'completion_tokens_details': {'accepted_prediction_tokens': 0, 'audio_tokens': 0, 'reasoning_tokens': 0, 'rejected_prediction_tokens': 0}, 'prompt_tokens_details': {'audio_tokens': 0, 'cached_tokens': 0}}, 'model_name': 'gpt-4o-mini-2024-07-18', 'system_fingerprint': 'fp_39a40c96a0', 'finish_reason': 'tool_calls', 'logprobs': None}, id='run-b45c0c12-c68e-4392-92dd-5d325d0a9f60-0', tool_calls=[{'name': 'get_weather', 'args': {'city': 'sf'}, 'id': 'call_YqaO8oU3BhGmIz9VHTxqGyyN', 'type': 'tool_call'}], usage_metadata={'input_tokens': 57, 'output_tokens': 14, 'total_tokens': 71, 'input_token_details': {'audio': 0, 'cache_read': 0}, 'output_token_details': {'audio': 0, 'reasoning': 0}}),\n", - " ToolMessage(content=\"It's always sunny in sf\", name='get_weather', id='0c72eb29-490b-44df-898f-8454c314eac1', tool_call_id='call_YqaO8oU3BhGmIz9VHTxqGyyN'),\n", - " AIMessage(content='The weather in San Francisco is always sunny!', additional_kwargs={'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 10, 'prompt_tokens': 84, 'total_tokens': 94, 'completion_tokens_details': {'accepted_prediction_tokens': 0, 'audio_tokens': 0, 'reasoning_tokens': 0, 'rejected_prediction_tokens': 0}, 'prompt_tokens_details': {'audio_tokens': 0, 'cached_tokens': 0}}, 'model_name': 'gpt-4o-mini-2024-07-18', 'system_fingerprint': 'fp_818c284075', 'finish_reason': 'stop', 'logprobs': None}, id='run-33f54c91-0ba9-48b7-9b25-5a972bbdeea9-0', usage_metadata={'input_tokens': 84, 'output_tokens': 10, 'total_tokens': 94, 'input_token_details': {'audio': 0, 'cache_read': 0}, 'output_token_details': {'audio': 0, 'reasoning': 0}})]}" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "response" - ] - }, - { - "cell_type": "markdown", - "id": "fe8fcb47", - "metadata": {}, - "source": [ - "### Using the MongoDB client\n", - "\n", - "This creates a connection to MongoDB using the MongoDB client. This is ideal for long-running applications since it allows you to reuse the client instance for multiple database operations without needing to reinitialize the connection each time." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "e3a9889d-7a60-455f-96d6-95a8a2e7dbf6", - "metadata": {}, - "outputs": [], - "source": [ - "from pymongo import MongoClient\n", - "\n", - "mongodb_client = MongoClient(MONGODB_URI)\n", - "\n", - "checkpointer = MongoDBSaver(mongodb_client)\n", - "graph = create_react_agent(model, tools=tools, checkpointer=checkpointer)\n", - "config = {\"configurable\": {\"thread_id\": \"2\"}}\n", - "response = graph.invoke({\"messages\": [(\"user\", \"What's the weather in sf?\")]}, config)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "fd2a16ad", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'messages': [HumanMessage(content=\"What's the weather in sf?\", additional_kwargs={}, response_metadata={}, id='4ce68bee-a843-4b08-9c02-7a0e3b010110'),\n", - " AIMessage(content='', additional_kwargs={'tool_calls': [{'id': 'call_MvGxq9IU9wvW9mfYKSALHtGu', 'function': {'arguments': '{\"city\":\"sf\"}', 'name': 'get_weather'}, 'type': 'function'}], 'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 14, 'prompt_tokens': 57, 'total_tokens': 71, 'completion_tokens_details': {'accepted_prediction_tokens': 0, 'audio_tokens': 0, 'reasoning_tokens': 0, 'rejected_prediction_tokens': 0}, 'prompt_tokens_details': {'audio_tokens': 0, 'cached_tokens': 0}}, 'model_name': 'gpt-4o-mini-2024-07-18', 'system_fingerprint': 'fp_6fc10e10eb', 'finish_reason': 'tool_calls', 'logprobs': None}, id='run-9712c5a4-376c-4812-a0c4-1b522334a59d-0', tool_calls=[{'name': 'get_weather', 'args': {'city': 'sf'}, 'id': 'call_MvGxq9IU9wvW9mfYKSALHtGu', 'type': 'tool_call'}], usage_metadata={'input_tokens': 57, 'output_tokens': 14, 'total_tokens': 71, 'input_token_details': {'audio': 0, 'cache_read': 0}, 'output_token_details': {'audio': 0, 'reasoning': 0}}),\n", - " ToolMessage(content=\"It's always sunny in sf\", name='get_weather', id='b4eed38d-bcaf-4497-ad08-f21ccd6a8c30', tool_call_id='call_MvGxq9IU9wvW9mfYKSALHtGu'),\n", - " AIMessage(content='The weather in San Francisco is always sunny!', additional_kwargs={'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 10, 'prompt_tokens': 84, 'total_tokens': 94, 'completion_tokens_details': {'accepted_prediction_tokens': 0, 'audio_tokens': 0, 'reasoning_tokens': 0, 'rejected_prediction_tokens': 0}, 'prompt_tokens_details': {'audio_tokens': 0, 'cached_tokens': 0}}, 'model_name': 'gpt-4o-mini-2024-07-18', 'system_fingerprint': 'fp_6fc10e10eb', 'finish_reason': 'stop', 'logprobs': None}, id='run-c6c4ad75-89ef-4b4f-9ca4-bd52ccb0729b-0', usage_metadata={'input_tokens': 84, 'output_tokens': 10, 'total_tokens': 94, 'input_token_details': {'audio': 0, 'cache_read': 0}, 'output_token_details': {'audio': 0, 'reasoning': 0}})]}" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "response" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "a0f28d9b", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "CheckpointTuple(config={'configurable': {'thread_id': '2', 'checkpoint_ns': '', 'checkpoint_id': '1efb8c75-9262-68b4-8003-1ac1ef198757'}}, checkpoint={'v': 1, 'ts': '2024-12-12T20:26:20.545003+00:00', 'id': '1efb8c75-9262-68b4-8003-1ac1ef198757', 'channel_values': {'messages': [HumanMessage(content=\"What's the weather in sf?\", additional_kwargs={}, response_metadata={}, id='4ce68bee-a843-4b08-9c02-7a0e3b010110'), AIMessage(content='', additional_kwargs={'tool_calls': [{'id': 'call_MvGxq9IU9wvW9mfYKSALHtGu', 'function': {'arguments': '{\"city\":\"sf\"}', 'name': 'get_weather'}, 'type': 'function'}], 'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 14, 'prompt_tokens': 57, 'total_tokens': 71, 'completion_tokens_details': {'accepted_prediction_tokens': 0, 'audio_tokens': 0, 'reasoning_tokens': 0, 'rejected_prediction_tokens': 0}, 'prompt_tokens_details': {'audio_tokens': 0, 'cached_tokens': 0}}, 'model_name': 'gpt-4o-mini-2024-07-18', 'system_fingerprint': 'fp_6fc10e10eb', 'finish_reason': 'tool_calls', 'logprobs': None}, id='run-9712c5a4-376c-4812-a0c4-1b522334a59d-0', tool_calls=[{'name': 'get_weather', 'args': {'city': 'sf'}, 'id': 'call_MvGxq9IU9wvW9mfYKSALHtGu', 'type': 'tool_call'}], usage_metadata={'input_tokens': 57, 'output_tokens': 14, 'total_tokens': 71, 'input_token_details': {'audio': 0, 'cache_read': 0}, 'output_token_details': {'audio': 0, 'reasoning': 0}}), ToolMessage(content=\"It's always sunny in sf\", name='get_weather', id='b4eed38d-bcaf-4497-ad08-f21ccd6a8c30', tool_call_id='call_MvGxq9IU9wvW9mfYKSALHtGu'), AIMessage(content='The weather in San Francisco is always sunny!', additional_kwargs={'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 10, 'prompt_tokens': 84, 'total_tokens': 94, 'completion_tokens_details': {'accepted_prediction_tokens': 0, 'audio_tokens': 0, 'reasoning_tokens': 0, 'rejected_prediction_tokens': 0}, 'prompt_tokens_details': {'audio_tokens': 0, 'cached_tokens': 0}}, 'model_name': 'gpt-4o-mini-2024-07-18', 'system_fingerprint': 'fp_6fc10e10eb', 'finish_reason': 'stop', 'logprobs': None}, id='run-c6c4ad75-89ef-4b4f-9ca4-bd52ccb0729b-0', usage_metadata={'input_tokens': 84, 'output_tokens': 10, 'total_tokens': 94, 'input_token_details': {'audio': 0, 'cache_read': 0}, 'output_token_details': {'audio': 0, 'reasoning': 0}})], 'agent': 'agent'}, 'channel_versions': {'__start__': 2, 'messages': 5, 'start:agent': 3, 'agent': 5, 'branch:agent:should_continue:tools': 4, 'tools': 5}, 'versions_seen': {'__input__': {}, '__start__': {'__start__': 1}, 'agent': {'start:agent': 2, 'tools': 4}, 'tools': {'branch:agent:should_continue:tools': 3}}, 'pending_sends': []}, metadata={'source': 'loop', 'writes': {'agent': {'messages': [AIMessage(content='The weather in San Francisco is always sunny!', additional_kwargs={'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 10, 'prompt_tokens': 84, 'total_tokens': 94, 'completion_tokens_details': {'accepted_prediction_tokens': 0, 'audio_tokens': 0, 'reasoning_tokens': 0, 'rejected_prediction_tokens': 0}, 'prompt_tokens_details': {'audio_tokens': 0, 'cached_tokens': 0}}, 'model_name': 'gpt-4o-mini-2024-07-18', 'system_fingerprint': 'fp_6fc10e10eb', 'finish_reason': 'stop', 'logprobs': None}, id='run-c6c4ad75-89ef-4b4f-9ca4-bd52ccb0729b-0', usage_metadata={'input_tokens': 84, 'output_tokens': 10, 'total_tokens': 94, 'input_token_details': {'audio': 0, 'cache_read': 0}, 'output_token_details': {'audio': 0, 'reasoning': 0}})]}}, 'thread_id': '2', 'step': 3, 'parents': {}}, parent_config={'configurable': {'thread_id': '2', 'checkpoint_ns': '', 'checkpoint_id': '1efb8c75-8d89-6ffe-8002-84a4312c4fed'}}, pending_writes=[])" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Retrieve the latest checkpoint for the given thread ID\n", - "# To retrieve a specific checkpoint, pass the checkpoint_id in the config\n", - "checkpointer.get_tuple(config)" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "935a00bf-fc2f-48d4-a8d7-56900a7071e2", - "metadata": {}, - "outputs": [], - "source": [ - "# Remember to close the connection after you're done\n", - "mongodb_client.close()" - ] - }, - { - "cell_type": "markdown", - "id": "47c33104", - "metadata": {}, - "source": [ - "### Using an async connection\n", - "\n", - "This creates a short-lived asynchronous connection to MongoDB. \n", - "\n", - "Async connections allow non-blocking database operations. This means other parts of your application can continue running while waiting for database operations to complete. It's particularly useful in high-concurrency scenarios or when dealing with I/O-bound operations." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "f7aaec32-1755-4ae4-a40b-ade58491a5bb", - "metadata": {}, - "outputs": [], - "source": [ - "from langgraph.checkpoint.mongodb.aio import AsyncMongoDBSaver\n", - "\n", - "async with AsyncMongoDBSaver.from_conn_string(MONGODB_URI) as checkpointer:\n", - " graph = create_react_agent(model, tools=tools, checkpointer=checkpointer)\n", - " config = {\"configurable\": {\"thread_id\": \"3\"}}\n", - " response = await graph.ainvoke(\n", - " {\"messages\": [(\"user\", \"What's the weather in sf?\")]}, config\n", - " )" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "40810610", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'messages': [HumanMessage(content=\"What's the weather in sf?\", additional_kwargs={}, response_metadata={}, id='fed70fe6-1b2e-4481-9bfc-063df3b587dc'),\n", - " AIMessage(content='', additional_kwargs={'tool_calls': [{'id': 'call_miRiF3vPQv98wlDHl6CeRxBy', 'function': {'arguments': '{\"city\":\"sf\"}', 'name': 'get_weather'}, 'type': 'function'}], 'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 14, 'prompt_tokens': 57, 'total_tokens': 71, 'completion_tokens_details': {'accepted_prediction_tokens': 0, 'audio_tokens': 0, 'reasoning_tokens': 0, 'rejected_prediction_tokens': 0}, 'prompt_tokens_details': {'audio_tokens': 0, 'cached_tokens': 0}}, 'model_name': 'gpt-4o-mini-2024-07-18', 'system_fingerprint': 'fp_6fc10e10eb', 'finish_reason': 'tool_calls', 'logprobs': None}, id='run-7f2d5153-973e-4a9e-8b71-a77625c342cf-0', tool_calls=[{'name': 'get_weather', 'args': {'city': 'sf'}, 'id': 'call_miRiF3vPQv98wlDHl6CeRxBy', 'type': 'tool_call'}], usage_metadata={'input_tokens': 57, 'output_tokens': 14, 'total_tokens': 71, 'input_token_details': {'audio': 0, 'cache_read': 0}, 'output_token_details': {'audio': 0, 'reasoning': 0}}),\n", - " ToolMessage(content=\"It's always sunny in sf\", name='get_weather', id='49035e8e-8aee-4d9d-88ab-9a1bc10ecbd3', tool_call_id='call_miRiF3vPQv98wlDHl6CeRxBy'),\n", - " AIMessage(content='The weather in San Francisco is always sunny!', additional_kwargs={'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 10, 'prompt_tokens': 84, 'total_tokens': 94, 'completion_tokens_details': {'accepted_prediction_tokens': 0, 'audio_tokens': 0, 'reasoning_tokens': 0, 'rejected_prediction_tokens': 0}, 'prompt_tokens_details': {'audio_tokens': 0, 'cached_tokens': 0}}, 'model_name': 'gpt-4o-mini-2024-07-18', 'system_fingerprint': 'fp_6fc10e10eb', 'finish_reason': 'stop', 'logprobs': None}, id='run-9403d502-391e-4407-99fd-eec8ed184e50-0', usage_metadata={'input_tokens': 84, 'output_tokens': 10, 'total_tokens': 94, 'input_token_details': {'audio': 0, 'cache_read': 0}, 'output_token_details': {'audio': 0, 'reasoning': 0}})]}" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "response" - ] - }, - { - "cell_type": "markdown", - "id": "c9c39f64", - "metadata": {}, - "source": [ - "### Using the async MongoDB client\n", - "\n", - "This routes connections to MongoDB through an asynchronous MongoDB client." - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "623b81ea-9415-4c49-9ded-9c7830a3ef6b", - "metadata": {}, - "outputs": [], - "source": [ - "from pymongo import AsyncMongoClient\n", - "\n", - "async_mongodb_client = AsyncMongoClient(MONGODB_URI)\n", - "\n", - "checkpointer = AsyncMongoDBSaver(async_mongodb_client)\n", - "graph = create_react_agent(model, tools=tools, checkpointer=checkpointer)\n", - "config = {\"configurable\": {\"thread_id\": \"4\"}}\n", - "response = await graph.ainvoke(\n", - " {\"messages\": [(\"user\", \"What's the weather in sf?\")]}, config\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "80ec0420", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'messages': [HumanMessage(content=\"What's the weather in sf?\", additional_kwargs={}, response_metadata={}, id='58282e2b-4cc1-40a1-8e65-420a2177bbd6'),\n", - " AIMessage(content='', additional_kwargs={'tool_calls': [{'id': 'call_SJFViVHl1tYTZDoZkNN3ePhJ', 'function': {'arguments': '{\"city\":\"sf\"}', 'name': 'get_weather'}, 'type': 'function'}], 'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 14, 'prompt_tokens': 57, 'total_tokens': 71, 'completion_tokens_details': {'accepted_prediction_tokens': 0, 'audio_tokens': 0, 'reasoning_tokens': 0, 'rejected_prediction_tokens': 0}, 'prompt_tokens_details': {'audio_tokens': 0, 'cached_tokens': 0}}, 'model_name': 'gpt-4o-mini-2024-07-18', 'system_fingerprint': 'fp_bba3c8e70b', 'finish_reason': 'tool_calls', 'logprobs': None}, id='run-131af8c1-d388-4d7f-9137-da59ebd5fefd-0', tool_calls=[{'name': 'get_weather', 'args': {'city': 'sf'}, 'id': 'call_SJFViVHl1tYTZDoZkNN3ePhJ', 'type': 'tool_call'}], usage_metadata={'input_tokens': 57, 'output_tokens': 14, 'total_tokens': 71, 'input_token_details': {'audio': 0, 'cache_read': 0}, 'output_token_details': {'audio': 0, 'reasoning': 0}}),\n", - " ToolMessage(content=\"It's always sunny in sf\", name='get_weather', id='6090a56f-177b-4d3f-b16a-9c05f23800e3', tool_call_id='call_SJFViVHl1tYTZDoZkNN3ePhJ'),\n", - " AIMessage(content='The weather in San Francisco is always sunny!', additional_kwargs={'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 10, 'prompt_tokens': 84, 'total_tokens': 94, 'completion_tokens_details': {'accepted_prediction_tokens': 0, 'audio_tokens': 0, 'reasoning_tokens': 0, 'rejected_prediction_tokens': 0}, 'prompt_tokens_details': {'audio_tokens': 0, 'cached_tokens': 0}}, 'model_name': 'gpt-4o-mini-2024-07-18', 'system_fingerprint': 'fp_6fc10e10eb', 'finish_reason': 'stop', 'logprobs': None}, id='run-6ff5ddf5-6e13-4126-8df9-81c8638355fc-0', usage_metadata={'input_tokens': 84, 'output_tokens': 10, 'total_tokens': 94, 'input_token_details': {'audio': 0, 'cache_read': 0}, 'output_token_details': {'audio': 0, 'reasoning': 0}})]}" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "response" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "a948dcd4", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CheckpointTuple(config={'configurable': {'thread_id': '4', 'checkpoint_ns': '', 'checkpoint_id': '1efb8c76-21f4-6d10-8003-9496e1754e93'}}, checkpoint={'v': 1, 'ts': '2024-12-12T20:26:35.599560+00:00', 'id': '1efb8c76-21f4-6d10-8003-9496e1754e93', 'channel_values': {'messages': [HumanMessage(content=\"What's the weather in sf?\", additional_kwargs={}, response_metadata={}, id='58282e2b-4cc1-40a1-8e65-420a2177bbd6'), AIMessage(content='', additional_kwargs={'tool_calls': [{'id': 'call_SJFViVHl1tYTZDoZkNN3ePhJ', 'function': {'arguments': '{\"city\":\"sf\"}', 'name': 'get_weather'}, 'type': 'function'}], 'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 14, 'prompt_tokens': 57, 'total_tokens': 71, 'completion_tokens_details': {'accepted_prediction_tokens': 0, 'audio_tokens': 0, 'reasoning_tokens': 0, 'rejected_prediction_tokens': 0}, 'prompt_tokens_details': {'audio_tokens': 0, 'cached_tokens': 0}}, 'model_name': 'gpt-4o-mini-2024-07-18', 'system_fingerprint': 'fp_bba3c8e70b', 'finish_reason': 'tool_calls', 'logprobs': None}, id='run-131af8c1-d388-4d7f-9137-da59ebd5fefd-0', tool_calls=[{'name': 'get_weather', 'args': {'city': 'sf'}, 'id': 'call_SJFViVHl1tYTZDoZkNN3ePhJ', 'type': 'tool_call'}], usage_metadata={'input_tokens': 57, 'output_tokens': 14, 'total_tokens': 71, 'input_token_details': {'audio': 0, 'cache_read': 0}, 'output_token_details': {'audio': 0, 'reasoning': 0}}), ToolMessage(content=\"It's always sunny in sf\", name='get_weather', id='6090a56f-177b-4d3f-b16a-9c05f23800e3', tool_call_id='call_SJFViVHl1tYTZDoZkNN3ePhJ'), AIMessage(content='The weather in San Francisco is always sunny!', additional_kwargs={'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 10, 'prompt_tokens': 84, 'total_tokens': 94, 'completion_tokens_details': {'accepted_prediction_tokens': 0, 'audio_tokens': 0, 'reasoning_tokens': 0, 'rejected_prediction_tokens': 0}, 'prompt_tokens_details': {'audio_tokens': 0, 'cached_tokens': 0}}, 'model_name': 'gpt-4o-mini-2024-07-18', 'system_fingerprint': 'fp_6fc10e10eb', 'finish_reason': 'stop', 'logprobs': None}, id='run-6ff5ddf5-6e13-4126-8df9-81c8638355fc-0', usage_metadata={'input_tokens': 84, 'output_tokens': 10, 'total_tokens': 94, 'input_token_details': {'audio': 0, 'cache_read': 0}, 'output_token_details': {'audio': 0, 'reasoning': 0}})], 'agent': 'agent'}, 'channel_versions': {'__start__': 2, 'messages': 5, 'start:agent': 3, 'agent': 5, 'branch:agent:should_continue:tools': 4, 'tools': 5}, 'versions_seen': {'__input__': {}, '__start__': {'__start__': 1}, 'agent': {'start:agent': 2, 'tools': 4}, 'tools': {'branch:agent:should_continue:tools': 3}}, 'pending_sends': []}, metadata={'source': 'loop', 'writes': {'agent': {'messages': [AIMessage(content='The weather in San Francisco is always sunny!', additional_kwargs={'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 10, 'prompt_tokens': 84, 'total_tokens': 94, 'completion_tokens_details': {'accepted_prediction_tokens': 0, 'audio_tokens': 0, 'reasoning_tokens': 0, 'rejected_prediction_tokens': 0}, 'prompt_tokens_details': {'audio_tokens': 0, 'cached_tokens': 0}}, 'model_name': 'gpt-4o-mini-2024-07-18', 'system_fingerprint': 'fp_6fc10e10eb', 'finish_reason': 'stop', 'logprobs': None}, id='run-6ff5ddf5-6e13-4126-8df9-81c8638355fc-0', usage_metadata={'input_tokens': 84, 'output_tokens': 10, 'total_tokens': 94, 'input_token_details': {'audio': 0, 'cache_read': 0}, 'output_token_details': {'audio': 0, 'reasoning': 0}})]}}, 'thread_id': '4', 'step': 3, 'parents': {}}, parent_config={'configurable': {'thread_id': '4', 'checkpoint_ns': '', 'checkpoint_id': '1efb8c76-1c6c-6474-8002-9c2595cd481c'}}, pending_writes=[])\n" - ] - } - ], - "source": [ - "# Retrieve the latest checkpoint for the given thread ID\n", - "# To retrieve a specific checkpoint, pass the checkpoint_id in the config\n", - "latest_checkpoint = await checkpointer.aget_tuple(config)\n", - "print(latest_checkpoint)" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "68ee7400-645d-4d00-b118-554698d8496a", - "metadata": {}, - "outputs": [], - "source": [ - "# Remember to close the connection after you're done\n", - "await async_mongodb_client.close()" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.3" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/docs/docs/how-tos/persistence_redis.ipynb b/docs/docs/how-tos/persistence_redis.ipynb deleted file mode 100644 index 8fab22b3c..000000000 --- a/docs/docs/how-tos/persistence_redis.ipynb +++ /dev/null @@ -1,1095 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "51466c8d-8ce4-4b3d-be4e-18fdbeda5f53", - "metadata": {}, - "source": [ - "# How to create a custom checkpointer using Redis\n", - "\n", - "
    \n", - "

    Prerequisites

    \n", - "

    \n", - " This guide assumes familiarity with the following:\n", - "

    \n", - "

    \n", - "
    \n", - "\n", - "When creating LangGraph agents, you can also set them up so that they persist their state. This allows you to do things like interact with an agent multiple times and have it remember previous interactions.\n", - "\n", - "This reference implementation shows how to use Redis as the backend for persisting checkpoint state. Make sure that you have Redis running on port `6379` for going through this guide.\n", - "\n", - "
    \n", - "

    Note

    \n", - "

    \n", - " This is a **reference** implementation. You can implement your own checkpointer using a different database or modify this one as long as it conforms to the BaseCheckpointSaver interface.\n", - "

    \n", - "
    \n", - "\n", - "For demonstration purposes we add persistence to the [pre-built create react agent](https://langchain-ai.github.io/langgraph/reference/prebuilt/#langgraph.prebuilt.chat_agent_executor.create_react_agent).\n", - "\n", - "In general, you can add a checkpointer to any custom graph that you build like this:\n", - "\n", - "```python\n", - "from langgraph.graph import StateGraph\n", - "\n", - "builder = StateGraph(....)\n", - "# ... define the graph\n", - "checkpointer = # redis checkpointer (see examples below)\n", - "graph = builder.compile(checkpointer=checkpointer)\n", - "...\n", - "```" - ] - }, - { - "cell_type": "markdown", - "id": "456fa19c-93a5-4750-a410-f2d810b964ad", - "metadata": {}, - "source": [ - "## Setup\n", - "\n", - "First, let's install the required packages and set our API keys" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "faadfb1b-cebe-4dcf-82fd-34044c380bc4", - "metadata": {}, - "outputs": [], - "source": [ - "%%capture --no-stderr\n", - "%pip install -U redis langgraph langchain_openai" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "eca9aafb-a155-407a-8036-682a2f1297d7", - "metadata": {}, - "outputs": [], - "source": [ - "import getpass\n", - "import os\n", - "\n", - "\n", - "def _set_env(var: str):\n", - " if not os.environ.get(var):\n", - " os.environ[var] = getpass.getpass(f\"{var}: \")\n", - "\n", - "\n", - "_set_env(\"OPENAI_API_KEY\")" - ] - }, - { - "cell_type": "markdown", - "id": "49c80b63", - "metadata": {}, - "source": [ - "
    \n", - "

    Set up LangSmith for LangGraph development

    \n", - "

    \n", - " Sign up for LangSmith to quickly spot issues and improve the performance of your LangGraph projects. LangSmith lets you use trace data to debug, test, and monitor your LLM apps built with LangGraph — read more about how to get started here. \n", - "

    \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "id": "ecb23436-f238-4f8c-a2b7-67c7956121e2", - "metadata": {}, - "source": [ - "## Checkpointer implementation" - ] - }, - { - "cell_type": "markdown", - "id": "752d570c-a9ad-48eb-a317-adf9fc700803", - "metadata": {}, - "source": [ - "### Define imports and helper functions" - ] - }, - { - "cell_type": "markdown", - "id": "cdea5bf7-4865-46f3-9bec-00147dd79895", - "metadata": {}, - "source": [ - "First, let's define some imports and shared utilities for both `RedisSaver` and `AsyncRedisSaver`" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "61e63348-7d56-4177-90bf-aad7645a707a", - "metadata": {}, - "outputs": [], - "source": [ - "\"\"\"Implementation of a langgraph checkpoint saver using Redis.\"\"\"\n", - "from contextlib import asynccontextmanager, contextmanager\n", - "from typing import (\n", - " Any,\n", - " AsyncGenerator,\n", - " AsyncIterator,\n", - " Iterator,\n", - " List,\n", - " Optional,\n", - " Tuple,\n", - ")\n", - "\n", - "from langchain_core.runnables import RunnableConfig\n", - "\n", - "from langgraph.checkpoint.base import (\n", - " WRITES_IDX_MAP,\n", - " BaseCheckpointSaver,\n", - " ChannelVersions,\n", - " Checkpoint,\n", - " CheckpointMetadata,\n", - " CheckpointTuple,\n", - " PendingWrite,\n", - " get_checkpoint_id,\n", - ")\n", - "from langgraph.checkpoint.serde.base import SerializerProtocol\n", - "from redis import Redis\n", - "from redis.asyncio import Redis as AsyncRedis\n", - "\n", - "REDIS_KEY_SEPARATOR = \"$\"\n", - "\n", - "\n", - "# Utilities shared by both RedisSaver and AsyncRedisSaver\n", - "\n", - "\n", - "def _make_redis_checkpoint_key(\n", - " thread_id: str, checkpoint_ns: str, checkpoint_id: str\n", - ") -> str:\n", - " return REDIS_KEY_SEPARATOR.join(\n", - " [\"checkpoint\", thread_id, checkpoint_ns, checkpoint_id]\n", - " )\n", - "\n", - "\n", - "def _make_redis_checkpoint_writes_key(\n", - " thread_id: str,\n", - " checkpoint_ns: str,\n", - " checkpoint_id: str,\n", - " task_id: str,\n", - " idx: Optional[int],\n", - ") -> str:\n", - " if idx is None:\n", - " return REDIS_KEY_SEPARATOR.join(\n", - " [\"writes\", thread_id, checkpoint_ns, checkpoint_id, task_id]\n", - " )\n", - "\n", - " return REDIS_KEY_SEPARATOR.join(\n", - " [\"writes\", thread_id, checkpoint_ns, checkpoint_id, task_id, str(idx)]\n", - " )\n", - "\n", - "\n", - "def _parse_redis_checkpoint_key(redis_key: str) -> dict:\n", - " namespace, thread_id, checkpoint_ns, checkpoint_id = redis_key.split(\n", - " REDIS_KEY_SEPARATOR\n", - " )\n", - " if namespace != \"checkpoint\":\n", - " raise ValueError(\"Expected checkpoint key to start with 'checkpoint'\")\n", - "\n", - " return {\n", - " \"thread_id\": thread_id,\n", - " \"checkpoint_ns\": checkpoint_ns,\n", - " \"checkpoint_id\": checkpoint_id,\n", - " }\n", - "\n", - "\n", - "def _parse_redis_checkpoint_writes_key(redis_key: str) -> dict:\n", - " namespace, thread_id, checkpoint_ns, checkpoint_id, task_id, idx = redis_key.split(\n", - " REDIS_KEY_SEPARATOR\n", - " )\n", - " if namespace != \"writes\":\n", - " raise ValueError(\"Expected checkpoint key to start with 'checkpoint'\")\n", - "\n", - " return {\n", - " \"thread_id\": thread_id,\n", - " \"checkpoint_ns\": checkpoint_ns,\n", - " \"checkpoint_id\": checkpoint_id,\n", - " \"task_id\": task_id,\n", - " \"idx\": idx,\n", - " }\n", - "\n", - "\n", - "def _filter_keys(\n", - " keys: List[str], before: Optional[RunnableConfig], limit: Optional[int]\n", - ") -> list:\n", - " \"\"\"Filter and sort Redis keys based on optional criteria.\"\"\"\n", - " if before:\n", - " keys = [\n", - " k\n", - " for k in keys\n", - " if _parse_redis_checkpoint_key(k.decode())[\"checkpoint_id\"]\n", - " < before[\"configurable\"][\"checkpoint_id\"]\n", - " ]\n", - "\n", - " keys = sorted(\n", - " keys,\n", - " key=lambda k: _parse_redis_checkpoint_key(k.decode())[\"checkpoint_id\"],\n", - " reverse=True,\n", - " )\n", - " if limit:\n", - " keys = keys[:limit]\n", - " return keys\n", - "\n", - "\n", - "def _load_writes(\n", - " serde: SerializerProtocol, task_id_to_data: dict[tuple[str, str], dict]\n", - ") -> list[PendingWrite]:\n", - " \"\"\"Deserialize pending writes.\"\"\"\n", - " writes = [\n", - " (\n", - " task_id,\n", - " data[b\"channel\"].decode(),\n", - " serde.loads_typed((data[b\"type\"].decode(), data[b\"value\"])),\n", - " )\n", - " for (task_id, _), data in task_id_to_data.items()\n", - " ]\n", - " return writes\n", - "\n", - "\n", - "def _parse_redis_checkpoint_data(\n", - " serde: SerializerProtocol,\n", - " key: str,\n", - " data: dict,\n", - " pending_writes: Optional[List[PendingWrite]] = None,\n", - ") -> Optional[CheckpointTuple]:\n", - " \"\"\"Parse checkpoint data retrieved from Redis.\"\"\"\n", - " if not data:\n", - " return None\n", - "\n", - " parsed_key = _parse_redis_checkpoint_key(key)\n", - " thread_id = parsed_key[\"thread_id\"]\n", - " checkpoint_ns = parsed_key[\"checkpoint_ns\"]\n", - " checkpoint_id = parsed_key[\"checkpoint_id\"]\n", - " config = {\n", - " \"configurable\": {\n", - " \"thread_id\": thread_id,\n", - " \"checkpoint_ns\": checkpoint_ns,\n", - " \"checkpoint_id\": checkpoint_id,\n", - " }\n", - " }\n", - "\n", - " checkpoint = serde.loads_typed((data[b\"type\"].decode(), data[b\"checkpoint\"]))\n", - " metadata = serde.loads(data[b\"metadata\"].decode())\n", - " parent_checkpoint_id = data.get(b\"parent_checkpoint_id\", b\"\").decode()\n", - " parent_config = (\n", - " {\n", - " \"configurable\": {\n", - " \"thread_id\": thread_id,\n", - " \"checkpoint_ns\": checkpoint_ns,\n", - " \"checkpoint_id\": parent_checkpoint_id,\n", - " }\n", - " }\n", - " if parent_checkpoint_id\n", - " else None\n", - " )\n", - " return CheckpointTuple(\n", - " config=config,\n", - " checkpoint=checkpoint,\n", - " metadata=metadata,\n", - " parent_config=parent_config,\n", - " pending_writes=pending_writes,\n", - " )" - ] - }, - { - "cell_type": "markdown", - "id": "922822a8-f7d2-41ce-bada-206fc125c20c", - "metadata": {}, - "source": [ - "### RedisSaver" - ] - }, - { - "cell_type": "markdown", - "id": "c216852b-8318-4927-9000-1361d3ca81e8", - "metadata": {}, - "source": [ - "Below is an implementation of RedisSaver (for synchronous use of graph, i.e. `.invoke()`, `.stream()`). RedisSaver implements four methods that are required for any checkpointer:\n", - "\n", - "- `.put` - Store a checkpoint with its configuration and metadata.\n", - "- `.put_writes` - Store intermediate writes linked to a checkpoint (i.e. pending writes).\n", - "- `.get_tuple` - Fetch a checkpoint tuple using for a given configuration (`thread_id` and `checkpoint_id`).\n", - "- `.list` - List checkpoints that match a given configuration and filter criteria." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "98c8d65e-eb95-4cbd-8975-d33a52351d03", - "metadata": {}, - "outputs": [], - "source": [ - "class RedisSaver(BaseCheckpointSaver):\n", - " \"\"\"Redis-based checkpoint saver implementation.\"\"\"\n", - "\n", - " conn: Redis\n", - "\n", - " def __init__(self, conn: Redis):\n", - " super().__init__()\n", - " self.conn = conn\n", - "\n", - " @classmethod\n", - " @contextmanager\n", - " def from_conn_info(cls, *, host: str, port: int, db: int) -> Iterator[\"RedisSaver\"]:\n", - " conn = None\n", - " try:\n", - " conn = Redis(host=host, port=port, db=db)\n", - " yield RedisSaver(conn)\n", - " finally:\n", - " if conn:\n", - " conn.close()\n", - "\n", - " def put(\n", - " self,\n", - " config: RunnableConfig,\n", - " checkpoint: Checkpoint,\n", - " metadata: CheckpointMetadata,\n", - " new_versions: ChannelVersions,\n", - " ) -> RunnableConfig:\n", - " \"\"\"Save a checkpoint to Redis.\n", - "\n", - " Args:\n", - " config (RunnableConfig): The config to associate with the checkpoint.\n", - " checkpoint (Checkpoint): The checkpoint to save.\n", - " metadata (CheckpointMetadata): Additional metadata to save with the checkpoint.\n", - " new_versions (ChannelVersions): New channel versions as of this write.\n", - "\n", - " Returns:\n", - " RunnableConfig: Updated configuration after storing the checkpoint.\n", - " \"\"\"\n", - " thread_id = config[\"configurable\"][\"thread_id\"]\n", - " checkpoint_ns = config[\"configurable\"][\"checkpoint_ns\"]\n", - " checkpoint_id = checkpoint[\"id\"]\n", - " parent_checkpoint_id = config[\"configurable\"].get(\"checkpoint_id\")\n", - " key = _make_redis_checkpoint_key(thread_id, checkpoint_ns, checkpoint_id)\n", - "\n", - " type_, serialized_checkpoint = self.serde.dumps_typed(checkpoint)\n", - " serialized_metadata = self.serde.dumps(metadata)\n", - " data = {\n", - " \"checkpoint\": serialized_checkpoint,\n", - " \"type\": type_,\n", - " \"metadata\": serialized_metadata,\n", - " \"parent_checkpoint_id\": parent_checkpoint_id\n", - " if parent_checkpoint_id\n", - " else \"\",\n", - " }\n", - " self.conn.hset(key, mapping=data)\n", - " return {\n", - " \"configurable\": {\n", - " \"thread_id\": thread_id,\n", - " \"checkpoint_ns\": checkpoint_ns,\n", - " \"checkpoint_id\": checkpoint_id,\n", - " }\n", - " }\n", - "\n", - " def put_writes(\n", - " self,\n", - " config: RunnableConfig,\n", - " writes: List[Tuple[str, Any]],\n", - " task_id: str,\n", - " ) -> None:\n", - " \"\"\"Store intermediate writes linked to a checkpoint.\n", - "\n", - " Args:\n", - " config (RunnableConfig): Configuration of the related checkpoint.\n", - " writes (Sequence[Tuple[str, Any]]): List of writes to store, each as (channel, value) pair.\n", - " task_id (str): Identifier for the task creating the writes.\n", - " \"\"\"\n", - " thread_id = config[\"configurable\"][\"thread_id\"]\n", - " checkpoint_ns = config[\"configurable\"][\"checkpoint_ns\"]\n", - " checkpoint_id = config[\"configurable\"][\"checkpoint_id\"]\n", - "\n", - " for idx, (channel, value) in enumerate(writes):\n", - " key = _make_redis_checkpoint_writes_key(\n", - " thread_id,\n", - " checkpoint_ns,\n", - " checkpoint_id,\n", - " task_id,\n", - " WRITES_IDX_MAP.get(channel, idx),\n", - " )\n", - " type_, serialized_value = self.serde.dumps_typed(value)\n", - " data = {\"channel\": channel, \"type\": type_, \"value\": serialized_value}\n", - " if all(w[0] in WRITES_IDX_MAP for w in writes):\n", - " # Use HSET which will overwrite existing values\n", - " self.conn.hset(key, mapping=data)\n", - " else:\n", - " # Use HSETNX which will not overwrite existing values\n", - " for field, value in data.items():\n", - " self.conn.hsetnx(key, field, value)\n", - "\n", - " def get_tuple(self, config: RunnableConfig) -> Optional[CheckpointTuple]:\n", - " \"\"\"Get a checkpoint tuple from Redis.\n", - "\n", - " This method retrieves a checkpoint tuple from Redis based on the\n", - " provided config. If the config contains a \"checkpoint_id\" key, the checkpoint with\n", - " the matching thread ID and checkpoint ID is retrieved. Otherwise, the latest checkpoint\n", - " for the given thread ID is retrieved.\n", - "\n", - " Args:\n", - " config (RunnableConfig): The config to use for retrieving the checkpoint.\n", - "\n", - " Returns:\n", - " Optional[CheckpointTuple]: The retrieved checkpoint tuple, or None if no matching checkpoint was found.\n", - " \"\"\"\n", - " thread_id = config[\"configurable\"][\"thread_id\"]\n", - " checkpoint_id = get_checkpoint_id(config)\n", - " checkpoint_ns = config[\"configurable\"].get(\"checkpoint_ns\", \"\")\n", - "\n", - " checkpoint_key = self._get_checkpoint_key(\n", - " self.conn, thread_id, checkpoint_ns, checkpoint_id\n", - " )\n", - " if not checkpoint_key:\n", - " return None\n", - "\n", - " checkpoint_data = self.conn.hgetall(checkpoint_key)\n", - "\n", - " # load pending writes\n", - " checkpoint_id = (\n", - " checkpoint_id\n", - " or _parse_redis_checkpoint_key(checkpoint_key)[\"checkpoint_id\"]\n", - " )\n", - " pending_writes = self._load_pending_writes(\n", - " thread_id, checkpoint_ns, checkpoint_id\n", - " )\n", - " return _parse_redis_checkpoint_data(\n", - " self.serde, checkpoint_key, checkpoint_data, pending_writes=pending_writes\n", - " )\n", - "\n", - " def list(\n", - " self,\n", - " config: Optional[RunnableConfig],\n", - " *,\n", - " # TODO: implement filtering\n", - " filter: Optional[dict[str, Any]] = None,\n", - " before: Optional[RunnableConfig] = None,\n", - " limit: Optional[int] = None,\n", - " ) -> Iterator[CheckpointTuple]:\n", - " \"\"\"List checkpoints from the database.\n", - "\n", - " This method retrieves a list of checkpoint tuples from Redis based\n", - " on the provided config. The checkpoints are ordered by checkpoint ID in descending order (newest first).\n", - "\n", - " Args:\n", - " config (RunnableConfig): The config to use for listing the checkpoints.\n", - " filter (Optional[Dict[str, Any]]): Additional filtering criteria for metadata. Defaults to None.\n", - " before (Optional[RunnableConfig]): If provided, only checkpoints before the specified checkpoint ID are returned. Defaults to None.\n", - " limit (Optional[int]): The maximum number of checkpoints to return. Defaults to None.\n", - "\n", - " Yields:\n", - " Iterator[CheckpointTuple]: An iterator of checkpoint tuples.\n", - " \"\"\"\n", - " thread_id = config[\"configurable\"][\"thread_id\"]\n", - " checkpoint_ns = config[\"configurable\"].get(\"checkpoint_ns\", \"\")\n", - " pattern = _make_redis_checkpoint_key(thread_id, checkpoint_ns, \"*\")\n", - "\n", - " keys = _filter_keys(self.conn.keys(pattern), before, limit)\n", - " for key in keys:\n", - " data = self.conn.hgetall(key)\n", - " if data and b\"checkpoint\" in data and b\"metadata\" in data:\n", - " # load pending writes\n", - " checkpoint_id = _parse_redis_checkpoint_key(key.decode())[\n", - " \"checkpoint_id\"\n", - " ]\n", - " pending_writes = self._load_pending_writes(\n", - " thread_id, checkpoint_ns, checkpoint_id\n", - " )\n", - " yield _parse_redis_checkpoint_data(\n", - " self.serde, key.decode(), data, pending_writes=pending_writes\n", - " )\n", - "\n", - " def _load_pending_writes(\n", - " self, thread_id: str, checkpoint_ns: str, checkpoint_id: str\n", - " ) -> List[PendingWrite]:\n", - " writes_key = _make_redis_checkpoint_writes_key(\n", - " thread_id, checkpoint_ns, checkpoint_id, \"*\", None\n", - " )\n", - " matching_keys = self.conn.keys(pattern=writes_key)\n", - " parsed_keys = [\n", - " _parse_redis_checkpoint_writes_key(key.decode()) for key in matching_keys\n", - " ]\n", - " pending_writes = _load_writes(\n", - " self.serde,\n", - " {\n", - " (parsed_key[\"task_id\"], parsed_key[\"idx\"]): self.conn.hgetall(key)\n", - " for key, parsed_key in sorted(\n", - " zip(matching_keys, parsed_keys), key=lambda x: x[1][\"idx\"]\n", - " )\n", - " },\n", - " )\n", - " return pending_writes\n", - "\n", - " def _get_checkpoint_key(\n", - " self, conn, thread_id: str, checkpoint_ns: str, checkpoint_id: Optional[str]\n", - " ) -> Optional[str]:\n", - " \"\"\"Determine the Redis key for a checkpoint.\"\"\"\n", - " if checkpoint_id:\n", - " return _make_redis_checkpoint_key(thread_id, checkpoint_ns, checkpoint_id)\n", - "\n", - " all_keys = conn.keys(_make_redis_checkpoint_key(thread_id, checkpoint_ns, \"*\"))\n", - " if not all_keys:\n", - " return None\n", - "\n", - " latest_key = max(\n", - " all_keys,\n", - " key=lambda k: _parse_redis_checkpoint_key(k.decode())[\"checkpoint_id\"],\n", - " )\n", - " return latest_key.decode()" - ] - }, - { - "cell_type": "markdown", - "id": "ec21ff00-75a7-4789-b863-93fffcc0b32d", - "metadata": {}, - "source": [ - "### AsyncRedis" - ] - }, - { - "cell_type": "markdown", - "id": "9e5ad763-12ab-4918-af40-0be85678e35b", - "metadata": {}, - "source": [ - "Below is a reference implementation of AsyncRedisSaver (for asynchronous use of graph, i.e. `.ainvoke()`, `.astream()`). AsyncRedisSaver implements four methods that are required for any async checkpointer:\n", - "\n", - "- `.aput` - Store a checkpoint with its configuration and metadata.\n", - "- `.aput_writes` - Store intermediate writes linked to a checkpoint (i.e. pending writes).\n", - "- `.aget_tuple` - Fetch a checkpoint tuple using for a given configuration (`thread_id` and `checkpoint_id`).\n", - "- `.alist` - List checkpoints that match a given configuration and filter criteria." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "888302ee-c201-498f-b6e3-69ec5f1a039c", - "metadata": {}, - "outputs": [], - "source": [ - "class AsyncRedisSaver(BaseCheckpointSaver):\n", - " \"\"\"Async redis-based checkpoint saver implementation.\"\"\"\n", - "\n", - " conn: AsyncRedis\n", - "\n", - " def __init__(self, conn: AsyncRedis):\n", - " super().__init__()\n", - " self.conn = conn\n", - "\n", - " @classmethod\n", - " @asynccontextmanager\n", - " async def from_conn_info(\n", - " cls, *, host: str, port: int, db: int\n", - " ) -> AsyncIterator[\"AsyncRedisSaver\"]:\n", - " conn = None\n", - " try:\n", - " conn = AsyncRedis(host=host, port=port, db=db)\n", - " yield AsyncRedisSaver(conn)\n", - " finally:\n", - " if conn:\n", - " await conn.aclose()\n", - "\n", - " async def aput(\n", - " self,\n", - " config: RunnableConfig,\n", - " checkpoint: Checkpoint,\n", - " metadata: CheckpointMetadata,\n", - " new_versions: ChannelVersions,\n", - " ) -> RunnableConfig:\n", - " \"\"\"Save a checkpoint to the database asynchronously.\n", - "\n", - " This method saves a checkpoint to Redis. The checkpoint is associated\n", - " with the provided config and its parent config (if any).\n", - "\n", - " Args:\n", - " config (RunnableConfig): The config to associate with the checkpoint.\n", - " checkpoint (Checkpoint): The checkpoint to save.\n", - " metadata (CheckpointMetadata): Additional metadata to save with the checkpoint.\n", - " new_versions (ChannelVersions): New channel versions as of this write.\n", - "\n", - " Returns:\n", - " RunnableConfig: Updated configuration after storing the checkpoint.\n", - " \"\"\"\n", - " thread_id = config[\"configurable\"][\"thread_id\"]\n", - " checkpoint_ns = config[\"configurable\"][\"checkpoint_ns\"]\n", - " checkpoint_id = checkpoint[\"id\"]\n", - " parent_checkpoint_id = config[\"configurable\"].get(\"checkpoint_id\")\n", - " key = _make_redis_checkpoint_key(thread_id, checkpoint_ns, checkpoint_id)\n", - "\n", - " type_, serialized_checkpoint = self.serde.dumps_typed(checkpoint)\n", - " serialized_metadata = self.serde.dumps(metadata)\n", - " data = {\n", - " \"checkpoint\": serialized_checkpoint,\n", - " \"type\": type_,\n", - " \"checkpoint_id\": checkpoint_id,\n", - " \"metadata\": serialized_metadata,\n", - " \"parent_checkpoint_id\": parent_checkpoint_id\n", - " if parent_checkpoint_id\n", - " else \"\",\n", - " }\n", - "\n", - " await self.conn.hset(key, mapping=data)\n", - " return {\n", - " \"configurable\": {\n", - " \"thread_id\": thread_id,\n", - " \"checkpoint_ns\": checkpoint_ns,\n", - " \"checkpoint_id\": checkpoint_id,\n", - " }\n", - " }\n", - "\n", - " async def aput_writes(\n", - " self,\n", - " config: RunnableConfig,\n", - " writes: List[Tuple[str, Any]],\n", - " task_id: str,\n", - " ) -> None:\n", - " \"\"\"Store intermediate writes linked to a checkpoint asynchronously.\n", - "\n", - " This method saves intermediate writes associated with a checkpoint to the database.\n", - "\n", - " Args:\n", - " config (RunnableConfig): Configuration of the related checkpoint.\n", - " writes (Sequence[Tuple[str, Any]]): List of writes to store, each as (channel, value) pair.\n", - " task_id (str): Identifier for the task creating the writes.\n", - " \"\"\"\n", - " thread_id = config[\"configurable\"][\"thread_id\"]\n", - " checkpoint_ns = config[\"configurable\"][\"checkpoint_ns\"]\n", - " checkpoint_id = config[\"configurable\"][\"checkpoint_id\"]\n", - "\n", - " for idx, (channel, value) in enumerate(writes):\n", - " key = _make_redis_checkpoint_writes_key(\n", - " thread_id,\n", - " checkpoint_ns,\n", - " checkpoint_id,\n", - " task_id,\n", - " WRITES_IDX_MAP.get(channel, idx),\n", - " )\n", - " type_, serialized_value = self.serde.dumps_typed(value)\n", - " data = {\"channel\": channel, \"type\": type_, \"value\": serialized_value}\n", - " if all(w[0] in WRITES_IDX_MAP for w in writes):\n", - " # Use HSET which will overwrite existing values\n", - " await self.conn.hset(key, mapping=data)\n", - " else:\n", - " # Use HSETNX which will not overwrite existing values\n", - " for field, value in data.items():\n", - " await self.conn.hsetnx(key, field, value)\n", - "\n", - " async def aget_tuple(self, config: RunnableConfig) -> Optional[CheckpointTuple]:\n", - " \"\"\"Get a checkpoint tuple from Redis asynchronously.\n", - "\n", - " This method retrieves a checkpoint tuple from Redis based on the\n", - " provided config. If the config contains a \"checkpoint_id\" key, the checkpoint with\n", - " the matching thread ID and checkpoint ID is retrieved. Otherwise, the latest checkpoint\n", - " for the given thread ID is retrieved.\n", - "\n", - " Args:\n", - " config (RunnableConfig): The config to use for retrieving the checkpoint.\n", - "\n", - " Returns:\n", - " Optional[CheckpointTuple]: The retrieved checkpoint tuple, or None if no matching checkpoint was found.\n", - " \"\"\"\n", - " thread_id = config[\"configurable\"][\"thread_id\"]\n", - " checkpoint_id = get_checkpoint_id(config)\n", - " checkpoint_ns = config[\"configurable\"].get(\"checkpoint_ns\", \"\")\n", - "\n", - " checkpoint_key = await self._aget_checkpoint_key(\n", - " self.conn, thread_id, checkpoint_ns, checkpoint_id\n", - " )\n", - " if not checkpoint_key:\n", - " return None\n", - " checkpoint_data = await self.conn.hgetall(checkpoint_key)\n", - "\n", - " # load pending writes\n", - " checkpoint_id = (\n", - " checkpoint_id\n", - " or _parse_redis_checkpoint_key(checkpoint_key)[\"checkpoint_id\"]\n", - " )\n", - " pending_writes = await self._aload_pending_writes(\n", - " thread_id, checkpoint_ns, checkpoint_id\n", - " )\n", - " return _parse_redis_checkpoint_data(\n", - " self.serde, checkpoint_key, checkpoint_data, pending_writes=pending_writes\n", - " )\n", - "\n", - " async def alist(\n", - " self,\n", - " config: Optional[RunnableConfig],\n", - " *,\n", - " # TODO: implement filtering\n", - " filter: Optional[dict[str, Any]] = None,\n", - " before: Optional[RunnableConfig] = None,\n", - " limit: Optional[int] = None,\n", - " ) -> AsyncGenerator[CheckpointTuple, None]:\n", - " \"\"\"List checkpoints from Redis asynchronously.\n", - "\n", - " This method retrieves a list of checkpoint tuples from Redis based\n", - " on the provided config. The checkpoints are ordered by checkpoint ID in descending order (newest first).\n", - "\n", - " Args:\n", - " config (Optional[RunnableConfig]): Base configuration for filtering checkpoints.\n", - " filter (Optional[Dict[str, Any]]): Additional filtering criteria for metadata.\n", - " before (Optional[RunnableConfig]): If provided, only checkpoints before the specified checkpoint ID are returned. Defaults to None.\n", - " limit (Optional[int]): Maximum number of checkpoints to return.\n", - "\n", - " Yields:\n", - " AsyncIterator[CheckpointTuple]: An asynchronous iterator of matching checkpoint tuples.\n", - " \"\"\"\n", - " thread_id = config[\"configurable\"][\"thread_id\"]\n", - " checkpoint_ns = config[\"configurable\"].get(\"checkpoint_ns\", \"\")\n", - " pattern = _make_redis_checkpoint_key(thread_id, checkpoint_ns, \"*\")\n", - " keys = _filter_keys(await self.conn.keys(pattern), before, limit)\n", - " for key in keys:\n", - " data = await self.conn.hgetall(key)\n", - " if data and b\"checkpoint\" in data and b\"metadata\" in data:\n", - " checkpoint_id = _parse_redis_checkpoint_key(key.decode())[\n", - " \"checkpoint_id\"\n", - " ]\n", - " pending_writes = await self._aload_pending_writes(\n", - " thread_id, checkpoint_ns, checkpoint_id\n", - " )\n", - " yield _parse_redis_checkpoint_data(\n", - " self.serde, key.decode(), data, pending_writes=pending_writes\n", - " )\n", - "\n", - " async def _aload_pending_writes(\n", - " self, thread_id: str, checkpoint_ns: str, checkpoint_id: str\n", - " ) -> List[PendingWrite]:\n", - " writes_key = _make_redis_checkpoint_writes_key(\n", - " thread_id, checkpoint_ns, checkpoint_id, \"*\", None\n", - " )\n", - " matching_keys = await self.conn.keys(pattern=writes_key)\n", - " parsed_keys = [\n", - " _parse_redis_checkpoint_writes_key(key.decode()) for key in matching_keys\n", - " ]\n", - " pending_writes = _load_writes(\n", - " self.serde,\n", - " {\n", - " (parsed_key[\"task_id\"], parsed_key[\"idx\"]): await self.conn.hgetall(key)\n", - " for key, parsed_key in sorted(\n", - " zip(matching_keys, parsed_keys), key=lambda x: x[1][\"idx\"]\n", - " )\n", - " },\n", - " )\n", - " return pending_writes\n", - "\n", - " async def _aget_checkpoint_key(\n", - " self, conn, thread_id: str, checkpoint_ns: str, checkpoint_id: Optional[str]\n", - " ) -> Optional[str]:\n", - " \"\"\"Asynchronously determine the Redis key for a checkpoint.\"\"\"\n", - " if checkpoint_id:\n", - " return _make_redis_checkpoint_key(thread_id, checkpoint_ns, checkpoint_id)\n", - "\n", - " all_keys = await conn.keys(\n", - " _make_redis_checkpoint_key(thread_id, checkpoint_ns, \"*\")\n", - " )\n", - " if not all_keys:\n", - " return None\n", - "\n", - " latest_key = max(\n", - " all_keys,\n", - " key=lambda k: _parse_redis_checkpoint_key(k.decode())[\"checkpoint_id\"],\n", - " )\n", - " return latest_key.decode()" - ] - }, - { - "cell_type": "markdown", - "id": "e26b3204-cca2-414c-800e-7e09032445ae", - "metadata": {}, - "source": [ - "## Setup model and tools for the graph" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "e5213193-5a7d-43e7-aeba-fe732bb1cd7a", - "metadata": {}, - "outputs": [], - "source": [ - "from typing import Literal\n", - "from langchain_core.runnables import ConfigurableField\n", - "from langchain_core.tools import tool\n", - "from langchain_openai import ChatOpenAI\n", - "from langgraph.prebuilt import create_react_agent\n", - "\n", - "\n", - "@tool\n", - "def get_weather(city: Literal[\"nyc\", \"sf\"]):\n", - " \"\"\"Use this to get weather information.\"\"\"\n", - " if city == \"nyc\":\n", - " return \"It might be cloudy in nyc\"\n", - " elif city == \"sf\":\n", - " return \"It's always sunny in sf\"\n", - " else:\n", - " raise AssertionError(\"Unknown city\")\n", - "\n", - "\n", - "tools = [get_weather]\n", - "model = ChatOpenAI(model_name=\"gpt-4o-mini\", temperature=0)" - ] - }, - { - "cell_type": "markdown", - "id": "e9342c62-dbb4-40f6-9271-7393f1ca48c4", - "metadata": {}, - "source": [ - "## Use sync connection" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "5fe54e79-9eaf-44e2-b2d9-1e0284b984d0", - "metadata": {}, - "outputs": [], - "source": [ - "with RedisSaver.from_conn_info(host=\"localhost\", port=6379, db=0) as checkpointer:\n", - " graph = create_react_agent(model, tools=tools, checkpointer=checkpointer)\n", - " config = {\"configurable\": {\"thread_id\": \"1\"}}\n", - " res = graph.invoke({\"messages\": [(\"human\", \"what's the weather in sf\")]}, config)\n", - "\n", - " latest_checkpoint = checkpointer.get(config)\n", - " latest_checkpoint_tuple = checkpointer.get_tuple(config)\n", - " checkpoint_tuples = list(checkpointer.list(config))" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "c298e627-115a-4b4c-ae17-520ca9a640cd", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'v': 1,\n", - " 'ts': '2024-08-09T01:56:48.328315+00:00',\n", - " 'id': '1ef55f2a-3614-69b4-8003-2181cff935cc',\n", - " 'channel_values': {'messages': [HumanMessage(content=\"what's the weather in sf\", id='f911e000-75a1-41f6-8e38-77bb086c2ecf'),\n", - " AIMessage(content='', additional_kwargs={'tool_calls': [{'id': 'call_l5e5YcTJDJYOdvi4scBy9n2I', 'function': {'arguments': '{\"city\":\"sf\"}', 'name': 'get_weather'}, 'type': 'function'}]}, response_metadata={'token_usage': {'completion_tokens': 14, 'prompt_tokens': 57, 'total_tokens': 71}, 'model_name': 'gpt-4o-mini', 'system_fingerprint': 'fp_48196bc67a', 'finish_reason': 'tool_calls', 'logprobs': None}, id='run-4f1531f1-067c-4e16-8b62-7a6b663e93bd-0', tool_calls=[{'name': 'get_weather', 'args': {'city': 'sf'}, 'id': 'call_l5e5YcTJDJYOdvi4scBy9n2I', 'type': 'tool_call'}], usage_metadata={'input_tokens': 57, 'output_tokens': 14, 'total_tokens': 71}),\n", - " ToolMessage(content=\"It's always sunny in sf\", name='get_weather', id='e27bb3a1-1798-494a-b4ad-2deadda8b2bf', tool_call_id='call_l5e5YcTJDJYOdvi4scBy9n2I'),\n", - " AIMessage(content='The weather in San Francisco is always sunny!', response_metadata={'token_usage': {'completion_tokens': 10, 'prompt_tokens': 84, 'total_tokens': 94}, 'model_name': 'gpt-4o-mini', 'system_fingerprint': 'fp_48196bc67a', 'finish_reason': 'stop', 'logprobs': None}, id='run-ad546b5a-70ce-404e-9656-dcc6ecd482d3-0', usage_metadata={'input_tokens': 84, 'output_tokens': 10, 'total_tokens': 94})],\n", - " 'agent': 'agent'},\n", - " 'channel_versions': {'__start__': '00000000000000000000000000000002.',\n", - " 'messages': '00000000000000000000000000000005.16e98d6f7ece7598829eddf1b33a33c4',\n", - " 'start:agent': '00000000000000000000000000000003.',\n", - " 'agent': '00000000000000000000000000000005.065d90dd7f7cd091f0233855210bb2af',\n", - " 'branch:agent:should_continue:tools': '00000000000000000000000000000004.',\n", - " 'tools': '00000000000000000000000000000005.'},\n", - " 'versions_seen': {'__input__': {},\n", - " '__start__': {'__start__': '00000000000000000000000000000001.ab89befb52cc0e91e106ef7f500ea033'},\n", - " 'agent': {'start:agent': '00000000000000000000000000000002.d6f25946c3108fc12f27abbcf9b4cedc',\n", - " 'tools': '00000000000000000000000000000004.022986cd20ae85c77ea298a383f69ba8'},\n", - " 'tools': {'branch:agent:should_continue:tools': '00000000000000000000000000000003.065d90dd7f7cd091f0233855210bb2af'}},\n", - " 'pending_sends': [],\n", - " 'current_tasks': {}}" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "latest_checkpoint" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "922f9406-0f68-418a-9cb4-e0e29de4b5f9", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "CheckpointTuple(config={'configurable': {'thread_id': '1', 'checkpoint_ns': '', 'checkpoint_id': '1ef55f2a-3614-69b4-8003-2181cff935cc'}}, checkpoint={'v': 1, 'ts': '2024-08-09T01:56:48.328315+00:00', 'id': '1ef55f2a-3614-69b4-8003-2181cff935cc', 'channel_values': {'messages': [HumanMessage(content=\"what's the weather in sf\", id='f911e000-75a1-41f6-8e38-77bb086c2ecf'), AIMessage(content='', additional_kwargs={'tool_calls': [{'id': 'call_l5e5YcTJDJYOdvi4scBy9n2I', 'function': {'arguments': '{\"city\":\"sf\"}', 'name': 'get_weather'}, 'type': 'function'}]}, response_metadata={'token_usage': {'completion_tokens': 14, 'prompt_tokens': 57, 'total_tokens': 71}, 'model_name': 'gpt-4o-mini', 'system_fingerprint': 'fp_48196bc67a', 'finish_reason': 'tool_calls', 'logprobs': None}, id='run-4f1531f1-067c-4e16-8b62-7a6b663e93bd-0', tool_calls=[{'name': 'get_weather', 'args': {'city': 'sf'}, 'id': 'call_l5e5YcTJDJYOdvi4scBy9n2I', 'type': 'tool_call'}], usage_metadata={'input_tokens': 57, 'output_tokens': 14, 'total_tokens': 71}), ToolMessage(content=\"It's always sunny in sf\", name='get_weather', id='e27bb3a1-1798-494a-b4ad-2deadda8b2bf', tool_call_id='call_l5e5YcTJDJYOdvi4scBy9n2I'), AIMessage(content='The weather in San Francisco is always sunny!', response_metadata={'token_usage': {'completion_tokens': 10, 'prompt_tokens': 84, 'total_tokens': 94}, 'model_name': 'gpt-4o-mini', 'system_fingerprint': 'fp_48196bc67a', 'finish_reason': 'stop', 'logprobs': None}, id='run-ad546b5a-70ce-404e-9656-dcc6ecd482d3-0', usage_metadata={'input_tokens': 84, 'output_tokens': 10, 'total_tokens': 94})], 'agent': 'agent'}, 'channel_versions': {'__start__': '00000000000000000000000000000002.', 'messages': '00000000000000000000000000000005.16e98d6f7ece7598829eddf1b33a33c4', 'start:agent': '00000000000000000000000000000003.', 'agent': '00000000000000000000000000000005.065d90dd7f7cd091f0233855210bb2af', 'branch:agent:should_continue:tools': '00000000000000000000000000000004.', 'tools': '00000000000000000000000000000005.'}, 'versions_seen': {'__input__': {}, '__start__': {'__start__': '00000000000000000000000000000001.ab89befb52cc0e91e106ef7f500ea033'}, 'agent': {'start:agent': '00000000000000000000000000000002.d6f25946c3108fc12f27abbcf9b4cedc', 'tools': '00000000000000000000000000000004.022986cd20ae85c77ea298a383f69ba8'}, 'tools': {'branch:agent:should_continue:tools': '00000000000000000000000000000003.065d90dd7f7cd091f0233855210bb2af'}}, 'pending_sends': [], 'current_tasks': {}}, metadata={'source': 'loop', 'writes': {'agent': {'messages': [AIMessage(content='The weather in San Francisco is always sunny!', response_metadata={'token_usage': {'completion_tokens': 10, 'prompt_tokens': 84, 'total_tokens': 94}, 'model_name': 'gpt-4o-mini', 'system_fingerprint': 'fp_48196bc67a', 'finish_reason': 'stop', 'logprobs': None}, id='run-ad546b5a-70ce-404e-9656-dcc6ecd482d3-0', usage_metadata={'input_tokens': 84, 'output_tokens': 10, 'total_tokens': 94})]}}, 'step': 3}, parent_config={'configurable': {'thread_id': '1', 'checkpoint_ns': '', 'checkpoint_id': '1ef55f2a-306f-6252-8002-47c2374ec1f2'}}, pending_writes=[])" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "latest_checkpoint_tuple" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "b2ce743b-5896-443b-9ec0-a655b065895c", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[CheckpointTuple(config={'configurable': {'thread_id': '1', 'checkpoint_ns': '', 'checkpoint_id': '1ef55f2a-3614-69b4-8003-2181cff935cc'}}, checkpoint={'v': 1, 'ts': '2024-08-09T01:56:48.328315+00:00', 'id': '1ef55f2a-3614-69b4-8003-2181cff935cc', 'channel_values': {'messages': [HumanMessage(content=\"what's the weather in sf\", id='f911e000-75a1-41f6-8e38-77bb086c2ecf'), AIMessage(content='', additional_kwargs={'tool_calls': [{'id': 'call_l5e5YcTJDJYOdvi4scBy9n2I', 'function': {'arguments': '{\"city\":\"sf\"}', 'name': 'get_weather'}, 'type': 'function'}]}, response_metadata={'token_usage': {'completion_tokens': 14, 'prompt_tokens': 57, 'total_tokens': 71}, 'model_name': 'gpt-4o-mini', 'system_fingerprint': 'fp_48196bc67a', 'finish_reason': 'tool_calls', 'logprobs': None}, id='run-4f1531f1-067c-4e16-8b62-7a6b663e93bd-0', tool_calls=[{'name': 'get_weather', 'args': {'city': 'sf'}, 'id': 'call_l5e5YcTJDJYOdvi4scBy9n2I', 'type': 'tool_call'}], usage_metadata={'input_tokens': 57, 'output_tokens': 14, 'total_tokens': 71}), ToolMessage(content=\"It's always sunny in sf\", name='get_weather', id='e27bb3a1-1798-494a-b4ad-2deadda8b2bf', tool_call_id='call_l5e5YcTJDJYOdvi4scBy9n2I'), AIMessage(content='The weather in San Francisco is always sunny!', response_metadata={'token_usage': {'completion_tokens': 10, 'prompt_tokens': 84, 'total_tokens': 94}, 'model_name': 'gpt-4o-mini', 'system_fingerprint': 'fp_48196bc67a', 'finish_reason': 'stop', 'logprobs': None}, id='run-ad546b5a-70ce-404e-9656-dcc6ecd482d3-0', usage_metadata={'input_tokens': 84, 'output_tokens': 10, 'total_tokens': 94})], 'agent': 'agent'}, 'channel_versions': {'__start__': '00000000000000000000000000000002.', 'messages': '00000000000000000000000000000005.16e98d6f7ece7598829eddf1b33a33c4', 'start:agent': '00000000000000000000000000000003.', 'agent': '00000000000000000000000000000005.065d90dd7f7cd091f0233855210bb2af', 'branch:agent:should_continue:tools': '00000000000000000000000000000004.', 'tools': '00000000000000000000000000000005.'}, 'versions_seen': {'__input__': {}, '__start__': {'__start__': '00000000000000000000000000000001.ab89befb52cc0e91e106ef7f500ea033'}, 'agent': {'start:agent': '00000000000000000000000000000002.d6f25946c3108fc12f27abbcf9b4cedc', 'tools': '00000000000000000000000000000004.022986cd20ae85c77ea298a383f69ba8'}, 'tools': {'branch:agent:should_continue:tools': '00000000000000000000000000000003.065d90dd7f7cd091f0233855210bb2af'}}, 'pending_sends': [], 'current_tasks': {}}, metadata={'source': 'loop', 'writes': {'agent': {'messages': [AIMessage(content='The weather in San Francisco is always sunny!', response_metadata={'token_usage': {'completion_tokens': 10, 'prompt_tokens': 84, 'total_tokens': 94}, 'model_name': 'gpt-4o-mini', 'system_fingerprint': 'fp_48196bc67a', 'finish_reason': 'stop', 'logprobs': None}, id='run-ad546b5a-70ce-404e-9656-dcc6ecd482d3-0', usage_metadata={'input_tokens': 84, 'output_tokens': 10, 'total_tokens': 94})]}}, 'step': 3}, parent_config={'configurable': {'thread_id': '1', 'checkpoint_ns': '', 'checkpoint_id': '1ef55f2a-306f-6252-8002-47c2374ec1f2'}}, pending_writes=None),\n", - " CheckpointTuple(config={'configurable': {'thread_id': '1', 'checkpoint_ns': '', 'checkpoint_id': '1ef55f2a-306f-6252-8002-47c2374ec1f2'}}, checkpoint={'v': 1, 'ts': '2024-08-09T01:56:47.736251+00:00', 'id': '1ef55f2a-306f-6252-8002-47c2374ec1f2', 'channel_values': {'messages': [HumanMessage(content=\"what's the weather in sf\", id='f911e000-75a1-41f6-8e38-77bb086c2ecf'), AIMessage(content='', additional_kwargs={'tool_calls': [{'id': 'call_l5e5YcTJDJYOdvi4scBy9n2I', 'function': {'arguments': '{\"city\":\"sf\"}', 'name': 'get_weather'}, 'type': 'function'}]}, response_metadata={'token_usage': {'completion_tokens': 14, 'prompt_tokens': 57, 'total_tokens': 71}, 'model_name': 'gpt-4o-mini', 'system_fingerprint': 'fp_48196bc67a', 'finish_reason': 'tool_calls', 'logprobs': None}, id='run-4f1531f1-067c-4e16-8b62-7a6b663e93bd-0', tool_calls=[{'name': 'get_weather', 'args': {'city': 'sf'}, 'id': 'call_l5e5YcTJDJYOdvi4scBy9n2I', 'type': 'tool_call'}], usage_metadata={'input_tokens': 57, 'output_tokens': 14, 'total_tokens': 71}), ToolMessage(content=\"It's always sunny in sf\", name='get_weather', id='e27bb3a1-1798-494a-b4ad-2deadda8b2bf', tool_call_id='call_l5e5YcTJDJYOdvi4scBy9n2I')], 'tools': 'tools'}, 'channel_versions': {'__start__': '00000000000000000000000000000002.', 'messages': '00000000000000000000000000000004.b16eb718f179ac1dcde54c5652768cf5', 'start:agent': '00000000000000000000000000000003.', 'agent': '00000000000000000000000000000004.', 'branch:agent:should_continue:tools': '00000000000000000000000000000004.', 'tools': '00000000000000000000000000000004.022986cd20ae85c77ea298a383f69ba8'}, 'versions_seen': {'__input__': {}, '__start__': {'__start__': '00000000000000000000000000000001.ab89befb52cc0e91e106ef7f500ea033'}, 'agent': {'start:agent': '00000000000000000000000000000002.d6f25946c3108fc12f27abbcf9b4cedc'}, 'tools': {'branch:agent:should_continue:tools': '00000000000000000000000000000003.065d90dd7f7cd091f0233855210bb2af'}}, 'pending_sends': [], 'current_tasks': {}}, metadata={'source': 'loop', 'writes': {'tools': {'messages': [ToolMessage(content=\"It's always sunny in sf\", name='get_weather', id='e27bb3a1-1798-494a-b4ad-2deadda8b2bf', tool_call_id='call_l5e5YcTJDJYOdvi4scBy9n2I')]}}, 'step': 2}, parent_config={'configurable': {'thread_id': '1', 'checkpoint_ns': '', 'checkpoint_id': '1ef55f2a-305f-61cc-8001-efac33022ef7'}}, pending_writes=None),\n", - " CheckpointTuple(config={'configurable': {'thread_id': '1', 'checkpoint_ns': '', 'checkpoint_id': '1ef55f2a-305f-61cc-8001-efac33022ef7'}}, checkpoint={'v': 1, 'ts': '2024-08-09T01:56:47.729689+00:00', 'id': '1ef55f2a-305f-61cc-8001-efac33022ef7', 'channel_values': {'messages': [HumanMessage(content=\"what's the weather in sf\", id='f911e000-75a1-41f6-8e38-77bb086c2ecf'), AIMessage(content='', additional_kwargs={'tool_calls': [{'id': 'call_l5e5YcTJDJYOdvi4scBy9n2I', 'function': {'arguments': '{\"city\":\"sf\"}', 'name': 'get_weather'}, 'type': 'function'}]}, response_metadata={'token_usage': {'completion_tokens': 14, 'prompt_tokens': 57, 'total_tokens': 71}, 'model_name': 'gpt-4o-mini', 'system_fingerprint': 'fp_48196bc67a', 'finish_reason': 'tool_calls', 'logprobs': None}, id='run-4f1531f1-067c-4e16-8b62-7a6b663e93bd-0', tool_calls=[{'name': 'get_weather', 'args': {'city': 'sf'}, 'id': 'call_l5e5YcTJDJYOdvi4scBy9n2I', 'type': 'tool_call'}], usage_metadata={'input_tokens': 57, 'output_tokens': 14, 'total_tokens': 71})], 'agent': 'agent', 'branch:agent:should_continue:tools': 'agent'}, 'channel_versions': {'__start__': '00000000000000000000000000000002.', 'messages': '00000000000000000000000000000003.4dd312547dcca1cf91a19adb620a18d6', 'start:agent': '00000000000000000000000000000003.', 'agent': '00000000000000000000000000000003.065d90dd7f7cd091f0233855210bb2af', 'branch:agent:should_continue:tools': '00000000000000000000000000000003.065d90dd7f7cd091f0233855210bb2af'}, 'versions_seen': {'__input__': {}, '__start__': {'__start__': '00000000000000000000000000000001.ab89befb52cc0e91e106ef7f500ea033'}, 'agent': {'start:agent': '00000000000000000000000000000002.d6f25946c3108fc12f27abbcf9b4cedc'}}, 'pending_sends': [], 'current_tasks': {}}, metadata={'source': 'loop', 'writes': {'agent': {'messages': [AIMessage(content='', additional_kwargs={'tool_calls': [{'id': 'call_l5e5YcTJDJYOdvi4scBy9n2I', 'function': {'arguments': '{\"city\":\"sf\"}', 'name': 'get_weather'}, 'type': 'function'}]}, response_metadata={'token_usage': {'completion_tokens': 14, 'prompt_tokens': 57, 'total_tokens': 71}, 'model_name': 'gpt-4o-mini', 'system_fingerprint': 'fp_48196bc67a', 'finish_reason': 'tool_calls', 'logprobs': None}, id='run-4f1531f1-067c-4e16-8b62-7a6b663e93bd-0', tool_calls=[{'name': 'get_weather', 'args': {'city': 'sf'}, 'id': 'call_l5e5YcTJDJYOdvi4scBy9n2I', 'type': 'tool_call'}], usage_metadata={'input_tokens': 57, 'output_tokens': 14, 'total_tokens': 71})]}}, 'step': 1}, parent_config={'configurable': {'thread_id': '1', 'checkpoint_ns': '', 'checkpoint_id': '1ef55f2a-2a52-6a7c-8000-27624d954d15'}}, pending_writes=None),\n", - " CheckpointTuple(config={'configurable': {'thread_id': '1', 'checkpoint_ns': '', 'checkpoint_id': '1ef55f2a-2a52-6a7c-8000-27624d954d15'}}, checkpoint={'v': 1, 'ts': '2024-08-09T01:56:47.095456+00:00', 'id': '1ef55f2a-2a52-6a7c-8000-27624d954d15', 'channel_values': {'messages': [HumanMessage(content=\"what's the weather in sf\", id='f911e000-75a1-41f6-8e38-77bb086c2ecf')], 'start:agent': '__start__'}, 'channel_versions': {'__start__': '00000000000000000000000000000002.', 'messages': '00000000000000000000000000000002.52e8b0c387f50c28345585c088150464', 'start:agent': '00000000000000000000000000000002.d6f25946c3108fc12f27abbcf9b4cedc'}, 'versions_seen': {'__input__': {}, '__start__': {'__start__': '00000000000000000000000000000001.ab89befb52cc0e91e106ef7f500ea033'}}, 'pending_sends': [], 'current_tasks': {}}, metadata={'source': 'loop', 'writes': None, 'step': 0}, parent_config={'configurable': {'thread_id': '1', 'checkpoint_ns': '', 'checkpoint_id': '1ef55f2a-2a50-6812-bfff-34e3be35d6f2'}}, pending_writes=None),\n", - " CheckpointTuple(config={'configurable': {'thread_id': '1', 'checkpoint_ns': '', 'checkpoint_id': '1ef55f2a-2a50-6812-bfff-34e3be35d6f2'}}, checkpoint={'v': 1, 'ts': '2024-08-09T01:56:47.094575+00:00', 'id': '1ef55f2a-2a50-6812-bfff-34e3be35d6f2', 'channel_values': {'messages': [], '__start__': {'messages': [['human', \"what's the weather in sf\"]]}}, 'channel_versions': {'__start__': '00000000000000000000000000000001.ab89befb52cc0e91e106ef7f500ea033'}, 'versions_seen': {'__input__': {}}, 'pending_sends': [], 'current_tasks': {}}, metadata={'source': 'input', 'writes': {'messages': [['human', \"what's the weather in sf\"]]}, 'step': -1}, parent_config=None, pending_writes=None)]" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "checkpoint_tuples" - ] - }, - { - "cell_type": "markdown", - "id": "c0a47d3e-e588-48fc-a5d4-2145dff17e77", - "metadata": {}, - "source": [ - "## Use async connection" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "6a39d1ff-ca37-4457-8b52-07d33b59c36e", - "metadata": {}, - "outputs": [], - "source": [ - "async with AsyncRedisSaver.from_conn_info(\n", - " host=\"localhost\", port=6379, db=0\n", - ") as checkpointer:\n", - " graph = create_react_agent(model, tools=tools, checkpointer=checkpointer)\n", - " config = {\"configurable\": {\"thread_id\": \"2\"}}\n", - " res = await graph.ainvoke(\n", - " {\"messages\": [(\"human\", \"what's the weather in nyc\")]}, config\n", - " )\n", - "\n", - " latest_checkpoint = await checkpointer.aget(config)\n", - " latest_checkpoint_tuple = await checkpointer.aget_tuple(config)\n", - " checkpoint_tuples = [c async for c in checkpointer.alist(config)]" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "51125ef1-bdb6-454e-82cc-4ae19a113606", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'v': 1,\n", - " 'ts': '2024-08-09T01:56:49.503241+00:00',\n", - " 'id': '1ef55f2a-4149-61ea-8003-dc5506862287',\n", - " 'channel_values': {'messages': [HumanMessage(content=\"what's the weather in nyc\", id='5a106e79-a617-4707-839f-134d4e4b762a'),\n", - " AIMessage(content='', additional_kwargs={'tool_calls': [{'id': 'call_TvPLLyhuQQN99EcZc8SzL8x9', 'function': {'arguments': '{\"city\":\"nyc\"}', 'name': 'get_weather'}, 'type': 'function'}]}, response_metadata={'token_usage': {'completion_tokens': 15, 'prompt_tokens': 58, 'total_tokens': 73}, 'model_name': 'gpt-4o-mini', 'system_fingerprint': 'fp_48196bc67a', 'finish_reason': 'tool_calls', 'logprobs': None}, id='run-0d6fa3b4-cace-41a8-b025-d01d16f6bbe9-0', tool_calls=[{'name': 'get_weather', 'args': {'city': 'nyc'}, 'id': 'call_TvPLLyhuQQN99EcZc8SzL8x9', 'type': 'tool_call'}], usage_metadata={'input_tokens': 58, 'output_tokens': 15, 'total_tokens': 73}),\n", - " ToolMessage(content='It might be cloudy in nyc', name='get_weather', id='922124bd-d3b0-4929-a996-a75d842b8b44', tool_call_id='call_TvPLLyhuQQN99EcZc8SzL8x9'),\n", - " AIMessage(content='The weather in NYC might be cloudy.', response_metadata={'token_usage': {'completion_tokens': 9, 'prompt_tokens': 88, 'total_tokens': 97}, 'model_name': 'gpt-4o-mini', 'system_fingerprint': 'fp_48196bc67a', 'finish_reason': 'stop', 'logprobs': None}, id='run-69a10e66-d61f-475e-b7de-a1ecd08a6c3a-0', usage_metadata={'input_tokens': 88, 'output_tokens': 9, 'total_tokens': 97})],\n", - " 'agent': 'agent'},\n", - " 'channel_versions': {'__start__': '00000000000000000000000000000002.',\n", - " 'messages': '00000000000000000000000000000005.2cb29d082da6435a7528b4c917fd0c28',\n", - " 'start:agent': '00000000000000000000000000000003.',\n", - " 'agent': '00000000000000000000000000000005.065d90dd7f7cd091f0233855210bb2af',\n", - " 'branch:agent:should_continue:tools': '00000000000000000000000000000004.',\n", - " 'tools': '00000000000000000000000000000005.'},\n", - " 'versions_seen': {'__input__': {},\n", - " '__start__': {'__start__': '00000000000000000000000000000001.0e148ae3debe753278387e84f786e863'},\n", - " 'agent': {'start:agent': '00000000000000000000000000000002.d6f25946c3108fc12f27abbcf9b4cedc',\n", - " 'tools': '00000000000000000000000000000004.022986cd20ae85c77ea298a383f69ba8'},\n", - " 'tools': {'branch:agent:should_continue:tools': '00000000000000000000000000000003.065d90dd7f7cd091f0233855210bb2af'}},\n", - " 'pending_sends': [],\n", - " 'current_tasks': {}}" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "latest_checkpoint" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "97f8a87b-8423-41c6-a76b-9a6b30904e73", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "CheckpointTuple(config={'configurable': {'thread_id': '2', 'checkpoint_ns': '', 'checkpoint_id': '1ef55f2a-4149-61ea-8003-dc5506862287'}}, checkpoint={'v': 1, 'ts': '2024-08-09T01:56:49.503241+00:00', 'id': '1ef55f2a-4149-61ea-8003-dc5506862287', 'channel_values': {'messages': [HumanMessage(content=\"what's the weather in nyc\", id='5a106e79-a617-4707-839f-134d4e4b762a'), AIMessage(content='', additional_kwargs={'tool_calls': [{'id': 'call_TvPLLyhuQQN99EcZc8SzL8x9', 'function': {'arguments': '{\"city\":\"nyc\"}', 'name': 'get_weather'}, 'type': 'function'}]}, response_metadata={'token_usage': {'completion_tokens': 15, 'prompt_tokens': 58, 'total_tokens': 73}, 'model_name': 'gpt-4o-mini', 'system_fingerprint': 'fp_48196bc67a', 'finish_reason': 'tool_calls', 'logprobs': None}, id='run-0d6fa3b4-cace-41a8-b025-d01d16f6bbe9-0', tool_calls=[{'name': 'get_weather', 'args': {'city': 'nyc'}, 'id': 'call_TvPLLyhuQQN99EcZc8SzL8x9', 'type': 'tool_call'}], usage_metadata={'input_tokens': 58, 'output_tokens': 15, 'total_tokens': 73}), ToolMessage(content='It might be cloudy in nyc', name='get_weather', id='922124bd-d3b0-4929-a996-a75d842b8b44', tool_call_id='call_TvPLLyhuQQN99EcZc8SzL8x9'), AIMessage(content='The weather in NYC might be cloudy.', response_metadata={'token_usage': {'completion_tokens': 9, 'prompt_tokens': 88, 'total_tokens': 97}, 'model_name': 'gpt-4o-mini', 'system_fingerprint': 'fp_48196bc67a', 'finish_reason': 'stop', 'logprobs': None}, id='run-69a10e66-d61f-475e-b7de-a1ecd08a6c3a-0', usage_metadata={'input_tokens': 88, 'output_tokens': 9, 'total_tokens': 97})], 'agent': 'agent'}, 'channel_versions': {'__start__': '00000000000000000000000000000002.', 'messages': '00000000000000000000000000000005.2cb29d082da6435a7528b4c917fd0c28', 'start:agent': '00000000000000000000000000000003.', 'agent': '00000000000000000000000000000005.065d90dd7f7cd091f0233855210bb2af', 'branch:agent:should_continue:tools': '00000000000000000000000000000004.', 'tools': '00000000000000000000000000000005.'}, 'versions_seen': {'__input__': {}, '__start__': {'__start__': '00000000000000000000000000000001.0e148ae3debe753278387e84f786e863'}, 'agent': {'start:agent': '00000000000000000000000000000002.d6f25946c3108fc12f27abbcf9b4cedc', 'tools': '00000000000000000000000000000004.022986cd20ae85c77ea298a383f69ba8'}, 'tools': {'branch:agent:should_continue:tools': '00000000000000000000000000000003.065d90dd7f7cd091f0233855210bb2af'}}, 'pending_sends': [], 'current_tasks': {}}, metadata={'source': 'loop', 'writes': {'agent': {'messages': [AIMessage(content='The weather in NYC might be cloudy.', response_metadata={'token_usage': {'completion_tokens': 9, 'prompt_tokens': 88, 'total_tokens': 97}, 'model_name': 'gpt-4o-mini', 'system_fingerprint': 'fp_48196bc67a', 'finish_reason': 'stop', 'logprobs': None}, id='run-69a10e66-d61f-475e-b7de-a1ecd08a6c3a-0', usage_metadata={'input_tokens': 88, 'output_tokens': 9, 'total_tokens': 97})]}}, 'step': 3}, parent_config={'configurable': {'thread_id': '2', 'checkpoint_ns': '', 'checkpoint_id': '1ef55f2a-3d07-647e-8002-b5e4d28c00c9'}}, pending_writes=[])" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "latest_checkpoint_tuple" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "2b6d73ca-519e-45f7-90c2-1b8596624505", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[CheckpointTuple(config={'configurable': {'thread_id': '2', 'checkpoint_ns': '', 'checkpoint_id': '1ef55f2a-4149-61ea-8003-dc5506862287'}}, checkpoint={'v': 1, 'ts': '2024-08-09T01:56:49.503241+00:00', 'id': '1ef55f2a-4149-61ea-8003-dc5506862287', 'channel_values': {'messages': [HumanMessage(content=\"what's the weather in nyc\", id='5a106e79-a617-4707-839f-134d4e4b762a'), AIMessage(content='', additional_kwargs={'tool_calls': [{'id': 'call_TvPLLyhuQQN99EcZc8SzL8x9', 'function': {'arguments': '{\"city\":\"nyc\"}', 'name': 'get_weather'}, 'type': 'function'}]}, response_metadata={'token_usage': {'completion_tokens': 15, 'prompt_tokens': 58, 'total_tokens': 73}, 'model_name': 'gpt-4o-mini', 'system_fingerprint': 'fp_48196bc67a', 'finish_reason': 'tool_calls', 'logprobs': None}, id='run-0d6fa3b4-cace-41a8-b025-d01d16f6bbe9-0', tool_calls=[{'name': 'get_weather', 'args': {'city': 'nyc'}, 'id': 'call_TvPLLyhuQQN99EcZc8SzL8x9', 'type': 'tool_call'}], usage_metadata={'input_tokens': 58, 'output_tokens': 15, 'total_tokens': 73}), ToolMessage(content='It might be cloudy in nyc', name='get_weather', id='922124bd-d3b0-4929-a996-a75d842b8b44', tool_call_id='call_TvPLLyhuQQN99EcZc8SzL8x9'), AIMessage(content='The weather in NYC might be cloudy.', response_metadata={'token_usage': {'completion_tokens': 9, 'prompt_tokens': 88, 'total_tokens': 97}, 'model_name': 'gpt-4o-mini', 'system_fingerprint': 'fp_48196bc67a', 'finish_reason': 'stop', 'logprobs': None}, id='run-69a10e66-d61f-475e-b7de-a1ecd08a6c3a-0', usage_metadata={'input_tokens': 88, 'output_tokens': 9, 'total_tokens': 97})], 'agent': 'agent'}, 'channel_versions': {'__start__': '00000000000000000000000000000002.', 'messages': '00000000000000000000000000000005.2cb29d082da6435a7528b4c917fd0c28', 'start:agent': '00000000000000000000000000000003.', 'agent': '00000000000000000000000000000005.065d90dd7f7cd091f0233855210bb2af', 'branch:agent:should_continue:tools': '00000000000000000000000000000004.', 'tools': '00000000000000000000000000000005.'}, 'versions_seen': {'__input__': {}, '__start__': {'__start__': '00000000000000000000000000000001.0e148ae3debe753278387e84f786e863'}, 'agent': {'start:agent': '00000000000000000000000000000002.d6f25946c3108fc12f27abbcf9b4cedc', 'tools': '00000000000000000000000000000004.022986cd20ae85c77ea298a383f69ba8'}, 'tools': {'branch:agent:should_continue:tools': '00000000000000000000000000000003.065d90dd7f7cd091f0233855210bb2af'}}, 'pending_sends': [], 'current_tasks': {}}, metadata={'source': 'loop', 'writes': {'agent': {'messages': [AIMessage(content='The weather in NYC might be cloudy.', response_metadata={'token_usage': {'completion_tokens': 9, 'prompt_tokens': 88, 'total_tokens': 97}, 'model_name': 'gpt-4o-mini', 'system_fingerprint': 'fp_48196bc67a', 'finish_reason': 'stop', 'logprobs': None}, id='run-69a10e66-d61f-475e-b7de-a1ecd08a6c3a-0', usage_metadata={'input_tokens': 88, 'output_tokens': 9, 'total_tokens': 97})]}}, 'step': 3}, parent_config={'configurable': {'thread_id': '2', 'checkpoint_ns': '', 'checkpoint_id': '1ef55f2a-3d07-647e-8002-b5e4d28c00c9'}}, pending_writes=None),\n", - " CheckpointTuple(config={'configurable': {'thread_id': '2', 'checkpoint_ns': '', 'checkpoint_id': '1ef55f2a-3d07-647e-8002-b5e4d28c00c9'}}, checkpoint={'v': 1, 'ts': '2024-08-09T01:56:49.056860+00:00', 'id': '1ef55f2a-3d07-647e-8002-b5e4d28c00c9', 'channel_values': {'messages': [HumanMessage(content=\"what's the weather in nyc\", id='5a106e79-a617-4707-839f-134d4e4b762a'), AIMessage(content='', additional_kwargs={'tool_calls': [{'id': 'call_TvPLLyhuQQN99EcZc8SzL8x9', 'function': {'arguments': '{\"city\":\"nyc\"}', 'name': 'get_weather'}, 'type': 'function'}]}, response_metadata={'token_usage': {'completion_tokens': 15, 'prompt_tokens': 58, 'total_tokens': 73}, 'model_name': 'gpt-4o-mini', 'system_fingerprint': 'fp_48196bc67a', 'finish_reason': 'tool_calls', 'logprobs': None}, id='run-0d6fa3b4-cace-41a8-b025-d01d16f6bbe9-0', tool_calls=[{'name': 'get_weather', 'args': {'city': 'nyc'}, 'id': 'call_TvPLLyhuQQN99EcZc8SzL8x9', 'type': 'tool_call'}], usage_metadata={'input_tokens': 58, 'output_tokens': 15, 'total_tokens': 73}), ToolMessage(content='It might be cloudy in nyc', name='get_weather', id='922124bd-d3b0-4929-a996-a75d842b8b44', tool_call_id='call_TvPLLyhuQQN99EcZc8SzL8x9')], 'tools': 'tools'}, 'channel_versions': {'__start__': '00000000000000000000000000000002.', 'messages': '00000000000000000000000000000004.07964a3a545f9ff95545db45a9753d11', 'start:agent': '00000000000000000000000000000003.', 'agent': '00000000000000000000000000000004.', 'branch:agent:should_continue:tools': '00000000000000000000000000000004.', 'tools': '00000000000000000000000000000004.022986cd20ae85c77ea298a383f69ba8'}, 'versions_seen': {'__input__': {}, '__start__': {'__start__': '00000000000000000000000000000001.0e148ae3debe753278387e84f786e863'}, 'agent': {'start:agent': '00000000000000000000000000000002.d6f25946c3108fc12f27abbcf9b4cedc'}, 'tools': {'branch:agent:should_continue:tools': '00000000000000000000000000000003.065d90dd7f7cd091f0233855210bb2af'}}, 'pending_sends': [], 'current_tasks': {}}, metadata={'source': 'loop', 'writes': {'tools': {'messages': [ToolMessage(content='It might be cloudy in nyc', name='get_weather', id='922124bd-d3b0-4929-a996-a75d842b8b44', tool_call_id='call_TvPLLyhuQQN99EcZc8SzL8x9')]}}, 'step': 2}, parent_config={'configurable': {'thread_id': '2', 'checkpoint_ns': '', 'checkpoint_id': '1ef55f2a-3cf9-6996-8001-88dab066840d'}}, pending_writes=None),\n", - " CheckpointTuple(config={'configurable': {'thread_id': '2', 'checkpoint_ns': '', 'checkpoint_id': '1ef55f2a-3cf9-6996-8001-88dab066840d'}}, checkpoint={'v': 1, 'ts': '2024-08-09T01:56:49.051234+00:00', 'id': '1ef55f2a-3cf9-6996-8001-88dab066840d', 'channel_values': {'messages': [HumanMessage(content=\"what's the weather in nyc\", id='5a106e79-a617-4707-839f-134d4e4b762a'), AIMessage(content='', additional_kwargs={'tool_calls': [{'id': 'call_TvPLLyhuQQN99EcZc8SzL8x9', 'function': {'arguments': '{\"city\":\"nyc\"}', 'name': 'get_weather'}, 'type': 'function'}]}, response_metadata={'token_usage': {'completion_tokens': 15, 'prompt_tokens': 58, 'total_tokens': 73}, 'model_name': 'gpt-4o-mini', 'system_fingerprint': 'fp_48196bc67a', 'finish_reason': 'tool_calls', 'logprobs': None}, id='run-0d6fa3b4-cace-41a8-b025-d01d16f6bbe9-0', tool_calls=[{'name': 'get_weather', 'args': {'city': 'nyc'}, 'id': 'call_TvPLLyhuQQN99EcZc8SzL8x9', 'type': 'tool_call'}], usage_metadata={'input_tokens': 58, 'output_tokens': 15, 'total_tokens': 73})], 'agent': 'agent', 'branch:agent:should_continue:tools': 'agent'}, 'channel_versions': {'__start__': '00000000000000000000000000000002.', 'messages': '00000000000000000000000000000003.cc96d93b1afbd1b69d53851320670b97', 'start:agent': '00000000000000000000000000000003.', 'agent': '00000000000000000000000000000003.065d90dd7f7cd091f0233855210bb2af', 'branch:agent:should_continue:tools': '00000000000000000000000000000003.065d90dd7f7cd091f0233855210bb2af'}, 'versions_seen': {'__input__': {}, '__start__': {'__start__': '00000000000000000000000000000001.0e148ae3debe753278387e84f786e863'}, 'agent': {'start:agent': '00000000000000000000000000000002.d6f25946c3108fc12f27abbcf9b4cedc'}}, 'pending_sends': [], 'current_tasks': {}}, metadata={'source': 'loop', 'writes': {'agent': {'messages': [AIMessage(content='', additional_kwargs={'tool_calls': [{'id': 'call_TvPLLyhuQQN99EcZc8SzL8x9', 'function': {'arguments': '{\"city\":\"nyc\"}', 'name': 'get_weather'}, 'type': 'function'}]}, response_metadata={'token_usage': {'completion_tokens': 15, 'prompt_tokens': 58, 'total_tokens': 73}, 'model_name': 'gpt-4o-mini', 'system_fingerprint': 'fp_48196bc67a', 'finish_reason': 'tool_calls', 'logprobs': None}, id='run-0d6fa3b4-cace-41a8-b025-d01d16f6bbe9-0', tool_calls=[{'name': 'get_weather', 'args': {'city': 'nyc'}, 'id': 'call_TvPLLyhuQQN99EcZc8SzL8x9', 'type': 'tool_call'}], usage_metadata={'input_tokens': 58, 'output_tokens': 15, 'total_tokens': 73})]}}, 'step': 1}, parent_config={'configurable': {'thread_id': '2', 'checkpoint_ns': '', 'checkpoint_id': '1ef55f2a-36a6-6788-8000-9efe1769f8c1'}}, pending_writes=None),\n", - " CheckpointTuple(config={'configurable': {'thread_id': '2', 'checkpoint_ns': '', 'checkpoint_id': '1ef55f2a-36a6-6788-8000-9efe1769f8c1'}}, checkpoint={'v': 1, 'ts': '2024-08-09T01:56:48.388067+00:00', 'id': '1ef55f2a-36a6-6788-8000-9efe1769f8c1', 'channel_values': {'messages': [HumanMessage(content=\"what's the weather in nyc\", id='5a106e79-a617-4707-839f-134d4e4b762a')], 'start:agent': '__start__'}, 'channel_versions': {'__start__': '00000000000000000000000000000002.', 'messages': '00000000000000000000000000000002.a6994b785a651d88df51020401745af8', 'start:agent': '00000000000000000000000000000002.d6f25946c3108fc12f27abbcf9b4cedc'}, 'versions_seen': {'__input__': {}, '__start__': {'__start__': '00000000000000000000000000000001.0e148ae3debe753278387e84f786e863'}}, 'pending_sends': [], 'current_tasks': {}}, metadata={'source': 'loop', 'writes': None, 'step': 0}, parent_config={'configurable': {'thread_id': '2', 'checkpoint_ns': '', 'checkpoint_id': '1ef55f2a-36a3-6614-bfff-05dafa02b4d7'}}, pending_writes=None),\n", - " CheckpointTuple(config={'configurable': {'thread_id': '2', 'checkpoint_ns': '', 'checkpoint_id': '1ef55f2a-36a3-6614-bfff-05dafa02b4d7'}}, checkpoint={'v': 1, 'ts': '2024-08-09T01:56:48.386807+00:00', 'id': '1ef55f2a-36a3-6614-bfff-05dafa02b4d7', 'channel_values': {'messages': [], '__start__': {'messages': [['human', \"what's the weather in nyc\"]]}}, 'channel_versions': {'__start__': '00000000000000000000000000000001.0e148ae3debe753278387e84f786e863'}, 'versions_seen': {'__input__': {}}, 'pending_sends': [], 'current_tasks': {}}, metadata={'source': 'input', 'writes': {'messages': [['human', \"what's the weather in nyc\"]]}, 'step': -1}, parent_config=None, pending_writes=None)]" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "checkpoint_tuples" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.3" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/docs/docs/how-tos/recursion-limit.ipynb b/docs/docs/how-tos/recursion-limit.ipynb deleted file mode 100644 index 467ec8032..000000000 --- a/docs/docs/how-tos/recursion-limit.ipynb +++ /dev/null @@ -1,459 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# How to create and control loops\n", - "\n", - "
    \n", - "

    Prerequisites

    \n", - "

    \n", - " This guide assumes familiarity with the following:\n", - "

    \n", - "

    \n", - "
    \n", - "\n", - "\n", - "When creating a graph with a loop, we require a mechanism for terminating execution. This is most commonly done by adding a [conditional edge](../../concepts/low_level/#conditional-edges) that routes to the [END](../../concepts/low_level/#end-node) node once we reach some termination condition.\n", - "\n", - "You can also set the graph recursion limit when invoking or streaming the graph. The recursion limit sets the number of [supersteps](../../concepts/low_level/#graphs) that the graph is allowed to execute before it raises an error. Read more about the concept of recursion limits [here](../../concepts/low_level/#recursion-limit). \n", - "\n", - "Let's consider a simple graph with a loop to better understand how these mechanisms work.\n", - "\n", - "!!! tip\n", - "\n", - " To return the last value of your state instead of receiving a recursion limit error, read [this how-to](../../how-tos/return-when-recursion-limit-hits/).\n", - "\n", - "\n", - "## Summary\n", - "\n", - "When creating a loop, you can include a conditional edge that specifies a termination condition:\n", - "```python\n", - "builder = StateGraph(State)\n", - "builder.add_node(a)\n", - "builder.add_node(b)\n", - "\n", - "def route(state: State) -> Literal[\"b\", END]:\n", - " if termination_condition(state):\n", - " return END\n", - " else:\n", - " return \"a\"\n", - "\n", - "builder.add_edge(START, \"a\")\n", - "builder.add_conditional_edges(\"a\", route)\n", - "builder.add_edge(\"b\", \"a\")\n", - "graph = builder.compile()\n", - "```\n", - "\n", - "To control the recursion limit, specify `\"recursion_limit\"` in the config. This will raise a `GraphRecursionError`, which you can catch and handle:\n", - "```python\n", - "from langgraph.errors import GraphRecursionError\n", - "\n", - "try:\n", - " graph.invoke(inputs, {\"recursion_limit\": 3})\n", - "except GraphRecursionError:\n", - " print(\"Recursion Error\")\n", - "```\n", - "\n", - "## Setup\n", - "\n", - "First, let's install the required packages" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "%%capture --no-stderr\n", - "%pip install -U langgraph" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "

    Set up LangSmith for LangGraph development

    \n", - "

    \n", - " Sign up for LangSmith to quickly spot issues and improve the performance of your LangGraph projects. LangSmith lets you use trace data to debug, test, and monitor your LLM apps built with LangGraph — read more about how to get started here. \n", - "

    \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Define the graph\n", - "\n", - "Let's define a graph with a simple loop. Note that we use a conditional edge to implement a termination condition." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "import operator\n", - "from typing import Annotated, Literal\n", - "\n", - "from typing_extensions import TypedDict\n", - "\n", - "from langgraph.graph import StateGraph, START, END\n", - "\n", - "\n", - "class State(TypedDict):\n", - " # The operator.add reducer fn makes this append-only\n", - " aggregate: Annotated[list, operator.add]\n", - "\n", - "\n", - "def a(state: State):\n", - " print(f'Node A sees {state[\"aggregate\"]}')\n", - " return {\"aggregate\": [\"A\"]}\n", - "\n", - "\n", - "def b(state: State):\n", - " print(f'Node B sees {state[\"aggregate\"]}')\n", - " return {\"aggregate\": [\"B\"]}\n", - "\n", - "\n", - "# Define nodes\n", - "builder = StateGraph(State)\n", - "builder.add_node(a)\n", - "builder.add_node(b)\n", - "\n", - "\n", - "# Define edges\n", - "def route(state: State) -> Literal[\"b\", END]:\n", - " if len(state[\"aggregate\"]) < 7:\n", - " return \"b\"\n", - " else:\n", - " return END\n", - "\n", - "\n", - "builder.add_edge(START, \"a\")\n", - "builder.add_conditional_edges(\"a\", route)\n", - "builder.add_edge(\"b\", \"a\")\n", - "graph = builder.compile()" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from IPython.display import Image, display\n", - "\n", - "display(Image(graph.get_graph().draw_mermaid_png()))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This architecture is similar to a [ReAct agent](../../how-tos/#prebuilt-react-agent) in which node `\"a\"` is a tool-calling model, and node `\"b\"` represents the tools.\n", - "\n", - "In our `route` conditional edge, we specify that we should end after the `\"aggregate\"` list in the state passes a threshold length.\n", - "\n", - "Invoking the graph, we see that we alternate between nodes `\"a\"` and `\"b\"` before terminating once we reach the termination condition." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Node A sees []\n", - "Node B sees ['A']\n", - "Node A sees ['A', 'B']\n", - "Node B sees ['A', 'B', 'A']\n", - "Node A sees ['A', 'B', 'A', 'B']\n", - "Node B sees ['A', 'B', 'A', 'B', 'A']\n", - "Node A sees ['A', 'B', 'A', 'B', 'A', 'B']\n" - ] - }, - { - "data": { - "text/plain": [ - "{'aggregate': ['A', 'B', 'A', 'B', 'A', 'B', 'A']}" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "graph.invoke({\"aggregate\": []})" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Impose a recursion limit\n", - "\n", - "In some applications, we may not have a guarantee that we will reach a given termination condition. In these cases, we can set the graph's [recursion limit](../../concepts/low_level/#recursion-limit). This will raise a `GraphRecursionError` after a given number of [supersteps](../../concepts/low_level/#graphs). We can then catch and handle this exception:" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Node A sees []\n", - "Node B sees ['A']\n", - "Node A sees ['A', 'B']\n", - "Node B sees ['A', 'B', 'A']\n", - "Recursion Error\n" - ] - } - ], - "source": [ - "from langgraph.errors import GraphRecursionError\n", - "\n", - "try:\n", - " graph.invoke({\"aggregate\": []}, {\"recursion_limit\": 4})\n", - "except GraphRecursionError:\n", - " print(\"Recursion Error\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note that this time we terminate after the fourth step." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Loops with branches\n", - "\n", - "To better understand how the recursion limit works, let's consider a more complex example. Below we implement a loop, but one step fans out into two nodes:" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "import operator\n", - "from typing import Annotated, Literal\n", - "\n", - "from typing_extensions import TypedDict\n", - "\n", - "from langgraph.graph import StateGraph, START, END\n", - "\n", - "\n", - "class State(TypedDict):\n", - " aggregate: Annotated[list, operator.add]\n", - "\n", - "\n", - "def a(state: State):\n", - " print(f'Node A sees {state[\"aggregate\"]}')\n", - " return {\"aggregate\": [\"A\"]}\n", - "\n", - "\n", - "def b(state: State):\n", - " print(f'Node B sees {state[\"aggregate\"]}')\n", - " return {\"aggregate\": [\"B\"]}\n", - "\n", - "\n", - "def c(state: State):\n", - " print(f'Node C sees {state[\"aggregate\"]}')\n", - " return {\"aggregate\": [\"C\"]}\n", - "\n", - "\n", - "def d(state: State):\n", - " print(f'Node D sees {state[\"aggregate\"]}')\n", - " return {\"aggregate\": [\"D\"]}\n", - "\n", - "\n", - "# Define nodes\n", - "builder = StateGraph(State)\n", - "builder.add_node(a)\n", - "builder.add_node(b)\n", - "builder.add_node(c)\n", - "builder.add_node(d)\n", - "\n", - "\n", - "# Define edges\n", - "def route(state: State) -> Literal[\"b\", END]:\n", - " if len(state[\"aggregate\"]) < 7:\n", - " return \"b\"\n", - " else:\n", - " return END\n", - "\n", - "\n", - "builder.add_edge(START, \"a\")\n", - "builder.add_conditional_edges(\"a\", route)\n", - "builder.add_edge(\"b\", \"c\")\n", - "builder.add_edge(\"b\", \"d\")\n", - "builder.add_edge([\"c\", \"d\"], \"a\")\n", - "graph = builder.compile()" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from IPython.display import Image, display\n", - "\n", - "display(Image(graph.get_graph().draw_mermaid_png()))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This graph looks complex, but can be conceptualized as loop of [supersteps](../../concepts/low_level/#graphs):\n", - "\n", - "1. Node A\n", - "2. Node B\n", - "3. Nodes C and D\n", - "4. Node A\n", - "5. ...\n", - "\n", - "We have a loop of four supersteps, where nodes C and D are executed concurrently.\n", - "\n", - "Invoking the graph as before, we see that we complete two full \"laps\" before hitting the termination condition:" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Node A sees []\n", - "Node B sees ['A']\n", - "Node D sees ['A', 'B']\n", - "Node C sees ['A', 'B']\n", - "Node A sees ['A', 'B', 'C', 'D']\n", - "Node B sees ['A', 'B', 'C', 'D', 'A']\n", - "Node D sees ['A', 'B', 'C', 'D', 'A', 'B']\n", - "Node C sees ['A', 'B', 'C', 'D', 'A', 'B']\n", - "Node A sees ['A', 'B', 'C', 'D', 'A', 'B', 'C', 'D']\n" - ] - } - ], - "source": [ - "result = graph.invoke({\"aggregate\": []})" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "However, if we set the recursion limit to four, we only complete one lap because each lap is four supersteps:" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Node A sees []\n", - "Node B sees ['A']\n", - "Node C sees ['A', 'B']\n", - "Node D sees ['A', 'B']\n", - "Node A sees ['A', 'B', 'C', 'D']\n", - "Recursion Error\n" - ] - } - ], - "source": [ - "from langgraph.errors import GraphRecursionError\n", - "\n", - "try:\n", - " result = graph.invoke({\"aggregate\": []}, {\"recursion_limit\": 4})\n", - "except GraphRecursionError:\n", - " print(\"Recursion Error\")" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.4" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/docs/docs/how-tos/return-when-recursion-limit-hits.ipynb b/docs/docs/how-tos/return-when-recursion-limit-hits.ipynb deleted file mode 100644 index 22d9243b7..000000000 --- a/docs/docs/how-tos/return-when-recursion-limit-hits.ipynb +++ /dev/null @@ -1,279 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# How to return state before hitting recursion limit\n", - "\n", - "
    \n", - "

    Prerequisites

    \n", - "

    \n", - " This guide assumes familiarity with the following:\n", - "

    \n", - "

    \n", - "
    \n", - "\n", - "[Setting the graph recursion limit](https://langchain-ai.github.io/langgraph/how-tos/recursion-limit/) can help you control how long your graph will stay running, but if the recursion limit is hit your graph returns an error - which may not be ideal for all use cases. Instead you may wish to return the value of the state *just before* the recursion limit is hit. This how-to will show you how to do this." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Setup\n", - "\n", - "First, let's installed the required packages:" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "%%capture --no-stderr\n", - "%pip install -U langgraph" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "

    Set up LangSmith for LangGraph development

    \n", - "

    \n", - " Sign up for LangSmith to quickly spot issues and improve the performance of your LangGraph projects. LangSmith lets you use trace data to debug, test, and monitor your LLM apps built with LangGraph — read more about how to get started here. \n", - "

    \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Without returning state\n", - "\n", - "We are going to define a dummy graph in this example that will always hit the recursion limit. First, we will implement it without returning the state and show that it hits the recursion limit. This graph is based on the ReAct architecture, but instead of actually making decisions and taking actions it just loops forever." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "from typing_extensions import TypedDict\n", - "from langgraph.graph import StateGraph\n", - "from langgraph.graph import START, END\n", - "\n", - "\n", - "class State(TypedDict):\n", - " value: str\n", - " action_result: str\n", - "\n", - "\n", - "def router(state: State):\n", - " if state[\"value\"] == \"end\":\n", - " return END\n", - " else:\n", - " return \"action\"\n", - "\n", - "\n", - "def decision_node(state):\n", - " return {\"value\": \"keep going!\"}\n", - "\n", - "\n", - "def action_node(state: State):\n", - " # Do your action here ...\n", - " return {\"action_result\": \"what a great result!\"}\n", - "\n", - "\n", - "workflow = StateGraph(State)\n", - "workflow.add_node(\"decision\", decision_node)\n", - "workflow.add_node(\"action\", action_node)\n", - "workflow.add_edge(START, \"decision\")\n", - "workflow.add_conditional_edges(\"decision\", router, [\"action\", END])\n", - "workflow.add_edge(\"action\", \"decision\")\n", - "app = workflow.compile()" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "data": { - "image/jpeg": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from IPython.display import Image, display\n", - "\n", - "display(Image(app.get_graph().draw_mermaid_png()))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's verify that our graph will always hit the recursion limit:" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Recursion Error\n" - ] - } - ], - "source": [ - "from langgraph.errors import GraphRecursionError\n", - "\n", - "try:\n", - " app.invoke({\"value\": \"hi!\"})\n", - "except GraphRecursionError:\n", - " print(\"Recursion Error\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## With returning state\n", - "\n", - "To avoid hitting the recursion limit, we can introduce a new key to our state called `remaining_steps`. It will keep track of number of steps until reaching the recursion limit. We can then check the value of `remaining_steps` to determine whether we should terminate the graph execution and return the state to the user without causing the `RecursionError`.\n", - "\n", - "To do so, we will use a special `RemainingSteps` annotation. Under the hood, it creates a special `ManagedValue` channel -- a state channel that will exist for the duration of our graph run and no longer.\n", - "\n", - "Since our `action` node is going to always induce at least 2 extra steps to our graph (since the `action` node ALWAYS calls the `decision` node afterwards), we will use this channel to check if we are within 2 steps of the limit.\n", - "\n", - "Now, when we run our graph we should receive no errors and instead get the last value of the state before the recursion limit was hit." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "from typing_extensions import TypedDict\n", - "from langgraph.graph import StateGraph\n", - "from typing import Annotated\n", - "\n", - "from langgraph.managed.is_last_step import RemainingSteps\n", - "\n", - "\n", - "class State(TypedDict):\n", - " value: str\n", - " action_result: str\n", - " remaining_steps: RemainingSteps\n", - "\n", - "\n", - "def router(state: State):\n", - " # Force the agent to end\n", - " if state[\"remaining_steps\"] <= 2:\n", - " return END\n", - " if state[\"value\"] == \"end\":\n", - " return END\n", - " else:\n", - " return \"action\"\n", - "\n", - "\n", - "def decision_node(state):\n", - " return {\"value\": \"keep going!\"}\n", - "\n", - "\n", - "def action_node(state: State):\n", - " # Do your action here ...\n", - " return {\"action_result\": \"what a great result!\"}\n", - "\n", - "\n", - "workflow = StateGraph(State)\n", - "workflow.add_node(\"decision\", decision_node)\n", - "workflow.add_node(\"action\", action_node)\n", - "workflow.add_edge(START, \"decision\")\n", - "workflow.add_conditional_edges(\"decision\", router, [\"action\", END])\n", - "workflow.add_edge(\"action\", \"decision\")\n", - "app = workflow.compile()" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'value': 'keep going!', 'action_result': 'what a great result!'}" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "app.invoke({\"value\": \"hi!\"})" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Perfect! Our code ran with no error, just as we expected!" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.9" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/docs/docs/how-tos/sequence.ipynb b/docs/docs/how-tos/sequence.ipynb deleted file mode 100644 index 1b805a521..000000000 --- a/docs/docs/how-tos/sequence.ipynb +++ /dev/null @@ -1,355 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# How to create a sequence of steps\n", - "\n", - "!!! info \"Prerequisites\"\n", - " This guide assumes familiarity with the following:\n", - "\n", - " - [How to define and update graph state](../../how-tos/state-reducers)\n", - "\n", - "This guide demonstrates how to construct a simple sequence of steps. We will demonstrate:\n", - "\n", - "1. How to build a sequential graph\n", - "2. Built-in short-hand for constructing similar graphs.\n", - "\n", - "\n", - "# Summary\n", - "\n", - "To add a sequence of nodes, we use the `.add_node` and `.add_edge` methods of our [graph](../../concepts/low_level/#stategraph):\n", - "```python\n", - "from langgraph.graph import START, StateGraph\n", - "\n", - "graph_builder = StateGraph(State)\n", - "\n", - "# Add nodes\n", - "graph_builder.add_node(step_1)\n", - "graph_builder.add_node(step_2)\n", - "graph_builder.add_node(step_3)\n", - "\n", - "# Add edges\n", - "graph_builder.add_edge(START, \"step_1\")\n", - "graph_builder.add_edge(\"step_1\", \"step_2\")\n", - "graph_builder.add_edge(\"step_2\", \"step_3\")\n", - "```\n", - "\n", - "We can also use the built-in shorthand `.add_sequence`:\n", - "```python\n", - "graph_builder = StateGraph(State).add_sequence([step_1, step_2, step_3])\n", - "graph_builder.add_edge(START, \"step_1\")\n", - "```\n", - "\n", - "\n", - "
    \n", - "Why split application steps into a sequence with LangGraph?\n", - "\n", - "LangGraph makes it easy to add an underlying persistence layer to your application.\n", - "This allows state to be checkpointed in between the execution of nodes, so your LangGraph nodes govern:\n", - "\n", - "
      \n", - "
    • How state updates are [checkpointed](../../concepts/persistence/)
    • \n", - "
    • How interruptions are resumed in [human-in-the-loop](../../concepts/human_in_the_loop/) workflows
    • \n", - "
    • How we can \"rewind\" and branch-off executions using LangGraph's [time travel](../../concepts/time-travel/) features
    • \n", - "
    \n", - "\n", - "They also determine how execution steps are [streamed](../../concepts/streaming/), and how your application is visualized\n", - "and debugged using [LangGraph Studio](../../concepts/langgraph_studio/).\n", - "\n", - "
    \n", - "\n", - "## Setup\n", - "\n", - "First, let's install langgraph:" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "%%capture --no-stderr\n", - "%pip install -U langgraph" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "

    Set up LangSmith for better debugging

    \n", - "

    \n", - " Sign up for LangSmith to quickly spot issues and improve the performance of your LangGraph projects. LangSmith lets you use trace data to debug, test, and monitor your LLM aps built with LangGraph — read more about how to get started in the docs. \n", - "

    \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Build the graph\n", - "\n", - "Let's demonstrate a simple usage example. We will create a sequence of three steps:\n", - "\n", - "1. Populate a value in a key of the state\n", - "2. Update the same value\n", - "3. Populate a different value\n", - "\n", - "### Define state\n", - "\n", - "Let's first define our [state](../../concepts/low_level/#state). This governs the [schema of the graph](../../concepts/low_level/#schema), and can also specify how to apply updates. See [this guide](../../how-tos/state-reducers) for more detail.\n", - "\n", - "In our case, we will just keep track of two values:" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "from typing_extensions import TypedDict\n", - "\n", - "\n", - "class State(TypedDict):\n", - " value_1: str\n", - " value_2: int" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Define nodes\n", - "\n", - "Our [nodes](../../concepts/low_level/#nodes) are just Python functions that read our graph's state and make updates to it. The first argument to this function will always be the state:" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "def step_1(state: State):\n", - " return {\"value_1\": \"a\"}\n", - "\n", - "\n", - "def step_2(state: State):\n", - " current_value_1 = state[\"value_1\"]\n", - " return {\"value_1\": f\"{current_value_1} b\"}\n", - "\n", - "\n", - "def step_3(state: State):\n", - " return {\"value_2\": 10}" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "!!! note\n", - "\n", - " Note that when issuing updates to the state, each node can just specify the value of the key it wishes to update.\n", - "\n", - "By default, this will **overwrite** the value of the corresponding key. You can also use [reducers](../../concepts/low_level/#reducers) to control how updates are processed— for example, you can append successive updates to a key instead. See [this guide](../../how-tos/state-reducers) for more detail.\n", - "\n", - "### Define graph\n", - "\n", - "We use [StateGraph](../../concepts/low_level/#stategraph) to define a graph that operates on this state.\n", - "\n", - "We will then use [add_node](../../concepts/low_level/#messagesstate) and [add_edge](../../concepts/low_level/#edges) to populate our graph and define its control flow." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from langgraph.graph import START, StateGraph\n", - "\n", - "graph_builder = StateGraph(State)\n", - "\n", - "# Add nodes\n", - "graph_builder.add_node(step_1)\n", - "graph_builder.add_node(step_2)\n", - "graph_builder.add_node(step_3)\n", - "\n", - "# Add edges\n", - "graph_builder.add_edge(START, \"step_1\")\n", - "graph_builder.add_edge(\"step_1\", \"step_2\")\n", - "graph_builder.add_edge(\"step_2\", \"step_3\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "!!! tip \"Specifying custom names\"\n", - "\n", - " You can specify custom names for nodes using `.add_node`:\n", - "\n", - " ```python\n", - " graph_builder.add_node(\"my_node\", step_1)\n", - " ```" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note that:\n", - "\n", - "- `.add_edge` takes the names of nodes, which for functions defaults to `node.__name__`.\n", - "- We must specify the entry point of the graph. For this we add an edge with the [START node](../../concepts/low_level/#start-node).\n", - "- The graph halts when there are no more nodes to execute.\n", - "\n", - "We next [compile](../../concepts/low_level/#compiling-your-graph) our graph. This provides a few basic checks on the structure of the graph (e.g., identifying orphaned nodes). If we were adding persistence to our application via a [checkpointer](../../concepts/persistence/), it would also be passed in here." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "graph = graph_builder.compile()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "LangGraph provides built-in utilities for visualizing your graph. Let's inspect our sequence. See [this guide](../../how-tos/visualization) for detail on visualization." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from IPython.display import Image, display\n", - "\n", - "display(Image(graph.get_graph().draw_mermaid_png()))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Usage\n", - "\n", - "Let's proceed with a simple invocation:" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'value_1': 'a b', 'value_2': 10}" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "graph.invoke({\"value_1\": \"c\"})" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note that:\n", - "\n", - "- We kicked off invocation by providing a value for a single state key. We must always provide a value for at least one key.\n", - "- The value we passed in was overwritten by the first node.\n", - "- The second node updated the value.\n", - "- The third node populated a different value." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Built-in shorthand\n", - "\n", - "!!! info \"Prerequisites\"\n", - " `.add_sequence` requires `langgraph>=0.2.46`\n", - "\n", - "\n", - "LangGraph includes a built-in shorthand `.add_sequence` for convenience:" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'value_1': 'a b', 'value_2': 10}" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# highlight-next-line\n", - "graph_builder = StateGraph(State).add_sequence([step_1, step_2, step_3])\n", - "graph_builder.add_edge(START, \"step_1\")\n", - "\n", - "graph = graph_builder.compile()\n", - "\n", - "graph.invoke({\"value_1\": \"c\"})" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.4" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/docs/docs/how-tos/state-model.ipynb b/docs/docs/how-tos/state-model.ipynb deleted file mode 100644 index 2fadd7994..000000000 --- a/docs/docs/how-tos/state-model.ipynb +++ /dev/null @@ -1,521 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "51466c8d-8ce4-4b3d-be4e-18fdbeda5f53", - "metadata": {}, - "source": [ - "# How to use Pydantic model as graph state\n", - "\n", - "
    \n", - "

    Prerequisites

    \n", - "

    \n", - " This guide assumes familiarity with the following:\n", - "

    \n", - "

    \n", - "
    \n", - "\n", - "A [StateGraph](https://langchain-ai.github.io/langgraph/reference/graphs/#langgraph.graph.StateGraph) accepts a `state_schema` argument on initialization that specifies the \"shape\" of the state that the nodes in the graph can access and update.\n", - "\n", - "In our examples, we typically use a python-native `TypedDict` for `state_schema` (or in the case of [MessageGraph](https://langchain-ai.github.io/langgraph/reference/graphs/#messagegraph), a [list](https://docs.python.org/3/library/stdtypes.html#list)), but `state_schema` can be any [type](https://docs.python.org/3/library/stdtypes.html#type-objects).\n", - "\n", - "In this how-to guide, we'll see how a [Pydantic BaseModel](https://docs.pydantic.dev/latest/api/base_model/). can be used for `state_schema` to add run time validation on **inputs**.\n", - "\n", - "\n", - "
    \n", - "

    Known Limitations

    \n", - "

    \n", - "

      \n", - "
    • \n", - " This notebook uses Pydantic v2 BaseModel, which requires langchain-core >= 0.3. Using langchain-core < 0.3 will result in errors due to mixing of Pydantic v1 and v2 BaseModels. \n", - "
    • \n", - "
    • \n", - " Currently, the `output` of the graph will **NOT** be an instance of a pydantic model.\n", - "
    • \n", - "
    • \n", - " Run-time validation only occurs on **inputs** into nodes, not on the outputs.\n", - "
    • \n", - "
    • \n", - " The validation error trace from pydantic does not show which node the error arises in.\n", - "
    • \n", - "
    \n", - "

    \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "id": "7cbd446a-808f-4394-be92-d45ab818953c", - "metadata": {}, - "source": [ - "## Setup\n", - "\n", - "First we need to install the packages required" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "af4ce0ba-7596-4e5f-8bf8-0b0bd6e62833", - "metadata": {}, - "outputs": [], - "source": [ - "%%capture --no-stderr\n", - "%pip install --quiet -U langgraph" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "01456d57-4064-4ccb-baf9-98df39c6b8e0", - "metadata": {}, - "outputs": [], - "source": [ - "import getpass\n", - "import os\n", - "\n", - "\n", - "def _set_env(var: str):\n", - " if not os.environ.get(var):\n", - " os.environ[var] = getpass.getpass(f\"{var}: \")\n", - "\n", - "\n", - "_set_env(\"OPENAI_API_KEY\")" - ] - }, - { - "cell_type": "markdown", - "id": "4f385bde-e013-4365-88f3-813c632d4b7c", - "metadata": {}, - "source": [ - "
    \n", - "

    Set up LangSmith for LangGraph development

    \n", - "

    \n", - " Sign up for LangSmith to quickly spot issues and improve the performance of your LangGraph projects. LangSmith lets you use trace data to debug, test, and monitor your LLM apps built with LangGraph — read more about how to get started here. \n", - "

    \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "id": "e20dd648-df7a-40f5-9b32-afbdcf1ee4d8", - "metadata": {}, - "source": [ - "## Input Validation" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "efc46b36-425c-49c3-9f9e-d9785c70b034", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'a': 'goodbye'}" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "from langgraph.graph import StateGraph, START, END\n", - "from typing_extensions import TypedDict\n", - "\n", - "from pydantic import BaseModel\n", - "\n", - "\n", - "# The overall state of the graph (this is the public state shared across nodes)\n", - "class OverallState(BaseModel):\n", - " a: str\n", - "\n", - "\n", - "def node(state: OverallState):\n", - " return {\"a\": \"goodbye\"}\n", - "\n", - "\n", - "# Build the state graph\n", - "builder = StateGraph(OverallState)\n", - "builder.add_node(node) # node_1 is the first node\n", - "builder.add_edge(START, \"node\") # Start the graph with node_1\n", - "builder.add_edge(\"node\", END) # End the graph after node_1\n", - "graph = builder.compile()\n", - "\n", - "# Test the graph with a valid input\n", - "graph.invoke({\"a\": \"hello\"})" - ] - }, - { - "cell_type": "markdown", - "id": "25b594c2-8198-4f76-9606-ea47151ff9d1", - "metadata": {}, - "source": [ - "Invoke the graph with an **invalid** input" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "05d7d43b-0b71-4e25-af6f-61d1560a46cb", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "An exception was raised because `a` is an integer rather than a string.\n", - "1 validation error for OverallState\n", - "a\n", - " Input should be a valid string [type=string_type, input_value=123, input_type=int]\n", - " For further information visit https://errors.pydantic.dev/2.9/v/string_type\n" - ] - } - ], - "source": [ - "try:\n", - " graph.invoke({\"a\": 123}) # Should be a string\n", - "except Exception as e:\n", - " print(\"An exception was raised because `a` is an integer rather than a string.\")\n", - " print(e)" - ] - }, - { - "cell_type": "markdown", - "id": "0aafc180-17b5-4364-b1df-fb41aa575067", - "metadata": {}, - "source": [ - "## Multiple Nodes\n", - "\n", - "Run-time validation will also work in a multi-node graph. In the example below `bad_node` updates `a` to an integer. \n", - "\n", - "Because run-time validation occurs on **inputs**, the validation error will occur when `ok_node` is called (not when `bad_node` returns an update to the state which is inconsistent with the schema)." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "25336b0d-2fe6-45c8-8204-f962c3995df7", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "An exception was raised because bad_node sets `a` to an integer.\n", - "1 validation error for OverallState\n", - "a\n", - " Input should be a valid string [type=string_type, input_value=123, input_type=int]\n", - " For further information visit https://errors.pydantic.dev/2.9/v/string_type\n" - ] - } - ], - "source": [ - "from langgraph.graph import StateGraph, START, END\n", - "from typing_extensions import TypedDict\n", - "\n", - "from pydantic import BaseModel\n", - "\n", - "\n", - "# The overall state of the graph (this is the public state shared across nodes)\n", - "class OverallState(BaseModel):\n", - " a: str\n", - "\n", - "\n", - "def bad_node(state: OverallState):\n", - " return {\n", - " \"a\": 123 # Invalid\n", - " }\n", - "\n", - "\n", - "def ok_node(state: OverallState):\n", - " return {\"a\": \"goodbye\"}\n", - "\n", - "\n", - "# Build the state graph\n", - "builder = StateGraph(OverallState)\n", - "builder.add_node(bad_node)\n", - "builder.add_node(ok_node)\n", - "builder.add_edge(START, \"bad_node\")\n", - "builder.add_edge(\"bad_node\", \"ok_node\")\n", - "builder.add_edge(\"ok_node\", END)\n", - "graph = builder.compile()\n", - "\n", - "# Test the graph with a valid input\n", - "try:\n", - " graph.invoke({\"a\": \"hello\"})\n", - "except Exception as e:\n", - " print(\"An exception was raised because bad_node sets `a` to an integer.\")\n", - " print(e)" - ] - }, - { - "cell_type": "markdown", - "id": "2270bc3c", - "metadata": {}, - "source": [ - "## Multiple Nodes\n", - "\n", - "Run-time validation will also work in a multi-node graph. In the example below `bad_node` updates `a` to an integer. \n", - "\n", - "Because run-time validation occurs on **inputs**, the validation error will occur when `ok_node` is called (not when `bad_node` returns an update to the state which is inconsistent with the schema)." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "d832cdcc", - "metadata": {}, - "outputs": [], - "source": [ - "from langgraph.graph import StateGraph, START, END\n", - "from typing_extensions import TypedDict\n", - "\n", - "from pydantic import BaseModel\n", - "\n", - "\n", - "# The overall state of the graph (this is the public state shared across nodes)\n", - "class OverallState(BaseModel):\n", - " a: str\n", - "\n", - "\n", - "def bad_node(state: OverallState):\n", - " return {\n", - " \"a\": 123 # Invalid\n", - " }\n", - "\n", - "\n", - "def ok_node(state: OverallState):\n", - " return {\"a\": \"goodbye\"}\n", - "\n", - "\n", - "# Build the state graph\n", - "builder = StateGraph(OverallState)\n", - "builder.add_node(bad_node)\n", - "builder.add_node(ok_node)\n", - "builder.add_edge(START, \"bad_node\")\n", - "builder.add_edge(\"bad_node\", \"ok_node\")\n", - "builder.add_edge(\"ok_node\", END)\n", - "graph = builder.compile()\n", - "\n", - "# Test the graph with a valid input\n", - "try:\n", - " graph.invoke({\"a\": \"hello\"})\n", - "except Exception as e:\n", - " print(\"An exception was raised because bad_node sets `a` to an integer.\")\n", - " print(e)" - ] - }, - { - "cell_type": "markdown", - "id": "456b1f77", - "metadata": {}, - "source": [ - "## Advanced Pydantic Model Usage\n", - "\n", - "This section covers more advanced topics when using Pydantic models with LangGraph.\n", - "\n", - "### Serialization Behavior\n", - "\n", - "When using Pydantic models as state schemas, it's important to understand how serialization works, especially when:\n", - "- Passing Pydantic objects as inputs\n", - "- Receiving outputs from the graph\n", - "- Working with nested Pydantic models\n", - "\n", - "Let's see these behaviors in action:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "0e919cdc", - "metadata": {}, - "outputs": [], - "source": [ - "from langgraph.graph import StateGraph, START, END\n", - "from pydantic import BaseModel\n", - "\n", - "\n", - "class NestedModel(BaseModel):\n", - " value: str\n", - "\n", - "\n", - "class ComplexState(BaseModel):\n", - " text: str\n", - " count: int\n", - " nested: NestedModel\n", - "\n", - "\n", - "def process_node(state: ComplexState):\n", - " # Node receives a validated Pydantic object\n", - " print(f\"Input state type: {type(state)}\")\n", - " print(f\"Nested type: {type(state.nested)}\")\n", - "\n", - " # Return a dictionary update\n", - " return {\"text\": state.text + \" processed\", \"count\": state.count + 1}\n", - "\n", - "\n", - "# Build the graph\n", - "builder = StateGraph(ComplexState)\n", - "builder.add_node(\"process\", process_node)\n", - "builder.add_edge(START, \"process\")\n", - "builder.add_edge(\"process\", END)\n", - "graph = builder.compile()\n", - "\n", - "# Create a Pydantic instance for input\n", - "input_state = ComplexState(text=\"hello\", count=0, nested=NestedModel(value=\"test\"))\n", - "print(f\"Input object type: {type(input_state)}\")\n", - "\n", - "# Invoke graph with a Pydantic instance\n", - "result = graph.invoke(input_state)\n", - "print(f\"Output type: {type(result)}\")\n", - "print(f\"Output content: {result}\")\n", - "\n", - "# Convert back to Pydantic model if needed\n", - "output_model = ComplexState(**result)\n", - "print(f\"Converted back to Pydantic: {type(output_model)}\")" - ] - }, - { - "cell_type": "markdown", - "id": "f13f28ce", - "metadata": {}, - "source": [ - "### Runtime Type Coercion\n", - "\n", - "Pydantic performs runtime type coercion for certain data types. This can be helpful but also lead to unexpected behavior if you're not aware of it." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "faf59316", - "metadata": {}, - "outputs": [], - "source": [ - "from langgraph.graph import StateGraph, START, END\n", - "from pydantic import BaseModel\n", - "\n", - "\n", - "class CoercionExample(BaseModel):\n", - " # Pydantic will coerce string numbers to integers\n", - " number: int\n", - " # Pydantic will parse string booleans to bool\n", - " flag: bool\n", - "\n", - "\n", - "def inspect_node(state: CoercionExample):\n", - " print(f\"number: {state.number} (type: {type(state.number)})\")\n", - " print(f\"flag: {state.flag} (type: {type(state.flag)})\")\n", - " return {}\n", - "\n", - "\n", - "builder = StateGraph(CoercionExample)\n", - "builder.add_node(\"inspect\", inspect_node)\n", - "builder.add_edge(START, \"inspect\")\n", - "builder.add_edge(\"inspect\", END)\n", - "graph = builder.compile()\n", - "\n", - "# Demonstrate coercion with string inputs that will be converted\n", - "result = graph.invoke({\"number\": \"42\", \"flag\": \"true\"})\n", - "\n", - "# This would fail with a validation error\n", - "try:\n", - " graph.invoke({\"number\": \"not-a-number\", \"flag\": \"true\"})\n", - "except Exception as e:\n", - " print(f\"\\nExpected validation error: {e}\")" - ] - }, - { - "cell_type": "markdown", - "id": "2844475b", - "metadata": {}, - "source": [ - "### Working with Message Models\n", - "\n", - "When working with LangChain message types in your state schema, there are important considerations for serialization. You should use `AnyMessage` (rather than `BaseMessage`) for proper serialization/deserialization when using message objects over the wire:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "bd0734b0", - "metadata": {}, - "outputs": [], - "source": [ - "from langgraph.graph import StateGraph, START, END\n", - "from pydantic import BaseModel\n", - "from langchain_core.messages import HumanMessage, AIMessage, AnyMessage\n", - "from typing import List\n", - "\n", - "\n", - "class ChatState(BaseModel):\n", - " messages: List[AnyMessage]\n", - " context: str\n", - "\n", - "\n", - "def add_message(state: ChatState):\n", - " return {\"messages\": state.messages + [AIMessage(content=\"Hello there!\")]}\n", - "\n", - "\n", - "builder = StateGraph(ChatState)\n", - "builder.add_node(\"add_message\", add_message)\n", - "builder.add_edge(START, \"add_message\")\n", - "builder.add_edge(\"add_message\", END)\n", - "graph = builder.compile()\n", - "\n", - "# Create input with a message\n", - "initial_state = ChatState(\n", - " messages=[HumanMessage(content=\"Hi\")], context=\"Customer support chat\"\n", - ")\n", - "\n", - "result = graph.invoke(initial_state)\n", - "print(f\"Output: {result}\")\n", - "\n", - "# Convert back to Pydantic model to see message types\n", - "output_model = ChatState(**result)\n", - "for i, msg in enumerate(output_model.messages):\n", - " print(f\"Message {i}: {type(msg).__name__} - {msg.content}\")" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.4" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/docs/docs/how-tos/state-reducers.ipynb b/docs/docs/how-tos/state-reducers.ipynb deleted file mode 100644 index dd66a15c0..000000000 --- a/docs/docs/how-tos/state-reducers.ipynb +++ /dev/null @@ -1,430 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# How to update graph state from nodes\n", - "\n", - "This guide demonstrates how to define and update [state](../../concepts/low_level/#state) in LangGraph. We will demonstrate:\n", - "\n", - "1. How to use state to define a graph's [schema](../../concepts/low_level/#schema)\n", - "2. How to use [reducers](../../concepts/low_level/#reducers) to control how state updates are processed.\n", - "\n", - "We will use [messages](../../concepts/low_level/#messagesstate) in our examples. This represents a versatile formulation of state for many LLM applications. See our [concepts page](../../concepts/low_level/#working-with-messages-in-graph-state) for more detail.\n", - "\n", - "## Setup\n", - "\n", - "First, let's install langgraph:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "%%capture --no-stderr\n", - "%pip install -U langgraph" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "

    Set up LangSmith for better debugging

    \n", - "

    \n", - " Sign up for LangSmith to quickly spot issues and improve the performance of your LangGraph projects. LangSmith lets you use trace data to debug, test, and monitor your LLM aps built with LangGraph — read more about how to get started in the docs. \n", - "

    \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Example graph\n", - "\n", - "### Define state\n", - "[State](../../concepts/low_level/#state) in LangGraph can be a `TypedDict`, `Pydantic` model, or dataclass. Below we will use `TypedDict`. See [this guide](../../how-tos/state-model) for detail on using Pydantic.\n", - "\n", - "By default, graphs will have the same input and output schema, and the state determines that schema. See [this guide](../../how-tos/input_output_schema/) for how to define distinct input and output schemas.\n", - "\n", - "Let's consider a simple example:" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "from langchain_core.messages import AnyMessage\n", - "from typing_extensions import TypedDict\n", - "\n", - "\n", - "class State(TypedDict):\n", - " messages: list[AnyMessage]\n", - " extra_field: int" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This state tracks a list of [message](https://python.langchain.com/docs/concepts/messages/) objects, as well as an extra integer field.\n", - "\n", - "### Define graph structure\n", - "\n", - "Let's build an example graph with a single node. Our [node](../../concepts/low_level/#nodes) is just a Python function that reads our graph's state and makes updates to it. The first argument to this function will always be the state:" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "from langchain_core.messages import AIMessage\n", - "\n", - "\n", - "def node(state: State):\n", - " messages = state[\"messages\"]\n", - " new_message = AIMessage(\"Hello!\")\n", - "\n", - " return {\"messages\": messages + [new_message], \"extra_field\": 10}" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This node simply appends a message to our message list, and populates an extra field.\n", - "\n", - "!!! important\n", - "\n", - " Nodes should return updates to the state directly, instead of mutating the state.\n", - "\n", - "Let's next define a simple graph containing this node. We use [StateGraph](../../concepts/low_level/#stategraph) to define a graph that operates on this state. We then use [add_node](../../concepts/low_level/#messagesstate) populate our graph." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "from langgraph.graph import StateGraph\n", - "\n", - "graph_builder = StateGraph(State)\n", - "graph_builder.add_node(node)\n", - "graph_builder.set_entry_point(\"node\")\n", - "graph = graph_builder.compile()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "LangGraph provides built-in utilities for visualizing your graph. Let's inspect our graph. See [this guide](../../how-tos/visualization) for detail on visualization." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from IPython.display import Image, display\n", - "\n", - "display(Image(graph.get_graph().draw_mermaid_png()))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In this case, our graph just executes a single node." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Use graph\n", - "\n", - "Let's proceed with a simple invocation:" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'messages': [HumanMessage(content='Hi', additional_kwargs={}, response_metadata={}),\n", - " AIMessage(content='Hello!', additional_kwargs={}, response_metadata={})],\n", - " 'extra_field': 10}" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "from langchain_core.messages import HumanMessage\n", - "\n", - "result = graph.invoke({\"messages\": [HumanMessage(\"Hi\")]})\n", - "result" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note that:\n", - "\n", - "- We kicked off invocation by updating a single key of the state.\n", - "- We receive the entire state in the invocation result.\n", - "\n", - "For convenience, we frequently inspect the content of [message objects](https://python.langchain.com/docs/concepts/messages/) via pretty-print:" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "================================\u001b[1m Human Message \u001b[0m=================================\n", - "\n", - "Hi\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "Hello!\n" - ] - } - ], - "source": [ - "for message in result[\"messages\"]:\n", - " message.pretty_print()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Process state updates with reducers\n", - "\n", - "Each key in the state can have its own independent [reducer](../../concepts/low_level/#reducers) function, which controls how updates from nodes are applied. If no reducer function is explicitly specified then it is assumed that all updates to the key should override it.\n", - "\n", - "For `TypedDict` state schemas, we can define reducers by annotating the corresponding field of the state with a reducer function.\n", - "\n", - "In the earlier example, our node updated the `\"messages\"` key in the state by appending a message to it. Below, we add a reducer to this key, such that updates are automatically appended:" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "from typing_extensions import Annotated\n", - "\n", - "\n", - "def add(left, right):\n", - " \"\"\"Can also import `add` from the `operator` built-in.\"\"\"\n", - " return left + right\n", - "\n", - "\n", - "class State(TypedDict):\n", - " # highlight-next-line\n", - " messages: Annotated[list[AnyMessage], add]\n", - " extra_field: int" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now our node can be simplified:" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [], - "source": [ - "def node(state: State):\n", - " new_message = AIMessage(\"Hello!\")\n", - " # highlight-next-line\n", - " return {\"messages\": [new_message], \"extra_field\": 10}" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "================================\u001b[1m Human Message \u001b[0m=================================\n", - "\n", - "Hi\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "Hello!\n" - ] - } - ], - "source": [ - "from langgraph.graph import START\n", - "\n", - "\n", - "graph = StateGraph(State).add_node(node).add_edge(START, \"node\").compile()\n", - "\n", - "result = graph.invoke({\"messages\": [HumanMessage(\"Hi\")]})\n", - "\n", - "for message in result[\"messages\"]:\n", - " message.pretty_print()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### MessagesState\n", - "\n", - "In practice, there are additional considerations for updating lists of messages:\n", - "\n", - "- We may wish to update an existing message in the state.\n", - "- We may want to accept short-hands for [message formats](../../concepts/low_level/#using-messages-in-your-graph), such as [OpenAI format](https://python.langchain.com/docs/concepts/messages/#openai-format).\n", - "\n", - "LangGraph includes a built-in reducer `add_messages` that handles these considerations:" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [], - "source": [ - "from langgraph.graph.message import add_messages\n", - "\n", - "\n", - "class State(TypedDict):\n", - " # highlight-next-line\n", - " messages: Annotated[list[AnyMessage], add_messages]\n", - " extra_field: int\n", - "\n", - "\n", - "def node(state: State):\n", - " new_message = AIMessage(\"Hello!\")\n", - " return {\"messages\": [new_message], \"extra_field\": 10}\n", - "\n", - "\n", - "graph = StateGraph(State).add_node(node).set_entry_point(\"node\").compile()" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "================================\u001b[1m Human Message \u001b[0m=================================\n", - "\n", - "Hi\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "Hello!\n" - ] - } - ], - "source": [ - "# highlight-next-line\n", - "input_message = {\"role\": \"user\", \"content\": \"Hi\"}\n", - "\n", - "result = graph.invoke({\"messages\": [input_message]})\n", - "\n", - "for message in result[\"messages\"]:\n", - " message.pretty_print()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This is a versatile representation of state for applications involving [chat models](https://python.langchain.com/docs/concepts/chat_models/). LangGraph includes a pre-built `MessagesState` for convenience, so that we can have:" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [], - "source": [ - "from langgraph.graph import MessagesState\n", - "\n", - "\n", - "class State(MessagesState):\n", - " extra_field: int" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Next steps\n", - "\n", - "- Continue with the [Graph API Basics](../../how-tos/#graph-api-basics) guides.\n", - "- See more detail on [state management](../../how-tos/#state-management)." - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.4" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/docs/docs/how-tos/streaming-events-from-within-tools.ipynb b/docs/docs/how-tos/streaming-events-from-within-tools.ipynb deleted file mode 100644 index fca8586af..000000000 --- a/docs/docs/how-tos/streaming-events-from-within-tools.ipynb +++ /dev/null @@ -1,505 +0,0 @@ -{ - "cells": [ - { - "attachments": {}, - "cell_type": "markdown", - "id": "695d935e-b4fe-45a6-a061-a66d32cb832b", - "metadata": {}, - "source": [ - "# How to stream data from within a tool\n", - "\n", - "!!! info \"Prerequisites\"\n", - "\n", - " This guide assumes familiarity with the following:\n", - " \n", - " - [Streaming](../../concepts/streaming/)\n", - " - [Chat Models](https://python.langchain.com/docs/concepts/chat_models/)\n", - " - [Tools](https://python.langchain.com/docs/concepts/tools/)\n", - "\n", - "If your graph calls tools that use LLMs or any other streaming APIs, you might want to surface partial results during the execution of the tool, especially if the tool takes a longer time to run.\n", - "\n", - "1. To stream **arbitrary** data from inside a tool you can use [`stream_mode=\"custom\"`](../streaming#custom) and `get_stream_writer()`:\n", - "\n", - " ```python\n", - " # highlight-next-line\n", - " from langgraph.config import get_stream_writer\n", - " \n", - " def tool(tool_arg: str):\n", - " writer = get_stream_writer()\n", - " for chunk in custom_data_stream():\n", - " # stream any arbitrary data\n", - " # highlight-next-line\n", - " writer(chunk)\n", - " ...\n", - " \n", - " for chunk in graph.stream(\n", - " inputs,\n", - " # highlight-next-line\n", - " stream_mode=\"custom\"\n", - " ):\n", - " print(chunk)\n", - " ```\n", - "\n", - "2. To stream LLM tokens generated by a tool calling an LLM you can use [`stream_mode=\"messages\"`](../streaming#messages):\n", - "\n", - " ```python\n", - " from langgraph.graph import StateGraph, MessagesState\n", - " from langchain_openai import ChatOpenAI\n", - " \n", - " model = ChatOpenAI()\n", - " \n", - " def tool(tool_arg: str):\n", - " model.invoke(tool_arg)\n", - " ...\n", - " \n", - " def call_tools(state: MessagesState):\n", - " tool_call = get_tool_call(state)\n", - " tool_result = tool(**tool_call[\"args\"])\n", - " ...\n", - " \n", - " graph = (\n", - " StateGraph(MessagesState)\n", - " .add_node(call_tools)\n", - " ...\n", - " .compile()\n", - " \n", - " for msg, metadata in graph.stream(\n", - " inputs,\n", - " # highlight-next-line\n", - " stream_mode=\"messages\"\n", - " ):\n", - " print(msg)\n", - " ```\n", - "\n", - "!!! note \"Using without LangChain\"\n", - "\n", - " If you need to stream data from inside tools **without using LangChain**, you can use [`stream_mode=\"custom\"`](../streaming/#custom). Check out the [example below](#example-without-langchain) to learn more.\n", - "\n", - "!!! warning \"Async in Python < 3.11\"\n", - " \n", - " When using Python < 3.11 with async code, please ensure you manually pass the `RunnableConfig` through to the chat model when invoking it like so: `model.ainvoke(..., config)`.\n", - " The stream method collects all events from your nested code using a streaming tracer passed as a callback. In 3.11 and above, this is automatically handled via [contextvars](https://docs.python.org/3/library/contextvars.html); prior to 3.11, [asyncio's tasks](https://docs.python.org/3/library/asyncio-task.html#asyncio.create_task) lacked proper `contextvar` support, meaning that the callbacks will only propagate if you manually pass the config through. We do this in the `call_model` function below.\n", - "\n", - "## Setup\n", - "\n", - "First, let's install the required packages and set our API keys" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "b364dfe2-010b-4588-8489-fb4d8be1f200", - "metadata": {}, - "outputs": [], - "source": [ - "%%capture --no-stderr\n", - "%pip install -U langgraph langchain-openai" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "0cf6b41d-7fcb-40b6-9a72-229cdd00a094", - "metadata": {}, - "outputs": [ - { - "name": "stdin", - "output_type": "stream", - "text": [ - "OPENAI_API_KEY: ········\n" - ] - } - ], - "source": [ - "import getpass\n", - "import os\n", - "\n", - "\n", - "def _set_env(var: str):\n", - " if not os.environ.get(var):\n", - " os.environ[var] = getpass.getpass(f\"{var}: \")\n", - "\n", - "\n", - "_set_env(\"OPENAI_API_KEY\")" - ] - }, - { - "cell_type": "markdown", - "id": "767cd76a", - "metadata": {}, - "source": [ - "
    \n", - "

    Set up LangSmith for LangGraph development

    \n", - "

    \n", - " Sign up for LangSmith to quickly spot issues and improve the performance of your LangGraph projects. LangSmith lets you use trace data to debug, test, and monitor your LLM apps built with LangGraph — read more about how to get started here. \n", - "

    \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "id": "b4ddc3ff-5620-48de-82f0-03b9137410cf", - "metadata": {}, - "source": [ - "## Streaming custom data\n", - "\n", - "We'll use a [prebuilt ReAct agent][langgraph.prebuilt.chat_agent_executor.create_react_agent] for this guide:" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "f1975577-a485-42bd-b0f1-d3e987faf52b", - "metadata": {}, - "outputs": [], - "source": [ - "from langchain_core.tools import tool\n", - "from langchain_openai import ChatOpenAI\n", - "\n", - "from langgraph.prebuilt import create_react_agent\n", - "from langgraph.config import get_stream_writer\n", - "\n", - "\n", - "@tool\n", - "async def get_items(place: str) -> str:\n", - " \"\"\"Use this tool to list items one might find in a place you're asked about.\"\"\"\n", - " # highlight-next-line\n", - " writer = get_stream_writer()\n", - "\n", - " # this can be replaced with any actual streaming logic that you might have\n", - " items = [\"books\", \"penciles\", \"pictures\"]\n", - " for chunk in items:\n", - " # highlight-next-line\n", - " writer({\"custom_tool_data\": chunk})\n", - "\n", - " return \", \".join(items)\n", - "\n", - "\n", - "llm = ChatOpenAI(model_name=\"gpt-4o-mini\")\n", - "tools = [get_items]\n", - "# contains `agent` (tool-calling LLM) and `tools` (tool executor) nodes\n", - "agent = create_react_agent(llm, tools=tools)" - ] - }, - { - "cell_type": "markdown", - "id": "fa96d572-d15f-4f00-b629-cf25e0b4dece", - "metadata": {}, - "source": [ - "Let's now invoke our agent with an input that requires a tool call:" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "8ae5051c-53b9-4c53-87b2-d7263cda3b7b", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'custom_tool_data': 'books'}\n", - "{'custom_tool_data': 'penciles'}\n", - "{'custom_tool_data': 'pictures'}\n" - ] - } - ], - "source": [ - "inputs = {\n", - " \"messages\": [ # noqa\n", - " {\"role\": \"user\", \"content\": \"what items are in the office?\"}\n", - " ]\n", - "}\n", - "async for chunk in agent.astream(\n", - " inputs,\n", - " # highlight-next-line\n", - " stream_mode=\"custom\",\n", - "):\n", - " print(chunk)" - ] - }, - { - "cell_type": "markdown", - "id": "6d8fa9fc-19af-47d6-9031-ee1720c51aa2", - "metadata": {}, - "source": [ - "## Streaming LLM tokens" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "38eaf453-9773-424d-a110-9e1038a69805", - "metadata": {}, - "outputs": [], - "source": [ - "from langchain_core.messages import AIMessageChunk\n", - "from langchain_core.runnables import RunnableConfig\n", - "\n", - "\n", - "@tool\n", - "async def get_items(\n", - " place: str,\n", - " # Manually accept config (needed for Python <= 3.10)\n", - " # highlight-next-line\n", - " config: RunnableConfig,\n", - ") -> str:\n", - " \"\"\"Use this tool to list items one might find in a place you're asked about.\"\"\"\n", - " # Attention: when using async, you should be invoking the LLM using ainvoke!\n", - " # If you fail to do so, streaming will NOT work.\n", - " response = await llm.ainvoke(\n", - " [\n", - " {\n", - " \"role\": \"user\",\n", - " \"content\": (\n", - " f\"Can you tell me what kind of items i might find in the following place: '{place}'. \"\n", - " \"List at least 3 such items separating them by a comma. And include a brief description of each item.\"\n", - " ),\n", - " }\n", - " ],\n", - " # highlight-next-line\n", - " config,\n", - " )\n", - " return response.content\n", - "\n", - "\n", - "tools = [get_items]\n", - "# contains `agent` (tool-calling LLM) and `tools` (tool executor) nodes\n", - "agent = create_react_agent(llm, tools=tools)" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "4c9cdad3-3e9a-444f-9d9d-eae20b8d3486", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Certainly|!| Here| are| three| items| you| might| find| in| a| bedroom|:\n", - "\n", - "|1|.| **|Bed|**|:| The| central| piece| of| furniture| in| a| bedroom|,| typically| consisting| of| a| mattress| supported| by| a| frame|.| It| is| designed| for| sleeping| and| can| vary| in| size| from| twin| to| king|.| Beds| often| have| bedding|,| including| sheets|,| pillows|,| and| comfort|ers|,| to| enhance| comfort|.\n", - "\n", - "|2|.| **|D|resser|**|:| A| piece| of| furniture| with| drawers| used| for| storing| clothing| and| personal| items|.| Dress|ers| often| have| a| flat| surface| on| top|,| which| can| be| used| for| decorative| items|,| a| mirror|,| or| personal| accessories|.| They| help| keep| the| bedroom| organized| and| clutter|-free|.\n", - "\n", - "|3|.| **|Night|stand|**|:| A| small| table| or| cabinet| placed| beside| the| bed|,| used| for| holding| items| such| as| a| lamp|,| alarm| clock|,| books|,| or| personal| items|.| Night|stands| provide| convenience| for| easy| access| to| essentials| during| the| night|,| adding| functionality| and| style| to| the| bedroom| decor|.|" - ] - } - ], - "source": [ - "inputs = {\n", - " \"messages\": [ # noqa\n", - " {\"role\": \"user\", \"content\": \"what items are in the bedroom?\"}\n", - " ]\n", - "}\n", - "async for msg, metadata in agent.astream(\n", - " inputs,\n", - " # highlight-next-line\n", - " stream_mode=\"messages\",\n", - "):\n", - " if (\n", - " isinstance(msg, AIMessageChunk)\n", - " and msg.content\n", - " # Stream all messages from the tool node\n", - " # highlight-next-line\n", - " and metadata[\"langgraph_node\"] == \"tools\"\n", - " ):\n", - " print(msg.content, end=\"|\", flush=True)" - ] - }, - { - "cell_type": "markdown", - "id": "d598d7e2-617d-4c06-bc9a-6a03d5f58499", - "metadata": {}, - "source": [ - "## Example without LangChain" - ] - }, - { - "cell_type": "markdown", - "id": "780ddcb6-63a7-4c83-a739-bafbe3cd135a", - "metadata": {}, - "source": [ - "You can also stream data from within tool invocations **without using LangChain**. Below example demonstrates how to do it for a graph with a single tool-executing node. We'll leave it as an exercise for the reader to [implement ReAct agent from scratch](../react-agent-from-scratch) without using LangChain." - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "3e8be67f-4bb8-4f14-9fdb-fc60340f3930", - "metadata": {}, - "outputs": [], - "source": [ - "import operator\n", - "import json\n", - "\n", - "from typing import TypedDict\n", - "from typing_extensions import Annotated\n", - "from langgraph.graph import StateGraph, START\n", - "\n", - "from openai import AsyncOpenAI\n", - "\n", - "openai_client = AsyncOpenAI()\n", - "model_name = \"gpt-4o-mini\"\n", - "\n", - "\n", - "async def stream_tokens(model_name: str, messages: list[dict]):\n", - " response = await openai_client.chat.completions.create(\n", - " messages=messages, model=model_name, stream=True\n", - " )\n", - " role = None\n", - " async for chunk in response:\n", - " delta = chunk.choices[0].delta\n", - "\n", - " if delta.role is not None:\n", - " role = delta.role\n", - "\n", - " if delta.content:\n", - " yield {\"role\": role, \"content\": delta.content}\n", - "\n", - "\n", - "# this is our tool\n", - "async def get_items(place: str) -> str:\n", - " \"\"\"Use this tool to list items one might find in a place you're asked about.\"\"\"\n", - " # highlight-next-line\n", - " writer = get_stream_writer()\n", - " response = \"\"\n", - " async for msg_chunk in stream_tokens(\n", - " model_name,\n", - " [\n", - " {\n", - " \"role\": \"user\",\n", - " \"content\": (\n", - " \"Can you tell me what kind of items \"\n", - " f\"i might find in the following place: '{place}'. \"\n", - " \"List at least 3 such items separating them by a comma. \"\n", - " \"And include a brief description of each item.\"\n", - " ),\n", - " }\n", - " ],\n", - " ):\n", - " response += msg_chunk[\"content\"]\n", - " # highlight-next-line\n", - " writer(msg_chunk)\n", - "\n", - " return response\n", - "\n", - "\n", - "class State(TypedDict):\n", - " messages: Annotated[list[dict], operator.add]\n", - "\n", - "\n", - "# this is the tool-calling graph node\n", - "async def call_tool(state: State):\n", - " ai_message = state[\"messages\"][-1]\n", - " tool_call = ai_message[\"tool_calls\"][-1]\n", - "\n", - " function_name = tool_call[\"function\"][\"name\"]\n", - " if function_name != \"get_items\":\n", - " raise ValueError(f\"Tool {function_name} not supported\")\n", - "\n", - " function_arguments = tool_call[\"function\"][\"arguments\"]\n", - " arguments = json.loads(function_arguments)\n", - "\n", - " function_response = await get_items(**arguments)\n", - " tool_message = {\n", - " \"tool_call_id\": tool_call[\"id\"],\n", - " \"role\": \"tool\",\n", - " \"name\": function_name,\n", - " \"content\": function_response,\n", - " }\n", - " return {\"messages\": [tool_message]}\n", - "\n", - "\n", - "graph = (\n", - " StateGraph(State) # noqa\n", - " .add_node(call_tool)\n", - " .add_edge(START, \"call_tool\")\n", - " .compile()\n", - ")" - ] - }, - { - "cell_type": "markdown", - "id": "4e712d12-841c-4eac-a4d8-d01c73c86c8c", - "metadata": {}, - "source": [ - "Let's now invoke our graph with an AI message that contains a tool call:" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "2c30c7b4-62df-4855-8219-d5e1a1a09be9", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Sure|!| Here| are| three| common| items| you| might| find| in| a| bedroom|:\n", - "\n", - "|1|.| **|Bed|**|:| The| focal| point| of| the| bedroom|,| a| bed| typically| consists| of| a| mattress| resting| on| a| frame|,| and| it| may| include| pillows| and| bedding|.| It| provides| a| comfortable| place| for| sleeping| and| resting|.\n", - "\n", - "|2|.| **|D|resser|**|:| A| piece| of| furniture| with| multiple| drawers|,| a| dresser| is| used| for| storing| clothes|,| accessories|,| and| personal| items|.| It| often| has| a| flat| surface| that| may| be| used| to| display| decorative| items| or| a| mirror|.\n", - "\n", - "|3|.| **|Night|stand|**|:| Also| known| as| a| bedside| table|,| a| night|stand| is| placed| next| to| the| bed| and| typically| holds| items| like| lamps|,| books|,| alarm| clocks|,| and| personal| belongings| for| convenience| during| the| night|.\n", - "\n", - "|These| items| contribute| to| the| functionality| and| comfort| of| the| bedroom| environment|.|" - ] - } - ], - "source": [ - "inputs = {\n", - " \"messages\": [\n", - " {\n", - " \"content\": None,\n", - " \"role\": \"assistant\",\n", - " \"tool_calls\": [\n", - " {\n", - " \"id\": \"1\",\n", - " \"function\": {\n", - " \"arguments\": '{\"place\":\"bedroom\"}',\n", - " \"name\": \"get_items\",\n", - " },\n", - " \"type\": \"function\",\n", - " }\n", - " ],\n", - " }\n", - " ]\n", - "}\n", - "\n", - "async for chunk in graph.astream(\n", - " inputs,\n", - " # highlight-next-line\n", - " stream_mode=\"custom\",\n", - "):\n", - " print(chunk[\"content\"], end=\"|\", flush=True)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.3" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/docs/docs/how-tos/streaming-specific-nodes.ipynb b/docs/docs/how-tos/streaming-specific-nodes.ipynb deleted file mode 100644 index fd9d8c6ee..000000000 --- a/docs/docs/how-tos/streaming-specific-nodes.ipynb +++ /dev/null @@ -1,211 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "c5889ca0-6feb-4864-a630-e97ccc2c587e", - "metadata": {}, - "source": [ - "# How to stream LLM tokens from specific nodes\n", - "\n", - "!!! info \"Prerequisites\"\n", - "\n", - " This guide assumes familiarity with the following:\n", - " \n", - " - [Streaming](../../concepts/streaming/)\n", - " - [Chat Models](https://python.langchain.com/docs/concepts/chat_models/)\n", - "\n", - "A common use case when [streaming LLM tokens](../streaming-tokens) is to only stream them from specific nodes. To do so, you can use `stream_mode=\"messages\"` and filter the outputs by the `langgraph_node` field in the streamed metadata:\n", - "\n", - "```python\n", - "from langgraph.graph import StateGraph\n", - "from langchain_openai import ChatOpenAI\n", - "\n", - "model = ChatOpenAI()\n", - "\n", - "def node_a(state: State):\n", - " model.invoke(...)\n", - " ...\n", - "\n", - "def node_b(state: State):\n", - " model.invoke(...)\n", - " ...\n", - "\n", - "graph = (\n", - " StateGraph(State)\n", - " .add_node(node_a)\n", - " .add_node(node_b)\n", - " ...\n", - " .compile()\n", - " \n", - "for msg, metadata in graph.stream(\n", - " inputs,\n", - " # highlight-next-line\n", - " stream_mode=\"messages\"\n", - "):\n", - " # stream from 'node_a'\n", - " # highlight-next-line\n", - " if metadata[\"langgraph_node\"] == \"node_a\":\n", - " print(msg)\n", - "```\n", - "\n", - "!!! note \"Streaming from a specific LLM invocation\"\n", - "\n", - " If you need to instead filter streamed LLM tokens to a specific LLM invocation, check out [this guide](../streaming-tokens#filter-to-specific-llm-invocation)" - ] - }, - { - "cell_type": "markdown", - "id": "dcff85bd-8a5d-409e-93d4-e9242b5e976d", - "metadata": {}, - "source": [ - "## Setup\n", - "\n", - "First we need to install the packages required" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "05157237-783c-49de-9f29-7dca3c285647", - "metadata": {}, - "outputs": [], - "source": [ - "%%capture --no-stderr\n", - "%pip install --quiet -U langgraph langchain_openai" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "efd22cd2-3152-433b-ad50-65be8ace61d4", - "metadata": {}, - "outputs": [], - "source": [ - "import getpass\n", - "import os\n", - "\n", - "\n", - "def _set_env(var: str):\n", - " if not os.environ.get(var):\n", - " os.environ[var] = getpass.getpass(f\"{var}: \")\n", - "\n", - "\n", - "_set_env(\"OPENAI_API_KEY\")" - ] - }, - { - "cell_type": "markdown", - "id": "a0ce8c26-f38d-4bdb-89ff-b058e7560019", - "metadata": {}, - "source": [ - "## Example" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "419a3c71-7bf6-4656-99b8-b5d61f3f4bf1", - "metadata": {}, - "outputs": [], - "source": [ - "from typing import TypedDict\n", - "from langgraph.graph import START, StateGraph, MessagesState\n", - "from langchain_openai import ChatOpenAI\n", - "\n", - "model = ChatOpenAI(model=\"gpt-4o-mini\")\n", - "\n", - "\n", - "class State(TypedDict):\n", - " topic: str\n", - " joke: str\n", - " poem: str\n", - "\n", - "\n", - "def write_joke(state: State):\n", - " topic = state[\"topic\"]\n", - " joke_response = model.invoke(\n", - " [{\"role\": \"user\", \"content\": f\"Write a joke about {topic}\"}]\n", - " )\n", - " return {\"joke\": joke_response.content}\n", - "\n", - "\n", - "def write_poem(state: State):\n", - " topic = state[\"topic\"]\n", - " poem_response = model.invoke(\n", - " [{\"role\": \"user\", \"content\": f\"Write a short poem about {topic}\"}]\n", - " )\n", - " return {\"poem\": poem_response.content}\n", - "\n", - "\n", - "graph = (\n", - " StateGraph(State)\n", - " .add_node(write_joke)\n", - " .add_node(write_poem)\n", - " # write both the joke and the poem concurrently\n", - " .add_edge(START, \"write_joke\")\n", - " .add_edge(START, \"write_poem\")\n", - " .compile()\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "fed84d5e-ba10-4324-a664-dca263951a33", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "In| shadows| soft|,| they| quietly| creep|,| \n", - "|Wh|isk|ered| wonders|,| in| dreams| they| leap|.| \n", - "|With| eyes| like| lantern|s|,| bright| and| wide|,| \n", - "|Myst|eries| linger| where| they| reside|.| \n", - "\n", - "|P|aws| that| pat|ter| on| silent| floors|,| \n", - "|Cur|led| in| sun|be|ams|,| they| seek| out| more|.| \n", - "|A| flick| of| a| tail|,| a| leap|,| a| p|ounce|,| \n", - "|In| their| playful| world|,| we| can't| help| but| bounce|.| \n", - "\n", - "|Guard|ians| of| secrets|,| with| gentle| grace|,| \n", - "|Each| little| me|ow|,| a| warm| embrace|.| \n", - "|Oh|,| the| joy| that| they| bring|,| so| pure| and| true|,| \n", - "|In| the| heart| of| a| cat|,| there's| magic| anew|.| |" - ] - } - ], - "source": [ - "for msg, metadata in graph.stream(\n", - " {\"topic\": \"cats\"},\n", - " # highlight-next-line\n", - " stream_mode=\"messages\",\n", - "):\n", - " # highlight-next-line\n", - " if msg.content and metadata[\"langgraph_node\"] == \"write_poem\":\n", - " print(msg.content, end=\"|\", flush=True)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.3" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/docs/docs/how-tos/streaming-subgraphs.ipynb b/docs/docs/how-tos/streaming-subgraphs.ipynb deleted file mode 100644 index d21fc4cca..000000000 --- a/docs/docs/how-tos/streaming-subgraphs.ipynb +++ /dev/null @@ -1,206 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# How to stream from subgraphs\n", - "\n", - "!!! info \"Prerequisites\"\n", - "\n", - " This guide assumes familiarity with the following:\n", - " \n", - " - [Subgraphs](../../concepts/low_level/#subgraphs)\n", - " - [Chat Models](https://python.langchain.com/docs/concepts/chat_models/)\n", - "\n", - "If you have created a graph with [subgraphs](../subgraph), you may wish to stream outputs from those subgraphs. To do so, you can specify `subgraphs=True` in parent graph's `.stream()` method:\n", - "\n", - "\n", - "```python\n", - "for chunk in parent_graph.stream(\n", - " {\"foo\": \"foo\"},\n", - " # highlight-next-line\n", - " subgraphs=True\n", - "):\n", - " print(chunk)\n", - "```\n", - "\n", - "## Setup\n", - "\n", - "First let's install the required packages" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "%%capture --no-stderr\n", - "%pip install -U langgraph" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "

    Set up LangSmith for LangGraph development

    \n", - "

    \n", - " Sign up for LangSmith to quickly spot issues and improve the performance of your LangGraph projects. LangSmith lets you use trace data to debug, test, and monitor your LLM apps built with LangGraph — read more about how to get started here. \n", - "

    \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Example" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's define a simple example:" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "from langgraph.graph import START, StateGraph\n", - "from typing import TypedDict\n", - "\n", - "\n", - "# Define subgraph\n", - "class SubgraphState(TypedDict):\n", - " foo: str # note that this key is shared with the parent graph state\n", - " bar: str\n", - "\n", - "\n", - "def subgraph_node_1(state: SubgraphState):\n", - " return {\"bar\": \"bar\"}\n", - "\n", - "\n", - "def subgraph_node_2(state: SubgraphState):\n", - " return {\"foo\": state[\"foo\"] + state[\"bar\"]}\n", - "\n", - "\n", - "subgraph_builder = StateGraph(SubgraphState)\n", - "subgraph_builder.add_node(subgraph_node_1)\n", - "subgraph_builder.add_node(subgraph_node_2)\n", - "subgraph_builder.add_edge(START, \"subgraph_node_1\")\n", - "subgraph_builder.add_edge(\"subgraph_node_1\", \"subgraph_node_2\")\n", - "subgraph = subgraph_builder.compile()\n", - "\n", - "\n", - "# Define parent graph\n", - "class ParentState(TypedDict):\n", - " foo: str\n", - "\n", - "\n", - "def node_1(state: ParentState):\n", - " return {\"foo\": \"hi! \" + state[\"foo\"]}\n", - "\n", - "\n", - "builder = StateGraph(ParentState)\n", - "builder.add_node(\"node_1\", node_1)\n", - "builder.add_node(\"node_2\", subgraph)\n", - "builder.add_edge(START, \"node_1\")\n", - "builder.add_edge(\"node_1\", \"node_2\")\n", - "graph = builder.compile()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's now stream the outputs from the graph:" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'node_1': {'foo': 'hi! foo'}}\n", - "{'node_2': {'foo': 'hi! foobar'}}\n" - ] - } - ], - "source": [ - "for chunk in graph.stream({\"foo\": \"foo\"}, stream_mode=\"updates\"):\n", - " print(chunk)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can see that we're only emitting the updates from the parent graph nodes (`node_1` and `node_2`). To emit the updates from the _subgraph_ nodes you can specify `subgraphs=True`:" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "((), {'node_1': {'foo': 'hi! foo'}})\n", - "(('node_2:b692b345-cfb3-b709-628c-f0ba9608f72e',), {'subgraph_node_1': {'bar': 'bar'}})\n", - "(('node_2:b692b345-cfb3-b709-628c-f0ba9608f72e',), {'subgraph_node_2': {'foo': 'hi! foobar'}})\n", - "((), {'node_2': {'foo': 'hi! foobar'}})\n" - ] - } - ], - "source": [ - "for chunk in graph.stream(\n", - " {\"foo\": \"foo\"},\n", - " stream_mode=\"updates\",\n", - " # highlight-next-line\n", - " subgraphs=True,\n", - "):\n", - " print(chunk)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Voila! The streamed outputs now contain updates from both the parent graph and the subgraph. **Note** that we are receiving not just the node updates, but we also the namespaces which tell us what graph (or subgraph) we are streaming from." - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.3" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/docs/docs/how-tos/streaming-tokens.ipynb b/docs/docs/how-tos/streaming-tokens.ipynb deleted file mode 100644 index 57812a460..000000000 --- a/docs/docs/how-tos/streaming-tokens.ipynb +++ /dev/null @@ -1,523 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "51466c8d-8ce4-4b3d-be4e-18fdbeda5f53", - "metadata": {}, - "source": [ - "# How to stream LLM tokens from your graph\n", - "\n", - "!!! info \"Prerequisites\"\n", - "\n", - " This guide assumes familiarity with the following:\n", - " \n", - " - [Streaming](../../concepts/streaming/)\n", - " - [Chat Models](https://python.langchain.com/docs/concepts/chat_models/)\n", - "\n", - "When building LLM applications with LangGraph, you might want to stream individual LLM tokens from the LLM calls inside LangGraph nodes. You can do so via `graph.stream(..., stream_mode=\"messages\")`:\n", - "\n", - "```python\n", - "from langgraph.graph import StateGraph\n", - "from langchain_openai import ChatOpenAI\n", - "\n", - "model = ChatOpenAI()\n", - "def call_model(state: State):\n", - " model.invoke(...)\n", - " ...\n", - "\n", - "graph = (\n", - " StateGraph(State)\n", - " .add_node(call_model)\n", - " ...\n", - " .compile()\n", - " \n", - "for msg, metadata in graph.stream(inputs, stream_mode=\"messages\"):\n", - " print(msg)\n", - "```\n", - "\n", - "The streamed outputs will be tuples of `(message chunk, metadata)`:\n", - "\n", - "* message chunk is the token streamed by the LLM\n", - "* metadata is a dictionary with information about the graph node where the LLM was called as well as the LLM invocation metadata\n", - "\n", - "!!! note \"Using without LangChain\"\n", - "\n", - " If you need to stream LLM tokens **without using LangChain**, you can use [`stream_mode=\"custom\"`](../streaming/#custom) to stream the outputs from LLM provider clients directly. Check out the [example below](#example-without-langchain) to learn more.\n", - "\n", - "!!! warning \"Async in Python < 3.11\"\n", - " \n", - " When using Python < 3.11 with async code, please ensure you manually pass the `RunnableConfig` through to the chat model when invoking it like so: `model.ainvoke(..., config)`.\n", - " The stream method collects all events from your nested code using a streaming tracer passed as a callback. In 3.11 and above, this is automatically handled via [contextvars](https://docs.python.org/3/library/contextvars.html); prior to 3.11, [asyncio's tasks](https://docs.python.org/3/library/asyncio-task.html#asyncio.create_task) lacked proper `contextvar` support, meaning that the callbacks will only propagate if you manually pass the config through. We do this in the `call_model` function below." - ] - }, - { - "cell_type": "markdown", - "id": "7cbd446a-808f-4394-be92-d45ab818953c", - "metadata": {}, - "source": [ - "## Setup\n", - "\n", - "First we need to install the packages required" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "af4ce0ba-7596-4e5f-8bf8-0b0bd6e62833", - "metadata": {}, - "outputs": [], - "source": [ - "%%capture --no-stderr\n", - "%pip install --quiet -U langgraph langchain_openai" - ] - }, - { - "cell_type": "markdown", - "id": "d67b5425", - "metadata": {}, - "source": [ - "Next, we need to set API keys for OpenAI (the LLM we will use)." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "a372be6f", - "metadata": {}, - "outputs": [], - "source": [ - "import getpass\n", - "import os\n", - "\n", - "\n", - "def _set_env(var: str):\n", - " if not os.environ.get(var):\n", - " os.environ[var] = getpass.getpass(f\"{var}: \")\n", - "\n", - "\n", - "_set_env(\"OPENAI_API_KEY\")" - ] - }, - { - "cell_type": "markdown", - "id": "cc088bbd", - "metadata": {}, - "source": [ - "
    \n", - "

    Set up LangSmith for LangGraph development

    \n", - "

    \n", - " Sign up for LangSmith to quickly spot issues and improve the performance of your LangGraph projects. LangSmith lets you use trace data to debug, test, and monitor your LLM apps built with LangGraph — read more about how to get started here. \n", - "

    \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "id": "e03c5094-9297-4d19-a04e-3eedc75cefb4", - "metadata": {}, - "source": [ - "!!! note Manual Callback Propagation\n", - "\n", - " Note that in `call_model(state: State, config: RunnableConfig):` below, we a) accept the [`RunnableConfig`](https://python.langchain.com/api_reference/core/runnables/langchain_core.runnables.config.RunnableConfig.html#langchain_core.runnables.config.RunnableConfig) in the node function and b) pass it in as the second arg for `model.ainvoke(..., config)`. This is optional for python >= 3.11." - ] - }, - { - "cell_type": "markdown", - "id": "ad2c85b6-28f8-4c7f-843a-c05cb7fd7187", - "metadata": {}, - "source": [ - "## Example" - ] - }, - { - "cell_type": "markdown", - "id": "afcbdd41-dff8-4118-8901-a619f91f3feb", - "metadata": {}, - "source": [ - "Below we demonstrate an example with two LLM calls in a single node." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "7cc5905f-df82-4b31-84ad-2054f463aee8", - "metadata": {}, - "outputs": [], - "source": [ - "from typing import TypedDict\n", - "from langgraph.graph import START, StateGraph, MessagesState\n", - "from langchain_openai import ChatOpenAI\n", - "\n", - "\n", - "# Note: we're adding the tags here to be able to filter the model outputs down the line\n", - "joke_model = ChatOpenAI(model=\"gpt-4o-mini\", tags=[\"joke\"])\n", - "poem_model = ChatOpenAI(model=\"gpt-4o-mini\", tags=[\"poem\"])\n", - "\n", - "\n", - "class State(TypedDict):\n", - " topic: str\n", - " joke: str\n", - " poem: str\n", - "\n", - "\n", - "# highlight-next-line\n", - "async def call_model(state, config):\n", - " topic = state[\"topic\"]\n", - " print(\"Writing joke...\")\n", - " # Note: Passing the config through explicitly is required for python < 3.11\n", - " # Since context var support wasn't added before then: https://docs.python.org/3/library/asyncio-task.html#creating-tasks\n", - " joke_response = await joke_model.ainvoke(\n", - " [{\"role\": \"user\", \"content\": f\"Write a joke about {topic}\"}],\n", - " # highlight-next-line\n", - " config,\n", - " )\n", - " print(\"\\n\\nWriting poem...\")\n", - " poem_response = await poem_model.ainvoke(\n", - " [{\"role\": \"user\", \"content\": f\"Write a short poem about {topic}\"}],\n", - " # highlight-next-line\n", - " config,\n", - " )\n", - " return {\"joke\": joke_response.content, \"poem\": poem_response.content}\n", - "\n", - "\n", - "graph = StateGraph(State).add_node(call_model).add_edge(START, \"call_model\").compile()" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "96050fba", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Writing joke...\n", - "Why| was| the| cat| sitting| on| the| computer|?\n", - "\n", - "|Because| it| wanted| to| keep| an| eye| on| the| mouse|!|\n", - "\n", - "Writing poem...\n", - "In| sun|lit| patches|,| sleek| and| sly|,| \n", - "|Wh|isk|ers| twitch| as| shadows| fly|.| \n", - "|With| velvet| paws| and| eyes| so| bright|,| \n", - "|They| dance| through| dreams|,| both| day| and| night|.| \n", - "\n", - "|A| playful| p|ounce|,| a| gentle| p|urr|,| \n", - "|In| every| leap|,| a| soft| allure|.| \n", - "|Cur|led| in| warmth|,| a| silent| grace|,| \n", - "|Each| furry| friend|,| a| warm| embrace|.| \n", - "\n", - "|Myst|ery| wrapped| in| fur| and| charm|,| \n", - "|A| soothing| presence|,| a| gentle| balm|.| \n", - "|In| their| gaze|,| the| world| slows| down|,| \n", - "|For| in| their| realm|,| we're| all| ren|own|.|" - ] - } - ], - "source": [ - "async for msg, metadata in graph.astream(\n", - " {\"topic\": \"cats\"},\n", - " # highlight-next-line\n", - " stream_mode=\"messages\",\n", - "):\n", - " if msg.content:\n", - " print(msg.content, end=\"|\", flush=True)" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "bcdf561d-a5cd-4197-9c65-9ab8af85941f", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'langgraph_step': 1,\n", - " 'langgraph_node': 'call_model',\n", - " 'langgraph_triggers': ['start:call_model'],\n", - " 'langgraph_path': ('__pregel_pull', 'call_model'),\n", - " 'langgraph_checkpoint_ns': 'call_model:6ddc5f0f-1dd0-325d-3014-f949286ce595',\n", - " 'checkpoint_ns': 'call_model:6ddc5f0f-1dd0-325d-3014-f949286ce595',\n", - " 'ls_provider': 'openai',\n", - " 'ls_model_name': 'gpt-4o-mini',\n", - " 'ls_model_type': 'chat',\n", - " 'ls_temperature': 0.7,\n", - " 'tags': ['poem']}" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "metadata" - ] - }, - { - "cell_type": "markdown", - "id": "7db91f8d-3e17-47f4-b45e-c72bbbcbb5ed", - "metadata": {}, - "source": [ - "### Filter to specific LLM invocation" - ] - }, - { - "cell_type": "markdown", - "id": "a3a72acd-98cc-43f6-9dbb-0e97d03d211b", - "metadata": {}, - "source": [ - "You can see that we're streaming tokens from all of the LLM invocations. Let's now filter the streamed tokens to include only a specific LLM invocation. We can use the streamed metadata and filter events using the tags we've added to the LLMs previously:" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "c9e0df34-6020-445e-8ecd-ca4239e9b22b", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Writing joke...\n", - "Why| was| the| cat| sitting| on| the| computer|?\n", - "\n", - "|Because| it| wanted| to| keep| an| eye| on| the| mouse|!|\n", - "\n", - "Writing poem...\n" - ] - } - ], - "source": [ - "async for msg, metadata in graph.astream(\n", - " {\"topic\": \"cats\"},\n", - " stream_mode=\"messages\",\n", - "):\n", - " # highlight-next-line\n", - " if msg.content and \"joke\" in metadata.get(\"tags\", []):\n", - " print(msg.content, end=\"|\", flush=True)" - ] - }, - { - "cell_type": "markdown", - "id": "be8fd3d7-a227-41ad-bd08-7ef994ab291b", - "metadata": {}, - "source": [ - "## Example without LangChain" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "699b3bab-9da7-4f2a-8006-93289350d89d", - "metadata": {}, - "outputs": [], - "source": [ - "from openai import AsyncOpenAI\n", - "\n", - "openai_client = AsyncOpenAI()\n", - "model_name = \"gpt-4o-mini\"\n", - "\n", - "\n", - "async def stream_tokens(model_name: str, messages: list[dict]):\n", - " response = await openai_client.chat.completions.create(\n", - " messages=messages, model=model_name, stream=True\n", - " )\n", - "\n", - " role = None\n", - " async for chunk in response:\n", - " delta = chunk.choices[0].delta\n", - "\n", - " if delta.role is not None:\n", - " role = delta.role\n", - "\n", - " if delta.content:\n", - " yield {\"role\": role, \"content\": delta.content}\n", - "\n", - "\n", - "# highlight-next-line\n", - "async def call_model(state, config, writer):\n", - " topic = state[\"topic\"]\n", - " joke = \"\"\n", - " poem = \"\"\n", - "\n", - " print(\"Writing joke...\")\n", - " async for msg_chunk in stream_tokens(\n", - " model_name, [{\"role\": \"user\", \"content\": f\"Write a joke about {topic}\"}]\n", - " ):\n", - " joke += msg_chunk[\"content\"]\n", - " metadata = {**config[\"metadata\"], \"tags\": [\"joke\"]}\n", - " chunk_to_stream = (msg_chunk, metadata)\n", - " # highlight-next-line\n", - " writer(chunk_to_stream)\n", - "\n", - " print(\"\\n\\nWriting poem...\")\n", - " async for msg_chunk in stream_tokens(\n", - " model_name, [{\"role\": \"user\", \"content\": f\"Write a short poem about {topic}\"}]\n", - " ):\n", - " poem += msg_chunk[\"content\"]\n", - " metadata = {**config[\"metadata\"], \"tags\": [\"poem\"]}\n", - " chunk_to_stream = (msg_chunk, metadata)\n", - " # highlight-next-line\n", - " writer(chunk_to_stream)\n", - "\n", - " return {\"joke\": joke, \"poem\": poem}\n", - "\n", - "\n", - "graph = StateGraph(State).add_node(call_model).add_edge(START, \"call_model\").compile()" - ] - }, - { - "cell_type": "markdown", - "id": "8af13d73-a0ea-44c0-a92e-28676cd164dd", - "metadata": {}, - "source": [ - "!!! note \"stream_mode=\"custom\"\"\n", - "\n", - " When streaming LLM tokens without LangChain, we recommend using [`stream_mode=\"custom\"`](../streaming/#stream-modecustom). This allows you to explicitly control which data from the LLM provider APIs to include in LangGraph streamed outputs, including any additional metadata." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "e977406d-7be6-4c9f-9185-5e5551f848f3", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Writing joke...\n", - "Why| was| the| cat| sitting| on| the| computer|?\n", - "\n", - "|Because| it| wanted| to| keep| an| eye| on| the|\n", - "\n", - "Writing poem...\n", - " mouse|!|In| sun|lit| patches|,| they| stretch| and| y|awn|,| \n", - "|With| whispered| paws| at| the| break| of| dawn|.| \n", - "|Wh|isk|ers| twitch| in| the| morning| light|,| \n", - "|Sil|ken| shadows|,| a| graceful| sight|.| \n", - "\n", - "|The| gentle| p|urr|s|,| a| soothing| song|,| \n", - "|In| a| world| of| comfort|,| where| they| belong|.| \n", - "|M|yster|ious| hearts| wrapped| in| soft|est| fur|,| \n", - "|F|eline| whispers| in| every| p|urr|.| \n", - "\n", - "|Ch|asing| dreams| on| a| moon|lit| chase|,| \n", - "|With| a| flick| of| a| tail|,| they| glide| with| grace|.| \n", - "|Oh|,| playful| spirits| of| whisk|ered| cheer|,| \n", - "|In| your| quiet| company|,| the| world| feels| near|.| |" - ] - } - ], - "source": [ - "async for msg, metadata in graph.astream(\n", - " {\"topic\": \"cats\"},\n", - " # highlight-next-line\n", - " stream_mode=\"custom\",\n", - "):\n", - " print(msg[\"content\"], end=\"|\", flush=True)" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "0bdc1635-f424-4a5f-95db-e993bb16adb2", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'langgraph_step': 1,\n", - " 'langgraph_node': 'call_model',\n", - " 'langgraph_triggers': ['start:call_model'],\n", - " 'langgraph_path': ('__pregel_pull', 'call_model'),\n", - " 'langgraph_checkpoint_ns': 'call_model:3fa3fbe1-39d8-5209-dd77-0da38d4cc1c9',\n", - " 'tags': ['poem']}" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "metadata" - ] - }, - { - "cell_type": "markdown", - "id": "a3afbbee-fab8-4c7f-ad26-094f8c8f4dd9", - "metadata": {}, - "source": [ - "To filter to the specific LLM invocation, you can use the streamed metadata:" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "fdeee9d9-2625-403a-9253-418a0feeed77", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Writing joke...\n", - "\n", - "\n", - "Writing poem...\n", - "In| shadows| soft|,| they| weave| and| play|,| \n", - "|With| whispered| paws|,| they| greet| the| day|.| \n", - "|Eyes| like| lantern|s|,| bright| and| keen|,| \n", - "|Guard|ians| of| secrets|,| unseen|,| serene|.| \n", - "\n", - "|They| twist| and| stretch| in| sun|lit| beams|,| \n", - "|Ch|asing| the| echoes| of| half|-|formed| dreams|.| \n", - "|With| p|urring| songs| that| soothe| the| night|,| \n", - "|F|eline| spirits|,| pure| delight|.| \n", - "\n", - "|On| windows|ills|,| they| perch| and| stare|,| \n", - "|Ad|vent|urers| bold| with| a| graceful| flair|.| \n", - "|In| every| leap| and| playful| bound|,| \n", - "|The| magic| of| cats|—|where| love| is| found|.|" - ] - } - ], - "source": [ - "async for msg, metadata in graph.astream(\n", - " {\"topic\": \"cats\"},\n", - " stream_mode=\"custom\",\n", - "):\n", - " # highlight-next-line\n", - " if \"poem\" in metadata.get(\"tags\", []):\n", - " print(msg[\"content\"], end=\"|\", flush=True)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.3" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/docs/docs/how-tos/streaming.ipynb b/docs/docs/how-tos/streaming.ipynb deleted file mode 100644 index d0a349fb8..000000000 --- a/docs/docs/how-tos/streaming.ipynb +++ /dev/null @@ -1,547 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "76c4b04f-0c03-4321-9d40-38d12c59d088", - "metadata": {}, - "source": [ - "# How to stream" - ] - }, - { - "cell_type": "markdown", - "id": "15403cdb-441d-43af-a29f-fc15abe03dcc", - "metadata": {}, - "source": [ - "!!! info \"Prerequisites\"\n", - "\n", - " This guide assumes familiarity with the following:\n", - " \n", - " - [Streaming](../../concepts/streaming/)\n", - " - [Chat Models](https://python.langchain.com/docs/concepts/chat_models/)\n", - "\n", - "Streaming is crucial for enhancing the responsiveness of applications built on LLMs. By displaying output progressively, even before a complete response is ready, streaming significantly improves user experience (UX), particularly when dealing with the latency of LLMs.\n", - "\n", - "LangGraph is built with first class support for streaming. There are several different ways to stream back outputs from a graph run:\n", - "\n", - "- `\"values\"`: Emit all values in the state after each step.\n", - "- `\"updates\"`: Emit only the node names and updates returned by the nodes after each step.\n", - " If multiple updates are made in the same step (e.g. multiple nodes are run) then those updates are emitted separately.\n", - "- `\"custom\"`: Emit custom data from inside nodes using `StreamWriter`.\n", - "- [`\"messages\"`](../streaming-tokens): Emit LLM messages token-by-token together with metadata for any LLM invocations inside nodes.\n", - "- `\"debug\"`: Emit debug events with as much information as possible for each step.\n", - "\n", - "You can stream outputs from the graph by using `graph.stream(..., stream_mode=)` method, e.g.:\n", - "\n", - "=== \"Sync\"\n", - "\n", - " ```python\n", - " for chunk in graph.stream(inputs, stream_mode=\"updates\"):\n", - " print(chunk)\n", - " ```\n", - "\n", - "=== \"Async\"\n", - "\n", - " ```python\n", - " async for chunk in graph.astream(inputs, stream_mode=\"updates\"):\n", - " print(chunk)\n", - " ```\n", - "\n", - "You can also combine multiple streaming mode by providing a list to `stream_mode` parameter:\n", - "\n", - "=== \"Sync\"\n", - "\n", - " ```python\n", - " for chunk in graph.stream(inputs, stream_mode=[\"updates\", \"custom\"]):\n", - " print(chunk)\n", - " ```\n", - "\n", - "=== \"Async\"\n", - "\n", - " ```python\n", - " async for chunk in graph.astream(inputs, stream_mode=[\"updates\", \"custom\"]):\n", - " print(chunk)\n", - " ```" - ] - }, - { - "cell_type": "markdown", - "id": "9723cf76-6fe4-4b52-829f-3f28712ddcb7", - "metadata": {}, - "source": [ - "## Setup" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "427f8f66-7404-4c7d-a642-af5053b8b28f", - "metadata": {}, - "outputs": [], - "source": [ - "%%capture --no-stderr\n", - "%pip install --quiet -U langgraph langchain_openai" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "03310ce6-e21f-4378-93bf-dd273fdb3e9a", - "metadata": {}, - "outputs": [ - { - "name": "stdin", - "output_type": "stream", - "text": [ - "OPENAI_API_KEY: ········\n" - ] - } - ], - "source": [ - "import getpass\n", - "import os\n", - "\n", - "\n", - "def _set_env(var: str):\n", - " if not os.environ.get(var):\n", - " os.environ[var] = getpass.getpass(f\"{var}: \")\n", - "\n", - "\n", - "_set_env(\"OPENAI_API_KEY\")" - ] - }, - { - "cell_type": "markdown", - "id": "80399508-bad8-43b7-8ec9-4c06ad1774cc", - "metadata": {}, - "source": [ - "
    \n", - "

    Set up LangSmith for LangGraph development

    \n", - "

    \n", - " Sign up for LangSmith to quickly spot issues and improve the performance of your LangGraph projects. LangSmith lets you use trace data to debug, test, and monitor your LLM apps built with LangGraph — read more about how to get started here. \n", - "

    \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "id": "be4adbb2-61e8-4bb7-942d-b4dc27ba71ac", - "metadata": {}, - "source": [ - "Let's define a simple graph with two nodes:" - ] - }, - { - "cell_type": "markdown", - "id": "f6d4c513-1006-4179-bba9-d858fc952169", - "metadata": {}, - "source": [ - "## Define graph" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "faeb5ce8-d383-4277-b0a8-322e713638e4", - "metadata": {}, - "outputs": [], - "source": [ - "from typing import TypedDict\n", - "from langgraph.graph import StateGraph, START\n", - "\n", - "\n", - "class State(TypedDict):\n", - " topic: str\n", - " joke: str\n", - "\n", - "\n", - "def refine_topic(state: State):\n", - " return {\"topic\": state[\"topic\"] + \" and cats\"}\n", - "\n", - "\n", - "def generate_joke(state: State):\n", - " return {\"joke\": f\"This is a joke about {state['topic']}\"}\n", - "\n", - "\n", - "graph = (\n", - " StateGraph(State)\n", - " .add_node(refine_topic)\n", - " .add_node(generate_joke)\n", - " .add_edge(START, \"refine_topic\")\n", - " .add_edge(\"refine_topic\", \"generate_joke\")\n", - " .compile()\n", - ")" - ] - }, - { - "cell_type": "markdown", - "id": "f9b90850-85bf-4391-b6b7-22ad45edaa3b", - "metadata": {}, - "source": [ - "## Stream all values in the state (stream_mode=\"values\") {#values}" - ] - }, - { - "cell_type": "markdown", - "id": "d1ed60d4-cf78-4d4d-a660-6879539e168f", - "metadata": {}, - "source": [ - "Use this to stream **all values** in the state after each step." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "3daca06a-369b-41e5-8e4e-6edc4d4af3a7", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'topic': 'ice cream'}\n", - "{'topic': 'ice cream and cats'}\n", - "{'topic': 'ice cream and cats', 'joke': 'This is a joke about ice cream and cats'}\n" - ] - } - ], - "source": [ - "for chunk in graph.stream(\n", - " {\"topic\": \"ice cream\"},\n", - " # highlight-next-line\n", - " stream_mode=\"values\",\n", - "):\n", - " print(chunk)" - ] - }, - { - "cell_type": "markdown", - "id": "adcb1bdb-f9fa-4d42-87ce-8e25d4290883", - "metadata": {}, - "source": [ - "## Stream state updates from the nodes (stream_mode=\"updates\") {#updates}" - ] - }, - { - "cell_type": "markdown", - "id": "44c55326-d077-4583-ae5b-396f45daf21c", - "metadata": {}, - "source": [ - "Use this to stream only the **state updates** returned by the nodes after each step. The streamed outputs include the name of the node as well as the update." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "eed7d401-37d1-4d15-b6dd-88956fff89e1", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'refine_topic': {'topic': 'ice cream and cats'}}\n", - "{'generate_joke': {'joke': 'This is a joke about ice cream and cats'}}\n" - ] - } - ], - "source": [ - "for chunk in graph.stream(\n", - " {\"topic\": \"ice cream\"},\n", - " # highlight-next-line\n", - " stream_mode=\"updates\",\n", - "):\n", - " print(chunk)" - ] - }, - { - "cell_type": "markdown", - "id": "b9ed9c68-b7c5-4420-945d-84fa33fcf88f", - "metadata": {}, - "source": [ - "## Stream debug events (stream_mode=\"debug\") {#debug}" - ] - }, - { - "cell_type": "markdown", - "id": "94690715-f86c-42f6-be2d-4df82f6f9a96", - "metadata": {}, - "source": [ - "Use this to stream **debug events** with as much information as possible for each step. Includes information about tasks that were scheduled to be executed as well as the results of the task executions." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "cc6354f6-0c39-49cf-a529-b9c6c8713d7c", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'type': 'task', 'timestamp': '2025-01-28T22:06:34.789803+00:00', 'step': 1, 'payload': {'id': 'eb305d74-3460-9510-d516-beed71a63414', 'name': 'refine_topic', 'input': {'topic': 'ice cream'}, 'triggers': ['start:refine_topic']}}\n", - "{'type': 'task_result', 'timestamp': '2025-01-28T22:06:34.790013+00:00', 'step': 1, 'payload': {'id': 'eb305d74-3460-9510-d516-beed71a63414', 'name': 'refine_topic', 'error': None, 'result': [('topic', 'ice cream and cats')], 'interrupts': []}}\n", - "{'type': 'task', 'timestamp': '2025-01-28T22:06:34.790165+00:00', 'step': 2, 'payload': {'id': '74355cb8-6284-25e0-579f-430493c1bdab', 'name': 'generate_joke', 'input': {'topic': 'ice cream and cats'}, 'triggers': ['refine_topic']}}\n", - "{'type': 'task_result', 'timestamp': '2025-01-28T22:06:34.790337+00:00', 'step': 2, 'payload': {'id': '74355cb8-6284-25e0-579f-430493c1bdab', 'name': 'generate_joke', 'error': None, 'result': [('joke', 'This is a joke about ice cream and cats')], 'interrupts': []}}\n" - ] - } - ], - "source": [ - "for chunk in graph.stream(\n", - " {\"topic\": \"ice cream\"},\n", - " # highlight-next-line\n", - " stream_mode=\"debug\",\n", - "):\n", - " print(chunk)" - ] - }, - { - "cell_type": "markdown", - "id": "6791da60-0513-43e6-b445-788dd81683bb", - "metadata": {}, - "source": [ - "## Stream LLM tokens ([stream_mode=\"messages\"](../streaming-tokens)) {#messages}" - ] - }, - { - "cell_type": "markdown", - "id": "1f45d68b-f7ca-4012-96cc-d276a143f571", - "metadata": {}, - "source": [ - "Use this to stream **LLM messages token-by-token** together with metadata for any LLM invocations inside nodes or tasks. Let's modify the above example to include LLM calls:" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "efa787e1-be4d-433b-a1af-46a9c99ad8f3", - "metadata": {}, - "outputs": [], - "source": [ - "from langchain_openai import ChatOpenAI\n", - "\n", - "llm = ChatOpenAI(model=\"gpt-4o-mini\")\n", - "\n", - "\n", - "def generate_joke(state: State):\n", - " # highlight-next-line\n", - " llm_response = llm.invoke(\n", - " # highlight-next-line\n", - " [\n", - " # highlight-next-line\n", - " {\"role\": \"user\", \"content\": f\"Generate a joke about {state['topic']}\"}\n", - " # highlight-next-line\n", - " ]\n", - " # highlight-next-line\n", - " )\n", - " return {\"joke\": llm_response.content}\n", - "\n", - "\n", - "graph = (\n", - " StateGraph(State)\n", - " .add_node(refine_topic)\n", - " .add_node(generate_joke)\n", - " .add_edge(START, \"refine_topic\")\n", - " .add_edge(\"refine_topic\", \"generate_joke\")\n", - " .compile()\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "c251f809-8922-46ea-bd5b-18264fcc523a", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Why| did| the| cat| sit| on| the| ice| cream| cone|?\n", - "\n", - "|Because| it| wanted| to| be| a| \"|p|urr|-f|ect|\"| scoop|!| 🍦|🐱|" - ] - } - ], - "source": [ - "for message_chunk, metadata in graph.stream(\n", - " {\"topic\": \"ice cream\"},\n", - " # highlight-next-line\n", - " stream_mode=\"messages\",\n", - "):\n", - " if message_chunk.content:\n", - " print(message_chunk.content, end=\"|\", flush=True)" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "b1912d72-7b68-4810-8b98-d7f3c35fbb6d", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'langgraph_step': 2,\n", - " 'langgraph_node': 'generate_joke',\n", - " 'langgraph_triggers': ['refine_topic'],\n", - " 'langgraph_path': ('__pregel_pull', 'generate_joke'),\n", - " 'langgraph_checkpoint_ns': 'generate_joke:568879bc-8800-2b0d-a5b5-059526a4bebf',\n", - " 'checkpoint_ns': 'generate_joke:568879bc-8800-2b0d-a5b5-059526a4bebf',\n", - " 'ls_provider': 'openai',\n", - " 'ls_model_name': 'gpt-4o-mini',\n", - " 'ls_model_type': 'chat',\n", - " 'ls_temperature': 0.7}" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "metadata" - ] - }, - { - "cell_type": "markdown", - "id": "0d1ebeda-4498-40e0-a30a-0844cb491425", - "metadata": {}, - "source": [ - "## Stream custom data (stream_mode=\"custom\") {#custom}" - ] - }, - { - "cell_type": "markdown", - "id": "e9ca56cc-d36e-4061-b1f6-9ade4e3e00a0", - "metadata": {}, - "source": [ - "Use this to stream custom data from inside nodes using [`StreamWriter`][langgraph.types.StreamWriter]." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "e3bf6a2b-afe3-4bd3-8474-57cccd994f23", - "metadata": {}, - "outputs": [], - "source": [ - "from langgraph.types import StreamWriter\n", - "\n", - "\n", - "# highlight-next-line\n", - "def generate_joke(state: State, writer: StreamWriter):\n", - " # highlight-next-line\n", - " writer({\"custom_key\": \"Writing custom data while generating a joke\"})\n", - " return {\"joke\": f\"This is a joke about {state['topic']}\"}\n", - "\n", - "\n", - "graph = (\n", - " StateGraph(State)\n", - " .add_node(refine_topic)\n", - " .add_node(generate_joke)\n", - " .add_edge(START, \"refine_topic\")\n", - " .add_edge(\"refine_topic\", \"generate_joke\")\n", - " .compile()\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "2ecfb0b0-3311-46f5-9dc8-6c7853373792", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'custom_key': 'Writing custom data while generating a joke'}\n" - ] - } - ], - "source": [ - "for chunk in graph.stream(\n", - " {\"topic\": \"ice cream\"},\n", - " # highlight-next-line\n", - " stream_mode=\"custom\",\n", - "):\n", - " print(chunk)" - ] - }, - { - "cell_type": "markdown", - "id": "28e67f4d-fcab-46a8-93e2-b7bee30336c1", - "metadata": {}, - "source": [ - "## Configure multiple streaming modes {#multiple}" - ] - }, - { - "cell_type": "markdown", - "id": "01ff946a-f38d-42ad-bc71-a2621fab1b6c", - "metadata": {}, - "source": [ - "Use this to combine multiple streaming modes. The outputs are streamed as tuples `(stream_mode, streamed_output)`." - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "bf4cab4b-356c-4276-9035-26974abe1efe", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Stream mode: updates\n", - "{'refine_topic': {'topic': 'ice cream and cats'}}\n", - "\n", - "\n", - "Stream mode: custom\n", - "{'custom_key': 'Writing custom data while generating a joke'}\n", - "\n", - "\n", - "Stream mode: updates\n", - "{'generate_joke': {'joke': 'This is a joke about ice cream and cats'}}\n", - "\n", - "\n" - ] - } - ], - "source": [ - "for stream_mode, chunk in graph.stream(\n", - " {\"topic\": \"ice cream\"},\n", - " # highlight-next-line\n", - " stream_mode=[\"updates\", \"custom\"],\n", - "):\n", - " print(f\"Stream mode: {stream_mode}\")\n", - " print(chunk)\n", - " print(\"\\n\")" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.3" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/docs/docs/how-tos/streaming.md b/docs/docs/how-tos/streaming.md new file mode 100644 index 000000000..424b38507 --- /dev/null +++ b/docs/docs/how-tos/streaming.md @@ -0,0 +1,817 @@ +# Stream outputs + +## Streaming API + +LangGraph graphs expose the [`.stream()`][langgraph.pregel.Pregel.stream] (sync) and [`.astream()`][langgraph.pregel.Pregel.astream] (async) methods to yield streamed outputs as iterators. + +Basic usage example: + +=== "Sync" + + ```python + for chunk in graph.stream(inputs, stream_mode="updates"): + print(chunk) + ``` + +=== "Async" + + ```python + async for chunk in graph.astream(inputs, stream_mode="updates"): + print(chunk) + ``` + +??? example "Extended example: streaming updates" + + ```python + from typing import TypedDict + from langgraph.graph import StateGraph, START, END + + class State(TypedDict): + topic: str + joke: str + + def refine_topic(state: State): + return {"topic": state["topic"] + " and cats"} + + def generate_joke(state: State): + return {"joke": f"This is a joke about {state['topic']}"} + + graph = ( + StateGraph(State) + .add_node(refine_topic) + .add_node(generate_joke) + .add_edge(START, "refine_topic") + .add_edge("refine_topic", "generate_joke") + .add_edge("generate_joke", END) + .compile() + ) + + # highlight-next-line + for chunk in graph.stream( # (1)! + {"topic": "ice cream"}, + # highlight-next-line + stream_mode="updates", # (2)! + ): + print(chunk) + ``` + + 1. The `stream()` method returns an iterator that yields streamed outputs. + 2. Set `stream_mode="updates"` to stream only the updates to the graph state after each node. Other stream modes are also available. See [supported stream modes](#supported-stream-modes) for details. + + ```output + {'refine_topic': {'topic': 'ice cream and cats'}} + {'generate_joke': {'joke': 'This is a joke about ice cream and cats'}} + ``` + + +### Supported stream modes + +| Mode | Description | +|-------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| [`values`](#stream-graph-state) | Streams the full value of the state after each step of the graph. | +| [`updates`](#stream-graph-state) | Streams the updates to the state after each step of the graph. If multiple updates are made in the same step (e.g., multiple nodes are run), those updates are streamed separately. | +| [`custom`](#custom) | Streams custom data from inside your graph nodes. | +| [`messages`](#messages) | Streams LLM tokens and metadata for the graph node where the LLM is invoked. | +| [`debug`](#debug) | Streams as much information as possible throughout the execution of the graph. | + + +### Stream multiple modes + +You can pass a list as the `stream_mode` parameter to stream multiple modes at once. + +The streamed outputs will be tuples of `(mode, chunk)` where `mode` is the name of the stream mode and `chunk` is the data streamed by that mode. + +=== "Sync" + + ```python + for mode, chunk in graph.stream(inputs, stream_mode=["updates", "custom"]): + print(chunk) + ``` + +=== "Async" + + ```python + async for mode, chunk in graph.astream(inputs, stream_mode=["updates", "custom"]): + print(chunk) + ``` + +## Stream graph state + +Use the stream modes `updates` and `values` to stream the state of the graph as it executes. + +* `updates` streams the **updates** to the state after each step of the graph. +* `values` streams the **full value** of the state after each step of the graph. + +```python +from typing import TypedDict +from langgraph.graph import StateGraph, START, END + + +class State(TypedDict): + topic: str + joke: str + + +def refine_topic(state: State): + return {"topic": state["topic"] + " and cats"} + + +def generate_joke(state: State): + return {"joke": f"This is a joke about {state['topic']}"} + +graph = ( + StateGraph(State) + .add_node(refine_topic) + .add_node(generate_joke) + .add_edge(START, "refine_topic") + .add_edge("refine_topic", "generate_joke") + .add_edge("generate_joke", END) + .compile() +) +``` + +=== "updates" + + Use this to stream only the **state updates** returned by the nodes after each step. The streamed outputs include the name of the node as well as the update. + + + ```python + for chunk in graph.stream( + {"topic": "ice cream"}, + # highlight-next-line + stream_mode="updates", + ): + print(chunk) + ``` + +=== "values" + + Use this to stream the **full state** of the graph after each step. + + ```python + for chunk in graph.stream( + {"topic": "ice cream"}, + # highlight-next-line + stream_mode="values", + ): + print(chunk) + ``` + + +## Subgraphs + +To include outputs from [subgraphs](../concepts/subgraphs.md) in the streamed outputs, you can set `subgraphs=True` in the `.stream()` method of the parent graph. This will stream outputs from both the parent graph and any subgraphs. + +```python +for chunk in graph.stream( + {"foo": "foo"}, + # highlight-next-line + subgraphs=True, # (1)! + stream_mode="updates", +): + print(chunk) +``` + +1. Set `subgraphs=True` to stream outputs from subgraphs. + +??? example "Extended example: streaming from subgraphs" + + ```python + from langgraph.graph import START, StateGraph + from typing import TypedDict + + + # Define subgraph + class SubgraphState(TypedDict): + foo: str # note that this key is shared with the parent graph state + bar: str + + + def subgraph_node_1(state: SubgraphState): + return {"bar": "bar"} + + + def subgraph_node_2(state: SubgraphState): + return {"foo": state["foo"] + state["bar"]} + + + subgraph_builder = StateGraph(SubgraphState) + subgraph_builder.add_node(subgraph_node_1) + subgraph_builder.add_node(subgraph_node_2) + subgraph_builder.add_edge(START, "subgraph_node_1") + subgraph_builder.add_edge("subgraph_node_1", "subgraph_node_2") + subgraph = subgraph_builder.compile() + + + # Define parent graph + class ParentState(TypedDict): + foo: str + + + def node_1(state: ParentState): + return {"foo": "hi! " + state["foo"]} + + + builder = StateGraph(ParentState) + builder.add_node("node_1", node_1) + builder.add_node("node_2", subgraph) + builder.add_edge(START, "node_1") + builder.add_edge("node_1", "node_2") + graph = builder.compile() + + for chunk in graph.stream( + {"foo": "foo"}, + stream_mode="updates", + # highlight-next-line + subgraphs=True, # (1)! + ): + print(chunk) + ``` + + 1. Set `subgraphs=True` to stream outputs from subgraphs. + + **Note** that we are receiving not just the node updates, but we also the namespaces which tell us what graph (or subgraph) we are streaming from. + +## Debugging {#debug} + +Use the `debug` streaming mode to stream as much information as possible throughout the execution of the graph. The streamed outputs include the name of the node as well as the full state. + +```python +for chunk in graph.stream( + {"topic": "ice cream"}, + # highlight-next-line + stream_mode="debug", +): + print(chunk) +``` + + +## LLM tokens {#messages} + +Use the `messages` streaming mode to stream Large Language Model (LLM) outputs **token by token** from any part of your graph, including nodes, tools, subgraphs, or tasks. + +The streamed output from [`messages` mode](#supported-stream-modes) is a tuple `(message_chunk, metadata)` where: + +- `message_chunk`: the token or message segment from the LLM. +- `metadata`: a dictionary containing details about the graph node and LLM invocation. + +> If your LLM is not available as a LangChain integration, you can stream its outputs using `custom` mode instead. See [use with any LLM](#use-with-any-llm) for details. + +!!! warning "Manual config required for async in Python < 3.11" + + When using Python < 3.11 with async code, you must explicitly pass `RunnableConfig` to `ainvoke()` to enable proper streaming. See [Async with Python < 3.11](#async) for details or upgrade to Python 3.11+. + +```python +from dataclasses import dataclass + +from langchain.chat_models import init_chat_model +from langgraph.graph import StateGraph, START + + +@dataclass +class MyState: + topic: str + joke: str = "" + + +llm = init_chat_model(model="openai:gpt-4o-mini") + +def call_model(state: MyState): + """Call the LLM to generate a joke about a topic""" + # highlight-next-line + llm_response = llm.invoke( # (1)! + [ + {"role": "user", "content": f"Generate a joke about {state.topic}"} + ] + ) + return {"joke": llm_response.content} + +graph = ( + StateGraph(MyState) + .add_node(call_model) + .add_edge(START, "call_model") + .compile() +) + +for message_chunk, metadata in graph.stream( # (2)! + {"topic": "ice cream"}, + # highlight-next-line + stream_mode="messages", +): + if message_chunk.content: + print(message_chunk.content, end="|", flush=True) +``` + +1. Note that the message events are emitted even when the LLM is run using `.invoke` rather than `.stream`. +2. The "messages" stream mode returns an iterator of tuples `(message_chunk, metadata)` where `message_chunk` is the token streamed by the LLM and `metadata` is a dictionary with information about the graph node where the LLM was called and other information. + + +### Filter by LLM invocation + +You can associate `tags` with LLM invocations to filter the streamed tokens by LLM invocation. + +```python +from langchain.chat_models import init_chat_model + +llm_1 = init_chat_model(model="openai:gpt-4o-mini", tags=['joke']) # (1)! +llm_2 = init_chat_model(model="openai:gpt-4o-mini", tags=['poem']) # (2)! + +graph = ... # define a graph that uses these LLMs + +async for msg, metadata in graph.astream( # (3)! + {"topic": "cats"}, + # highlight-next-line + stream_mode="messages", +): + if metadata["tags"] == ["joke"]: # (4)! + print(msg.content, end="|", flush=True) +``` + +1. llm_1 is tagged with "joke". +2. llm_2 is tagged with "poem". +3. The `stream_mode` is set to "messages" to stream LLM tokens. The `metadata` contains information about the LLM invocation, including the tags. +4. Filter the streamed tokens by the `tags` field in the metadata to only include the tokens from the LLM invocation with the "joke" tag. + + +??? example "Extended example: filtering by tags" + + ```python + from typing import TypedDict + + from langchain.chat_models import init_chat_model + from langgraph.graph import START, StateGraph + + joke_model = init_chat_model(model="openai:gpt-4o-mini", tags=["joke"]) # (1)! + poem_model = init_chat_model(model="openai:gpt-4o-mini", tags=["poem"]) # (2)! + + + class State(TypedDict): + topic: str + joke: str + poem: str + + + async def call_model(state, config): + topic = state["topic"] + print("Writing joke...") + # Note: Passing the config through explicitly is required for python < 3.11 + # Since context var support wasn't added before then: https://docs.python.org/3/library/asyncio-task.html#creating-tasks + joke_response = await joke_model.ainvoke( + [{"role": "user", "content": f"Write a joke about {topic}"}], + config, # (3)! + ) + print("\n\nWriting poem...") + poem_response = await poem_model.ainvoke( + [{"role": "user", "content": f"Write a short poem about {topic}"}], + config, # (3)! + ) + return {"joke": joke_response.content, "poem": poem_response.content} + + + graph = ( + StateGraph(State) + .add_node(call_model) + .add_edge(START, "call_model") + .compile() + ) + + async for msg, metadata in graph.astream( + {"topic": "cats"}, + # highlight-next-line + stream_mode="messages", # (4)! + ): + if metadata["tags"] == ["joke"]: # (4)! + print(msg.content, end="|", flush=True) + ``` + + 1. The `joke_model` is tagged with "joke". + 2. The `poem_model` is tagged with "poem". + 3. The `config` is passed through explicitly to ensure the context vars are propagated correctly. This is required for Python < 3.11 when using async code. Please see the [async section](#async) for more details. + 4. The `stream_mode` is set to "messages" to stream LLM tokens. The `metadata` contains information about the LLM invocation, including the tags. + + +### Filter by node + +To stream tokens only from specific nodes, use `stream_mode="messages"` and filter the outputs by the `langgraph_node` field in the streamed metadata: + +```python +for msg, metadata in graph.stream( # (1)! + inputs, + # highlight-next-line + stream_mode="messages", +): + # highlight-next-line + if msg.content and metadata["langgraph_node"] == "some_node_name": # (2)! + ... +``` + +1. The "messages" stream mode returns a tuple of `(message_chunk, metadata)` where `message_chunk` is the token streamed by the LLM and `metadata` is a dictionary with information about the graph node where the LLM was called and other information. +2. Filter the streamed tokens by the `langgraph_node` field in the metadata to only include the tokens from the `write_poem` node. + +??? example "Extended example: streaming LLM tokens from specific nodes" + + ```python + from typing import TypedDict + from langgraph.graph import START, StateGraph + from langchain_openai import ChatOpenAI + + model = ChatOpenAI(model="gpt-4o-mini") + + + class State(TypedDict): + topic: str + joke: str + poem: str + + + def write_joke(state: State): + topic = state["topic"] + joke_response = model.invoke( + [{"role": "user", "content": f"Write a joke about {topic}"}] + ) + return {"joke": joke_response.content} + + + def write_poem(state: State): + topic = state["topic"] + poem_response = model.invoke( + [{"role": "user", "content": f"Write a short poem about {topic}"}] + ) + return {"poem": poem_response.content} + + + graph = ( + StateGraph(State) + .add_node(write_joke) + .add_node(write_poem) + # write both the joke and the poem concurrently + .add_edge(START, "write_joke") + .add_edge(START, "write_poem") + .compile() + ) + + # highlight-next-line + for msg, metadata in graph.stream( # (1)! + {"topic": "cats"}, + stream_mode="messages", + ): + # highlight-next-line + if msg.content and metadata["langgraph_node"] == "write_poem": # (2)! + print(msg.content, end="|", flush=True) + ``` + + 1. The "messages" stream mode returns a tuple of `(message_chunk, metadata)` where `message_chunk` is the token streamed by the LLM and `metadata` is a dictionary with information about the graph node where the LLM was called and other information. + 2. Filter the streamed tokens by the `langgraph_node` field in the metadata to only include the tokens from the `write_poem` node. + +## Stream custom data + +To send **custom user-defined data** from inside a LangGraph node or tool, follow these steps: + +1. Use `get_stream_writer()` to access the stream writer and emit custom data. +2. Set `stream_mode="custom"` when calling `.stream()` or `.astream()` to get the custom data in the stream. You can combine multiple modes (e.g., `["updates", "custom"]`), but at least one must be `"custom"`. + +!!! warning "No `get_stream_writer()` in async for Python < 3.11" + + In async code running on Python < 3.11, `get_stream_writer()` will not work. + Instead, add a `writer` parameter to your node or tool and pass it manually. + See [Async with Python < 3.11](#async-with-python-3-11) for usage examples. + + +=== "node" + + ```python + from typing import TypedDict + from langgraph.config import get_stream_writer + from langgraph.graph import StateGraph, START + + class State(TypedDict): + query: str + answer: str + + def node(state: State): + writer = get_stream_writer() # (1)! + writer({"custom_key": "Generating custom data inside node"}) # (2)! + return {"answer": "some data"} + + graph = ( + StateGraph(State) + .add_node(node) + .add_edge(START, "node") + .compile() + ) + + inputs = {"query": "example"} + + # Usage + for chunk in graph.stream(inputs, stream_mode="custom"): # (3)! + print(chunk) + ``` + + 1. Get the stream writer to send custom data. + 2. Emit a custom key-value pair (e.g., progress update). + 3. Set `stream_mode="custom"` to receive the custom data in the stream. + +=== "tool" + + ```python + from langchain_core.tools import tool + from langgraph.config import get_stream_writer + + @tool + def query_database(query: str) -> str: + """Query the database.""" + writer = get_stream_writer() # (1)! + # highlight-next-line + writer({"data": "Retrieved 0/100 records", "type": "progress"}) # (2)! + # perform query + # highlight-next-line + writer({"data": "Retrieved 100/100 records", "type": "progress"}) # (3)! + return "some-answer" + + + graph = ... # define a graph that uses this tool + + for chunk in graph.stream(inputs, stream_mode="custom"): # (4)! + print(chunk) + ``` + + 1. Access the stream writer to send custom data. + 2. Emit a custom key-value pair (e.g., progress update). + 3. Emit another custom key-value pair. + 4. Set `stream_mode="custom"` to receive the custom data in the stream. + +## Use with any LLM + +You can use `stream_mode="custom"` to stream data from **any LLM API** — even if that API does **not** implement the LangChain chat model interface. + +This lets you integrate raw LLM clients or external services that provide their own streaming interfaces, making LangGraph highly flexible for custom setups. + +```python +from langgraph.config import get_stream_writer + +def call_arbitrary_model(state): + """Example node that calls an arbitrary model and streams the output""" + # highlight-next-line + writer = get_stream_writer() # (1)! + # Assume you have a streaming client that yields chunks + for chunk in your_custom_streaming_client(state["topic"]): # (2)! + # highlight-next-line + writer({"custom_llm_chunk": chunk}) # (3)! + return {"result": "completed"} + +graph = ( + StateGraph(State) + .add_node(call_arbitrary_model) + # Add other nodes and edges as needed + .compile() +) + +for chunk in graph.stream( + {"topic": "cats"}, + # highlight-next-line + stream_mode="custom", # (4)! +): + # The chunk will contain the custom data streamed from the llm + print(chunk) +``` + +1. Get the stream writer to send custom data. +2. Generate LLM tokens using your custom streaming client. +3. Use the writer to send custom data to the stream. +4. Set `stream_mode="custom"` to receive the custom data in the stream. + + +??? example "Extended example: streaming arbitrary chat model" + ```python + import operator + import json + + from typing import TypedDict + from typing_extensions import Annotated + from langgraph.graph import StateGraph, START + + from openai import AsyncOpenAI + + openai_client = AsyncOpenAI() + model_name = "gpt-4o-mini" + + + async def stream_tokens(model_name: str, messages: list[dict]): + response = await openai_client.chat.completions.create( + messages=messages, model=model_name, stream=True + ) + role = None + async for chunk in response: + delta = chunk.choices[0].delta + + if delta.role is not None: + role = delta.role + + if delta.content: + yield {"role": role, "content": delta.content} + + + # this is our tool + async def get_items(place: str) -> str: + """Use this tool to list items one might find in a place you're asked about.""" + writer = get_stream_writer() + response = "" + async for msg_chunk in stream_tokens( + model_name, + [ + { + "role": "user", + "content": ( + "Can you tell me what kind of items " + f"i might find in the following place: '{place}'. " + "List at least 3 such items separating them by a comma. " + "And include a brief description of each item." + ), + } + ], + ): + response += msg_chunk["content"] + writer(msg_chunk) + + return response + + + class State(TypedDict): + messages: Annotated[list[dict], operator.add] + + + # this is the tool-calling graph node + async def call_tool(state: State): + ai_message = state["messages"][-1] + tool_call = ai_message["tool_calls"][-1] + + function_name = tool_call["function"]["name"] + if function_name != "get_items": + raise ValueError(f"Tool {function_name} not supported") + + function_arguments = tool_call["function"]["arguments"] + arguments = json.loads(function_arguments) + + function_response = await get_items(**arguments) + tool_message = { + "tool_call_id": tool_call["id"], + "role": "tool", + "name": function_name, + "content": function_response, + } + return {"messages": [tool_message]} + + + graph = ( + StateGraph(State) + .add_node(call_tool) + .add_edge(START, "call_tool") + .compile() + ) + ``` + + Let's invoke the graph with an AI message that includes a tool call: + + ```python + inputs = { + "messages": [ + { + "content": None, + "role": "assistant", + "tool_calls": [ + { + "id": "1", + "function": { + "arguments": '{"place":"bedroom"}', + "name": "get_items", + }, + "type": "function", + } + ], + } + ] + } + + async for chunk in graph.astream( + inputs, + stream_mode="custom", + ): + print(chunk["content"], end="|", flush=True) + ``` + + +## Disable streaming for specific chat models + +If your application mixes models that support streaming with those that do not, you may need to explicitly disable streaming for +models that do not support it. + +Set `disable_streaming=True` when initializing the model. + +=== "init_chat_model" + + ```python + from langchain.chat_models import init_chat_model + + model = init_chat_model( + "anthropic:claude-3-7-sonnet-latest", + # highlight-next-line + disable_streaming=True # (1)! + ) + ``` + + 1. Set `disable_streaming=True` to disable streaming for the chat model. + +=== "chat model interface" + + ```python + from langchain_openai import ChatOpenAI + + llm = ChatOpenAI(model="o1-preview", disable_streaming=True) # (1)! + ``` + + 1. Set `disable_streaming=True` to disable streaming for the chat model. + + +## Async with Python < 3.11 { #async } + +In Python versions < 3.11, [asyncio tasks](https://docs.python.org/3/library/asyncio-task.html#asyncio.create_task) do not support the `context` parameter. +This limits LangGraph ability to automatically propagate context, and affects LangGraph’s streaming mechanisms in two key ways: + +1. You **must** explicitly pass [`RunnableConfig`](https://python.langchain.com/docs/concepts/runnables/#runnableconfig) into async LLM calls (e.g., `ainvoke()`), as callbacks are not automatically propagated. +2. You **cannot** use `get_stream_writer()` in async nodes or tools — you must pass a `writer` argument directly. + +??? example "Extended example: async LLM call with manual config" + + ```python + from typing import TypedDict + from langgraph.graph import START, StateGraph + from langchain.chat_models import init_chat_model + + llm = init_chat_model(model="openai:gpt-4o-mini") + + class State(TypedDict): + topic: str + joke: str + + async def call_model(state, config): # (1)! + topic = state["topic"] + print("Generating joke...") + joke_response = await llm.ainvoke( + [{"role": "user", "content": f"Write a joke about {topic}"}], + # highlight-next-line + config, # (2)! + ) + return {"joke": joke_response.content} + + graph = ( + StateGraph(State) + .add_node(call_model) + .add_edge(START, "call_model") + .compile() + ) + + async for chunk, metadata in graph.astream( + {"topic": "ice cream"}, + # highlight-next-line + stream_mode="messages", # (3)! + ): + if chunk.content: + print(chunk.content, end="|", flush=True) + ``` + + 1. Accept `config` as an argument in the async node function. + 2. Pass `config` to `llm.ainvoke()` to ensure proper context propagation. + 3. Set `stream_mode="messages"` to stream LLM tokens. + +??? example "Extended example: async custom streaming with stream writer" + + ```python + from typing import TypedDict + from langgraph.types import StreamWriter + + class State(TypedDict): + topic: str + joke: str + + # highlight-next-line + async def generate_joke(state: State, writer: StreamWriter): # (1)! + writer({"custom_key": "Streaming custom data while generating a joke"}) + return {"joke": f"This is a joke about {state['topic']}"} + + graph = ( + StateGraph(State) + .add_node(generate_joke) + .add_edge(START, "generate_joke") + .compile() + ) + + async for chunk in graph.astream( + {"topic": "ice cream"}, + # highlight-next-line + stream_mode="custom", # (2)! + ): + print(chunk) + ``` + + 1. Add `writer` as an argument in the function signature of the async node or tool. LangGraph will automatically pass the stream writer to the function. + 2. Set `stream_mode="custom"` to receive the custom data in the stream. diff --git a/docs/docs/how-tos/subgraph-persistence.ipynb b/docs/docs/how-tos/subgraph-persistence.ipynb deleted file mode 100644 index f505744b7..000000000 --- a/docs/docs/how-tos/subgraph-persistence.ipynb +++ /dev/null @@ -1,379 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "176e8dbb-1a0a-49ce-a10e-2417e8ea17a0", - "metadata": {}, - "source": [ - "# How to add thread-level persistence to a subgraph" - ] - }, - { - "cell_type": "markdown", - "id": "8c67581a-49fb-4597-a7fc-6774581c2160", - "metadata": {}, - "source": [ - "
    \n", - "

    Prerequisites

    \n", - "

    \n", - " This guide assumes familiarity with the following:\n", - "

    \n", - "

    \n", - "
    \n", - "\n", - "This guide shows how you can add [thread-level](https://langchain-ai.github.io/langgraph/how-tos/persistence/) persistence to graphs that use [subgraphs](https://langchain-ai.github.io/langgraph/how-tos/subgraph/)." - ] - }, - { - "cell_type": "markdown", - "id": "8f83b855-ab23-4de7-9559-702cad9a29c6", - "metadata": {}, - "source": [ - "## Setup\n", - "\n", - "First, let's install the required packages" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "77d1eafa-3252-45f6-9af0-d94e1f9c5c9e", - "metadata": {}, - "outputs": [], - "source": [ - "%%capture --no-stderr\n", - "%pip install -U langgraph" - ] - }, - { - "cell_type": "markdown", - "id": "2e60c6cd-bf4e-46af-9761-b872d0fbe3b6", - "metadata": {}, - "source": [ - "
    \n", - "

    Set up LangSmith for LangGraph development

    \n", - "

    \n", - " Sign up for LangSmith to quickly spot issues and improve the performance of your LangGraph projects. LangSmith lets you use trace data to debug, test, and monitor your LLM apps built with LangGraph — read more about how to get started here. \n", - "

    \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "id": "871b9056-fec7-4683-8c22-f56c91f5b13b", - "metadata": {}, - "source": [ - "## Define the graph with persistence" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "9f1303ef-df37-48e0-8a59-8ff169c52c5b", - "metadata": {}, - "source": [ - "To add persistence to a graph with subgraphs, all you need to do is pass a [checkpointer](https://langchain-ai.github.io/langgraph/reference/checkpoints/#langgraph.checkpoint.base.BaseCheckpointSaver) when **compiling the parent graph**. LangGraph will automatically propagate the checkpointer to the child subgraphs." - ] - }, - { - "cell_type": "markdown", - "id": "c74cde2e-c127-4326-8d36-b6acef987f0a", - "metadata": {}, - "source": [ - "!!! note\n", - " You **shouldn't provide** a checkpointer when compiling a subgraph. Instead, you must define a **single** checkpointer that you pass to `parent_graph.compile()`, and LangGraph will automatically propagate the checkpointer to the child subgraphs. If you pass the checkpointer to the `subgraph.compile()`, it will simply be ignored. This also applies when you [add a node function that invokes the subgraph](../subgraph#add-a-node-function-that-invokes-the-subgraph)." - ] - }, - { - "cell_type": "markdown", - "id": "c3a1fe22-1ca9-45eb-a35b-71b9c905e8c5", - "metadata": {}, - "source": [ - "Let's define a simple graph with a single subgraph node to show how to do this." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "0d76f0c0-bd77-4eca-9527-27bcdf85dd42", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "from langgraph.graph import START, StateGraph\n", - "from langgraph.checkpoint.memory import MemorySaver\n", - "from typing import TypedDict\n", - "\n", - "\n", - "# subgraph\n", - "\n", - "\n", - "class SubgraphState(TypedDict):\n", - " foo: str # note that this key is shared with the parent graph state\n", - " bar: str\n", - "\n", - "\n", - "def subgraph_node_1(state: SubgraphState):\n", - " return {\"bar\": \"bar\"}\n", - "\n", - "\n", - "def subgraph_node_2(state: SubgraphState):\n", - " # note that this node is using a state key ('bar') that is only available in the subgraph\n", - " # and is sending update on the shared state key ('foo')\n", - " return {\"foo\": state[\"foo\"] + state[\"bar\"]}\n", - "\n", - "\n", - "subgraph_builder = StateGraph(SubgraphState)\n", - "subgraph_builder.add_node(subgraph_node_1)\n", - "subgraph_builder.add_node(subgraph_node_2)\n", - "subgraph_builder.add_edge(START, \"subgraph_node_1\")\n", - "subgraph_builder.add_edge(\"subgraph_node_1\", \"subgraph_node_2\")\n", - "subgraph = subgraph_builder.compile()\n", - "\n", - "\n", - "# parent graph\n", - "\n", - "\n", - "class State(TypedDict):\n", - " foo: str\n", - "\n", - "\n", - "def node_1(state: State):\n", - " return {\"foo\": \"hi! \" + state[\"foo\"]}\n", - "\n", - "\n", - "builder = StateGraph(State)\n", - "builder.add_node(\"node_1\", node_1)\n", - "# note that we're adding the compiled subgraph as a node to the parent graph\n", - "builder.add_node(\"node_2\", subgraph)\n", - "builder.add_edge(START, \"node_1\")\n", - "builder.add_edge(\"node_1\", \"node_2\")" - ] - }, - { - "cell_type": "markdown", - "id": "47084b1f-9fd5-40a9-9d75-89eb5f853d02", - "metadata": {}, - "source": [ - "We can now compile the graph with an in-memory checkpointer (`MemorySaver`)." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "7657d285-c896-40c9-a569-b4a3b9c230c7", - "metadata": {}, - "outputs": [], - "source": [ - "checkpointer = MemorySaver()\n", - "# You must only pass checkpointer when compiling the parent graph.\n", - "# LangGraph will automatically propagate the checkpointer to the child subgraphs.\n", - "graph = builder.compile(checkpointer=checkpointer)" - ] - }, - { - "cell_type": "markdown", - "id": "0d193e3c-4ec3-4034-beed-8e5550c6542c", - "metadata": {}, - "source": [ - "## Verify persistence works" - ] - }, - { - "cell_type": "markdown", - "id": "eb69a5f0-b92e-4d4e-9aa9-c4c4ec7de91a", - "metadata": {}, - "source": [ - "Let's now run the graph and inspect the persisted state for both the parent graph and the subgraph to verify that persistence works. We should expect to see the final execution results for both the parent and subgraph in `state.values`." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "13da686e-6ed6-4b83-93e8-1631fcc8c2a9", - "metadata": {}, - "outputs": [], - "source": [ - "config = {\"configurable\": {\"thread_id\": \"1\"}}" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "8721f045-2e82-4bf0-9d85-5ba6ecf899d6", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'node_1': {'foo': 'hi! foo'}}\n", - "{'subgraph_node_1': {'bar': 'bar'}}\n", - "{'subgraph_node_2': {'foo': 'hi! foobar'}}\n", - "{'node_2': {'foo': 'hi! foobar'}}\n" - ] - } - ], - "source": [ - "for _, chunk in graph.stream({\"foo\": \"foo\"}, config, subgraphs=True):\n", - " print(chunk)" - ] - }, - { - "cell_type": "markdown", - "id": "ec6b5ce4-becc-4910-8a6d-d6b60d9d6f60", - "metadata": {}, - "source": [ - "We can now view the parent graph state by calling `graph.get_state()` with the same config that we used to invoke the graph." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "3e817283-142d-4fda-8cb1-8de34717f833", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'foo': 'hi! foobar'}" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "graph.get_state(config).values" - ] - }, - { - "cell_type": "markdown", - "id": "fbc4f30b-941e-4140-8bfa-3b8cc670489c", - "metadata": {}, - "source": [ - "To view the subgraph state, we need to do two things:\n", - "\n", - "1. Find the most recent config value for the subgraph\n", - "2. Use `graph.get_state()` to retrieve that value for the most recent subgraph config.\n", - "\n", - "To find the correct config, we can examine the state history from the parent graph and find the state snapshot before we return results from `node_2` (the node with subgraph):" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "e896628f-36b2-45eb-b7c5-c64c1098f328", - "metadata": {}, - "outputs": [], - "source": [ - "state_with_subgraph = [\n", - " s for s in graph.get_state_history(config) if s.next == (\"node_2\",)\n", - "][0]" - ] - }, - { - "cell_type": "markdown", - "id": "7af49977-42b1-40a1-88f1-f07437f8b7f9", - "metadata": {}, - "source": [ - "The state snapshot will include the list of `tasks` to be executed next. When using subgraphs, the `tasks` will contain the config that we can use to retrieve the subgraph state:" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "21e96df3-946d-40f8-8d6d-055ae4177452", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'configurable': {'thread_id': '1',\n", - " 'checkpoint_ns': 'node_2:6ef111a6-f290-7376-0dfc-a4152307bc5b'}}" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "subgraph_config = state_with_subgraph.tasks[0].state\n", - "subgraph_config" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "1d2401b3-d52b-4895-a5d1-dccf015ba216", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'foo': 'hi! foobar', 'bar': 'bar'}" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "graph.get_state(subgraph_config).values" - ] - }, - { - "cell_type": "markdown", - "id": "40aded92-99dd-427b-932d-aa78f474c271", - "metadata": {}, - "source": [ - "If you want to learn more about how to modify the subgraph state for human-in-the-loop workflows, check out this [how-to guide](https://langchain-ai.github.io/langgraph/how-tos/subgraphs-manage-state/)." - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.3" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/docs/docs/how-tos/subgraph-transform-state.ipynb b/docs/docs/how-tos/subgraph-transform-state.ipynb deleted file mode 100644 index b2d837f0e..000000000 --- a/docs/docs/how-tos/subgraph-transform-state.ipynb +++ /dev/null @@ -1,297 +0,0 @@ -{ - "cells": [ - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# How to transform inputs and outputs of a subgraph\n", - "\n", - "It's possible that your subgraph state is completely independent from the parent graph state, i.e. there are no overlapping channels (keys) between the two. For example, you might have a supervisor agent that needs to produce a report with a help of multiple ReAct agents. ReAct agent subgraphs might keep track of a list of messages whereas the supervisor only needs user input and final report in its state, and doesn't need to keep track of messages.\n", - "\n", - "In such cases you need to transform the inputs to the subgraph before calling it and then transform its outputs before returning. This guide shows how to do that.\n", - "\n", - "## Setup\n", - "\n", - "First, let's install the required packages" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "%%capture --no-stderr\n", - "%pip install -U langgraph" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "

    Set up LangSmith for LangGraph development

    \n", - "

    \n", - " Sign up for LangSmith to quickly spot issues and improve the performance of your LangGraph projects. LangSmith lets you use trace data to debug, test, and monitor your LLM apps built with LangGraph — read more about how to get started here. \n", - "

    \n", - "
    " - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Define graph and subgraphs\n", - "\n", - "Let's define 3 graphs:\n", - "- a parent graph\n", - "- a child subgraph that will be called by the parent graph\n", - "- a grandchild subgraph that will be called by the child graph" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Define grandchild" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "from typing_extensions import TypedDict\n", - "from langgraph.graph.state import StateGraph, START, END\n", - "\n", - "\n", - "class GrandChildState(TypedDict):\n", - " my_grandchild_key: str\n", - "\n", - "\n", - "def grandchild_1(state: GrandChildState) -> GrandChildState:\n", - " # NOTE: child or parent keys will not be accessible here\n", - " return {\"my_grandchild_key\": state[\"my_grandchild_key\"] + \", how are you\"}\n", - "\n", - "\n", - "grandchild = StateGraph(GrandChildState)\n", - "grandchild.add_node(\"grandchild_1\", grandchild_1)\n", - "\n", - "grandchild.add_edge(START, \"grandchild_1\")\n", - "grandchild.add_edge(\"grandchild_1\", END)\n", - "\n", - "grandchild_graph = grandchild.compile()" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'my_grandchild_key': 'hi Bob, how are you'}" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "grandchild_graph.invoke({\"my_grandchild_key\": \"hi Bob\"})" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Define child" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "class ChildState(TypedDict):\n", - " my_child_key: str\n", - "\n", - "\n", - "def call_grandchild_graph(state: ChildState) -> ChildState:\n", - " # NOTE: parent or grandchild keys won't be accessible here\n", - " # we're transforming the state from the child state channels (`my_child_key`)\n", - " # to the child state channels (`my_grandchild_key`)\n", - " grandchild_graph_input = {\"my_grandchild_key\": state[\"my_child_key\"]}\n", - " # we're transforming the state from the grandchild state channels (`my_grandchild_key`)\n", - " # back to the child state channels (`my_child_key`)\n", - " grandchild_graph_output = grandchild_graph.invoke(grandchild_graph_input)\n", - " return {\"my_child_key\": grandchild_graph_output[\"my_grandchild_key\"] + \" today?\"}\n", - "\n", - "\n", - "child = StateGraph(ChildState)\n", - "# NOTE: we're passing a function here instead of just compiled graph (`child_graph`)\n", - "child.add_node(\"child_1\", call_grandchild_graph)\n", - "child.add_edge(START, \"child_1\")\n", - "child.add_edge(\"child_1\", END)\n", - "child_graph = child.compile()" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'my_child_key': 'hi Bob, how are you today?'}" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "child_graph.invoke({\"my_child_key\": \"hi Bob\"})" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "

    Note

    \n", - "

    \n", - " We're wrapping the grandchild_graph invocation in a separate function (call_grandchild_graph) that transforms the input state before calling the grandchild graph and then transforms the output of grandchild graph back to child graph state. If you just pass grandchild_graph directly to .add_node without the transformations, LangGraph will raise an error as there are no shared state channels (keys) between child and grandchild states.\n", - "

    \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note that child and grandchild subgraphs have their own, **independent** state that is not shared with the parent graph." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Define parent" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "class ParentState(TypedDict):\n", - " my_key: str\n", - "\n", - "\n", - "def parent_1(state: ParentState) -> ParentState:\n", - " # NOTE: child or grandchild keys won't be accessible here\n", - " return {\"my_key\": \"hi \" + state[\"my_key\"]}\n", - "\n", - "\n", - "def parent_2(state: ParentState) -> ParentState:\n", - " return {\"my_key\": state[\"my_key\"] + \" bye!\"}\n", - "\n", - "\n", - "def call_child_graph(state: ParentState) -> ParentState:\n", - " # we're transforming the state from the parent state channels (`my_key`)\n", - " # to the child state channels (`my_child_key`)\n", - " child_graph_input = {\"my_child_key\": state[\"my_key\"]}\n", - " # we're transforming the state from the child state channels (`my_child_key`)\n", - " # back to the parent state channels (`my_key`)\n", - " child_graph_output = child_graph.invoke(child_graph_input)\n", - " return {\"my_key\": child_graph_output[\"my_child_key\"]}\n", - "\n", - "\n", - "parent = StateGraph(ParentState)\n", - "parent.add_node(\"parent_1\", parent_1)\n", - "# NOTE: we're passing a function here instead of just a compiled graph (`child_graph`)\n", - "parent.add_node(\"child\", call_child_graph)\n", - "parent.add_node(\"parent_2\", parent_2)\n", - "\n", - "parent.add_edge(START, \"parent_1\")\n", - "parent.add_edge(\"parent_1\", \"child\")\n", - "parent.add_edge(\"child\", \"parent_2\")\n", - "parent.add_edge(\"parent_2\", END)\n", - "\n", - "parent_graph = parent.compile()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "

    Note

    \n", - "

    \n", - " We're wrapping the child_graph invocation in a separate function (call_child_graph) that transforms the input state before calling the child graph and then transforms the output of the child graph back to parent graph state. If you just pass child_graph directly to .add_node without the transformations, LangGraph will raise an error as there are no shared state channels (keys) between parent and child states.\n", - "

    \n", - "
    \n", - "\n", - "Let's run the parent graph and make sure it correctly calls both the child and grandchild subgraphs:" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'my_key': 'hi Bob, how are you today? bye!'}" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "parent_graph.invoke({\"my_key\": \"Bob\"})" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Perfect! The parent graph correctly calls both the child and grandchild subgraphs (which we know since the \", how are you\" and \"today?\" are added to our original \"my_key\" state value)." - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.9" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/docs/docs/how-tos/subgraph.ipynb b/docs/docs/how-tos/subgraph.ipynb index f877d559b..a16d99216 100644 --- a/docs/docs/how-tos/subgraph.ipynb +++ b/docs/docs/how-tos/subgraph.ipynb @@ -1,54 +1,25 @@ { "cells": [ { - "attachments": { - "71516aef-9c00-4730-a676-a54e90cb6472.png": { - "image/png": "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" - } - }, + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ - "# How to use subgraphs\n", + "# Use subgraphs\n", "\n", - "
    \n", - "

    Prerequisites

    \n", - "

    \n", - " This guide assumes familiarity with the following:\n", - "

    \n", - "

    \n", - "
    \n", + "This guide explains the mechanics of using [subgraphs](../../concepts/subgraphs). A common application of subgraphs is to build [multi-agent](../../concepts/multi_agent) systems.\n", "\n", - "[Subgraphs](https://langchain-ai.github.io/langgraph/concepts/low_level/#subgraphs) allow you to build complex systems with multiple components that are themselves graphs. A common use case for using subgraphs is building [multi-agent systems](https://langchain-ai.github.io/langgraph/concepts/multi_agent).\n", + "When adding subgraphs, you need to define how the parent graph and the subgraph communicate:\n", "\n", - "The main question when adding subgraphs is how the parent graph and subgraph communicate, i.e. how they pass the [state](https://langchain-ai.github.io/langgraph/concepts/low_level/#state) between each other during the graph execution. There are two scenarios:\n", - "\n", - "* parent graph and subgraph **share schema keys**. In this case, you can [add a node with the compiled subgraph](#add-a-node-with-the-compiled-subgraph)\n", - "* parent graph and subgraph have **different schemas**. In this case, you have to [add a node function that invokes the subgraph](#add-a-node-function-that-invokes-the-subgraph): this is useful when the parent graph and the subgraph have different state schemas and you need to transform state before or after calling the subgraph\n", - "\n", - "Below we show to to add subgraphs for each scenario.\n", - "\n", - "![Screenshot 2024-07-11 at 1.01.28 PM.png](attachment:71516aef-9c00-4730-a676-a54e90cb6472.png)" + "* [Shared state schemas](#shared-state-schemas) — parent and subgraph have **shared state keys** in their state [schemas](../../concepts/low_level#state)\n", + "* [Different state schemas](#different-state-schemas) — **no shared state keys** in parent and subgraph [schemas](../../concepts/low_level#state)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Setup\n", - "\n", - "First, let's install the required packages" + "## Setup" ] }, { @@ -74,214 +45,493 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ - "## Add a node with the compiled subgraph\n", + "## Shared state schemas\n", "\n", - "A common case is for the parent graph and subgraph to communicate over a shared state key (channel). For example, in [multi-agent](https://langchain-ai.github.io/langgraph/concepts/multi_agent) systems, the agents often communicate over a shared [messages](https://langchain-ai.github.io/langgraph/concepts/low_level/#why-use-messages) key.\n", + "A common case is for the parent graph and subgraph to communicate over a shared state key (channel) in the [schema](../../concepts/low_level#state). For example, in [multi-agent](../../concepts/multi_agent) systems, the agents often communicate over a shared [messages](https://langchain-ai.github.io/langgraph/concepts/low_level/#why-use-messages) key.\n", "\n", "If your subgraph shares state keys with the parent graph, you can follow these steps to add it to your graph:\n", "\n", "1. Define the subgraph workflow (`subgraph_builder` in the example below) and compile it\n", "2. Pass compiled subgraph to the `.add_node` method when defining the parent graph workflow\n", "\n", - "Let's take a look at a simple example. " - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "from langgraph.graph import START, StateGraph\n", - "from typing import TypedDict\n", + "```python\n", + "from typing_extensions import TypedDict\n", + "from langgraph.graph.state import StateGraph, START\n", "\n", - "\n", - "# Define subgraph\n", - "class SubgraphState(TypedDict):\n", - " foo: str # note that this key is shared with the parent graph state\n", - " bar: str\n", - "\n", - "\n", - "def subgraph_node_1(state: SubgraphState):\n", - " return {\"bar\": \"bar\"}\n", - "\n", - "\n", - "def subgraph_node_2(state: SubgraphState):\n", - " # note that this node is using a state key ('bar') that is only available in the subgraph\n", - " # and is sending update on the shared state key ('foo')\n", - " return {\"foo\": state[\"foo\"] + state[\"bar\"]}\n", - "\n", - "\n", - "subgraph_builder = StateGraph(SubgraphState)\n", - "subgraph_builder.add_node(subgraph_node_1)\n", - "subgraph_builder.add_node(subgraph_node_2)\n", - "subgraph_builder.add_edge(START, \"subgraph_node_1\")\n", - "subgraph_builder.add_edge(\"subgraph_node_1\", \"subgraph_node_2\")\n", - "subgraph = subgraph_builder.compile()\n", - "\n", - "\n", - "# Define parent graph\n", - "class ParentState(TypedDict):\n", + "class State(TypedDict):\n", " foo: str\n", "\n", + "# Subgraph\n", "\n", - "def node_1(state: ParentState):\n", + "def subgraph_node_1(state: State):\n", " return {\"foo\": \"hi! \" + state[\"foo\"]}\n", "\n", + "subgraph_builder = StateGraph(State)\n", + "subgraph_builder.add_node(subgraph_node_1)\n", + "subgraph_builder.add_edge(START, \"subgraph_node_1\")\n", + "# highlight-next-line\n", + "subgraph = subgraph_builder.compile()\n", "\n", - "builder = StateGraph(ParentState)\n", - "builder.add_node(\"node_1\", node_1)\n", - "# note that we're adding the compiled subgraph as a node to the parent graph\n", - "builder.add_node(\"node_2\", subgraph)\n", + "# Parent graph\n", + "\n", + "builder = StateGraph(State)\n", + "# highlight-next-line\n", + "builder.add_node(\"node_1\", subgraph)\n", "builder.add_edge(START, \"node_1\")\n", - "builder.add_edge(\"node_1\", \"node_2\")\n", - "graph = builder.compile()" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'node_1': {'foo': 'hi! foo'}}\n", - "{'node_2': {'foo': 'hi! foobar'}}\n" - ] - } - ], - "source": [ - "for chunk in graph.stream({\"foo\": \"foo\"}):\n", - " print(chunk)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can see that the final output from the parent graph includes the results of subgraph invocation (i.e. string `\"bar\"`). If you would like to see outputs from the subgraph, you can specify `subgraphs=True` when streaming. See more on streaming from subgraphs in this [how-to guide](https://langchain-ai.github.io/langgraph/how-tos/streaming-subgraphs/#stream-subgraph)." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "((), {'node_1': {'foo': 'hi! foo'}})\n", - "(('node_2:e58e5673-a661-ebb0-70d4-e298a7fc28b7',), {'subgraph_node_1': {'bar': 'bar'}})\n", - "(('node_2:e58e5673-a661-ebb0-70d4-e298a7fc28b7',), {'subgraph_node_2': {'foo': 'hi! foobar'}})\n", - "((), {'node_2': {'foo': 'hi! foobar'}})\n" - ] - } - ], - "source": [ - "for chunk in graph.stream({\"foo\": \"foo\"}, subgraphs=True):\n", - " print(chunk)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Add a node function that invokes the subgraph\n", + "graph = builder.compile()\n", + "```\n", "\n", - "For more complex systems you might want to define subgraphs that have a completely different schema from the parent graph (no shared keys). For example, in a multi-agent RAG system, a search agent might only need to keep track of queries and retrieved documents.\n", + "??? example \"Full example: shared state schemas\"\n", + "\n", + " ```python\n", + " from typing_extensions import TypedDict\n", + " from langgraph.graph.state import StateGraph, START\n", + "\n", + " # Define subgraph\n", + " class SubgraphState(TypedDict):\n", + " foo: str # (1)! \n", + " bar: str # (2)!\n", + " \n", + " def subgraph_node_1(state: SubgraphState):\n", + " return {\"bar\": \"bar\"}\n", + " \n", + " def subgraph_node_2(state: SubgraphState):\n", + " # note that this node is using a state key ('bar') that is only available in the subgraph\n", + " # and is sending update on the shared state key ('foo')\n", + " return {\"foo\": state[\"foo\"] + state[\"bar\"]}\n", + " \n", + " subgraph_builder = StateGraph(SubgraphState)\n", + " subgraph_builder.add_node(subgraph_node_1)\n", + " subgraph_builder.add_node(subgraph_node_2)\n", + " subgraph_builder.add_edge(START, \"subgraph_node_1\")\n", + " subgraph_builder.add_edge(\"subgraph_node_1\", \"subgraph_node_2\")\n", + " subgraph = subgraph_builder.compile()\n", + " \n", + " # Define parent graph\n", + " class ParentState(TypedDict):\n", + " foo: str\n", + " \n", + " def node_1(state: ParentState):\n", + " return {\"foo\": \"hi! \" + state[\"foo\"]}\n", + " \n", + " builder = StateGraph(ParentState)\n", + " builder.add_node(\"node_1\", node_1)\n", + " # highlight-next-line\n", + " builder.add_node(\"node_2\", subgraph)\n", + " builder.add_edge(START, \"node_1\")\n", + " builder.add_edge(\"node_1\", \"node_2\")\n", + " graph = builder.compile()\n", + " \n", + " for chunk in graph.stream({\"foo\": \"foo\"}):\n", + " print(chunk)\n", + " ```\n", + "\n", + " 1. This key is shared with the parent graph state\n", + " 2. This key is private to the `SubgraphState` and is not visible to the parent graph\n", + " \n", + " ```\n", + " {'node_1': {'foo': 'hi! foo'}}\n", + " {'node_2': {'foo': 'hi! foobar'}}\n", + " ```\n", + "\n", + " ```" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Different state schemas\n", + "\n", + "For more complex systems you might want to define subgraphs that have a **completely different schema** from the parent graph (no shared keys). For example, you might want to keep a private message history for each of the agents in a [multi-agent](../concepts/multi_agent.md) system.\n", "\n", "If that's the case for your application, you need to define a node **function that invokes the subgraph**. This function needs to transform the input (parent) state to the subgraph state before invoking the subgraph, and transform the results back to the parent state before returning the state update from the node.\n", "\n", - "Below we show how to modify our original example to call a subgraph from inside the node." + "```python\n", + "from typing_extensions import TypedDict\n", + "from langgraph.graph.state import StateGraph, START\n", + "\n", + "class SubgraphState(TypedDict):\n", + " bar: str\n", + "\n", + "# Subgraph\n", + "\n", + "def subgraph_node_1(state: SubgraphState):\n", + " return {\"bar\": \"hi! \" + state[\"bar\"]}\n", + "\n", + "subgraph_builder = StateGraph(SubgraphState)\n", + "subgraph_builder.add_node(subgraph_node_1)\n", + "subgraph_builder.add_edge(START, \"subgraph_node_1\")\n", + "# highlight-next-line\n", + "subgraph = subgraph_builder.compile()\n", + "\n", + "# Parent graph\n", + "\n", + "class State(TypedDict):\n", + " foo: str\n", + "\n", + "def call_subgraph(state: State):\n", + " # highlight-next-line\n", + " subgraph_output = subgraph.invoke({\"bar\": state[\"foo\"]}) # (1)!\n", + " # highlight-next-line\n", + " return {\"foo\": subgraph_output[\"bar\"]} # (2)!\n", + "\n", + "builder = StateGraph(State)\n", + "# highlight-next-line\n", + "builder.add_node(\"node_1\", call_subgraph)\n", + "builder.add_edge(START, \"node_1\")\n", + "graph = builder.compile()\n", + "```\n", + "\n", + "1. Transform the state to the subgraph state\n", + "2. Transform response back to the parent state\n", + "\n", + "??? example \"Full example: different state schemas\"\n", + "\n", + " ```python\n", + " from typing_extensions import TypedDict\n", + " from langgraph.graph.state import StateGraph, START\n", + "\n", + " # Define subgraph\n", + " class SubgraphState(TypedDict):\n", + " # note that none of these keys are shared with the parent graph state\n", + " bar: str\n", + " baz: str\n", + " \n", + " def subgraph_node_1(state: SubgraphState):\n", + " return {\"baz\": \"baz\"}\n", + " \n", + " def subgraph_node_2(state: SubgraphState):\n", + " return {\"bar\": state[\"bar\"] + state[\"baz\"]}\n", + " \n", + " subgraph_builder = StateGraph(SubgraphState)\n", + " subgraph_builder.add_node(subgraph_node_1)\n", + " subgraph_builder.add_node(subgraph_node_2)\n", + " subgraph_builder.add_edge(START, \"subgraph_node_1\")\n", + " subgraph_builder.add_edge(\"subgraph_node_1\", \"subgraph_node_2\")\n", + " subgraph = subgraph_builder.compile()\n", + " \n", + " # Define parent graph\n", + " class ParentState(TypedDict):\n", + " foo: str\n", + " \n", + " def node_1(state: ParentState):\n", + " return {\"foo\": \"hi! \" + state[\"foo\"]}\n", + " \n", + " def node_2(state: ParentState):\n", + " # highlight-next-line\n", + " response = subgraph.invoke({\"bar\": state[\"foo\"]}) # (1)!\n", + " # highlight-next-line\n", + " return {\"foo\": response[\"bar\"]} # (2)!\n", + " \n", + " \n", + " builder = StateGraph(ParentState)\n", + " builder.add_node(\"node_1\", node_1)\n", + " # highlight-next-line\n", + " builder.add_node(\"node_2\", node_2)\n", + " builder.add_edge(START, \"node_1\")\n", + " builder.add_edge(\"node_1\", \"node_2\")\n", + " graph = builder.compile()\n", + " \n", + " for chunk in graph.stream({\"foo\": \"foo\"}, subgraphs=True):\n", + " print(chunk)\n", + " ```\n", + "\n", + " 1. Transform the state to the subgraph state\n", + " 2. Transform response back to the parent state\n", + "\n", + " ```\n", + " ((), {'node_1': {'foo': 'hi! foo'}})\n", + " (('node_2:9c36dd0f-151a-cb42-cbad-fa2f851f9ab7',), {'subgraph_node_1': {'baz': 'baz'}})\n", + " (('node_2:9c36dd0f-151a-cb42-cbad-fa2f851f9ab7',), {'subgraph_node_2': {'bar': 'hi! foobaz'}})\n", + " ((), {'node_2': {'foo': 'hi! foobaz'}})\n", + " ```\n", + "\n", + "??? example \"Full example: different state schemas (two levels of subgraphs)\"\n", + "\n", + " This is an example with two levels of subgraphs: parent -> child -> grandchild.\n", + "\n", + " ```python\n", + " # Grandchild graph\n", + " from typing_extensions import TypedDict\n", + " from langgraph.graph.state import StateGraph, START, END\n", + " \n", + " class GrandChildState(TypedDict):\n", + " my_grandchild_key: str\n", + " \n", + " def grandchild_1(state: GrandChildState) -> GrandChildState:\n", + " # NOTE: child or parent keys will not be accessible here\n", + " return {\"my_grandchild_key\": state[\"my_grandchild_key\"] + \", how are you\"}\n", + " \n", + " \n", + " grandchild = StateGraph(GrandChildState)\n", + " grandchild.add_node(\"grandchild_1\", grandchild_1)\n", + " \n", + " grandchild.add_edge(START, \"grandchild_1\")\n", + " grandchild.add_edge(\"grandchild_1\", END)\n", + " \n", + " grandchild_graph = grandchild.compile()\n", + " \n", + " # Child graph\n", + " class ChildState(TypedDict):\n", + " my_child_key: str\n", + " \n", + " def call_grandchild_graph(state: ChildState) -> ChildState:\n", + " # NOTE: parent or grandchild keys won't be accessible here\n", + " grandchild_graph_input = {\"my_grandchild_key\": state[\"my_child_key\"]} # (1)!\n", + " # highlight-next-line\n", + " grandchild_graph_output = grandchild_graph.invoke(grandchild_graph_input)\n", + " return {\"my_child_key\": grandchild_graph_output[\"my_grandchild_key\"] + \" today?\"} # (2)!\n", + " \n", + " child = StateGraph(ChildState)\n", + " # highlight-next-line\n", + " child.add_node(\"child_1\", call_grandchild_graph) # (3)!\n", + " child.add_edge(START, \"child_1\")\n", + " child.add_edge(\"child_1\", END)\n", + " child_graph = child.compile()\n", + " \n", + " # Parent graph\n", + " class ParentState(TypedDict):\n", + " my_key: str\n", + " \n", + " def parent_1(state: ParentState) -> ParentState:\n", + " # NOTE: child or grandchild keys won't be accessible here\n", + " return {\"my_key\": \"hi \" + state[\"my_key\"]}\n", + " \n", + " def parent_2(state: ParentState) -> ParentState:\n", + " return {\"my_key\": state[\"my_key\"] + \" bye!\"}\n", + " \n", + " def call_child_graph(state: ParentState) -> ParentState:\n", + " child_graph_input = {\"my_child_key\": state[\"my_key\"]} # (4)!\n", + " # highlight-next-line\n", + " child_graph_output = child_graph.invoke(child_graph_input)\n", + " return {\"my_key\": child_graph_output[\"my_child_key\"]} # (5)!\n", + " \n", + " parent = StateGraph(ParentState)\n", + " parent.add_node(\"parent_1\", parent_1)\n", + " # highlight-next-line\n", + " parent.add_node(\"child\", call_child_graph) # (6)!\n", + " parent.add_node(\"parent_2\", parent_2)\n", + " \n", + " parent.add_edge(START, \"parent_1\")\n", + " parent.add_edge(\"parent_1\", \"child\")\n", + " parent.add_edge(\"child\", \"parent_2\")\n", + " parent.add_edge(\"parent_2\", END)\n", + " \n", + " parent_graph = parent.compile()\n", + " \n", + " for chunk in parent_graph.stream({\"my_key\": \"Bob\"}, subgraphs=True):\n", + " print(chunk)\n", + " ```\n", + "\n", + " 1. We're transforming the state from the child state channels (`my_child_key`) to the child state channels (`my_grandchild_key`)\n", + " 2. We're transforming the state from the grandchild state channels (`my_grandchild_key`) back to the child state channels (`my_child_key`)\n", + " 3. We're passing a function here instead of just compiled graph (`grandchild_graph`)\n", + " 4. We're transforming the state from the parent state channels (`my_key`) to the child state channels (`my_child_key`)\n", + " 5. We're transforming the state from the child state channels (`my_child_key`) back to the parent state channels (`my_key`)\n", + " 6. We're passing a function here instead of just a compiled graph (`child_graph`)\n", + "\n", + " ```\n", + " ((), {'parent_1': {'my_key': 'hi Bob'}})\n", + " (('child:2e26e9ce-602f-862c-aa66-1ea5a4655e3b', 'child_1:781bb3b1-3971-84ce-810b-acf819a03f9c'), {'grandchild_1': {'my_grandchild_key': 'hi Bob, how are you'}})\n", + " (('child:2e26e9ce-602f-862c-aa66-1ea5a4655e3b',), {'child_1': {'my_child_key': 'hi Bob, how are you today?'}})\n", + " ((), {'child': {'my_key': 'hi Bob, how are you today?'}})\n", + " ((), {'parent_2': {'my_key': 'hi Bob, how are you today? bye!'}})\n", + " ```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "!!! warning\n", - " You **cannot** invoke more than one subgraph inside the same node." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "# Define subgraph\n", - "class SubgraphState(TypedDict):\n", - " # note that none of these keys are shared with the parent graph state\n", - " bar: str\n", - " baz: str\n", + "## Add persistence \n", "\n", + "You only need to **provide the checkpointer when compiling the parent graph**. LangGraph will automatically propagate the checkpointer to the child subgraphs.\n", "\n", - "def subgraph_node_1(state: SubgraphState):\n", - " return {\"baz\": \"baz\"}\n", + "```python\n", + "from langgraph.graph import START, StateGraph\n", + "from langgraph.checkpoint.memory import InMemorySaver\n", + "from typing_extensions import TypedDict\n", "\n", - "\n", - "def subgraph_node_2(state: SubgraphState):\n", - " return {\"bar\": state[\"bar\"] + state[\"baz\"]}\n", - "\n", - "\n", - "subgraph_builder = StateGraph(SubgraphState)\n", - "subgraph_builder.add_node(subgraph_node_1)\n", - "subgraph_builder.add_node(subgraph_node_2)\n", - "subgraph_builder.add_edge(START, \"subgraph_node_1\")\n", - "subgraph_builder.add_edge(\"subgraph_node_1\", \"subgraph_node_2\")\n", - "subgraph = subgraph_builder.compile()\n", - "\n", - "\n", - "# Define parent graph\n", - "class ParentState(TypedDict):\n", + "class State(TypedDict):\n", " foo: str\n", "\n", + "# Subgraph\n", "\n", - "def node_1(state: ParentState):\n", - " return {\"foo\": \"hi! \" + state[\"foo\"]}\n", + "def subgraph_node_1(state: State):\n", + " return {\"foo\": state[\"foo\"] + \"bar\"}\n", "\n", + "subgraph_builder = StateGraph(State)\n", + "subgraph_builder.add_node(subgraph_node_1)\n", + "subgraph_builder.add_edge(START, \"subgraph_node_1\")\n", + "# highlight-next-line\n", + "subgraph = subgraph_builder.compile()\n", "\n", - "def node_2(state: ParentState):\n", - " # transform the state to the subgraph state\n", - " response = subgraph.invoke({\"bar\": state[\"foo\"]})\n", - " # transform response back to the parent state\n", - " return {\"foo\": response[\"bar\"]}\n", + "# Parent graph\n", "\n", - "\n", - "builder = StateGraph(ParentState)\n", - "builder.add_node(\"node_1\", node_1)\n", - "# note that instead of using the compiled subgraph we are using `node_2` function that is calling the subgraph\n", - "builder.add_node(\"node_2\", node_2)\n", + "builder = StateGraph(State)\n", + "# highlight-next-line\n", + "builder.add_node(\"node_1\", subgraph)\n", "builder.add_edge(START, \"node_1\")\n", - "builder.add_edge(\"node_1\", \"node_2\")\n", - "graph = builder.compile()" + "\n", + "checkpointer = InMemorySaver()\n", + "# highlight-next-line\n", + "graph = builder.compile(checkpointer=checkpointer)\n", + "``` \n", + "\n", + "If you want the subgraph to **have its own memory**, you can compile it `with checkpointer=True`. This is useful in [multi-agent](../../concepts/multi_agent) systems, if you want agents to keep track of their internal message histories:\n", + "\n", + "```python\n", + "subgraph_builder = StateGraph(...)\n", + "# highlight-next-line\n", + "subgraph = subgraph_builder.compile(checkpointer=True)\n", + "```" ] }, { - "cell_type": "code", - "execution_count": 6, + "cell_type": "markdown", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "((), {'node_1': {'foo': 'hi! foo'}})\n", - "(('node_2:c47d7ea3-7798-87c4-adf4-2543a91d6891',), {'subgraph_node_1': {'baz': 'baz'}})\n", - "(('node_2:c47d7ea3-7798-87c4-adf4-2543a91d6891',), {'subgraph_node_2': {'bar': 'hi! foobaz'}})\n", - "((), {'node_2': {'foo': 'hi! foobaz'}})\n" - ] - } - ], "source": [ - "for chunk in graph.stream({\"foo\": \"foo\"}, subgraphs=True):\n", - " print(chunk)" + "## View subgraph state\n", + "\n", + "When you enable [persistence](../persistence), you can [inspect the graph state](../persistence#manage-checkpoints) (checkpoint) via `graph.get_state(config)`. To view the subgraph state, you can use `graph.get_state(config, subgraphs=True)`.\n", + "\n", + "!!! important \"Available **only** when interrupted\"\n", + "\n", + " Subgraph state can only be viewed **when the subgraph is interrupted**. Once you resume the graph, you won't be able to access the subgraph state.\n", + "\n", + "??? example \"View interrupted subgraph state\"\n", + "\n", + " ```python\n", + " from langgraph.graph import START, StateGraph\n", + " from langgraph.checkpoint.memory import InMemorySaver\n", + " from langgraph.types import interrupt, Command\n", + " from typing_extensions import TypedDict\n", + " \n", + " class State(TypedDict):\n", + " foo: str\n", + " \n", + " # Subgraph\n", + " \n", + " def subgraph_node_1(state: State):\n", + " # highlight-next-line\n", + " value = interrupt(\"Provide value:\")\n", + " return {\"foo\": state[\"foo\"] + value}\n", + " \n", + " subgraph_builder = StateGraph(State)\n", + " subgraph_builder.add_node(subgraph_node_1)\n", + " subgraph_builder.add_edge(START, \"subgraph_node_1\")\n", + " \n", + " subgraph = subgraph_builder.compile()\n", + " \n", + " # Parent graph\n", + " \n", + " builder = StateGraph(State)\n", + " # highlight-next-line\n", + " builder.add_node(\"node_1\", subgraph)\n", + " builder.add_edge(START, \"node_1\")\n", + " \n", + " checkpointer = InMemorySaver()\n", + " # highlight-next-line\n", + " graph = builder.compile(checkpointer=checkpointer)\n", + " \n", + " config = {\"configurable\": {\"thread_id\": \"1\"}}\n", + " \n", + " graph.invoke({\"foo\": \"\"}, config)\n", + " parent_state = graph.get_state(config)\n", + " # highlight-next-line\n", + " subgraph_state = graph.get_state(config, subgraphs=True).tasks[0].state # (1)!\n", + " \n", + " # resume the subgraph\n", + " graph.invoke(Command(resume=\"bar\"), config)\n", + " ```\n", + " \n", + " 1. This will be available only when the subgraph is interrupted. Once you resume the graph, you won't be able to access the subgraph state." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Stream subgraph outputs\n", + "\n", + "To include outputs from [subgraphs](../concepts/low_level.md#subgraphs) in the streamed outputs, you can set `subgraphs=True` in the `.stream()` method of the parent graph. This will stream outputs from both the parent graph and any subgraphs.\n", + "\n", + "```python\n", + "for chunk in graph.stream(\n", + " {\"foo\": \"foo\"},\n", + " # highlight-next-line\n", + " subgraphs=True, # (1)!\n", + " stream_mode=\"updates\",\n", + "):\n", + " print(chunk)\n", + "```\n", + "\n", + "1. Set `subgraphs=True` to stream outputs from subgraphs.\n", + "\n", + "??? example \"Stream from subgraphs\"\n", + "\n", + " ```python\n", + " from typing_extensions import TypedDict\n", + " from langgraph.graph.state import StateGraph, START\n", + "\n", + " # Define subgraph\n", + " class SubgraphState(TypedDict):\n", + " foo: str\n", + " bar: str\n", + " \n", + " def subgraph_node_1(state: SubgraphState):\n", + " return {\"bar\": \"bar\"}\n", + " \n", + " def subgraph_node_2(state: SubgraphState):\n", + " # note that this node is using a state key ('bar') that is only available in the subgraph\n", + " # and is sending update on the shared state key ('foo')\n", + " return {\"foo\": state[\"foo\"] + state[\"bar\"]}\n", + " \n", + " subgraph_builder = StateGraph(SubgraphState)\n", + " subgraph_builder.add_node(subgraph_node_1)\n", + " subgraph_builder.add_node(subgraph_node_2)\n", + " subgraph_builder.add_edge(START, \"subgraph_node_1\")\n", + " subgraph_builder.add_edge(\"subgraph_node_1\", \"subgraph_node_2\")\n", + " subgraph = subgraph_builder.compile()\n", + " \n", + " # Define parent graph\n", + " class ParentState(TypedDict):\n", + " foo: str\n", + " \n", + " def node_1(state: ParentState):\n", + " return {\"foo\": \"hi! \" + state[\"foo\"]}\n", + " \n", + " builder = StateGraph(ParentState)\n", + " builder.add_node(\"node_1\", node_1)\n", + " # highlight-next-line\n", + " builder.add_node(\"node_2\", subgraph)\n", + " builder.add_edge(START, \"node_1\")\n", + " builder.add_edge(\"node_1\", \"node_2\")\n", + " graph = builder.compile()\n", + "\n", + " for chunk in graph.stream(\n", + " {\"foo\": \"foo\"},\n", + " stream_mode=\"updates\",\n", + " # highlight-next-line\n", + " subgraphs=True, # (1)!\n", + " ):\n", + " print(chunk)\n", + " ```\n", + " \n", + " 1. Set `subgraphs=True` to stream outputs from subgraphs.\n", + "\n", + " ```\n", + " ((), {'node_1': {'foo': 'hi! foo'}})\n", + " (('node_2:e58e5673-a661-ebb0-70d4-e298a7fc28b7',), {'subgraph_node_1': {'bar': 'bar'}})\n", + " (('node_2:e58e5673-a661-ebb0-70d4-e298a7fc28b7',), {'subgraph_node_2': {'foo': 'hi! foobar'}})\n", + " ((), {'node_2': {'foo': 'hi! foobar'}})\n", + " ```" ] } ], diff --git a/docs/docs/how-tos/subgraphs-manage-state.ipynb b/docs/docs/how-tos/subgraphs-manage-state.ipynb deleted file mode 100644 index f60451ecc..000000000 --- a/docs/docs/how-tos/subgraphs-manage-state.ipynb +++ /dev/null @@ -1,1049 +0,0 @@ -{ - "cells": [ - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# How to view and update state in subgraphs\n", - "\n", - "
    \n", - "

    Prerequisites

    \n", - "

    \n", - " This guide assumes familiarity with the following:\n", - "

    \n", - "

    \n", - "
    \n", - "\n", - "Once you add [persistence](../subgraph-persistence), you can easily view and update the state of the subgraph at any point in time. This enables a lot of the human-in-the-loop interaction patterns:\n", - "\n", - "* You can surface a state during an interrupt to a user to let them accept an action.\n", - "* You can rewind the subgraph to reproduce or avoid issues.\n", - "* You can modify the state to let the user better control its actions.\n", - "\n", - "This guide shows how you can do this." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Setup\n", - "\n", - "First, let's install the required packages" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "%%capture --no-stderr\n", - "%pip install -U langgraph" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Next, we need to set API keys for OpenAI (the LLM we will use):" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import getpass\n", - "import os\n", - "\n", - "\n", - "def _set_env(var: str):\n", - " if not os.environ.get(var):\n", - " os.environ[var] = getpass.getpass(f\"{var}: \")\n", - "\n", - "\n", - "_set_env(\"OPENAI_API_KEY\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "

    Set up LangSmith for LangGraph development

    \n", - "

    \n", - " Sign up for LangSmith to quickly spot issues and improve the performance of your LangGraph projects. LangSmith lets you use trace data to debug, test, and monitor your LLM apps built with LangGraph — read more about how to get started here. \n", - "

    \n", - "
    " - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Define subgraph\n", - "\n", - "First, let's set up our subgraph. For this, we will create a simple graph that can get the weather for a specific city. We will compile this graph with a [breakpoint](https://langchain-ai.github.io/langgraph/how-tos/human_in_the_loop/breakpoints/) before the `weather_node`:" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "from langgraph.graph import StateGraph, END, START, MessagesState\n", - "from langchain_core.tools import tool\n", - "from langchain_openai import ChatOpenAI\n", - "\n", - "\n", - "@tool\n", - "def get_weather(city: str):\n", - " \"\"\"Get the weather for a specific city\"\"\"\n", - " return f\"It's sunny in {city}!\"\n", - "\n", - "\n", - "raw_model = ChatOpenAI(model=\"gpt-4o\")\n", - "model = raw_model.with_structured_output(get_weather)\n", - "\n", - "\n", - "class SubGraphState(MessagesState):\n", - " city: str\n", - "\n", - "\n", - "def model_node(state: SubGraphState):\n", - " result = model.invoke(state[\"messages\"])\n", - " return {\"city\": result[\"city\"]}\n", - "\n", - "\n", - "def weather_node(state: SubGraphState):\n", - " result = get_weather.invoke({\"city\": state[\"city\"]})\n", - " return {\"messages\": [{\"role\": \"assistant\", \"content\": result}]}\n", - "\n", - "\n", - "subgraph = StateGraph(SubGraphState)\n", - "subgraph.add_node(model_node)\n", - "subgraph.add_node(weather_node)\n", - "subgraph.add_edge(START, \"model_node\")\n", - "subgraph.add_edge(\"model_node\", \"weather_node\")\n", - "subgraph.add_edge(\"weather_node\", END)\n", - "subgraph = subgraph.compile(interrupt_before=[\"weather_node\"])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Define parent graph\n", - "\n", - "We can now setup the overall graph. This graph will first route to the subgraph if it needs to get the weather, otherwise it will route to a normal LLM." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "from typing import Literal\n", - "from typing_extensions import TypedDict\n", - "from langgraph.checkpoint.memory import MemorySaver\n", - "\n", - "\n", - "memory = MemorySaver()\n", - "\n", - "\n", - "class RouterState(MessagesState):\n", - " route: Literal[\"weather\", \"other\"]\n", - "\n", - "\n", - "class Router(TypedDict):\n", - " route: Literal[\"weather\", \"other\"]\n", - "\n", - "\n", - "router_model = raw_model.with_structured_output(Router)\n", - "\n", - "\n", - "def router_node(state: RouterState):\n", - " system_message = \"Classify the incoming query as either about weather or not.\"\n", - " messages = [{\"role\": \"system\", \"content\": system_message}] + state[\"messages\"]\n", - " route = router_model.invoke(messages)\n", - " return {\"route\": route[\"route\"]}\n", - "\n", - "\n", - "def normal_llm_node(state: RouterState):\n", - " response = raw_model.invoke(state[\"messages\"])\n", - " return {\"messages\": [response]}\n", - "\n", - "\n", - "def route_after_prediction(\n", - " state: RouterState,\n", - ") -> Literal[\"weather_graph\", \"normal_llm_node\"]:\n", - " if state[\"route\"] == \"weather\":\n", - " return \"weather_graph\"\n", - " else:\n", - " return \"normal_llm_node\"\n", - "\n", - "\n", - "graph = StateGraph(RouterState)\n", - "graph.add_node(router_node)\n", - "graph.add_node(normal_llm_node)\n", - "graph.add_node(\"weather_graph\", subgraph)\n", - "graph.add_edge(START, \"router_node\")\n", - "graph.add_conditional_edges(\"router_node\", route_after_prediction)\n", - "graph.add_edge(\"normal_llm_node\", END)\n", - "graph.add_edge(\"weather_graph\", END)\n", - "graph = graph.compile(checkpointer=memory)" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "data": { - "image/jpeg": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from IPython.display import Image, display\n", - "\n", - "# Setting xray to 1 will show the internal structure of the nested graph\n", - "display(Image(graph.get_graph(xray=1).draw_mermaid_png()))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's test this out with a normal query to make sure it works as intended!" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'router_node': {'route': 'other'}}\n", - "{'normal_llm_node': {'messages': [AIMessage(content='Hello! How can I assist you today?', additional_kwargs={'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 9, 'prompt_tokens': 9, 'total_tokens': 18, 'completion_tokens_details': {'reasoning_tokens': 0}}, 'model_name': 'gpt-3.5-turbo-0125', 'system_fingerprint': None, 'finish_reason': 'stop', 'logprobs': None}, id='run-35de4577-2117-40e4-ab3b-cd2ac6e27b4c-0', usage_metadata={'input_tokens': 9, 'output_tokens': 9, 'total_tokens': 18})]}}\n" - ] - } - ], - "source": [ - "config = {\"configurable\": {\"thread_id\": \"1\"}}\n", - "inputs = {\"messages\": [{\"role\": \"user\", \"content\": \"hi!\"}]}\n", - "for update in graph.stream(inputs, config=config, stream_mode=\"updates\"):\n", - " print(update)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Great! We didn't ask about the weather, so we got a normal response from the LLM.\n", - "\n", - "## Resuming from breakpoints\n", - "\n", - "Let's now look at what happens with breakpoints. Let's invoke it with a query that should get routed to the weather subgraph where we have the interrupt node." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'router_node': {'route': 'weather'}}\n" - ] - } - ], - "source": [ - "config = {\"configurable\": {\"thread_id\": \"2\"}}\n", - "inputs = {\"messages\": [{\"role\": \"user\", \"content\": \"what's the weather in sf\"}]}\n", - "for update in graph.stream(inputs, config=config, stream_mode=\"updates\"):\n", - " print(update)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note that the graph stream doesn't include subgraph events. If we want to stream subgraph events, we can pass `subgraphs=True` and get back subgraph events like so:" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "((), {'messages': [HumanMessage(content=\"what's the weather in sf\", additional_kwargs={}, response_metadata={}, id='108eb27a-2cbf-48d2-a6e7-6e07e82eafbc')]})\n", - "((), {'messages': [HumanMessage(content=\"what's the weather in sf\", additional_kwargs={}, response_metadata={}, id='108eb27a-2cbf-48d2-a6e7-6e07e82eafbc')], 'route': 'weather'})\n", - "(('weather_graph:0c47aeb3-6f4d-5e68-ccf4-42bd48e8ef20',), {'messages': [HumanMessage(content=\"what's the weather in sf\", additional_kwargs={}, response_metadata={}, id='108eb27a-2cbf-48d2-a6e7-6e07e82eafbc')]})\n", - "(('weather_graph:0c47aeb3-6f4d-5e68-ccf4-42bd48e8ef20',), {'messages': [HumanMessage(content=\"what's the weather in sf\", additional_kwargs={}, response_metadata={}, id='108eb27a-2cbf-48d2-a6e7-6e07e82eafbc')], 'city': 'San Francisco'})\n" - ] - } - ], - "source": [ - "config = {\"configurable\": {\"thread_id\": \"3\"}}\n", - "inputs = {\"messages\": [{\"role\": \"user\", \"content\": \"what's the weather in sf\"}]}\n", - "for update in graph.stream(inputs, config=config, stream_mode=\"values\", subgraphs=True):\n", - " print(update)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "If we get the state now, we can see that it's paused on `weather_graph`" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "('weather_graph',)" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "state = graph.get_state(config)\n", - "state.next" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "If we look at the pending tasks for our current state, we can see that we have one task named `weather_graph`, which corresponds to the subgraph task." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(PregelTask(id='0c47aeb3-6f4d-5e68-ccf4-42bd48e8ef20', name='weather_graph', path=('__pregel_pull', 'weather_graph'), error=None, interrupts=(), state={'configurable': {'thread_id': '3', 'checkpoint_ns': 'weather_graph:0c47aeb3-6f4d-5e68-ccf4-42bd48e8ef20'}}),)" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "state.tasks" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "However since we got the state using the config of the parent graph, we don't have access to the subgraph state. If you look at the `state` value of the `PregelTask` above you will note that it is simply the configuration of the parent graph. If we want to actually populate the subgraph state, we can pass in `subgraphs=True` to `get_state` like so:" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "PregelTask(id='0c47aeb3-6f4d-5e68-ccf4-42bd48e8ef20', name='weather_graph', path=('__pregel_pull', 'weather_graph'), error=None, interrupts=(), state=StateSnapshot(values={'messages': [HumanMessage(content=\"what's the weather in sf\", additional_kwargs={}, response_metadata={}, id='108eb27a-2cbf-48d2-a6e7-6e07e82eafbc')], 'city': 'San Francisco'}, next=('weather_node',), config={'configurable': {'thread_id': '3', 'checkpoint_ns': 'weather_graph:0c47aeb3-6f4d-5e68-ccf4-42bd48e8ef20', 'checkpoint_id': '1ef75ee0-d9c3-6242-8001-440e7a3fb19f', 'checkpoint_map': {'': '1ef75ee0-d4e8-6ede-8001-2542067239ef', 'weather_graph:0c47aeb3-6f4d-5e68-ccf4-42bd48e8ef20': '1ef75ee0-d9c3-6242-8001-440e7a3fb19f'}}}, metadata={'source': 'loop', 'writes': {'model_node': {'city': 'San Francisco'}}, 'step': 1, 'parents': {'': '1ef75ee0-d4e8-6ede-8001-2542067239ef'}}, created_at='2024-09-18T18:44:36.278105+00:00', parent_config={'configurable': {'thread_id': '3', 'checkpoint_ns': 'weather_graph:0c47aeb3-6f4d-5e68-ccf4-42bd48e8ef20', 'checkpoint_id': '1ef75ee0-d4ef-6dec-8000-5d5724f3ef73'}}, tasks=(PregelTask(id='26f4384a-41d7-5ca9-cb94-4001de62e8aa', name='weather_node', path=('__pregel_pull', 'weather_node'), error=None, interrupts=(), state=None),)))" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "state = graph.get_state(config, subgraphs=True)\n", - "state.tasks[0]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now we have access to the subgraph state! If you look at the `state` value of the `PregelTask` you can see that it has all the information we need, like the next node (`weather_node`) and the current state values (e.g. `city`).\n", - "\n", - "To resume execution, we can just invoke the outer graph as normal:" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "((), {'messages': [HumanMessage(content=\"what's the weather in sf\", additional_kwargs={}, response_metadata={}, id='108eb27a-2cbf-48d2-a6e7-6e07e82eafbc')], 'route': 'weather'})\n", - "(('weather_graph:0c47aeb3-6f4d-5e68-ccf4-42bd48e8ef20',), {'messages': [HumanMessage(content=\"what's the weather in sf\", additional_kwargs={}, response_metadata={}, id='108eb27a-2cbf-48d2-a6e7-6e07e82eafbc')], 'city': 'San Francisco'})\n", - "(('weather_graph:0c47aeb3-6f4d-5e68-ccf4-42bd48e8ef20',), {'messages': [HumanMessage(content=\"what's the weather in sf\", additional_kwargs={}, response_metadata={}, id='108eb27a-2cbf-48d2-a6e7-6e07e82eafbc'), AIMessage(content=\"It's sunny in San Francisco!\", additional_kwargs={}, response_metadata={}, id='c996ce37-438c-44f4-9e60-5aed8bcdae8a')], 'city': 'San Francisco'})\n", - "((), {'messages': [HumanMessage(content=\"what's the weather in sf\", additional_kwargs={}, response_metadata={}, id='108eb27a-2cbf-48d2-a6e7-6e07e82eafbc'), AIMessage(content=\"It's sunny in San Francisco!\", additional_kwargs={}, response_metadata={}, id='c996ce37-438c-44f4-9e60-5aed8bcdae8a')], 'route': 'weather'})\n" - ] - } - ], - "source": [ - "for update in graph.stream(None, config=config, stream_mode=\"values\", subgraphs=True):\n", - " print(update)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Resuming from specific subgraph node\n", - "\n", - "In the example above, we were replaying from the outer graph - which automatically replayed the subgraph from whatever state it was in previously (paused before the `weather_node` in our case), but it is also possible to replay from inside a subgraph. In order to do so, we need to get the configuration from the exact subgraph state that we want to replay from.\n", - "\n", - "We can do this by exploring the state history of the subgraph, and selecting the state before `model_node` - which we can do by filtering on the `.next` parameter.\n", - "\n", - "To get the state history of the subgraph, we need to first pass in " - ] - }, - { - "cell_type": "code", - "execution_count": 58, - "metadata": {}, - "outputs": [], - "source": [ - "parent_graph_state_before_subgraph = next(\n", - " h for h in graph.get_state_history(config) if h.next == (\"weather_graph\",)\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 63, - "metadata": {}, - "outputs": [], - "source": [ - "subgraph_state_before_model_node = next(\n", - " h\n", - " for h in graph.get_state_history(parent_graph_state_before_subgraph.tasks[0].state)\n", - " if h.next == (\"model_node\",)\n", - ")\n", - "\n", - "# This pattern can be extended no matter how many levels deep\n", - "# subsubgraph_stat_history = next(h for h in graph.get_state_history(subgraph_state_before_model_node.tasks[0].state) if h.next == ('my_subsubgraph_node',))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can confirm that we have gotten the correct state by comparing the `.next` parameter of the `subgraph_state_before_model_node`." - ] - }, - { - "cell_type": "code", - "execution_count": 64, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "('model_node',)" - ] - }, - "execution_count": 64, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "subgraph_state_before_model_node.next" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Perfect! We have gotten the correct state snaphshot, and we can now resume from the `model_node` inside of our subgraph:" - ] - }, - { - "cell_type": "code", - "execution_count": 65, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "((), {'messages': [HumanMessage(content=\"what's the weather in sf\", additional_kwargs={}, response_metadata={}, id='108eb27a-2cbf-48d2-a6e7-6e07e82eafbc')], 'route': 'weather'})\n", - "(('weather_graph:0c47aeb3-6f4d-5e68-ccf4-42bd48e8ef20',), {'messages': [HumanMessage(content=\"what's the weather in sf\", additional_kwargs={}, response_metadata={}, id='108eb27a-2cbf-48d2-a6e7-6e07e82eafbc')]})\n", - "(('weather_graph:0c47aeb3-6f4d-5e68-ccf4-42bd48e8ef20',), {'messages': [HumanMessage(content=\"what's the weather in sf\", additional_kwargs={}, response_metadata={}, id='108eb27a-2cbf-48d2-a6e7-6e07e82eafbc')], 'city': 'San Francisco'})\n" - ] - } - ], - "source": [ - "for value in graph.stream(\n", - " None,\n", - " config=subgraph_state_before_model_node.config,\n", - " stream_mode=\"values\",\n", - " subgraphs=True,\n", - "):\n", - " print(value)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Great, this subsection has shown how you can replay from any node, no matter how deeply nested it is inside your graph - a powerful tool for testing how deterministic your agent is." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Modifying state\n", - "\n", - "### Update the state of a subgraph\n", - "\n", - "What if we want to modify the state of a subgraph? We can do this similarly to how we [update the state of normal graphs](https://langchain-ai.github.io/langgraph/how-tos/human_in_the_loop/time-travel/), just being careful to pass in the config of the subgraph to `update_state`." - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'router_node': {'route': 'weather'}}\n" - ] - } - ], - "source": [ - "config = {\"configurable\": {\"thread_id\": \"4\"}}\n", - "inputs = {\"messages\": [{\"role\": \"user\", \"content\": \"what's the weather in sf\"}]}\n", - "for update in graph.stream(inputs, config=config, stream_mode=\"updates\"):\n", - " print(update)" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[HumanMessage(content=\"what's the weather in sf\", additional_kwargs={}, response_metadata={}, id='05ee2159-3b25-4d6c-97d6-82beda3cabd4')]" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "state = graph.get_state(config, subgraphs=True)\n", - "state.values[\"messages\"]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In order to update the state of the **inner** graph, we need to pass the config for the **inner** graph, which we can get by accessing calling `state.tasks[0].state.config` - since we interrupted inside the subgraph, the state of the task is just the state of the subgraph." - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'configurable': {'thread_id': '4',\n", - " 'checkpoint_ns': 'weather_graph:67f32ef7-aee0-8a20-0eb0-eeea0fd6de6e',\n", - " 'checkpoint_id': '1ef75e5a-0b00-6bc0-8002-5726e210fef4',\n", - " 'checkpoint_map': {'': '1ef75e59-1b13-6ffe-8001-0844ae748fd5',\n", - " 'weather_graph:67f32ef7-aee0-8a20-0eb0-eeea0fd6de6e': '1ef75e5a-0b00-6bc0-8002-5726e210fef4'}}}" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "graph.update_state(state.tasks[0].state.config, {\"city\": \"la\"})" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can now resume streaming the outer graph (which will resume the subgraph!) and check that we updated our search to use LA instead of SF." - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "(('weather_graph:9e512e8e-bac5-5412-babe-fe5c12a47cc2',), {'weather_node': {'messages': [{'role': 'assistant', 'content': \"It's sunny in la!\"}]}})\n", - "((), {'weather_graph': {'messages': [HumanMessage(content=\"what's the weather in sf\", id='35e331c6-eb47-483c-a63c-585877b12f5d'), AIMessage(content=\"It's sunny in la!\", id='c3d6b224-9642-4b21-94d5-eef8dc3f2cc9')]}})\n" - ] - } - ], - "source": [ - "for update in graph.stream(None, config=config, stream_mode=\"updates\", subgraphs=True):\n", - " print(update)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Fantastic! The AI responded with \"It's sunny in LA!\" as we expected.\n", - "\n", - "### Acting as a subgraph node\n", - "\n", - "Another way we could update the state is by acting as the `weather_node` ourselves instead of editing the state before `weather_node` is ran as we did above. We can do this by passing the subgraph config and also the `as_node` argument, which allows us to update the state as if we are the node we specify. Thus by setting an interrupt before the `weather_node` and then using the update state function as the `weather_node`, the graph itself never calls `weather_node` directly but instead we decide what the output of `weather_node` should be." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "((), {'router_node': {'route': 'weather'}})\n", - "(('weather_graph:c7eb1fc7-efab-b0e3-12ed-8586f37bc7a2',), {'model_node': {'city': 'San Francisco'}})\n", - "interrupted!\n", - "((), {'weather_graph': {'messages': [HumanMessage(content=\"what's the weather in sf\", additional_kwargs={}, response_metadata={}, id='ad694c4e-8aac-4e1f-b5ca-790c60c1775b'), AIMessage(content='rainy', additional_kwargs={}, response_metadata={}, id='98a73aaf-3524-482a-9d07-971407df0389')]}})\n", - "[HumanMessage(content=\"what's the weather in sf\", additional_kwargs={}, response_metadata={}, id='ad694c4e-8aac-4e1f-b5ca-790c60c1775b'), AIMessage(content='rainy', additional_kwargs={}, response_metadata={}, id='98a73aaf-3524-482a-9d07-971407df0389')]\n" - ] - } - ], - "source": [ - "config = {\"configurable\": {\"thread_id\": \"14\"}}\n", - "inputs = {\"messages\": [{\"role\": \"user\", \"content\": \"what's the weather in sf\"}]}\n", - "for update in graph.stream(\n", - " inputs, config=config, stream_mode=\"updates\", subgraphs=True\n", - "):\n", - " print(update)\n", - "# Graph execution should stop before the weather node\n", - "print(\"interrupted!\")\n", - "\n", - "state = graph.get_state(config, subgraphs=True)\n", - "\n", - "# We update the state by passing in the message we want returned from the weather node, and make sure to use as_node\n", - "graph.update_state(\n", - " state.tasks[0].state.config,\n", - " {\"messages\": [{\"role\": \"assistant\", \"content\": \"rainy\"}]},\n", - " as_node=\"weather_node\",\n", - ")\n", - "for update in graph.stream(None, config=config, stream_mode=\"updates\", subgraphs=True):\n", - " print(update)\n", - "\n", - "print(graph.get_state(config).values[\"messages\"])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Perfect! The AI responded with the message we passed in ourselves.\n", - "\n", - "### Acting as the entire subgraph\n", - "\n", - "Lastly, we could also update the graph just acting as the **entire** subgraph. This is similar to the case above but instead of acting as just the `weather_node` we are acting as the entire subgraph. This is done by passing in the normal graph config as well as the `as_node` argument, where we specify the we are acting as the entire subgraph node." - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "((), {'router_node': {'route': 'weather'}})\n", - "(('weather_graph:53ab3fb1-23e8-5de0-acc6-9fb904fd4dc4',), {'model_node': {'city': 'San Francisco'}})\n", - "interrupted!\n", - "[HumanMessage(content=\"what's the weather in sf\", id='64b1b683-778b-4623-b783-4a8f81322ec8'), AIMessage(content='rainy', id='c1d1a2f3-c117-41e9-8c1f-8fb0a02a3b70')]\n" - ] - } - ], - "source": [ - "config = {\"configurable\": {\"thread_id\": \"8\"}}\n", - "inputs = {\"messages\": [{\"role\": \"user\", \"content\": \"what's the weather in sf\"}]}\n", - "for update in graph.stream(\n", - " inputs, config=config, stream_mode=\"updates\", subgraphs=True\n", - "):\n", - " print(update)\n", - "# Graph execution should stop before the weather node\n", - "print(\"interrupted!\")\n", - "\n", - "# We update the state by passing in the message we want returned from the weather graph, making sure to use as_node\n", - "# Note that we don't need to pass in the subgraph config, since we aren't updating the state inside the subgraph\n", - "graph.update_state(\n", - " config,\n", - " {\"messages\": [{\"role\": \"assistant\", \"content\": \"rainy\"}]},\n", - " as_node=\"weather_graph\",\n", - ")\n", - "for update in graph.stream(None, config=config, stream_mode=\"updates\"):\n", - " print(update)\n", - "\n", - "print(graph.get_state(config).values[\"messages\"])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Again, the AI responded with \"rainy\" as we expected.\n", - "\n", - "## Double nested subgraphs\n", - "\n", - "This same functionality continues to work no matter the level of nesting. Here is an example of doing the same things with a double nested subgraph (although any level of nesting will work). We add another router on top of our already defined graphs." - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [], - "source": [ - "from typing import Literal\n", - "from typing_extensions import TypedDict\n", - "from langgraph.checkpoint.memory import MemorySaver\n", - "\n", - "\n", - "memory = MemorySaver()\n", - "\n", - "\n", - "class RouterState(MessagesState):\n", - " route: Literal[\"weather\", \"other\"]\n", - "\n", - "\n", - "class Router(TypedDict):\n", - " route: Literal[\"weather\", \"other\"]\n", - "\n", - "\n", - "router_model = raw_model.with_structured_output(Router)\n", - "\n", - "\n", - "def router_node(state: RouterState):\n", - " system_message = \"Classify the incoming query as either about weather or not.\"\n", - " messages = [{\"role\": \"system\", \"content\": system_message}] + state[\"messages\"]\n", - " route = router_model.invoke(messages)\n", - " return {\"route\": route[\"route\"]}\n", - "\n", - "\n", - "def normal_llm_node(state: RouterState):\n", - " response = raw_model.invoke(state[\"messages\"])\n", - " return {\"messages\": [response]}\n", - "\n", - "\n", - "def route_after_prediction(\n", - " state: RouterState,\n", - ") -> Literal[\"weather_graph\", \"normal_llm_node\"]:\n", - " if state[\"route\"] == \"weather\":\n", - " return \"weather_graph\"\n", - " else:\n", - " return \"normal_llm_node\"\n", - "\n", - "\n", - "graph = StateGraph(RouterState)\n", - "graph.add_node(router_node)\n", - "graph.add_node(normal_llm_node)\n", - "graph.add_node(\"weather_graph\", subgraph)\n", - "graph.add_edge(START, \"router_node\")\n", - "graph.add_conditional_edges(\"router_node\", route_after_prediction)\n", - "graph.add_edge(\"normal_llm_node\", END)\n", - "graph.add_edge(\"weather_graph\", END)\n", - "graph = graph.compile()" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [], - "source": [ - "from langgraph.checkpoint.memory import MemorySaver\n", - "\n", - "memory = MemorySaver()\n", - "\n", - "\n", - "class GrandfatherState(MessagesState):\n", - " to_continue: bool\n", - "\n", - "\n", - "def router_node(state: GrandfatherState):\n", - " # Dummy logic that will always continue\n", - " return {\"to_continue\": True}\n", - "\n", - "\n", - "def route_after_prediction(state: GrandfatherState):\n", - " if state[\"to_continue\"]:\n", - " return \"graph\"\n", - " else:\n", - " return END\n", - "\n", - "\n", - "grandparent_graph = StateGraph(GrandfatherState)\n", - "grandparent_graph.add_node(router_node)\n", - "grandparent_graph.add_node(\"graph\", graph)\n", - "grandparent_graph.add_edge(START, \"router_node\")\n", - "grandparent_graph.add_conditional_edges(\n", - " \"router_node\", route_after_prediction, [\"graph\", END]\n", - ")\n", - "grandparent_graph.add_edge(\"graph\", END)\n", - "grandparent_graph = grandparent_graph.compile(checkpointer=MemorySaver())" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [ - { - "data": { - "image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/4gHYSUNDX1BST0ZJTEUAAQEAAAHIAAAAAAQwAABtbnRyUkdCIFhZWiAH4AABAAEAAAAAAABhY3NwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA9tYAAQAAAADTLQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlkZXNjAAAA8AAAACRyWFlaAAABFAAAABRnWFlaAAABKAAAABRiWFlaAAABPAAAABR3dHB0AAABUAAAABRyVFJDAAABZAAAAChnVFJDAAABZAAAAChiVFJDAAABZAAAAChjcHJ0AAABjAAAADxtbHVjAAAAAAAAAAEAAAAMZW5VUwAAAAgAAAAcAHMAUgBHAEJYWVogAAAAAAAAb6IAADj1AAADkFhZWiAAAAAAAABimQAAt4UAABjaWFlaIAAAAAAAACSgAAAPhAAAts9YWVogAAAAAAAA9tYAAQAAAADTLXBhcmEAAAAAAAQAAAACZmYAAPKnAAANWQAAE9AAAApbAAAAAAAAAABtbHVjAAAAAAAAAAEAAAAMZW5VUwAAACAAAAAcAEcAbwBvAGcAbABlACAASQBuAGMALgAgADIAMAAxADb/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAK0AdsDASIAAhEBAxEB/8QAHQABAAIDAQEBAQAAAAAAAAAAAAUGBAcIAwECCf/EAGAQAAAFAwAFAw8IBgcDCAkFAAABAgMFBAYRBxITFiEUMZQIFSI1NkFTVVZ0krKz0tMXUWFxc5W00SMyM1KBkTdCVHV3k9QkOKEJNENicnaCsRglJkRXg4SjwUZHY7XE/8QAGgEBAQEBAQEBAAAAAAAAAAAAAAIBAwQFBv/EADsRAQABAQMJBgQFBAIDAQAAAAABAgMRUQQSFCExQXKR0RM0UqGxwTNTYXEykqLC0gUiI0JD8BWB8eH/2gAMAwEAAhEDEQA/AP6pgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPGsrGI+keqqlxLNOyk1rcVzJIucxXERdbd6SqJN2rjoxZZaimVmy4tP7z60nrZPwaTIiLgrW5i60UXxnVTdH/AHY2ITlXNR8evUqq6mpl/uvPJQf/ABMY+9UJ44oOlI/MeNHY9ux7epTQMaynv6lI2Rn3+J44nnjkx77rQviig6Mj8hf+H6+RqfN6oTxxQdKR+Yb1Qnjig6Uj8x93WhfFFB0ZH5ButC+KKDoyPyD/AA/XybqfN6oTxxQdKR+Yb1Qnjig6Uj8x93WhfFFB0ZH5ButC+KKDoyPyD/D9fI1Pm9UJ44oOlI/MfU3TDKMiTL0BmfMRVKPzDdaF8UUHRkfkPh2rCqIyOHoDI+BkdKj8g/w/XyZqSTbqHkEttaVoVzKSeSMfsVtywothw34lCoCryR7aMw0lWOGFt41Fljh2ST+gyMiMZcLMVDtS7GSbaGpVhBOGpojJmpbM8E61kzMizwUgzM0GZEZmRoWqZopmM6ib/UuwTIAA4sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABWLnxJ3Db8KoiUw6t2QfQeezQxqapf5rrKv/DjviziszCeSX5blYoj2b1NWR+SLJa69k8nJ97hTuCzD0Wn4KIjD3ls7IAFAV1Qei1CjSrSVaCVEeDI56lyX/3B9c6oHRcy4pC9JNoIWkzSpKp2lIyMucjLaDzsY9FpvjpbSNIWjGQFwSao6qTQ18zS0aFUFJUKaJ3ZuLNZLySVJyZINJGoiyKroZ09zl/U18vzNlzdE1BSciyy4xTsrJbdO4SU0pIQ+ta6rGckSdQzySVcxCCnbWuW49NsHdVlWv1kpHpCkfr7yoZ1ldDOxJNEaku0yVZcWZHqtrNB4IkqJZFwGMmxtJ8Lbel+z4OJVHvT0jKTELdbEkyhvNSonEsmjO1bcya0a+rgjwojAbEtzqg4iben6Svt64rYloaMVMuRc5Rtsv1FIWsRutarikKLWTq4NRGRmWSIUS+Oquri0UUV5WlY9xOUVdVxbdNWSVLToaeaqn0oXqJOoJZqIsoIzLV11tmRqQZqFWtXQnPx16zEtEaL0WXEyNk18CbBytNUVTlapTa0OPqSsyUS8Ggl66lZTleqRkL5dGiy55HqT7UtShoGjuuFoIN0416oQhLj9EunccY2pGaSM9ipJKzq5xxxxAbpt6WenYWkr6iLrYV59Osqgkdnt2eJlhezWtGeGexUfOJEa8p9N9tRFFTN3xKw2j6fdQbjkFNzlGVQ0jWUSFGaXDSZKJOSMjP5u8P3/wCkLor/APiXZ/39S/EAbAFYvzEfRUU2jCX4uqbcNXzsrWTbyfp7BRng+GshJ94jLOte87fvigcrrcnY24KJt02V1MXWN1LaXCIjNBqQZkSsKSeOfBl84wdI5be1H6FOTdkHWaJBEWcm44lJn9RJNSj+YkmPRk/xaY+vlv8AJsbVnAAHnYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACOn4VuejVUynDZcStDzL6Sypp1CiUhZfUZFku+WSPgYxIa4yqakoySJuhm0Jyql1uxeIudxkz/AF0f8U5wrBicGDLwlBPUvJpClaq2SPWSTicmlXeUk+dJ/SWDHamuLsyvZ6Nv3S9ettJ/ZWf8svyDrbSf2Vj/ACy/IQJWIhkjTSz05SN4wSCrjd1fqN0ln/xH53If8qZ7/Pa+EKzLPx+Ul0YrQlJISSUkSUkWCIuYh9FW3If8qZ7/AD2vhBuQ/wCVM9/ntfCDs7Px+UtujFaQHPvU5zNwaU4a86qaueVS7EXXIwtNyVbaCNhhSSRrZQeVdkeT4fUNs7kP+VM9/ntfCDs7Px+Ul0YrG7R076tZxhtxXNlaCMx+OtlH/ZGP8svyFf3If8qZ7/Pa+EPpWQ/37onlF823aL/ybDs7Px+Ul0Yp2pqKGEo3H33GKGlRxW4sybQXe4nzfMIaPYduSWp5ipYXT0NKSjjqd5CkOmpRGlT60njVM0maUpMsklSjVxVqp9aCyIuiq2qx1L8lWtGSm6iRqF1CmzIsZQSzMkHjPFJFzn85ifGTVRRExRrmd/8A3/v0ZqjYAADgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHO/UV9zOk7/EGa9dsdEDnfqK+5nSd/iDNeu2OiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAc79RX3M6Tv8QZr12x0QOd+or7mdJ3+IM167Y6IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGFMS1PBxztbUmrZN4LVQnWUtSjJKUpLvqNRkRF85kNiJqmIjaM0BSl3Bdjx67UXE06D4k2/WOKWRf9Y0t4z9BZL6TH56+Xh/YYPpT3wx69FrxjnDbl3AUjr5eH9hg+lPfDDr5eH9hg+lPfDDRa8Y5wXLuOSv+Ui0KPaTdCzVyxza3pa0FuVmySf69IsklUcObKSbbXnvJbV843918vD+wwfSnvhjzqZO662mdp6iNgXmHUG2405UPGlaTLBkZbPiRkGi14xzgufyN6jPQb8u2nGIjKun2tvxp9cpU1JyhTLaiw0f2ijSjHPg1GXMP7Wjmrqd9AVX1N9DcVPAU0TVLma86pb9TUO7RtkskzT5JvskoJSuJ8TNSj+gtvdfLw/sMH0p74YaLXjHOC5dwFI6+Xh/YYPpT3ww6+Xh/YYPpT3ww0WvGOcFy7gKR18vD+wwfSnvhh18vD+wwfSnvhhoteMc4Ll3AVyEuipfkExstSNUVa4hTjC6d03WX0pMtYiUaUmlZZI9Uy4keUmrVVq2Meeuiqzm6o2AAA5sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUdJZ4iYsu8ctRZL/5yRbhUdJfamK/vai9skenJvjUfdsbWWApmmq4ZC0tD17zkTUcklI2FrKulf1Er2bqGVqQrVURpPBkR4MjL5yGrpS4tIMND2BFnePKLivurZaVIORtOTEQ2ilcqH+TtkktdSiSSU7U18eP0D0TNzHQg+KUSEmpRklJFkzPmIcySele97QuersysuFMvWRl125TdeTomWnaqgkHTJxl1tKdRKy2biddBJMyUkywY/XVGXJOy1LptthMu7SRFBYzEiyy0w0Z661VRPEalIMzJxDSUHx4Fk06p8RmcOmUqJaSUkyUkyyRlzGPo5tu68bz0fW/o2s2Hlpi4Zy5kvvnKMUNAusp6Zhhtam2WlmywZ5WkiUvJkklnhR4xgS1/6YIW0qWlrTqYWQqrui4qNl5qhotvVUlQokuE+xTuONkaVZLWQaDUnGNU8hnDqEBE2vE18JDtUknN1Nw1iVLUqvq2WWlrI1GZFqtIQgiIjIuBZPHHJjXWledug9Kuj21IC4VW7RzlLKuV1Q3Rs1Dv6BNOps29okySotdZZMlJwo8pM9UyqZugbbAcyRelq+ZzrFYrU2zTXHV3XLQD90HQtqVyahQp43EsY2ZPLTqJ5jSXZHqj8yWmG+belJfRx14ppG6d5I6EobnqKJCCbp6ulXU7V1hGG1OtpadSRFqpUZoMyIs5nOgdIsTMfUylVGs11M7I0qEO1FGh5KnmUL1tRS0EeUkrVVgzLjqnjmMZg5BlrtuXQdeWmSUqJdd5XAiLt2lo6upo2WDNb79SyjXQ2aEHqms1f1CPBEZl+sNn6IpfShvxyO5aSdrLaeoXHHK64KKNpXaeqStGolsqN9eshSTcyS05SaE9keTCKr9Q2rKni7rNx35B4j+rkdQf/wCCF9FBlu66zP7xe/BVAvwnKv8AT7e8tncAADwsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUdJfamK/vai9skW4Ql3wj09DbGmUhNWw+1VMbQ8IUttZLJKjweCVg0meDxnODwO9hVFNrTVOy9sbVdvW1KS+7PnLbr3HmaGXonqB9ymUSXUtuoNCjQZkZErCjxkjLPeMQ136KIi87WiYWqqK6jVEOMvx0lQvE1V0jzSdVLqF4MtbVNRGRpNJkoyMhLLuwqfsamFnGHi4KaTFvPap/NrtJWg/rSoy+Yx+d86fxVPfclX8MfQ7Guf8AVubKko6nG2lW1MRtXITMhJS1bTyVVcNVVpOSOpYNJ07iXCQSU7PUSSUkgkkWSxxPPtFdT7BUlZdVVKS03ctRc8WiIlFy9She1YTtC7Em20E2Zk6osIwngRkRHkzlozTRa01PyMHHv11dMxuOWx9PHVDj9Nnm2iCRlGfpIhNb50/iqe+5Kv4YdhX4TNnBRnOpziaq14uJq7nuesrIeqKqiZx2ubKQjjJsm9RpxLREaDQWDStKiVk85EsrQvQVcDERslcE/MrjZunnkV0jVodfcfZUSkIUeoSSbykuwQlPfxgzyLHvnT+Kp77kq/hhvnT+Kp77kq/hh2FfhkzZwR9yzF80cqtqBteElY4kpNNTXTztI4ascSNtNI4REXz63H5iGFHWhX3VctvXZdNA1CT0AVZT0dHFyXLKZxqoQ0S1OKWw2rWy3wIiIi5zM84Kd3zp/FU99yVfww3zp/FU99yVfww7C08MszZU+u6nq3ayPrWUV8vRVr0+/clPKUlQhuqoat4sL2KtTGoaTNOotKiMjPOeGMdfU12tUWpXxFVWTNXIV0k3MPXG7Wf+tOWtkRNPpdJJEhSEkSUklJJIslq8TzeN86fxVPfclX8MN86fxVPfclX8MOwr8Lc2cFFoupsts6e7WpyUm7t3oo6ahkVzdUhajQwbhtKQbbaNRRG5nJcxpSZER5M7LYGjNVhv1Dzl23NcynGksIKfrkvpZQk8lqpQhBa3zrVlR98xK750/iqe+5Kv4Yb50/iqe+5Kv4YdhXH+smbOD0lu66zP7xe/BVAvw1Feejt7TXHIj3q2ftCOpl7dqTjXjopDblwSbRmk1ISRGeTMizrYIucxZq227zbv236uMuqnas2lpeTyMNV0JPVNS4RL1Xk1OtkjybZGRljsVHxM+HlyqYvpp3xHvM+7JXcBreNva+Yvf6suiy0lFQxuPwZwVTyurl2S2hkgmOdDuqlssGeDU5guBGY+OdUFaMRZluXJc71bZVPPVB0lJR3FSLp6pLxGstRxstbUPsDPJnjBlx4kPExskB5JqWV1C2EuoU+giUpslFrJI+YzLnIjwf8AIeoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADxqatulSo1Galk2pwmkFrLUlOM6qS4nzlzfOXzjUKblurT9o5jZSxq+T0ZbWUw8/PQ6VVT9EgzypppasETnYGSj72sA2FJ3zFUkjIw1HV00pc9JQLkCgKepb5W42nBJ7Az7ElKNKSUrBZUXEUVu2rn022jaEpcq5zRfIUch1xqoKIkW1qfQhZmy086lPEuDalJwXHWSZZwZX6hsO3Yy7JK56WFoWLikW0NVcohhPKHkIIkpSa+fBElPD6C+YhPAPFmkYp3X3WmW2nX1Et5aEESnFEkkkaj756qSLJ94iLvD2AAAAAAAAAAAAAAAAAAABiyMXRS9OTFfSMVrBKJeyqGkuJ1i5jwZGWS+cZQAKc5oitN3Sa1pCOJTve1SnRJkieczsTLGqaNbU/jq55+Ir9LoxuyzrLuiiti/JKVuCQqOUx1ddyyrUUOTSamiJKU5Rgl4LHDWL5htEAGuK+4tI9uUli0p2nQXbWVqm6e5JCPkE0TEco9mSn2m3SNbqCNTh6pYVhBfPgpCK0txUppLnrJ63y9FIxFKmscrqyhU1QvtGTZmpp4+CsG4RHzcUq5yLIu4/LjaXW1IWkloURpUlRZIyPnIyAQlo3zbt/Qrcvbc3QTkYtZtlVUFQl1GuREZoM0nwUWSyk+JZLgJ0UO7tBdjXpY1TZ9db1NS29UPpq10cXmhTtiMlE5+hNPZZIj48+Czkfa3RxKFddrSETeEnDwkNTFSvwLaG3aevQRYTtFLI1Eoux7IuPD6cgL2A11HVWkyFr77rJilg56HYbXU2zHxKnGa6oMiWZU763P0aVHhtJKLhlRmZ4IR1X1QFFaOjKHu+/LfmLOOvqjo3YxdKutfpVkpwiU5sUn2Bk3klY/rJ+cBtYBELu+CbuZFuLmY9FwLYKpRFKqUFVKaPW7Mms6xp7BXEix2JiXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABq2v0qV2kSzpWp0OvwtxTFFJ9annpdbzNJTOJxtVnhGs6SCUXBJkR8cKMywe0hr/AEIStbM2a+/X2Wiw3ykapsoptrZktJOGRP41U/tC7LOOOecwGXT6JoD5TE6QqimdcuzrcmO23KnVMtN5M1E22Z6paxmWTx/VI+B5zdQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAv2FbdVd1NdTsFHruWmaUw1L8mTypLZkZGjaY1jTgz4GeCyfzioUmg9i1rcvChs64Za3pK4XjqSkaioVX8ieM8mppDqsERmaspzjj9A2aADWtXT6UrbiLKoY2phLwqW3Es3HKyxKonXW8pI3mGmiNBHg1maT+YiLOTMSlBpCkajSjK2nUWfMUcZSUZVbFzuJScfU8G9ZslZylZG4Zaplx1FHzELsACjaKtNdm6bIurkLNlzlqakcJqoUqleYNtZ57EycQnJ8D5s/wDEheRSrQReiL/vg51NCm1FO0h29yYiJ407E+Um7jjnaYxnvC6gAD4Z4IefKWfCo9IhkzEbR6gPLlLPhUekQcpZ8Kj0iGZ0Yj1AeXKWfCo9Ig5Sz4VHpEGdGI9QHlylnwqPSIOUs+FR6RBnRiPUB5cpZ8Kj0iDlLPhUekQZ0Yj1AeXKWfCo9Ig5Sz4VHpEGdGI9QHlylnwqPSIOUs+FR6RBnRiPUB5cpZ8Kj0iDlLPhUekQZ0Yj1AeXKWfCo9Ig5Sz4VHpEGdGI9QHlylnwqPSIOUs+FR6RBnRiPUB5cpZ8Kj0iDlLPhUekQZ0Yj1AeXKWfCo9Ig5Sz4VHpEGdGI9QHlylnwqPSIOUs+FR6RBnRiPUUfQ/FXRD2m8xd1w0tzSp11S4itpMaiWDcM22+CU8UpwR8P4mLnylnwqPSIar6m5Fi0Oj2pbsOQqqyEOWrVLckMpcKoN09sRZSnsSVnHDm75jb4xG2QHlylnwqPSIOUs+FR6RDM6MR6gPLlLPhUekQcpZ8Kj0iDOjEeoDy5Sz4VHpEHKWfCo9IgzoxHqA8uUs+FR6RBylnwqPSIM6MR6gPLlLPhUekQcpZ8Kj0iDOjEeoDy5Sz4VHpEHKWfCo9IgzoxHqA8uUs+FR6RBylnwqPSIM6MR6gPLlLPhUekQcpZ8Kj0iDOjEeoDy5Sz4VHpEHKWfCo9IgzoxHqA8uUs+FR6RBylnwqPSIM6MR6gPLlLPhUekQcpZ8Kj0iDOjEeoDy5Sz4VHpEHKWfCo9IgzoxHqA8uUs+FR6RBylnwqPSIM6MR6gPLlLPhUekQ+lUNGeCdQZ/9ohudGI9AABo1lo8ioSj0vaUauPut6Zlqt2OORhXFGaIg005k2SS720TlZ/UNmjWWjyVhKzS9pRpI+1HoaWpHY4pGacSZIlzVTmbZpPv7NOUH9Y2aAjri7n5PzV31DFIhLPgXIagWuEjlrVTtmalUjZmZ6pcT4C73F3PyfmrvqGK/A9o47zZv1SHGiys7XKP76Yn+3fF+9V8xDE3Mt/xFGdDb/INzLf8AEUZ0Nv8AITID36Lk/wAuOUMvnFDbmW/4ijOht/kG5lv+Iozobf5CZANFyf5ccoL5xQ25lv8AiKM6G3+QbmW/4ijOht/kJkA0XJ/lxygvnFDbmW/4ijOht/kG5lv+Iozobf5CZANFyf5ccoL5xQ25lv8AiKM6G3+QbmW/4ijOht/kJkA0XJ/lxygvnFDbmW/4ijOht/kG5lv+Iozobf5CZANFyf5ccoL5xQ25lv8AiKM6G3+QbmW/4ijOht/kJkA0XJ/lxygvnFDbmW/4ijOht/kG5lv+Iozobf5CZANFyf5ccoL5xQ25lv8AiKM6G3+QbmW/4ijOht/kJkA0XJ/lxygvnFDbmW/4ijOht/kG5lv+Iozobf5CZANFyf5ccoL5xQ25lv8AiKM6G3+QbmW/4ijOht/kJkA0XJ/lxygvnFDbmW/4ijOht/kG5lv+Iozobf5CZHwy1iMvn+YNFyf5ccoL5xahjdKWiCZu2jtqPKPrpasqXaWnQxDOKaecbJRuajxNbNZI1D1jSoyT3zIVLQrpe0c3lakpWVVpxdtKj3K5+qZpoha6dphhzVU6t1LJISsywo2zPX4keDLiOfC0zU+gmv0dwl/wVz0lu2fVVlRCLYgDp6iuPDjSEuuPPIQZoQ8SlbHXSo1I7LnEPob6sxu29CStHtv0M9U6Q5CvfTG1VNQU7jSVVFTrZItprKcJK1mWUGWtguYhx7GwjVmU8oL5doQGkXRNc0LcErHpjl0sBTKrJNL8O4w/TMkhS9obLjSXDSaUKMjJJ5weMmPO39Iuiu8apVBCNRr0k5RrraVirh3KUqppKcmto3WkE6kslk0GeCGi5SHqKao0ozFNF3x1jrNGdfRplrwRUKdeqWycWtJ7Xsmi1XCNKTShJmTmoWOJ2uKrJPSzX6JGou1Z+LpLVonK2vlpWgVStq1o9TCWGFK/ba6nCMzRlOqnOTGxk9h8unlBfOKy6DdMWjzSlAWpTVtNBM3hLUBVLlDTxS26dbpI1nW2XFpNCzRxyglqUnB55jG5tzLf8RRnQ2/yHPlt2fOUuiTqa6ZUJIM18RL0S5Bk6RaXaJvkNUlZvJxltOspJGasFkyI+ch04KpyWwu12dPKC+cUNuZb/iKM6G3+QbmW/wCIozobf5CZAXouT/LjlBfOKG3Mt/xFGdDb/INzLf8AEUZ0Nv8AITIBouT/AC45QXzihtzLf8RRnQ2/yDcy3/EUZ0Nv8hMgGi5P8uOUF84obcy3/EUZ0Nv8g3Mt/wARRnQ2/wAhMgGi5P8ALjlBfOKG3Mt/xFGdDb/INzLf8RRnQ2/yEyAaLk/y45QXzihtzLf8RRnQ2/yDcy3/ABFGdDb/ACEyAaLk/wAuOUF84obcy3/EUZ0Nv8g3Mt/xFGdDb/ITIBouT/LjlBfOKG3Mt/xFGdDb/INzLf8AEUZ0Nv8AITIBouT/AC45QXzihtzLf8RRnQ2/yDcy3/EUZ0Nv8hMgGi5P8uOUF84obcy3/EUZ0Nv8g3Mt/wARRnQ2/wAhMgGi5P8ALjlBfOKG3Mt/xFGdDb/INzLf8RRnQ2/yEyAaLk/y45QXzihtzLf8RRnQ2/yEVc9rQtDEKfpoigp30PMGlxqmQlST2qOYyLJC3CFvHtA79sx7ZA8mV5NYRk9pMUR+Gd0YKpmb4X0AAUhS7S323/vbr/yLdPaUm7uwxttXZHyja44/tMYz3hdBrLR5FQlHpe0o1cfdb0zLVbsccjCuKM0RBppzJskl3tonKz+obNAR1xdz8n5q76hivwPaOO82b9UhYLi7n5PzV31DFfge0cd5s36pDLHvE8PurczgAB9RIAAAAAAAAAAAAAAAAAAAAAAAAAAACHueSfoKWlZpVk1VVtSilbdUklbPWyZqwfAzJKVGRH38c/MMQ7BjHMG9USrznfcVLVRGo/qS4RF9RERDrTRTdnVzdf8AS/3ht2KxgK38n0R+/Kfe9X8UPk+iP35T73q/iirrLxTyjq3UsgCt/J9Efvyn3vV/FD5Poj9+U+96v4oXWXinlHU1NCdUX1GNpXfovuDdWJeornYSquoElXVDjRukesttDK3DbSbhayexSXEyPvDn7/k1NCKpu7ZLSPJ0x8ihtaijdcuC6pacOLL59RtWPrdLHFI78+T6I/flPver+KMOK0TWxB0p00bSVcfTGtbps0slUtINajNSlYS4RZMzMzPvmeRymysc6Ks6eUdTUsM/BUN0QUlDSbHKY2RpnKSqY11I2jTiTQtOskyMspMyyRkZd4x7RsdTxEdS0FI3sqSlaQwy3rGrVQkiSksnkzwRFziE+T6I/flPver+KHyfRH78p971fxR0zbHxTyjqalkAVv5Poj9+U+96v4ofJ9Efvyn3vV/FG3WXinlHU1LIArfyfRH78p971fxR8pELtqeoo1FTUVVBXIcNtNW8p5xlxBEeCWozUpJkZ8Dzgy5+OAzKKvwTN/1i73kujcsoAA4JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABC3j2gd+2Y9sgTQhbx7QO/bMe2QPHlndrXhn0VTthfQABwS1lo8lYSs0vaUaSPtR6GlqR2OKRmnEmSJc1U5m2aT7+zTlB/WNmil2lvtv8A3t1/5FuntKTd3YY22rsj5Rtccf2mMZ7wugCOuLufk/NXfUMV+B7Rx3mzfqkLBcXc/J+au+oYr8D2jjvNm/VIZY94nh91bmcAAPqJAAAAAAAAAAAAAAAAAAAAAAAAAABW7y/51bX97N+ydExLzMfb8a/IyldTRsfTp1nquseS002WcZUtRkRFky5zEPeX/Ora/vZv2TooXVeoJzqbL8SfMqhSR4+1QOtpN1nTP39VTshfj0kWkmNkZE7phSj457k1bVnIM7Kld4fo3V62EK4l2KjI+IymL0t+qjY6QZnYx6gkXk09FVN1jamqp1WdVtpZHhajweCSZmeD+YaY02xEBZF4aJpGUj6ai0dQ9VWJrUlTa1HSVCqYkUbrqCIyJKdVxBLMsJNSeJcBq916lSzKXnE0y6PRq1pLi5alfRTqQwlhFOlqrq0JxwZN4865Fg+yMeaarkumdJWmK2dF1r3DMykjTuqg6dD9THsVDXKf0mSZTqKUWDcNKiTnGtqnjOBJ0+ku0qm1t5W7ohlW9nVVKlIMnSpVnBpN3W1MkfDGeccuX5KUelU+qWdtgznWXbWiE0zlO0pSag0JrFGbR4/SFwMiNOSMyMiyM/S3d1t3tKaL7ojblVQaOKJyup62ZjaBmpZj69TLRsqfbfZcQnsTcRrmjsDWfFOTGZw6bO+7aKHo5Y7iiiiqxzY01cda1sH14M9VC9bVUeEqPBHnsT+YZ0FcEXdMWzJwslRy8a8aiarKB9L7K9VRpVqrSZkeFEZHg+BkZDkyVsW0XbYsp+HnKm8YO4NJNBU1K62jZp6d11LLqF7Npplps0K2acmScLPJ5PJjr5inapWiaZaQy0nOENpJJFk8nwL6RUTMiIuC+LctIzKcuCLhjJrbn1wrW2MN6xJ1+zUXY6xkWebJkXfH6kb0t+IgG52vnYyihHEpWiSqKxtumUSv1TJwzJJkfe48Rq+4omileq2tgq2jYrCYs6QdaJ9tK9mvllKnWTkuB6qlFn5lGXfGkbMcirZb0ZS90tto0fws1dNHtKhrXo6CpOtWVKpwsGSSJCXkIUZYSZ85ZIZNUxI7DRdcI5b/AF+TMUCoPZm91zKqQdNqfvbXOrq/TnAp9k6aoW+rpvGPj6mgfhreZo3+vlNIIep6hL7bi1HlJaqSRszIz1jz9GBzO+ijKIO43414tDDmkdUmun5IvYKo+SkhNSbWP+anWFr41cH+tgYF7vRl4yWlqQshRvWoUpa9XKuQVElw3aJvanULQyps0vapklRkaVJUSDyRlkZnjtO2rygLzpXKm35yNnaZpWot6Mq26hCFfMZoMyI/oGHO92FsfXU+yGp9AMJZspfExddsX5WXjVojmo6qNNBS0tKSFOGtvPJ6ZlK3E6iy4mo0ksyMiyQ2xO92FsfXU+yHqsJvqn7T6S2FkAAHJgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIW8e0Dv2zHtkCaELePaB37Zj2yB48s7ta8M+iqdsL6AAOCWstHkVCUel7SjVx91vTMtVuxxyMK4ozREGmnMmySXe2icrP6hs0ay0eSsJWaXtKNJH2o9DS1I7HFIzTiTJEuaqczbNJ9/Zpyg/rGzQEdcXc/J+au+oYr8D2jjvNm/VIWC4u5+T81d9QxX4HtHHebN+qQyx7xPD7q3M4AAfUSAAAAAAAAAAAAAAAAAAAAAAAAAACuXiX+0W4fMSZVvJmf8A/G4X/mZCxio33dlvxtrz9VW1DlYiGbS/VsRP6esp1frIMkIyolcMln5jzwyKzF3BpHuSKteTgaeLRGSbe2rU3NQv0VfQoPVwRsoWonHOKsl2BdiXHCuHe+mumImq6Y+/tEq2w2oArfIbv8dQn3Q9/qg5Dd/jqE+6Hv8AVB2dPjjz6F31WQBW+Q3f46hPuh7/AFQchu/x1CfdD3+qDs6fHHn0Lvqsgp1xaLIu55Z2RqZS5aZ50kkbUdcdfRslgiIsNNPJQXNxwXE8mfEZvIbv8dQn3Q9/qg5Dd/jqE+6Hv9UM7Kmf948+jLoxZtsWzTWnGchpKmRq2tc3NpKSD9a7k8cNo8tSscObOCEuK3yG7/HUJ90Pf6oOQ3f46hPuh7/VB2dPjjz6F0YrIArfIbv8dQn3Q9/qg5Dd/jqE+6Hv9UN7Onxx59G3fVZBXJws3hbOOcuUmZd/GzIs/wDEv5iFmy0m0sjGIinbWkKB14kVz1TT1FO7Tt5Ls20E4snDIs8DUjvcfmj7Mv6ilLzuyhl0ydPK24jD9fIxyqGP5OriblOpSlJNBmg8qUrJ6n7pENpzbOZnOidUxv3xdvg2NmgPKkq2K+maqaZ5uop3Uktt1pRKQtJ8xkZcDL6R6jzpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABC3j2gd+2Y9sgTQhbx7QO/bMe2QPHlndrXhn0VTthfQABwSpdpb7b/AN7df+Rbp7Sk3d2GNtq7I+UbXHH9pjGe8LoNZaPIqEo9L2lGrj7remZardjjkYVxRmiINNOZNkku9tE5Wf1DZoCOuLufk/NXfUMV+B7Rx3mzfqkLBcXc/J+au+oYr8D2jjvNm/VIZY94nh91bmcAAPqJAAAAAAAAAAAAAAAAAABEVd2xNLX1kcVexUS1JSqrXYyncSurJov62yI9bBmZEXDiZkAlwGpnr0vnSno0o5bR9Gps+Vqq021IvehdbcbpS1v0qWkHxUrsDTngZGf1i0L0XRlRpNp76frJRyXYouRNUh1y+RNJPOupLPNrKyWTPh2KTxksib79ggntOFHdVjTs3oxo0aRpCLrCjzj6SpKmSt89TP6VwiTqpJwlGoskZEeD4GJJ62ruuC6bSn3Llet2No6XXkrWYp2nkVNQtBkZLfznVRrGWCyRmklFjAutFQU0bTkxR0zVKwRmZNMIJCSMzyZ4LhxMe4XYis2ho1tiwa6brLfhaaLq5qqVWSLzJHr1LpqUrWUZmffWsyIuBax4IhZgAbsAAAaAAAAAAAAAAAAAAMSXiaKeiqyNkaVqtj6xlbFRTPpJSHW1EZKSoj5yMjMhlgA1pJaHaiFtq2oLR1Pr0exsNXHUnS0lImqaqWlLUpxlROHzKNazzk8GZHjgQl2LwuRnSLLxMjah0VoU1EVXTXTy5tTbqiJG0aWz+sgyNSsGfAyQf8boAy7AVrR7pItvSrbTM/asq1LxTqjbJ9tKkmlZYM0qSoiUlRZLgZEfEhZRStIeiSD0j2ucHVLrYZgqtNe3UQdSdG+3UFnDhKRznlRnxI+OD5yIfp2ivmn0kxy6Osh3LAKh2VVS1KXVSKagtfVcQ5+qojygj1jM+xMy4nkNYuYCg2jpji7hg5qVl46SsmliK06GpcudkqJBqNSSQtKlHg0K10YPhxURC9svN1DSHWlpcaWklJWg8koj4kZH3yC+8fsAAaAAAAAAAAAAAAAAAAAAAAAhbx7QO/bMe2QJoQt49oHftmPbIHjyzu1rwz6Kp2wvoAA4Jay0eSsJWaXtKNJH2o9DS1I7HFIzTiTJEuaqczbNJ9/Zpyg/rGzRS7S323/vbr/yLdPaUm7uwxttXZHyja44/tMYz3hdAEdcXc/J+au+oYr8D2jjvNm/VIWC4u5+T81d9QxX4HtHHebN+qQyx7xPD7q3M4AAfUSAAAAAAAAAAAAAA8ax5ynpH3WmjfdQhSkNEeDWZFkk5+nmHsMeRQ45H1SGnip3VNKJDx8yDweFfw5wGsIyLvTS1Ztly0xJSejOSZqTrJSEjdRS3yQ4ezZW4tJmlJklJqIiwolmRkfDF5jrDt2IuqTuWjhaKnuCTSlFZJoZTyh5KUpSSTXz6uEI4c3YkfOI3RFHS0To4hKScuJq7ZVppRPzLCtZFUeuoyUR/QRkX8BcBMQAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEbcdsxN4Q1TETkbSy8XUp1XqSsaS62siPJZSZYyRkRkfeMiMhV6zRpU08/aNVb9y19tQsCzyRdv0jba6KrpySRJQpKiyk06qSJRGZkRGRYMzMXoBlwqOj+5bhuGouduft84JEfMP0cc5tDUVdSJ1TbqCyXDWyZY+gW4UfRlFzMbWXiqXuhm5W6mcqH6JtpRGcdTmSdWlV8xowfD6ReAjYAAA0AAAAAAAAAAAAAAAAAELePaB37Zj2yBNCFvHtA79sx7ZA8eWd2teGfRVO2F9AAHBLWWjyKhKPS9pRq4+63pmWq3Y45GFcUZoiDTTmTZJLvbROVn9Q2aNZaPJWErNL2lGkj7UehpakdjikZpxJkiXNVOZtmk+/s05Qf1jZoCOuLufk/NXfUMV+B7Rx3mzfqkLBcXc/J+au+oYr8D2jjvNm/VIZY94nh91bmcAAPqJAAAAAAAAAAAAAAYcxsOtFdyrW5LsF7XV59TVPWx9OMjMGPIrcbj6pbTJVDqWlGhk+ZZ4PCf48wCh9T1up8jVsbj8q3V2C+QctzttTarzrZ451tYbEFP0RSMtLaOISrnLdatKVdaUb8MwnVRSnrqIkkX0kRH/ABFwGRsAAAaAAAAAAAAAAAAAAACvM3a9VbVVLASdUyh5xknm1U5JUaFmhRkSnSPGUnzkQ4WltRZTEVbZwiZ9L2xF6wgILeOu8mZb06X44bx13kzLenS/HHPSrPCfy1dG3J0BBbx13kzLenS/HDeOu8mZb06X44aVZ4T+WroXJ0BBbx13kzLenS/HDeOu8mZb06X44aVZ4T+WroXJ0BBbx13kzLenS/HDeOu8mZb06X44aVZ4T+WroXJ0BBbx13kzLenS/HDeOu8mZb06X44aVZ4T+WroXJ0BBbx13kzLenS/HDeOu8mZb06X44aVZ4T+WroXKZoS3N646Rt0eWbfemr69crzjrhhG12ef6mNXGBtAax0eXdclVV3WUpo6qoNDUy+3SLpeTpOtYIk6tQ5l0srVxyZZLhzi47x13kzLenS/HDSbOnVMT+Wroy5OgILeOu8mZb06X44bx13kzLenS/HDSrPCfy1dG3J0BBbx13kzLenS/HDeOu8mZb06X44aVZ4T+WroXJ0BBbx13kzLenS/HDeOu8mZb06X44aVZ4T+WroXJ0BBbx13kzLenS/HDeOu8mZb06X44aVZ4T+WroXJ0BBbx13kzLenS/HDeOu8mZb06X44aVZ4T+WroXJ0BBbx13kzLenS/HGVDThS7lW0qiqaB+mUlLjVTszPinWIyNClFzH842nKbOqqKYvvnGJj1hl0pMQt49oHftmPbIE0IW8e0Dv2zHtkCcs7ta8M+jadsL6AAOCVLtLfbf+9uv/ACLdPaUm7uwxttXZHyja44/tMYz3hdBrLR5FQlHpe0o1cfdb0zLVbsccjCuKM0RBppzJskl3tonKz+obNAR1xdz8n5q76hivwPaOO82b9UhYLi7n5PzV31DFfge0cd5s36pDLHvE8PurczgAB9RIAAAAAAAAAAAAADHkUOOR9Uhp4qd1TSiQ8fMg8HhX8OcZAw5jYdaK7lWtyXYL2urz6mqetj6cZAVvRFHS0To4hKScuJq7ZVppRPzLCtZFUeuoyUR/QRkX8BcBrvqet1PkatjcflW6uwXyDludtqbVedbPHOtrDYgyNgAADQAAAAAAAAAAAAABBWZ2ld8+rfxTonRBWZ2ld8+rfxTo8dXeaOGr1pVuToAA9iQAAAFP0g6QisCttQn6DlNBNTDUO9Vk9qckW6hexWadU9YlOJQ3zpwbhHx5hcBTNMdgr0naNJ63KeoTRV9UyS6GrUZkVPVNqJxhzJEZkSXEIM8ccEYydmoUhzqn4isg7qqoaOVJyUPcLNuUsep/ZdcH3XUMtrQvVVhBrN3jhXBhZiu3j1ZsHbE3PtU9JE1sTA1TlJXOPXHS00g4ts8Pcmol9m6STyRZUg1mkySR8DOeoupjjIi+NG8xQ1RooLVj+S1NKsz/ANvebQtNM+suY1oVUVS9Y+OXPrH5gNFl96PbhnKS2nLVkbUlph2XJc0h8q2hN9ZLfaQlCTS6nW1jQZqSZa3HOBz/ALh80s9Uueiesaq6yDj6i2Fss1JVy7gp2K19pZEal09Eotd3VI+JayTPB4Ix70l/3zUdU1M2zTx1DV2nTw9BVEa5HZqZQ448S6hKSYM1rM0auzNZERNkoldkZFWdJPU73bc9dpNpop62VUN6No/9bSqHl19CSGENlToSlOqbeUZJWsWrtFHqrxxuirAvWK0rR14RSoF1quhaOInKKsfeSbOxdW4blMtLZ6/B1xJEskcyTzxMi3XeNe6N9ONzWrCV9ZPQFZLWqV410S9cdRKpW9TE5IrZZ1WFEajZQpTbf6yTT/VSZFxl766sSHtK4rho6SkiK+ht55dNILq7kpaKtccQRG6mlpHOye1c6vE0ayiNKc4EhVaCJ9/QvN2imsjSkq66FTbbpuubEmDlk1mqZ6mdfZpMsERlrcM44jTXVP29pY6nmJuO8NH1wULVoVsy7LV9OuPZfrKd6qNBLybrS0m0TickaTSZG8ZGSiIjKZmqmBs/Q1pTu6d0k35B0LTd5w7cxTSLUvUSJUzUfH1bSHG6dCNmtS3G06x6nAskZGpPDPRo/jtoS056XD0i19HaFyLoZa7q/lcm81E09Sbiy11uPE1sVHhKTcVqNp4kWCIzwQ/qQzp1tZ95DaWLl1lqJJa1pyqSyfzmdNgvrMKK4mBSG+qVlK6vgayissjs2buIrdop6olCStbhPLaU4dOltRkg1NOkjKsmZJ1iQR5E/YmmO5NIFbcK6CyENxENJSMUurel0pcqXqZa0I2LZtYMlmlJGalJJJqP9bVMxztb0zR2tpoZj0FG3Yy1drztHbEdKV6HIx119aFVaKBymJtOzSta1KN00ZNakGWSx0DF6F5dvRHpCtB+VZoa25JCZqaatolLUTDdW84tvWySTyRLIlEX0kRnzjYmZEfY/VMlclxz1vScLHUUzHRL0w23Ez7Mm0420okuNOLbSRtOkakdiaT4GZkZ4HpaXVDTEmxYUlcVlJgLfvQmGo6Rp5ZNYbdQ8ybrTbzeyQaSWRGSVEauONYk5wVbp9EN4QUkzcclSWlEx0VachBLjIA3sJQpCFpdSpTadYzU0RahknVIzPWWZ4GDoY0f3tpB0f6FnLgqIGisy36KOmKVqOU85W1jrdKRU6XddJIbJOvrK1TVrGnhguZfUPugzTlc0XYtj7zQFZXQkzLPQyLnqZVL9Quocqnks67JkatnrETZKNeSwXY4wOnhoiK0ET9Doi0f2q5WRpyFv3NTTVU6l1zZLZbr11CkoPUya9RRERGRFnPHHEb3FU33awAAFgAAACChu6S4ftGPZEJ0QUN3SXD9ox7Ih5Lf4llxftqVGyU6IW8e0Dv2zHtkCaELePaB37Zj2yBmWd2teGfQp2wvoAA4Jay0eSsJWaXtKNJH2o9DS1I7HFIzTiTJEuaqczbNJ9/Zpyg/rGzRS7S323/vbr/yLdPaUm7uwxttXZHyja44/tMYz3hdAEdcXc/J+au+oYr8D2jjvNm/VIWC4u5+T81d9QxX4HtHHebN+qQyx7xPD7q3M4AAfUSAAAAAAAAAAAAAAx5FbjcfVLaZKodS0o0MnzLPB4T/AB5hkDHkUOOR9Uhp4qd1TSiQ8fMg8HhX8OcBV9EUjLS2jiEq5y3WrSlXWlG/DMJ1UUp66iJJF9JER/xFwFP0RR0tE6OISknLiau2VaaUT8ywrWRVHrqMlEf0EZF/AXAZGwAABoAAAAAAAAAAAAAAgrM7Su+fVv4p0TogrM7Su+fVv4p0eOrvNHDV60q3J0AAexIAAAAAr9/PLZtOt1FKTtDbZUaTweqtxKFY/goxdFOfVFOLYi+bnx6/IhpxaEKraskqNJuUUdU1DeS5y1221JP+Y/HygRX9nmfuOt+CLCyy3TtIaaQlppCSShCCwlJFwIiLvEP2LvsvDPOOhqVv5QIr+zzP3HW/BD5QIr+zzP3HW/BFkAbfZeGecdG6lb+UCK/s8z9x1vwRGXROW1eNuScFK0MxUxslTOUlQ0cJWlrNrSaVYPY8DwfA+8Yu4DL7LwzzjoanDnUZdT+nQffV3XFc1FKOVLTq46DcKGql7Sm1sqqcJbPUNZEhJEeFEWuRlgyz1/8AKBFf2eZ+4634IsgDKexpi6KZ5x0NSt/KBFf2eZ+4634IfKBFf2eZ+4634IsgCr7Lwzzjoalb+UCK/s8z9x1vwQ+UCK/s8z9x1vwRZAC+y8M846GpgRU7QzW1KkeNTjJkTjTramnEZzjWQsiURHg8GZccH8wzxXLh1aa57XfQnVefqnqRay4GbZ07rhpP5y1mkHj5yFjEV0xF007J/wDnsyQAAc2AAAAIKG7pLh+0Y9kQnRBQ3dJcP2jHsiHkt/iWXF+2pUbJTohbx7QO/bMe2QJoQt49oHftmPbIGZZ3a14Z9CnbC+gADglrLR5FQlHpe0o1cfdb0zLVbsccjCuKM0RBppzJskl3tonKz+obNGstHkrCVml7SjSR9qPQ0tSOxxSM04kyRLmqnM2zSff2acoP6xs0BHXF3PyfmrvqGK/A9o47zZv1SFguLufk/NXfUMV+B7Rx3mzfqkMse8Tw+6tzOAAH1EgAAAAAAAAAAAAAMOY2HWiu5Vrcl2C9rq8+pqnrY+nGRmDHkVuNx9Utpkqh1LSjQyfMs8HhP8eYBQ+p63U+Rq2Nx+Vbq7BfIOW522ptV51s8c62sNiCn6IpGWltHEJVzlutWlKutKN+GYTqopT11ESSL6SIj/iLgMjYAAA0AAAAAAAAAAAAAAQVmdpXfPq38U6J0QVmdpXfPq38U6PHV3mjhq9aVbk6AAPYkAAABW9IncnU/bU/t2xZBW9IncnU/bU/t2x3sPjUfePVVO2Gdd09utak1NbDlXW2ierNhr6m02bal6utg8Z1cZwePmGnKLqiLtkJG0KNrRs2ld30C6+FU5PoIjShtDiyqcMnsuwcIy1NoZ5IsFxxt6+YN+5rJuCHpVtt1MhHVFI0t4zJCVuNqSk1GRGeMmWcEf1DX8TojmKCY0N1blTQm3ZsPUR8gSXF5dccpWWkm12HFOs0oz1tU8GXDvF5Zv3JYLPVHqr7ZhFUNrP1N5ysxVwLdtqrEIJqqpTXyk11GqZE0hLZq1ySZmRp7HJ8Py91SfW2HlaaTtapp75oZeng0WzT1aHuVVVQ3tKc26jCU7JTess1qSWqTa8p4cYprQJdEMpmcia+IK6Iy8Ji4I9uqU6dI/SVynCUw6okayF6i0nrJJRJUn+sXEYsh1PV3zJyN31MxD0+kh6fo52mbZQ6uMZTSsKp26VSjInFJU247rLJJHrKIySWOM/3DCjNOExZV86WZ3SBQvQdFCxEMtqFZlSrGCcdXUoI2VqJCEm4o20mZpT+rlR4IjGBc/VUJuqxb+hGjjYm4E2pJSkdW2zcrMoSDaZPJKcZJKmXUmpKi4YPCtVR6om5bqfrx0iu6Qqu66+Dh6+4KKJRHuQi3qhNHUUTzrqFrJ1CNdJqUjmxkjUWCwRnblWLfd82Rdtu3ii1IpEtDvxjD9vJfdWTjrakKdXtEownsiMkFn/tGH9w2NZ77lVaUI884p15yhYWtxajUpSjbSZmZnzmZipaR9KEnZ942rbENbabgk7hZrXGTcrypGmDpyZM9oo0KPVMnT4pIzI0kWqesZpwoHSI3o8t2IgLxbrXLhoqRtqpXb0DJVtGrBYSpDqKdRZNJJM05yRmZfSPwVB8p2kqx72hlusxFvNSlHVtSlDVUNStb7dPqG2080k1JLUPKjwXHhkyMiq/VqEQz1SDlZARbdJar1Re1fN1dvotzlqEoRVU2sqoUqp1cbJKE6+uSDMyUnCeIPdUn1th5Wmk7Wqae+aGXp4NFs09Wh7lVVUN7SnNuowlOyU3rLNaklqk2vKeHGK+QS6IqvXcURXxBXNQ3hJ3BHNVanTpXqSsb2S2HlJRrIXqnnWSSiI0l+tnhiyHU9XfMnI3fUzEPT6SHp+jnaZtlDq4xlNKwqnbpVKMicUlTbjusskkesojJJY4z/cMKM04TFlXzpZndIFC9B0ULEQy2oVmVKsYJx1dSgjZWokISbijbSZmlP6uVHgiMW3RV1S1FpCvdFq1dND08lUUbldSuQVw08wypLakktDimiSbTha6TIjI0qIlYUeqK9LdT9eOkV3SFV3XXwcPX3BRRKI9yEW9UJo6iieddQtZOoRrpNSkc2MkaiwWCM9oaOqK+2qqocvGktSlbSylDJW9t1rW5nslqU6lOqkyxhBErH7xjYzhL3T3QWd/ebv4KpFkFbunugs7+83fwVSLIPVafho+3vKp2QAADikAAABBQ3dJcP2jHsiE6IKG7pLh+0Y9kQ8lv8Sy4v21KjZKdELePaB37Zj2yBNCFvHtA79sx7ZAzLO7WvDPoU7YX0AAcEqXaW+2/wDe3X/kW6e0pN3dhjbauyPlG1xx/aYxnvC6DWWjyKhKPS9pRq4+63pmWq3Y45GFcUZoiDTTmTZJLvbROVn9Q2aAjri7n5PzV31DFfge0cd5s36pCwXF3PyfmrvqGK/A9o47zZv1SGWPeJ4fdW5nAAD6iQAAAAAAAAAAAAAGPIoccj6pDTxU7qmlEh4+ZB4PCv4c4yBhzGw60V3KtbkuwXtdXn1NU9bH04yAreiKOlonRxCUk5cTV2yrTSifmWFayKo9dRkoj+gjIv4C4DXfU9bqfI1bG4/Kt1dgvkHLc7bU2q862eOdbWGxBkbAAAGgAAAAAAAAAAAAACCsztK759W/inROiCsztK759W/inR46u80cNXrSrcnQAB7EgAAAIK+KN6utesbYaU86k23ibQWVK1HErMiLvmZJPBCdAVRVmVRVG5sapveFFWsSVI1VUryH6d1OshxB5JRD3EFW2JbsjVOVNTCULtQ6o1uOmwnWWr51Hjif0mPD5N7W8Q0H+SQ6XWWM8o6mpZAFb+Te1vENB/kkHyb2t4hoP8kgusvFPKOrdSyAK38m9reIaD/JIPk3tbxDQf5JBdZeKeUdTUsgDm/qbLejbkmNLzcpRMyCI6966io01CdcqdhKW9VtGeZJZPBF843Z8m9reIaD/JIZEWUxfnTyjqalkAVv5N7W8Q0H+SQfJva3iGg/ySG3WXinlHU1LIArfyb2t4hoP8kg+Te1vENB/kkF1l4p5R1NT7NmmQuu3qZk9o9QvOVz5JP9k2bDrSTV82spzgR4M9VRlnVVixjDjIehhac2I+jYomTUazQw2SCUo+czxzmfzjME11RN0Rsj/wCskAAHNgAAACChu6S4ftGPZEJ0QUN3SXD9ox7Ih5Lf4llxftqVGyU6IW8e0Dv2zHtkCaELePaB37Zj2yBmWd2teGfQp2wvoAA4Jay0eSsJWaXtKNJH2o9DS1I7HFIzTiTJEuaqczbNJ9/Zpyg/rGzRS7S323/vbr/yLdPaUm7uwxttXZHyja44/tMYz3hdAEdcXc/J+au+oYr8D2jjvNm/VIWC4u5+T81d9QxX4HtHHebN+qQyx7xPD7q3M4AAfUSAAAAAAAAAAAAAAx5FbjcfVLaZKodS0o0MnzLPB4T/AB5hkDHkUOOR9Uhp4qd1TSiQ8fMg8HhX8OcBV9EUjLS2jiEq5y3WrSlXWlG/DMJ1UUp66iJJF9JER/xFwFP0RR0tE6OISknLiau2VaaUT8ywrWRVHrqMlEf0EZF/AXAZGwAABoAAAAAAAAAAAAAAgrM7Su+fVv4p0TogrM7Su+fVv4p0eOrvNHDV60q3J0AAexIAAAAAAAAAAAAAAAANAdSj2803/wCIEj6rQ3+NAdSj2803/wCIEj6rQ3+Ip2AAALAAAAAAAAAAAAAAEFDd0lw/aMeyITogobukuH7Rj2RDyW/xLLi/bUqNkp0Qt49oHftmPbIE0IW8e0Dv2zHtkDMs7ta8M+hTthfQABwS1lo8ioSj0vaUauPut6Zlqt2OORhXFGaIg005k2SS720TlZ/UNmjWWjyVhKzS9pRpI+1HoaWpHY4pGacSZIlzVTmbZpPv7NOUH9Y2aAjri7n5PzV31DFfge0cd5s36pCwXF3PyfmrvqGK/A9o47zZv1SGWPeJ4fdW5nAAD6iQAAAAAAAAAAAAAGHMbDrRXcq1uS7Be11efU1T1sfTjIzBjyK3G4+qW0yVQ6lpRoZPmWeDwn+PMAofU9bqfI1bG4/Kt1dgvkHLc7bU2q862eOdbWGxBT9EUjLS2jiEq5y3WrSlXWlG/DMJ1UUp66iJJF9JER/xFwGRsAAAaAAAAAAAAAAAAAAIKzO0rvn1b+KdE6IKzO0rvn1b+KdHjq7zRw1etKtydAAHsSAAAAAAAAAAAAAAAKFpU07WNoT61nek4UKUnteSGdI++Tmz1Nf9khWMbRHPjOeGcHjJm7aNe9Sj2803/wCIEj6rQ3+OI+p86rPRRZEppVem7sTRNTN41spQHyCqc21MtLZIcwlo8Z1T4KwfDmHbgiiYmNQAADoAAAAAAAAAAAAAAIKG7pLh+0Y9kQnRBQ3dJcP2jHsiHkt/iWXF+2pUbJTohbx7QO/bMe2QJoQt49oHftmPbIGZZ3a14Z9CnbC+gADglS7S323/AL26/wDIt09pSbu7DG21dkfKNrjj+0xjPeF0GstHkVCUel7SjVx91vTMtVuxxyMK4ozREGmnMmySXe2icrP6hs0BHXF3PyfmrvqGK/A9o47zZv1SFguLufk/NXfUMV+B7Rx3mzfqkMse8Tw+6tzOAAH1EgAAAAAAAAAAAAAMeRQ45H1SGnip3VNKJDx8yDweFfw5xkDDmNh1oruVa3Jdgva6vPqap62PpxkBW9EUdLROjiEpJy4mrtlWmlE/MsK1kVR66jJRH9BGRfwFwGu+p63U+Rq2Nx+Vbq7BfIOW522ptV51s8c62sNiDI2AAANAAAAAAAAAAAAAAEFZnaV3z6t/FOidEFZnaV3z6t/FOjx1d5o4avWlW5OgAD2JAAQ83JVKKyjjKDURW1aVubZ1JqQy0g0kteO+rK0kRZLieeYsHVNM1TdDdqYAVw7cmlHneutSffJNJTY/4tmPm7c15W1/Rab4Y6dnT448+jbvqsgCt7tzXlbX9Fpvhhu3NeVtf0Wm+GHZ0+OPPoXfVZAFb3bmvK2v6LTfDDdua8ra/otN8MOzp8cefQu+qyDSvVeaFS036FZeLpmScnY8uuMWZJyo3myPLZf9tJqRjmyaT7w2Nu3NeVtf0Wm+GG7c15W1/Rab4YybKiYumuPPoXfV/KnqJNCB6Y9NdEqvpttb0AaZCRJwuxWaT/RMn8+usuJHzpSsf16GsrI0FUGjipnKi25Wpi3pusVXyC26dhRvPKyZn2SD1S4nhCcJLJ4IsmLTu3NeVtf0Wm+GJosaaIuz48+hd9VkAVvdua8ra/otN8MN25rytr+i03wxfZ0+OPPoXfVZAFb3bmvK2v6LTfDDdua8ra/otN8MOzp8cefQu+qyAK3u3NeVtf0Wm+GG7c15W1/Rab4YdnT448+hd9VkAVasbmbYo3pJyXXMUtMg3aimqKZtK1NkRmo21NknCiLiRGRkeMcM6xWdtxLzaXEKJSFESkmXfIxNVGbF8TfH/cWXP0AAObAQUN3SXD9ox7IhOiChu6S4ftGPZEPJb/EsuL9tSo2SnRC3j2gd+2Y9sgTQhbx7QO/bMe2QMyzu1rwz6FO2F9AAHBLWWjyVhKzS9pRpI+1HoaWpHY4pGacSZIlzVTmbZpPv7NOUH9Y2aKXaW+2/97df+Rbp7Sk3d2GNtq7I+UbXHH9pjGe8LoAjri7n5PzV31DFfge0cd5s36pCwXF3PyfmrvqGK/A9o47zZv1SGWPeJ4fdW5nAAD6iQAEXLz7cW63TtUr8jXuJNaKOk1dpqlzqM1KSlKc8MqMsnwLJiqaZqm6BKAK3vNMeSMl0mk+MG80x5IyXSaT4w69jVjHOOqrlkAVveaY8kZLpNJ8YN5pjyRkuk0nxg7GrGOcdS5ZAFb3mmPJGS6TSfGDeaY8kZLpNJ8YOxqxjnHUuWQcO/wDKOlpBs523ryte7p+Ht91rrVXUUXIvU7SHtZbiHVJQoiM1pUpJqPwaS75Dr7eaY8kZLpNJ8YVLSzb1Rpb0dT1pSdoSJU8nTKaS6b9Io2XS4tukW250LJKv4CKrCqqLr45x1LnCnUGr0jaVNLVGipva6DtC3EFXVlL13qOTuK1j2LBo19UyWsjUaTLCkoWR84/p4OeepX0TSnU8aMW4J616utm6p9dXI1lNU02zccPglKNZ0j1UoJJcSLjrHgsjcW80x5IyXSaT4wyjJ66Y1zHOOpdKyAK3vNMeSMl0mk+MG80x5IyXSaT4w6djVjHOOpcsgCt7zTHkjJdJpPjBvNMeSMl0mk+MHY1YxzjqXLIAre80x5IyXSaT4wbzTHkjJdJpPjB2NWMc46lyyAIaguTb1jVJXR1VEVL2dgmqNtSXjItYySttSk6xFk9UzIzJKjIjJJmUyOVVM0TdLNgAAJYCCsztK759W/inROiCsztK759W/inR46u80cNXrSrcnQAB7EgrdZ/SPEf3TW+2pRZBW6z+keI/umt9tSjtY/in7T6SqFkABjScbTTMbVx9Y0l+jq2VsPNK5loUk0qSf1kZkOKWSA4hgLpvO0qOjl3k1i4bQopcJK06U8ZZlbqmlrT8+yo00jxZxxUY/D9oyz8po3tu6a6EjaW4omvuWrbuameeoayZqKhDrjS0Nvs6zjTThEglKMiJKsJM8GXPP+g7hENdV4RVl0dHVS1QdOzV1tPHMGltSzW++4ltpOCI8ZUouJ8C745elLXpIqy7QsKskLZvqnuCdrqmLrq1x9ELFMstZWwSCqFre1VbRKGlO4IzPiWzIVBuPiJ3qeaSmnXoyfhbc0mtUDdXxcpGKHl7aVJQpxazJk0OGktZauwURZMgzx2Kd+R5aRk2XsanroqKOYJ7VTsNiTxNaudbW19Y841cY7/eFkHNUnovse9OqJiIF2Joq61qOxl8loKZw00hatcSCwlBkk9XKsEecHxLiRGWqKCplLwt7Q/bE3MxrNtPtTbCF3Q29U0VZU0tapmnZeJD7OspLCD1CWsyMyPsTPBkzpgd2AOPpbRkzRW/o0gau56G54Gv0ia7KIQ3GqWkZ5FUpco2zN91RN66HCNOvw11J4FwHWFvW7F2nDU0TDUFPFxlMRkzSUrZIbbIzNRklJcC4mZ/xFRN4kQGh9IFnQ199VBbsVP0LcpF7oVz6qJ8zNlxaaymSk1ozhZFrmZEojIjwfORGWpbRRRz9PortO8Ks3rCRJ3LRcnr6hRMVT1LVKRRMPqM+yJDW01EKPB7MuB6oyatY7SFbgL8j7ju26bdpmalFbbrlM1VuOpSTazeZJ5GzMlGZkSVER5IuPNnnHIzFfHv1dJZ9TJuNaFndIFXGlUnWKTTrZRQk63RbbW/5udXrpxrYPV1c4IYl2N0NjNaX4+yKqkhrVXc1vUchVUzjjtNR0TjCCqDUbbiVE3rHqrJC0mSVKIjT3pzx3QA0LoC0aN2Xe0vVxd1WvUxbkc23UW9alM4zTodUvWaqlpXVPaqjSlxOSJOsXPnVG+hcTfAibv7k5rzJ/2ahkwfaWP83b9UhjXf3JzXmT/s1DJg+0sf5u36pD0f8Uff2buZoAA4sBBQ3dJcP2jHsiE6IKG7pLh+0Y9kQ8lv8Sy4v21KjZKdELePaB37Zj2yBNCFvHtA79sx7ZAzLO7WvDPoU7YX0AAcEtZaPIqEo9L2lGrj7remZardjjkYVxRmiINNOZNkku9tE5Wf1DZo1lo8lYSs0vaUaSPtR6GlqR2OKRmnEmSJc1U5m2aT7+zTlB/WNmgI64u5+T81d9QxX4HtHHebN+qQsFxdz8n5q76hivwPaOO82b9Uhlj3ieH3VuZwAA+okFchVGu8rlM+JpTSoI/o1FHj+aj/AJixitwXdlc//wBL7Mx3s/w1/b3hsb1kAaqvm+rwb0txNkWsmEY5bB1Es5XS7LzuxNp9pvBIbWjXI9qRYynHPk8ap1GG0/3XecZZUNBxkRSXpOPSbVa7XbVygok0DxsvuEhKkrXrr1NROsWNY8nw4+bOhjoMBzlXdUDezVPGQjETB75JvMrTkScN3kSkqpF1CKlrCtdJGnZq1Vax8Fp5zJRTspfOlBGkJyyY960lyVNbbc2/JVNDVJZW4qpfa2aWifMySaUN8TWZpMlHhWsRJzOgbwAc96O9O16Tx6MJedoIJq3772jDNNHk9yqheKnceQpTi1GlxKiaURkSEmnJcVYyfhB9UbN/K3D29W1duTsJLydRFIfgKStI6N1Dbi0a1U4RsPn+jNKkoMjSZ98iMM6B0WA1B1MvcveH/fOd/HOB1Vv9Dj/98w3/APZ0w2/VeNvgNC1U4/bOmzTRMUqG3KmPs+Nq2kPEZoUtsq5SSURGR4yRZwZfWI6N0taVpGW0eUeys9lN8xbshSL5PVKONNtlp5ROFtS2+UuEREnZ4PPEyLjmcOiwFD0MX9IaQbTq6mYpaakmoyUrYeuRRGo2FPUz6mlLb1uyJKtUjIjMzLOMnzjF0037PWMxZ7Vu00dU189Pswx9c9psm0uMPr1+wPOUqbSeOOSyXAzJRbfqvGxgHP1fp+um12LogJSNiZO9Y+cjYOOXRE7T0NWuuQlTDi0qUtbZII165EpWdTgZZySf6oG5dFb10RF6xsXLTtDF00pFLgScYZr9vU8lSypLqlm2onlNkatZRGlecFjAzOgdAgOW5C67rsHTk3cmkU4R8oqwZWQ1LdbeQWoiopVLbMnVHrK4ERKIyI8/qpxxndGWn68bpu+3KSShmaiLm9faJoYGVpVxX6FTiDcqKlpLL6cpJs1J1OK0mRGQZ0bBuS+lbOLoHCLs0ytARH82tVNpP/goy/iLGK3f3aai/vaO/GMiyD1VfCp+8+zdwAAODAQVmdpXfPq38U6J0QVmdpXfPq38U6PHV3mjhq9aVbk6AAPYkFbrP6R4j+6a321KLIK3Wf0jxH901vtqUdrH8U/afSVQsgDAkpRyPeZbajqyvNxKlGdMSNVGNX9Y1qTxPW4F9B/MMXeCq8n5P+dP8UeeaohLNdho9+nr2HKGmcYr9bljamUmmpygkHtCxheUJSk854ERcxDHuK1IS8I7rfPQ9BN0GsS+SyNKioa1i5j1VkZZ+keW8FV5Pyf86f4obwVXk/J/zp/ijM6keNdo+taUgKeDrLaiKuEp1EpmNfoGl0zRlnBpbNOqRlk+Yu+Y9Ssm3Ux9fQFAxhUMhjllKVG3sqnCSSW0Tq4XhKUp454JIu8Pu8FV5Pyf86f4obwVXk/J/wA6f4oZ1IQtlW9bblO5EwMZFrp6c6RlVFRtsm0wa9obSTSRYQaz1tUuGeOMjyqrAtevt8oGptuIqIMnFOlGO0LSqbXUo1qVsjTq5NSlKM8cTUZ85j13gqvJ+T/nT/FDeCq8n5P+dP8AFDOpH2ns236SjjaRiCjWaWMd5RQsN0jaUUjmFJ12kkWEKwtRZTg8KP5zEJcFj3BLy9RV0WkSdg6VzV1KCjo45bTWEkR6qnaVazyZGfFR8TPGCwRTW8FV5Pyf86f4obwVXk/J/wA6f4oX0jwt20ERCmKuSrV3FOstuU6ZuvpaZurJlaiUbRKZaQRIylJ4IiyaSM8mQ/VXYNsSEG5C1VuRNTDuPKqFxz1C0unU6pRrUs2zTqmo1KUozxkzMz5zHrvBVeT8n/On+KG8FV5Pyf8AOn+KGdSD1l29UW4VvOwUY7AEgmyil0bZ0pJI8knZGWrjPHGB5xFhWzb9HWUkXbsTG0lagm6lijoWmkPpJOqSVpSkiURJ7EiPPDgPTeCq8n5P+dP8UN4Kryfk/wCdP8UM6kfLZsq3rKp3WLegYyBYeVruNRlG3TJWr5zJCSIz+sTQht4Kryfk/wCdP8UfUz1UpREcDJJIzxkzYwX/AN0M6kfq7+5Oa8yf9moZMH2lj/N2/VIY139yc15k/wCzUMmD7Sx/m7fqkPT/AMUff2buZoAA4sBBQ3dJcP2jHsiE6IKG7pLh+0Y9kQ8lv8Sy4v21KjZKdELePaB37Zj2yBNCFvHtA79sx7ZAzLO7WvDPoU7YX0AAcEqXaW+2/wDe3X/kW6e0pN3dhjbauyPlG1xx/aYxnvC6DWWjyKhKPS9pRq4+63pmWq3Y45GFcUZoiDTTmTZJLvbROVn9Q2aAjri7n5PzV31DFfge0cd5s36pCwXF3PyfmrvqGK/A9o47zZv1SGWPeJ4fdW5nAAD6iQVuC7srn/8ApfZmLIKtUVjFq3JI10isqaOr22TKsXwbbcQSiNK1f1clqmRnw5yznBH3stcVUxtmPeGw8anR9ynS3H3vy/V5JCVEPyDY519q+y7tNprcMbHGrq8dbOSxg6DTdTlVwsfCPwl2HG3PDScpXUkqqOJ1lTVc+p16ndYNwtdPFBEolpPLZGWM4GyvlKtHyqhPvFn3g+Uq0fKqE+8WfeE6Pa+CeUl04NexPU6FQHBVlTcjshN010ndUnIPUiU8vfOncY2aUEoiZQSVoJJZVgkd/ORc1aOs6V629OuH/OYFqE5Dsf1dR913a6+txztMaur3s544Gf8AKVaPlVCfeLPvB8pVo+VUJ94s+8Gj2kf6TykunBRbf0AlBWxoqhzneUFYr+2N7kmry7/ZnWMY2h7P9rrZyr9XHfyUFb/Uzy8C1ZUem+zegrOk010TQdZ20qNvs0qbfcJzLi9m6tJLSSCI1aykrMbX+Uq0fKqE+8WfeD5SrR8qoT7xZ94Zo1p4J5SXTgpkFbkloTeuJUdRTN6xc7LvyrEbHMUjbka48pTjxKcefbJxClqynhlODLjzj83bQ1una05W06+2rksYnUs1dPL15ULiW32X23WsJaqXDUesgjMjIiMiUWSPAuvylWj5VQn3iz7wfKVaPlVCfeLPvDdHtdmbPIunBS5bQlIStwy8xvSbT85bRQEw11vSbdS4lDpN1KC18tmk3lmaMmRkZFksZGdG6HOt8povrOu+03JjH47U5Njlu0p2mdfOv+jxstbHZZ1sZ4ZOzfKVaPlVCfeLPvB8pVo+VUJ94s+8Gj2ngnlJdOCmQEfIaF25iio7enb1RMzUhOKqIlujZRTHUvqc2KifqkGo062NYiwfPguYespEV2mKptt+thJmy92Z2nmUJl2qV3l2q0+2baNhUr1cbQjNSvowR5PFu+Uq0fKqE+8WfeD5SrR8qoT7xZ94NHtfDPIunBRbp6nxi6Ji9JNc69RVk5WRklQP09OW0i6qhQRNOEalGTmVFkyMi4GZd/Ijq/qal3lS3TUXtdT09PzVCxHMyNDRJoURzLD23a2LRLX2RPEThmpR5NJFwIbL+Uq0fKqE+8WfeD5SrR8qoT7xZ94NGtPBPKS6cGuKTqfpicuV2Uvy827uZet6stx2lZh00JLZqFtKUvWS4rCsNmR8McSMtXHGwaNNG932K7QUclpBXcVvR1MdLSULsS0y+pBESWzefJRm4pKSxlKUZ5zyLP8AKVaPlVCfeLPvB8pVo+VUJ94s+8GjWngnlJdOD5f3aai/vaO/GMiyCoycxQ3kqhoIioak0JrKeqfqaZZOMsoacS6WVkeNZRpSRJLJnkzxgjMrcLriaaKaatU6/Zs6ouAAB50ggrM7Su+fVv4p0TogrM7Su+fVv4p0eOrvNHDV60q3J0AAexIK3Wf0jxH901vtqUWQVus/pHiP7prfbUo7WP4p+0+kqhZAABxSAKzMaRIWDvCOtqpqUFJVlI/XqTtmiKmp2sZddSpZKSgzyRKJJllJ5MsDzLStZjlFLVTN1wtSzEscprzp5BpzkzeMkpwkqPVI+9nGRl8C1AKVBaZrMnrCobxTccZQwFWlB8rra5lpDK1JJWycVr6qXCzg0GeSPJCTrtI1pxjFE9WXPDUrNazyilcfkGkJqG8pTrtmauyTlaCyWSyoi75BfAsQCtvaS7Qp6mup3bqhGqihbcdq2lyLJKp0Nq1HFOFrZQSVGSVGeMGeD4jNlbwgYKocYkpuOj32223VtVVW20pKHF7NtRkoyMiUsjSR99RYLiF4lwFFuPTdZNt2LWXeu446vgqVwmDqY+saeSt4zIiaSol6pr482SwXE8EQuEVK0U5HU8hG1lPIUFSgnGaqldS606k+ZSVJMyMvpILxlAAoUbpig6rSXP2ZV1kfHSEc5TM0yKivQl6uddZJ1SW2TwZ6iVN8xqzr97HFfcL6AhKq+LcobiYgKm4Iunnqgssxbta2mqcLGcpaNWsf8CFRtjTfEXdd900EfUxBwNtnsq+WclkEsnSSlSjSySTLYp1jSbqlp7NCkkk8GZL4GyQFdY0j2lVQSJtm6IV2GW7sESKJBlVOpz9wnCVqmr6M5H4q9Jtnx9NGVFVdcHTU8pjkDr0iyhFXk8FsjNWF8f3chfAz7v7k5rzJ/wBmoZMH2lj/ADdv1SGNd/cnNeZP+zUMmD7Sx/m7fqkO/wDxR9/Zu5mgADiwEFDd0lw/aMeyITogobukuH7Rj2RDyW/xLLi/bUqNkp0Qt49oHftmPbIE0IW8e0Dv2zHtkDMs7ta8M+hTthfQABwS1lo8lYSs0vaUaSPtR6GlqR2OKRmnEmSJc1U5m2aT7+zTlB/WNmil2lvtv/e3X/kW6e0pN3dhjbauyPlG1xx/aYxnvC6AI64u5+T81d9QxX4HtHHebN+qQsFxdz8n5q76hivwPaOO82b9Uhlj3ieH3VuZwAA+okAAAMBgAAMBgAAMBgAAMCMucv8A2alvNHvUMSYjLn7mpbzR71DAal6ir/ddsHzR38Q6N24Gkuoq/wB12wfNHfxDo3aJp/DAYDAAKDAYAADAYAAAAAAAAABBWZ2ld8+rfxTonRBWZ2ld8+rfxTo8dXeaOGr1pVuToAA9iQVus/pHiP7prfbUosgrkgWz0hQjij1ULjq1lJn317SmUSfr1UqP/wAJ/MO1j+KftPpKoZFyXvblm8n6/wA/FwfKdbYdcq1un2urjW1ddRa2NZOcc2S+cQvy3aOvL61/vmm98XUBw1paI0iwszpEkbjuOzk0s9RLsish4Sto65hbL9bUvGTpJVr4LU5OzlR4LiZEZmRkUbf+hif1LopLUiWWaZjR+VsxKkOtM8odddXtkFx7AyQ21hSiItZzn4HjokBObEjnnSFY923BdNjXJGQk/G0UZFVNGiJjKmKOsjn1LbJKz5TtGDJTaDTrNqNaeGMkaiFrsTRA1aOk7lTEZsrfhbcpoiIqH3UuuLdcffdq1c+sRnhjJmRZyeOGcbbAbmxfeOfajRRcCepxkodEGhd1TEqcvK0CH2Uu1G1kk1D7e0NWzNewy2RmrV7FJZwKrpEjrkk9IRSkxZlUs7gnoajjoRVVSOVFRRR7NTXuGf6XZJPa5I0qXg8FxMjIz6sGLURdFWVtJWP0jD9XRmo6Z9xpKnGDUnVUaFGWU5LgeOcuAyaRz3N6N7vrKeYuUrYzUzV1xMrVWvS1dOTyaKiJGrrOKWllTynGkrUWvq4Ik6xmQ3jc8RWXTaVTQ09QqGrappOHFreywrJGZGdO80vJYMuwdT9ZlwOdAbEXCk6MrElbHYkESk717VUqQptWvXq2ZER5L/a62pPjkv1DRzcSPhjUFXoxu656i6YeqtMo05+725p65qirpllT0VO6zsCbShandsbdMkiSaSSnamZqzlI6VAM2Ng5wsLQ9JRN3zNReaJc41ifqrlOQXVx6Yt9xLyl0zqjSkqslNt6hajitmnZcDNOCLFt61Zq7tDltztHEuTSJG8X7skYYnG2l11GupqFsITtVJQeCOkcJK1ERk0XHmHSzzLdQytp1CXWnEmlaFllKiPgZGR85D9kRERERYIu8QzNgc+0miOfn74jpyZhGaSPkrsO4q+N2zThUTdNHHTUiXMKMluqdJDqjRrERkRZPVyfjcmhmauHTPd1RKsTdXa1yopKZT0ZUx6KdFG2ylLlM/tk8pQRubVf+znhW144MjMdEAGbAibv7k5rzJ/2ahkwfaWP83b9Uhh3o8hiz5xxZ6qSoXvUPh9Yz4pldPF0bThaq0MoSovmMkkRj0z8KPv7Q3cygABxYCChu6S4ftGPZEJ0QUN3SXD9ox7Ih5Lf4llxftqVGyU6IW8e0Dv2zHtkCaELePaB37Zj2yBmWd2teGfQp2wvoAA4Jay0eRUJR6XtKNXH3W9My1W7HHIwrijNEQaacybJJd7aJys/qGzRrLR5KwlZpe0o0kfaj0NLUjscUjNOJMkS5qpzNs0n39mnKD+sbNAR1xdz8n5q76hivwPaOO82b9UhYLi7n5PzV31DFfge0cd5s36pDLHvE8PurczgAB9RIAAAAAAAAAAAAACMufualvNHvUMSYjLn7mpbzR71DGDUvUVf7rtg+aO/iHRu0aS6ir/ddsHzR38Q6N2jKfwwAAAoAAAAAAAAAAAAAAQVmdpXfPq38U6J0QVmdpXfPq38U6PHV3mjhq9aVbk6AAPYkGJJxdNL02wqUGpJKJaFIUaVoUXMpKi4kZfOQywGxMxN8CuHZq+9cE0kuYi5Sk/8AzRkfNzXPKKb6Qj3BZAHXtq8fKG3yre5rnlFN9IR7gbmueUU30hHuCyAN7avHygvlW9zXPKKb6Qj3A3Nc8opvpCPcFkAO2rx8oL5Vvc1zyim+kI9wNzXPKKb6Qj3BZADtq8fKC+WhdBMvOaQ5LSWxLXHJmi37srIai2DiEHydskGnW7Hirsj4ja25rnlFN9IR7g1H1KHbvTf/AIgyPqtDoATTb2l23ygvlW9zXPKKb6Qj3A3Nc8opvpCPcFkAV21ePlBfKt7mueUU30hHuBua55RTfSEe4LIAdtXj5QXyre5rnlFN9IR7gbmueUU30hHuCyAHbV4+UF8oGltBhqoaeqq6QkzaUS20Vr+s2lRcSVqkREZkfEjMjweDLiRCeABzqrqr/FJfeAACGAgobukuH7Rj2RCdEFDd0lw/aMeyIeS3+JZcX7alRslOiFvHtA79sx7ZAmhC3j2gd+2Y9sgZlndrXhn0KdsL6AAOCVLtLfbf+9uv/It09pSbu7DG21dkfKNrjj+0xjPeF0GstHkVCUel7SjVx91vTMtVuxxyMK4ozREGmnMmySXe2icrP6hs0BHXF3PyfmrvqGK/A9o47zZv1SFguLufk/NXfUMV+B7Rx3mzfqkMse8Tw+6tzOAAH1EgAAAAAAAAAAAAAIy5+5qW80e9QxJiMufualvNHvUMYNS9RV/uu2D5o7+IdG7RpLqKv912wfNHfxDo3aMp/DAAACgAAAAAAAAAAAAABBWZ2ld8+rfxTonRXKW3ZSPS61STSGqdb7ryULoyUado4pZlnW48VGPFa59NrTaU0zVERMart804zGCo2XLGAgutc749a6CXvB1rnfHrXQS94V29p8qr9P8AIujFOgILrXO+PWugl7wda53x610EveDt7T5VX6f5F0Yp0BBda53x610EveDrXO+PWugl7wdvafKq/T/IujFOgILrXO+PWugl7wda53x610EveDt7T5VX6f5F0Yp0BBda53x610EveDrXO+PWugl7wdvafKq/T/IujFOgILrXO+PWugl7wda53x610EveDt7T5VX6f5F0YtOdSh2703/4gyPqtDoAc1dS1QSzs1pp2Es2wab9kEuGdIStdWq3lX63D6hvjrXO+PWugl7wyLauNUWUz+X+TLvqnQEF1rnfHrXQS94Otc749a6CXvDe3tPlVfp/k26MU6Agutc749a6CXvB1rnfHrXQS94O3tPlVfp/kXRinQEF1rnfHrXQS94Otc749a6CXvB29p8qr9P8i6MU6Agutc749a6CXvB1rnfHrXQS94O3tPlVfp/kXRinQEF1rnfHrXQS94Otc749a6CXvB29p8qr9P8AIujFOiChu6S4ftGPZEHWud8etdBL3hkQkM/Gv11RU1nLH6paVKUTRNkWqkkkRFk/mHKZtLW0s/8AHMRE3683wzG6ZxNUROtKiFvHtA79sx7ZAmhC3j2gd+2Y9sgdMs7ta8M+hTthfQABwS1lo8lYSs0vaUaSPtR6GlqR2OKRmnEmSJc1U5m2aT7+zTlB/WNmil2lvtv/AHt1/wCRbp7Sk3d2GNtq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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from IPython.display import Image, display\n", - "\n", - "# Setting xray to 1 will show the internal structure of the nested graph\n", - "display(Image(grandparent_graph.get_graph(xray=2).draw_mermaid_png()))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "If we run until the interrupt, we can now see that there are snapshots of the state of all three graphs" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "((), {'router_node': {'to_continue': True}})\n", - "(('graph:e18ecd45-5dfb-53b0-bcb7-db793924e9a8',), {'router_node': {'route': 'weather'}})\n", - "(('graph:e18ecd45-5dfb-53b0-bcb7-db793924e9a8', 'weather_graph:12bd3069-de24-5bc6-b4f1-f39527605781'), {'model_node': {'city': 'San Francisco'}})\n" - ] - } - ], - "source": [ - "config = {\"configurable\": {\"thread_id\": \"2\"}}\n", - "inputs = {\"messages\": [{\"role\": \"user\", \"content\": \"what's the weather in sf\"}]}\n", - "for update in grandparent_graph.stream(\n", - " inputs, config=config, stream_mode=\"updates\", subgraphs=True\n", - "):\n", - " print(update)" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Grandparent State:\n", - "{'messages': [HumanMessage(content=\"what's the weather in sf\", id='3bb28060-3d30-49a7-9f84-c90b6ada7848')], 'to_continue': True}\n", - "---------------\n", - "Parent Graph State:\n", - "{'messages': [HumanMessage(content=\"what's the weather in sf\", id='3bb28060-3d30-49a7-9f84-c90b6ada7848')], 'route': 'weather'}\n", - "---------------\n", - "Subgraph State:\n", - "{'messages': [HumanMessage(content=\"what's the weather in sf\", id='3bb28060-3d30-49a7-9f84-c90b6ada7848')], 'city': 'San Francisco'}\n" - ] - } - ], - "source": [ - "state = grandparent_graph.get_state(config, subgraphs=True)\n", - "print(\"Grandparent State:\")\n", - "print(state.values)\n", - "print(\"---------------\")\n", - "print(\"Parent Graph State:\")\n", - "print(state.tasks[0].state.values)\n", - "print(\"---------------\")\n", - "print(\"Subgraph State:\")\n", - "print(state.tasks[0].state.tasks[0].state.values)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can now continue, acting as the node three levels down" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "(('graph:e18ecd45-5dfb-53b0-bcb7-db793924e9a8',), {'weather_graph': {'messages': [HumanMessage(content=\"what's the weather in sf\", id='3bb28060-3d30-49a7-9f84-c90b6ada7848'), AIMessage(content='rainy', id='be926b59-c647-4355-88fd-a429b9e2b420')]}})\n", - "((), {'graph': {'messages': [HumanMessage(content=\"what's the weather in sf\", id='3bb28060-3d30-49a7-9f84-c90b6ada7848'), AIMessage(content='rainy', id='be926b59-c647-4355-88fd-a429b9e2b420')]}})\n", - "[HumanMessage(content=\"what's the weather in sf\", id='3bb28060-3d30-49a7-9f84-c90b6ada7848'), AIMessage(content='rainy', id='be926b59-c647-4355-88fd-a429b9e2b420')]\n" - ] - } - ], - "source": [ - "grandparent_graph_state = state\n", - "parent_graph_state = grandparent_graph_state.tasks[0].state\n", - "subgraph_state = parent_graph_state.tasks[0].state\n", - "grandparent_graph.update_state(\n", - " subgraph_state.config,\n", - " {\"messages\": [{\"role\": \"assistant\", \"content\": \"rainy\"}]},\n", - " as_node=\"weather_node\",\n", - ")\n", - "for update in grandparent_graph.stream(\n", - " None, config=config, stream_mode=\"updates\", subgraphs=True\n", - "):\n", - " print(update)\n", - "\n", - "print(grandparent_graph.get_state(config).values[\"messages\"])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "As in the cases above, we can see that the AI responds with \"rainy\" as we expect.\n", - "\n", - "We can explore the state history to see how the state of the grandparent graph was updated at each step." - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "StateSnapshot(values={'messages': [HumanMessage(content=\"what's the weather in sf\", id='5ff89e4d-8255-4d23-8b55-01633c112720'), AIMessage(content='rainy', id='7c80f847-248d-4b8f-8238-633ed757b353')], 'to_continue': True}, next=(), config={'configurable': {'thread_id': '2', 'checkpoint_ns': '', 'checkpoint_id': '1ef66f40-7a2c-6f9e-8002-a37a61b26709'}}, metadata={'source': 'loop', 'writes': {'graph': {'messages': [HumanMessage(content=\"what's the weather in sf\", id='5ff89e4d-8255-4d23-8b55-01633c112720'), AIMessage(content='rainy', id='7c80f847-248d-4b8f-8238-633ed757b353')]}}, 'step': 2, 'parents': {}}, created_at='2024-08-30T17:19:35.793847+00:00', parent_config={'configurable': {'thread_id': '2', 'checkpoint_ns': '', 'checkpoint_id': '1ef66f3f-f312-6338-8001-766acddc781e'}}, tasks=())\n", - "-----\n", - "StateSnapshot(values={'messages': [HumanMessage(content=\"what's the weather in sf\", id='5ff89e4d-8255-4d23-8b55-01633c112720')], 'to_continue': True}, next=('graph',), config={'configurable': {'thread_id': '2', 'checkpoint_ns': '', 'checkpoint_id': '1ef66f3f-f312-6338-8001-766acddc781e'}}, metadata={'source': 'loop', 'writes': {'router_node': {'to_continue': True}}, 'step': 1, 'parents': {}}, created_at='2024-08-30T17:19:21.627097+00:00', parent_config={'configurable': {'thread_id': '2', 'checkpoint_ns': '', 'checkpoint_id': '1ef66f3f-f303-61d0-8000-1945c8a74e9e'}}, tasks=(PregelTask(id='b59fe96f-fdce-5afe-aa58-bd2876a0d592', name='graph', error=None, interrupts=(), state={'configurable': {'thread_id': '2', 'checkpoint_ns': 'graph:b59fe96f-fdce-5afe-aa58-bd2876a0d592'}}),))\n", - "-----\n", - "StateSnapshot(values={'messages': [HumanMessage(content=\"what's the weather in sf\", id='5ff89e4d-8255-4d23-8b55-01633c112720')]}, next=('router_node',), config={'configurable': {'thread_id': '2', 'checkpoint_ns': '', 'checkpoint_id': '1ef66f3f-f303-61d0-8000-1945c8a74e9e'}}, metadata={'source': 'loop', 'writes': None, 'step': 0, 'parents': {}}, created_at='2024-08-30T17:19:21.620923+00:00', parent_config={'configurable': {'thread_id': '2', 'checkpoint_ns': '', 'checkpoint_id': '1ef66f3f-f2f9-6d6a-bfff-c8b76e5b2462'}}, tasks=(PregelTask(id='e3d4a97a-f4ca-5260-801e-e65b02907825', name='router_node', error=None, interrupts=(), state=None),))\n", - "-----\n", - "StateSnapshot(values={'messages': []}, next=('__start__',), config={'configurable': {'thread_id': '2', 'checkpoint_ns': '', 'checkpoint_id': '1ef66f3f-f2f9-6d6a-bfff-c8b76e5b2462'}}, metadata={'source': 'input', 'writes': {'messages': [{'role': 'user', 'content': \"what's the weather in sf\"}]}, 'step': -1, 'parents': {}}, created_at='2024-08-30T17:19:21.617127+00:00', parent_config=None, tasks=(PregelTask(id='f0538638-b794-58fc-a406-980d2fea28a1', name='__start__', error=None, interrupts=(), state=None),))\n", - "-----\n" - ] - } - ], - "source": [ - "for state in grandparent_graph.get_state_history(config):\n", - " print(state)\n", - " print(\"-----\")" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.3" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/docs/docs/how-tos/tool-calling-errors.ipynb b/docs/docs/how-tos/tool-calling-errors.ipynb deleted file mode 100644 index 75898fdf7..000000000 --- a/docs/docs/how-tos/tool-calling-errors.ipynb +++ /dev/null @@ -1,591 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# How to handle tool calling errors\n", - "\n", - "
    \n", - "

    Prerequisites

    \n", - "

    \n", - " This guide assumes familiarity with the following:\n", - "

    \n", - "

    \n", - "
    \n", - "\n", - "LLMs aren't perfect at calling tools. The model may try to call a tool that doesn't exist or fail to return arguments that match the requested schema. Strategies like keeping schemas simple, reducing the number of tools you pass at once, and having good names and descriptions can help mitigate this risk, but aren't foolproof.\n", - "\n", - "This guide covers some ways to build error handling into your graphs to mitigate these failure modes." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Setup\n", - "\n", - "First, let's install the required packages and set our API keys" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "%%capture --no-stderr\n", - "%pip install --quiet -U langgraph langchain_anthropic" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import getpass\n", - "import os\n", - "\n", - "\n", - "def _set_env(var: str):\n", - " if not os.environ.get(var):\n", - " os.environ[var] = getpass.getpass(f\"{var}: \")\n", - "\n", - "\n", - "_set_env(\"ANTHROPIC_API_KEY\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "

    Set up LangSmith for LangGraph development

    \n", - "

    \n", - " Sign up for LangSmith to quickly spot issues and improve the performance of your LangGraph projects. LangSmith lets you use trace data to debug, test, and monitor your LLM apps built with LangGraph — read more about how to get started here. \n", - "

    \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Using the prebuilt `ToolNode`\n", - "\n", - "To start, define a mock weather tool that has some hidden restrictions on input queries. The intent here is to simulate a real-world case where a model fails to call a tool correctly:" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "from langchain_core.tools import tool\n", - "\n", - "\n", - "@tool\n", - "def get_weather(location: str):\n", - " \"\"\"Call to get the current weather.\"\"\"\n", - " if location == \"san francisco\":\n", - " raise ValueError(\"Input queries must be proper nouns\")\n", - " elif location == \"San Francisco\":\n", - " return \"It's 60 degrees and foggy.\"\n", - " else:\n", - " raise ValueError(\"Invalid input.\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Next, set up a graph implementation of the [ReAct agent](https://langchain-ai.github.io/langgraph/concepts/agentic_concepts/#react-agent). This agent takes some query as input, then repeatedly call tools until it has enough information to resolve the query. We'll use the prebuilt [`ToolNode`](https://langchain-ai.github.io/langgraph/reference/prebuilt/#toolnode) to execute called tools, and a small, fast model powered by Anthropic:" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "from typing import Literal\n", - "\n", - "from langchain_anthropic import ChatAnthropic\n", - "from langgraph.graph import StateGraph, MessagesState, START, END\n", - "from langgraph.prebuilt import ToolNode\n", - "\n", - "tool_node = ToolNode([get_weather])\n", - "\n", - "model_with_tools = ChatAnthropic(\n", - " model=\"claude-3-haiku-20240307\", temperature=0\n", - ").bind_tools([get_weather])\n", - "\n", - "\n", - "def should_continue(state: MessagesState):\n", - " messages = state[\"messages\"]\n", - " last_message = messages[-1]\n", - " if last_message.tool_calls:\n", - " return \"tools\"\n", - " return END\n", - "\n", - "\n", - "def call_model(state: MessagesState):\n", - " messages = state[\"messages\"]\n", - " response = model_with_tools.invoke(messages)\n", - " return {\"messages\": [response]}\n", - "\n", - "\n", - "workflow = StateGraph(MessagesState)\n", - "\n", - "# Define the two nodes we will cycle between\n", - "workflow.add_node(\"agent\", call_model)\n", - "workflow.add_node(\"tools\", tool_node)\n", - "\n", - "workflow.add_edge(START, \"agent\")\n", - "workflow.add_conditional_edges(\"agent\", should_continue, [\"tools\", END])\n", - "workflow.add_edge(\"tools\", \"agent\")\n", - "\n", - "app = workflow.compile()" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "data": { - "image/jpeg": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from IPython.display import Image, display\n", - "\n", - "try:\n", - " display(Image(app.get_graph().draw_mermaid_png()))\n", - "except Exception:\n", - " # This requires some extra dependencies and is optional\n", - " pass" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "When you try to call the tool, you can see that the model calls the tool with a bad input, causing the tool to throw an error. The prebuilt `ToolNode` that executes the tool has some built-in error handling that captures the error and passes it back to the model so that it can try again:" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "HUMAN: what is the weather in san francisco?\n", - "\n", - "AI: [{'id': 'toolu_01K5tXKVRbETcs7Q8U9PHy96', 'input': {'location': 'san francisco'}, 'name': 'get_weather', 'type': 'tool_use'}]\n", - "\n", - "TOOL: Error: ValueError('Input queries must be proper nouns')\n", - " Please fix your mistakes.\n", - "\n", - "AI: [{'text': 'Apologies, it looks like there was an issue with the weather lookup. Let me try that again with the proper format:', 'type': 'text'}, {'id': 'toolu_01KSCsme3Du2NBazSJQ1af4b', 'input': {'location': 'San Francisco'}, 'name': 'get_weather', 'type': 'tool_use'}]\n", - "\n", - "TOOL: It's 60 degrees and foggy.\n", - "\n", - "AI: The current weather in San Francisco is 60 degrees and foggy.\n", - "\n" - ] - } - ], - "source": [ - "response = app.invoke(\n", - " {\"messages\": [(\"human\", \"what is the weather in san francisco?\")]},\n", - ")\n", - "\n", - "for message in response[\"messages\"]:\n", - " string_representation = f\"{message.type.upper()}: {message.content}\\n\"\n", - " print(string_representation)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Custom strategies\n", - "\n", - "This is a fine default in many cases, but there are cases where custom fallbacks may be better.\n", - "\n", - "For example, the below tool requires as input a list of elements of a specific length - tricky for a small model! We'll also intentionally avoid pluralizing `topic` to trick the model into thinking it should pass a string:" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "HUMAN: Write me an incredible haiku about water.\n", - "\n", - "AI: [{'text': 'Here is a haiku about water:', 'type': 'text'}, {'id': 'toolu_01L13Z3Gtaym5KKgPXVyZhYn', 'input': {'topic': ['water']}, 'name': 'master_haiku_generator', 'type': 'tool_use'}]\n", - "\n", - "TOOL: Error: 1 validation error for master_haiku_generator\n", - "request\n", - " Field required [type=missing, input_value={'topic': ['water']}, input_type=dict]\n", - " For further information visit https://errors.pydantic.dev/2.7/v/missing\n", - " Please fix your mistakes.\n", - "\n", - "AI: [{'text': 'Oops, my apologies. Let me try that again with the correct format:', 'type': 'text'}, {'id': 'toolu_01HCQ5uXr5kXQHBQ3FyQ1Ysk', 'input': {'topic': ['water']}, 'name': 'master_haiku_generator', 'type': 'tool_use'}]\n", - "\n", - "TOOL: Error: 1 validation error for master_haiku_generator\n", - "request\n", - " Field required [type=missing, input_value={'topic': ['water']}, input_type=dict]\n", - " For further information visit https://errors.pydantic.dev/2.7/v/missing\n", - " Please fix your mistakes.\n", - "\n", - "AI: [{'text': 'Hmm, it seems there was an issue with the input format. Let me try a different approach:', 'type': 'text'}, {'id': 'toolu_01RF96nruwr4nMqhLBRsbfE5', 'input': {'request': {'topic': ['water']}}, 'name': 'master_haiku_generator', 'type': 'tool_use'}]\n", - "\n", - "TOOL: Error: 1 validation error for master_haiku_generator\n", - "request.topic\n", - " List should have at least 3 items after validation, not 1 [type=too_short, input_value=['water'], input_type=list]\n", - " For further information visit https://errors.pydantic.dev/2.7/v/too_short\n", - " Please fix your mistakes.\n", - "\n", - "AI: [{'text': 'Ah I see, the haiku generator requires at least 3 topics. Let me provide 3 topics related to water:', 'type': 'text'}, {'id': 'toolu_011jcgHuG2Kyr87By459huqQ', 'input': {'request': {'topic': ['ocean', 'rain', 'river']}}, 'name': 'master_haiku_generator', 'type': 'tool_use'}]\n", - "\n", - "TOOL: Here is a haiku about ocean, rain, and river:\n", - "\n", - "Vast ocean's embrace,\n", - "Raindrops caress the river,\n", - "Nature's symphony.\n", - "\n", - "AI: I hope this haiku about water captures the essence you were looking for! Let me know if you would like me to generate another one.\n", - "\n" - ] - } - ], - "source": [ - "from langchain_core.output_parsers import StrOutputParser\n", - "from pydantic import BaseModel, Field\n", - "\n", - "\n", - "class HaikuRequest(BaseModel):\n", - " topic: list[str] = Field(\n", - " max_length=3,\n", - " min_length=3,\n", - " )\n", - "\n", - "\n", - "@tool\n", - "def master_haiku_generator(request: HaikuRequest):\n", - " \"\"\"Generates a haiku based on the provided topics.\"\"\"\n", - " model = ChatAnthropic(model=\"claude-3-haiku-20240307\", temperature=0)\n", - " chain = model | StrOutputParser()\n", - " topics = \", \".join(request.topic)\n", - " haiku = chain.invoke(f\"Write a haiku about {topics}\")\n", - " return haiku\n", - "\n", - "\n", - "tool_node = ToolNode([master_haiku_generator])\n", - "\n", - "model = ChatAnthropic(model=\"claude-3-haiku-20240307\", temperature=0)\n", - "model_with_tools = model.bind_tools([master_haiku_generator])\n", - "\n", - "\n", - "def should_continue(state: MessagesState):\n", - " messages = state[\"messages\"]\n", - " last_message = messages[-1]\n", - " if last_message.tool_calls:\n", - " return \"tools\"\n", - " return END\n", - "\n", - "\n", - "def call_model(state: MessagesState):\n", - " messages = state[\"messages\"]\n", - " response = model_with_tools.invoke(messages)\n", - " return {\"messages\": [response]}\n", - "\n", - "\n", - "workflow = StateGraph(MessagesState)\n", - "\n", - "# Define the two nodes we will cycle between\n", - "workflow.add_node(\"agent\", call_model)\n", - "workflow.add_node(\"tools\", tool_node)\n", - "\n", - "workflow.add_edge(START, \"agent\")\n", - "workflow.add_conditional_edges(\"agent\", should_continue, [\"tools\", END])\n", - "workflow.add_edge(\"tools\", \"agent\")\n", - "\n", - "app = workflow.compile()\n", - "\n", - "response = app.invoke(\n", - " {\"messages\": [(\"human\", \"Write me an incredible haiku about water.\")]},\n", - " {\"recursion_limit\": 10},\n", - ")\n", - "\n", - "for message in response[\"messages\"]:\n", - " string_representation = f\"{message.type.upper()}: {message.content}\\n\"\n", - " print(string_representation)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can see that the model takes two tries to get the input correct.\n", - "\n", - "A better strategy might be to trim the failed attempt to reduce distraction, then fall back to a more advanced model. Here's an example. We also use a custom-built node to call our tools instead of the prebuilt `ToolNode`:" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [], - "source": [ - "import json\n", - "\n", - "from langchain_core.messages import AIMessage, ToolMessage\n", - "from langchain_core.messages.modifier import RemoveMessage\n", - "\n", - "\n", - "@tool\n", - "def master_haiku_generator(request: HaikuRequest):\n", - " \"\"\"Generates a haiku based on the provided topics.\"\"\"\n", - " model = ChatAnthropic(model=\"claude-3-haiku-20240307\", temperature=0)\n", - " chain = model | StrOutputParser()\n", - " topics = \", \".join(request.topic)\n", - " haiku = chain.invoke(f\"Write a haiku about {topics}\")\n", - " return haiku\n", - "\n", - "\n", - "def call_tool(state: MessagesState):\n", - " tools_by_name = {master_haiku_generator.name: master_haiku_generator}\n", - " messages = state[\"messages\"]\n", - " last_message = messages[-1]\n", - " output_messages = []\n", - " for tool_call in last_message.tool_calls:\n", - " try:\n", - " tool_result = tools_by_name[tool_call[\"name\"]].invoke(tool_call[\"args\"])\n", - " output_messages.append(\n", - " ToolMessage(\n", - " content=json.dumps(tool_result),\n", - " name=tool_call[\"name\"],\n", - " tool_call_id=tool_call[\"id\"],\n", - " )\n", - " )\n", - " except Exception as e:\n", - " # Return the error if the tool call fails\n", - " output_messages.append(\n", - " ToolMessage(\n", - " content=\"\",\n", - " name=tool_call[\"name\"],\n", - " tool_call_id=tool_call[\"id\"],\n", - " additional_kwargs={\"error\": e},\n", - " )\n", - " )\n", - " return {\"messages\": output_messages}\n", - "\n", - "\n", - "model = ChatAnthropic(model=\"claude-3-haiku-20240307\", temperature=0)\n", - "model_with_tools = model.bind_tools([master_haiku_generator])\n", - "\n", - "better_model = ChatAnthropic(model=\"claude-3-5-sonnet-20240620\", temperature=0)\n", - "better_model_with_tools = better_model.bind_tools([master_haiku_generator])\n", - "\n", - "\n", - "def should_continue(state: MessagesState):\n", - " messages = state[\"messages\"]\n", - " last_message = messages[-1]\n", - " if last_message.tool_calls:\n", - " return \"tools\"\n", - " return END\n", - "\n", - "\n", - "def should_fallback(\n", - " state: MessagesState,\n", - ") -> Literal[\"agent\", \"remove_failed_tool_call_attempt\"]:\n", - " messages = state[\"messages\"]\n", - " failed_tool_messages = [\n", - " msg\n", - " for msg in messages\n", - " if isinstance(msg, ToolMessage)\n", - " and msg.additional_kwargs.get(\"error\") is not None\n", - " ]\n", - " if failed_tool_messages:\n", - " return \"remove_failed_tool_call_attempt\"\n", - " return \"agent\"\n", - "\n", - "\n", - "def call_model(state: MessagesState):\n", - " messages = state[\"messages\"]\n", - " response = model_with_tools.invoke(messages)\n", - " return {\"messages\": [response]}\n", - "\n", - "\n", - "def remove_failed_tool_call_attempt(state: MessagesState):\n", - " messages = state[\"messages\"]\n", - " # Remove all messages from the most recent\n", - " # instance of AIMessage onwards.\n", - " last_ai_message_index = next(\n", - " i\n", - " for i, msg in reversed(list(enumerate(messages)))\n", - " if isinstance(msg, AIMessage)\n", - " )\n", - " messages_to_remove = messages[last_ai_message_index:]\n", - " return {\"messages\": [RemoveMessage(id=m.id) for m in messages_to_remove]}\n", - "\n", - "\n", - "# Fallback to a better model if a tool call fails\n", - "def call_fallback_model(state: MessagesState):\n", - " messages = state[\"messages\"]\n", - " response = better_model_with_tools.invoke(messages)\n", - " return {\"messages\": [response]}\n", - "\n", - "\n", - "workflow = StateGraph(MessagesState)\n", - "\n", - "workflow.add_node(\"agent\", call_model)\n", - "workflow.add_node(\"tools\", call_tool)\n", - "workflow.add_node(\"remove_failed_tool_call_attempt\", remove_failed_tool_call_attempt)\n", - "workflow.add_node(\"fallback_agent\", call_fallback_model)\n", - "\n", - "workflow.add_edge(START, \"agent\")\n", - "workflow.add_conditional_edges(\"agent\", should_continue, [\"tools\", END])\n", - "workflow.add_conditional_edges(\"tools\", should_fallback)\n", - "workflow.add_edge(\"remove_failed_tool_call_attempt\", \"fallback_agent\")\n", - "workflow.add_edge(\"fallback_agent\", \"tools\")\n", - "\n", - "app = workflow.compile()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The `tools` node will now return `ToolMessage`s with an `error` field in `additional_kwargs` if a tool call fails. If that happens, it will go to another node that removes the failed tool messages, and has a better model retry the tool call generation.\n", - "\n", - "The diagram below shows this visually:" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "data": { - "image/jpeg": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "try:\n", - " display(Image(app.get_graph().draw_mermaid_png()))\n", - "except Exception:\n", - " # This requires some extra dependencies and is optional\n", - " pass" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's try it out. To emphasize the removal steps, let's `stream` the responses from the model so that we can see each executed node:" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'agent': {'messages': [AIMessage(content=[{'text': 'Here is a haiku about water:', 'type': 'text'}, {'id': 'toolu_019mY8NX4t7YkJBWeHG6jE4T', 'input': {'topic': ['water']}, 'name': 'master_haiku_generator', 'type': 'tool_use'}], additional_kwargs={}, response_metadata={'id': 'msg_01RmoaLh38DnRX2fv7E8vCFh', 'model': 'claude-3-haiku-20240307', 'stop_reason': 'tool_use', 'stop_sequence': None, 'usage': {'input_tokens': 384, 'output_tokens': 67}}, id='run-a1511215-1a62-49b5-b5b3-b2c8f8c7920e-0', tool_calls=[{'name': 'master_haiku_generator', 'args': {'topic': ['water']}, 'id': 'toolu_019mY8NX4t7YkJBWeHG6jE4T', 'type': 'tool_call'}], usage_metadata={'input_tokens': 384, 'output_tokens': 67, 'total_tokens': 451})]}}\n", - "{'tools': {'messages': [ToolMessage(content='', name='master_haiku_generator', id='69f85339-dbc2-4341-8c4d-26300dfe31a5', tool_call_id='toolu_019mY8NX4t7YkJBWeHG6jE4T')]}}\n", - "{'remove_failed_tool_call_attempt': {'messages': [RemoveMessage(content='', additional_kwargs={}, response_metadata={}, id='run-a1511215-1a62-49b5-b5b3-b2c8f8c7920e-0'), RemoveMessage(content='', additional_kwargs={}, response_metadata={}, id='69f85339-dbc2-4341-8c4d-26300dfe31a5')]}}\n", - "{'fallback_agent': {'messages': [AIMessage(content=[{'text': 'Certainly! I\\'d be happy to help you create an incredible haiku about water. To do this, I\\'ll use the master_haiku_generator function, which requires three topics. Since you\\'ve specified water as the main theme, I\\'ll add two related concepts to create a more vivid and interesting haiku. Let\\'s use \"water,\" \"flow,\" and \"reflection\" as our three topics.', 'type': 'text'}, {'id': 'toolu_01FxSxy8LeQ5PjdNYq8vLFTd', 'input': {'request': {'topic': ['water', 'flow', 'reflection']}}, 'name': 'master_haiku_generator', 'type': 'tool_use'}], additional_kwargs={}, response_metadata={'id': 'msg_01U5HV3pt1NVm6syGbxx29no', 'model': 'claude-3-5-sonnet-20240620', 'stop_reason': 'tool_use', 'stop_sequence': None, 'usage': {'input_tokens': 414, 'output_tokens': 158}}, id='run-3eb746c7-b607-4ad3-881a-1c11a7638af7-0', tool_calls=[{'name': 'master_haiku_generator', 'args': {'request': {'topic': ['water', 'flow', 'reflection']}}, 'id': 'toolu_01FxSxy8LeQ5PjdNYq8vLFTd', 'type': 'tool_call'}], usage_metadata={'input_tokens': 414, 'output_tokens': 158, 'total_tokens': 572})]}}\n", - "{'tools': {'messages': [ToolMessage(content='\"Here is a haiku about water, flow, and reflection:\\\\n\\\\nRippling waters flow,\\\\nMirroring the sky above,\\\\nTranquil reflection.\"', name='master_haiku_generator', id='fdfc497d-939a-42c0-8748-31371b98a3a7', tool_call_id='toolu_01FxSxy8LeQ5PjdNYq8vLFTd')]}}\n", - "{'agent': {'messages': [AIMessage(content='I hope you enjoy this haiku about the beauty and serenity of water. Please let me know if you would like me to generate another one.', additional_kwargs={}, response_metadata={'id': 'msg_012rXWHapc8tPfBPEonpAT6W', 'model': 'claude-3-haiku-20240307', 'stop_reason': 'end_turn', 'stop_sequence': None, 'usage': {'input_tokens': 587, 'output_tokens': 35}}, id='run-ab6d412d-9374-4a4b-950d-6dcc43d87cf5-0', usage_metadata={'input_tokens': 587, 'output_tokens': 35, 'total_tokens': 622})]}}\n" - ] - } - ], - "source": [ - "stream = app.stream(\n", - " {\"messages\": [(\"human\", \"Write me an incredible haiku about water.\")]},\n", - " {\"recursion_limit\": 10},\n", - ")\n", - "\n", - "for chunk in stream:\n", - " print(chunk)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can see that you get a cleaner response - the more powerful model gets it right on the first try, and the smaller model's failure gets wiped from the graph state. This shorter message history also avoid overpopulating the graph state with attempts.\n", - "\n", - "You can also inspect this [LangSmith trace](https://smith.langchain.com/public/7ce6f1fe-48c4-400e-9cbe-1de2da6d2800/r), which shows the failed initial call to the smaller model.\n", - "\n", - "## Next steps\n", - "\n", - "You've now seen how to implement some strategies to handle tool calling errors.\n", - "\n", - "Next, check out some of the [other LangGraph how-to guides here](https://langchain-ai.github.io/langgraph/how-tos/)." - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.9" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/docs/docs/how-tos/tool-calling.ipynb b/docs/docs/how-tos/tool-calling.ipynb index 7aee38e77..ab934346b 100644 --- a/docs/docs/how-tos/tool-calling.ipynb +++ b/docs/docs/how-tos/tool-calling.ipynb @@ -4,295 +4,559 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# How to call tools using ToolNode\n", + "# Use tools\n", "\n", - "This guide covers how to use LangGraph's prebuilt [`ToolNode`](https://langchain-ai.github.io/langgraph/reference/prebuilt/#langgraph.prebuilt.tool_node.ToolNode) for tool calling.\n", + "[Tools](https://python.langchain.com/docs/concepts/tools/) are a way to encapsulate a function and its input schema in a way that can be passed to a chat model that supports tool calling. This allows the model to request the execution of this function with specific inputs. This guide shows how you can create tools and use them in your graphs.\n", "\n", - "`ToolNode` is a LangChain Runnable that takes graph state (with a list of messages) as input and outputs state update with the result of tool calls. It is designed to work well out-of-box with LangGraph's prebuilt [ReAct agent](https://langchain-ai.github.io/langgraph/how-tos/create-react-agent/), but can also work with any `StateGraph` as long as its state has a `messages` key with an appropriate reducer (see [`MessagesState`](https://github.com/langchain-ai/langgraph/blob/e3ef9adac7395e5c0943c22bbc8a4a856b103aa3/libs/langgraph/langgraph/graph/message.py#L150))." + "## Create tools\n", + "\n", + "### Define simple tools\n", + "\n", + "To create tools, you can use [@tool](https://python.langchain.com/api_reference/core/tools/langchain_core.tools.convert.tool.html) decorator or vanilla Python functions.\n", + "\n", + "=== \"`@tool` decorator\"\n", + " ```python\n", + " from langchain_core.tools import tool\n", + "\n", + " # highlight-next-line\n", + " @tool\n", + " def multiply(a: int, b: int) -> int:\n", + " \"\"\"Multiply two numbers.\"\"\"\n", + " return a * b\n", + " ```\n", + "\n", + "=== \"Python functions\"\n", + "\n", + " This requires using LangGraph's prebuilt [`ToolNode`][langgraph.prebuilt.tool_node.ToolNode] or [agent](../../agents/agents), which automatically convert the functions to [LangChain tools](https://python.langchain.com/docs/concepts/tools/#tool-interface).\n", + " \n", + " ```python\n", + " def multiply(a: int, b: int) -> int:\n", + " \"\"\"Multiply two numbers.\"\"\"\n", + " return a * b\n", + " ```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Setup\n", + "### Customize tools\n", "\n", - "First, let's install the required packages and set our API keys" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "%%capture --no-stderr\n", - "%pip install --quiet -U langgraph langchain_anthropic" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import getpass\n", - "import os\n", + "For more control over tool behavior, use the `@tool` decorator:\n", "\n", - "\n", - "def _set_env(var: str):\n", - " if not os.environ.get(var):\n", - " os.environ[var] = getpass.getpass(f\"{var}: \")\n", - "\n", - "\n", - "_set_env(\"ANTHROPIC_API_KEY\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
    \n", - "

    Set up LangSmith for LangGraph development

    \n", - "

    \n", - " Sign up for LangSmith to quickly spot issues and improve the performance of your LangGraph projects. LangSmith lets you use trace data to debug, test, and monitor your LLM apps built with LangGraph — read more about how to get started here. \n", - "

    \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Define tools" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "from langchain_core.messages import AIMessage\n", + "```python\n", + "# highlight-next-line\n", "from langchain_core.tools import tool\n", "\n", - "from langgraph.prebuilt import ToolNode" + "# highlight-next-line\n", + "@tool(\"multiply_tool\", parse_docstring=True)\n", + "def multiply(a: int, b: int) -> int:\n", + " \"\"\"Multiply two numbers.\n", + "\n", + " Args:\n", + " a: First operand\n", + " b: Second operand\n", + " \"\"\"\n", + " return a * b\n", + "```\n", + "\n", + "You can also define a custom input schema using Pydantic:\n", + "\n", + "```python\n", + "from pydantic import BaseModel, Field\n", + "\n", + "class MultiplyInputSchema(BaseModel):\n", + " \"\"\"Multiply two numbers\"\"\"\n", + " a: int = Field(description=\"First operand\")\n", + " b: int = Field(description=\"Second operand\")\n", + "\n", + "# highlight-next-line\n", + "@tool(\"multiply_tool\", args_schema=MultiplyInputSchema)\n", + "def multiply(a: int, b: int) -> int:\n", + " return a * b\n", + "```\n", + "\n", + "For additional customization, refer to the [custom tools guide](https://python.langchain.com/docs/how_to/custom_tools/)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Hide arguments from the model\n", + "\n", + "Some tools require runtime-only arguments (e.g., user ID or session context) that should not be controllable by the model.\n", + "\n", + "You can put these arguments in the [`state`](#read-state) or [`config`](#access-config) of the agent, and access\n", + "this information inside the tool:\n", + "\n", + "```python\n", + "from langchain_core.tools import tool\n", + "from langchain_core.runnables import RunnableConfig\n", + "from langgraph.prebuilt import InjectedState\n", + "from langgraph.graph import MessagesState\n", + "\n", + "@tool\n", + "def my_tool(\n", + " # This will be populated by an LLM\n", + " tool_arg: str,\n", + " # access information that's dynamically updated inside the agent\n", + " # highlight-next-line\n", + " state: Annotated[MessagesState, InjectedState],\n", + " # access static data that is passed at agent invocation\n", + " # highlight-next-line\n", + " config: RunnableConfig,\n", + ") -> str:\n", + " \"\"\"My tool.\"\"\"\n", + " do_something_with_state(state[\"messages\"])\n", + " do_something_with_config(config)\n", + " ...\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Access config\n", + "\n", + "You can provide static information to the graph at runtime, like a `user_id` or API credentials. This information can be accessed inside the tools through a special parameter **annotation** — `RunnableConfig`:\n", + "\n", + "```python\n", + "from langchain_core.runnables import RunnableConfig\n", + "from langchain_core.tools import tool\n", + "\n", + "@tool\n", + "def get_user_info(\n", + " # highlight-next-line\n", + " config: RunnableConfig,\n", + ") -> str:\n", + " \"\"\"Look up user info.\"\"\"\n", + " # highlight-next-line\n", + " user_id = config[\"configurable\"].get(\"user_id\")\n", + " return \"User is John Smith\" if user_id == \"user_123\" else \"Unknown user\"\n", + "```\n", + "\n", + "??? example \"Access config in tools\"\n", + "\n", + " ```python\n", + " from langchain_core.runnables import RunnableConfig\n", + " from langchain_core.tools import tool\n", + " from langgraph.prebuilt import create_react_agent\n", + " \n", + " def get_user_info(\n", + " # highlight-next-line\n", + " config: RunnableConfig,\n", + " ) -> str:\n", + " \"\"\"Look up user info.\"\"\"\n", + " # highlight-next-line\n", + " user_id = config[\"configurable\"].get(\"user_id\")\n", + " return \"User is John Smith\" if user_id == \"user_123\" else \"Unknown user\"\n", + " \n", + " agent = create_react_agent(\n", + " model=\"anthropic:claude-3-7-sonnet-latest\",\n", + " tools=[get_user_info],\n", + " )\n", + " \n", + " agent.invoke(\n", + " {\"messages\": [{\"role\": \"user\", \"content\": \"look up user information\"}]},\n", + " # highlight-next-line\n", + " config={\"configurable\": {\"user_id\": \"user_123\"}}\n", + " )\n", + " ```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Short-term memory\n", + "\n", + "LangGraph allows agents to access and update their [short-term memory](../../concepts/memory#short-term-memory) (state) inside the tools." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Read state\n", + "\n", + "To access the graph state inside the tools, you can use a special parameter **annotation** — [`InjectedState`][langgraph.prebuilt.InjectedState]: \n", + "\n", + "```python\n", + "from typing import Annotated\n", + "from langchain_core.tools import tool\n", + "# highlight-next-line\n", + "from langgraph.prebuilt import InjectedState\n", + "\n", + "class CustomState(AgentState):\n", + " # highlight-next-line\n", + " user_id: str\n", + "\n", + "@tool\n", + "def get_user_info(\n", + " # highlight-next-line\n", + " state: Annotated[CustomState, InjectedState]\n", + ") -> str:\n", + " \"\"\"Look up user info.\"\"\"\n", + " # highlight-next-line\n", + " user_id = state[\"user_id\"]\n", + " return \"User is John Smith\" if user_id == \"user_123\" else \"Unknown user\"\n", + "```\n", + "\n", + "??? example \"Access state in tools\"\n", + "\n", + " ```python\n", + " from typing import Annotated\n", + " from langchain_core.tools import tool\n", + " from langgraph.prebuilt import InjectedState, create_react_agent\n", + " \n", + " class CustomState(AgentState):\n", + " # highlight-next-line\n", + " user_id: str\n", + "\n", + " @tool\n", + " def get_user_info(\n", + " # highlight-next-line\n", + " state: Annotated[CustomState, InjectedState]\n", + " ) -> str:\n", + " \"\"\"Look up user info.\"\"\"\n", + " # highlight-next-line\n", + " user_id = state[\"user_id\"]\n", + " return \"User is John Smith\" if user_id == \"user_123\" else \"Unknown user\"\n", + " \n", + " agent = create_react_agent(\n", + " model=\"anthropic:claude-3-7-sonnet-latest\",\n", + " tools=[get_user_info],\n", + " # highlight-next-line\n", + " state_schema=CustomState,\n", + " )\n", + " \n", + " agent.invoke({\n", + " \"messages\": \"look up user information\",\n", + " # highlight-next-line\n", + " \"user_id\": \"user_123\"\n", + " })\n", + " ```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Update state\n", + "\n", + "You can return state updates directly from the tools. This is useful for persisting intermediate results or making information accessible to subsequent tools or prompts.\n", + "\n", + "```python\n", + "from langgraph.graph import MessagesState\n", + "from langgraph.types import Command\n", + "from langchain_core.tools import tool, InjectedToolCallId\n", + "\n", + "class CustomState(MessagesState):\n", + " # highlight-next-line\n", + " user_name: str\n", + "\n", + "@tool\n", + "def update_user_info(\n", + " tool_call_id: Annotated[str, InjectedToolCallId],\n", + " config: RunnableConfig\n", + ") -> Command:\n", + " \"\"\"Look up and update user info.\"\"\"\n", + " user_id = config[\"configurable\"].get(\"user_id\")\n", + " name = \"John Smith\" if user_id == \"user_123\" else \"Unknown user\"\n", + " # highlight-next-line\n", + " return Command(update={\n", + " # highlight-next-line\n", + " \"user_name\": name,\n", + " # update the message history\n", + " \"messages\": [\n", + " ToolMessage(\n", + " \"Successfully looked up user information\",\n", + " tool_call_id=tool_call_id\n", + " )\n", + " ]\n", + " })\n", + "```\n", + "\n", + "??? example \"Update state from tools\"\n", + "\n", + " This is an example of using the prebuilt agent with a tool that can update graph state.\n", + "\n", + " ```python\n", + " from typing import Annotated\n", + " from langchain_core.tools import tool, InjectedToolCallId\n", + " from langchain_core.runnables import RunnableConfig\n", + " from langchain_core.messages import ToolMessage\n", + " from langgraph.prebuilt import InjectedState, create_react_agent\n", + " from langgraph.prebuilt.chat_agent_executor import AgentState\n", + " from langgraph.types import Command\n", + " \n", + " class CustomState(AgentState):\n", + " # highlight-next-line\n", + " user_name: str\n", + "\n", + " @tool\n", + " def update_user_info(\n", + " tool_call_id: Annotated[str, InjectedToolCallId],\n", + " config: RunnableConfig\n", + " ) -> Command:\n", + " \"\"\"Look up and update user info.\"\"\"\n", + " user_id = config[\"configurable\"].get(\"user_id\")\n", + " name = \"John Smith\" if user_id == \"user_123\" else \"Unknown user\"\n", + " # highlight-next-line\n", + " return Command(update={\n", + " # highlight-next-line\n", + " \"user_name\": name,\n", + " # update the message history\n", + " \"messages\": [\n", + " ToolMessage(\n", + " \"Successfully looked up user information\",\n", + " tool_call_id=tool_call_id\n", + " )\n", + " ]\n", + " })\n", + " \n", + " def greet(\n", + " # highlight-next-line\n", + " state: Annotated[CustomState, InjectedState]\n", + " ) -> str:\n", + " \"\"\"Use this to greet the user once you found their info.\"\"\"\n", + " user_name = state[\"user_name\"]\n", + " return f\"Hello {user_name}!\"\n", + " \n", + " agent = create_react_agent(\n", + " model=\"anthropic:claude-3-7-sonnet-latest\",\n", + " tools=[get_user_info, greet],\n", + " # highlight-next-line\n", + " state_schema=CustomState\n", + " )\n", + " \n", + " agent.invoke(\n", + " {\"messages\": [{\"role\": \"user\", \"content\": \"greet the user\"}]},\n", + " # highlight-next-line\n", + " config={\"configurable\": {\"user_id\": \"user_123\"}}\n", + " )\n", + " ```\n", + "\n", + "!!! important\n", + "\n", + " If you want to use tools that return `Command` and update graph state, you can either use prebuilt [`create_react_agent`][langgraph.prebuilt.chat_agent_executor.create_react_agent] / [`ToolNode`][langgraph.prebuilt.tool_node.ToolNode] components, or implement your own tool-executing node that collects `Command` objects returned by the tools and returns a list of them, e.g.:\n", + " \n", + " ```python\n", + " def call_tools(state):\n", + " ...\n", + " commands = [tools_by_name[tool_call[\"name\"]].invoke(tool_call) for tool_call in tool_calls]\n", + " return commands\n", + " ```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Long-term memory\n", + "\n", + "Use [long-term memory](../../concepts/memory#long-term-memory) to store user-specific or application-specific data across conversations. This is useful for applications like chatbots, where you want to remember user preferences or other information.\n", + "\n", + "To use long-term memory, you need to:\n", + "\n", + "1. [Configure a store](../persistence#add-long-term-memory) to persist data across invocations.\n", + "2. Use the [`get_store`][langgraph.config.get_store] function to access the store from within tools or prompts.\n", + "\n", + "### Read\n", + "\n", + "```python\n", + "from langchain_core.runnables import RunnableConfig\n", + "from langchain_core.tools import tool\n", + "from langgraph.graph import StateGraph\n", + "# highlight-next-line\n", + "from langgraph.config import get_store\n", + "\n", + "@tool\n", + "def get_user_info(config: RunnableConfig) -> str:\n", + " \"\"\"Look up user info.\"\"\"\n", + " # Same as that provided to `builder.compile(store=store)` \n", + " # or `create_react_agent`\n", + " # highlight-next-line\n", + " store = get_store()\n", + " user_id = config[\"configurable\"].get(\"user_id\")\n", + " # highlight-next-line\n", + " user_info = store.get((\"users\",), user_id)\n", + " return str(user_info.value) if user_info else \"Unknown user\"\n", + "\n", + "builder = StateGraph(...)\n", + "...\n", + "graph = builder.compile(store=store)\n", + "```\n", + "\n", + "??? example \"Access long-term memory\"\n", + "\n", + " ```python\n", + " from langchain_core.runnables import RunnableConfig\n", + " from langchain_core.tools import tool\n", + " from langgraph.config import get_store\n", + " from langgraph.prebuilt import create_react_agent\n", + " from langgraph.store.memory import InMemoryStore\n", + " \n", + " # highlight-next-line\n", + " store = InMemoryStore() # (1)!\n", + " \n", + " # highlight-next-line\n", + " store.put( # (2)!\n", + " (\"users\",), # (3)!\n", + " \"user_123\", # (4)!\n", + " {\n", + " \"name\": \"John Smith\",\n", + " \"language\": \"English\",\n", + " } # (5)!\n", + " )\n", + "\n", + " @tool\n", + " def get_user_info(config: RunnableConfig) -> str:\n", + " \"\"\"Look up user info.\"\"\"\n", + " # Same as that provided to `create_react_agent`\n", + " # highlight-next-line\n", + " store = get_store() # (6)!\n", + " user_id = config[\"configurable\"].get(\"user_id\")\n", + " # highlight-next-line\n", + " user_info = store.get((\"users\",), user_id) # (7)!\n", + " return str(user_info.value) if user_info else \"Unknown user\"\n", + " \n", + " agent = create_react_agent(\n", + " model=\"anthropic:claude-3-7-sonnet-latest\",\n", + " tools=[get_user_info],\n", + " # highlight-next-line\n", + " store=store # (8)!\n", + " )\n", + " \n", + " # Run the agent\n", + " agent.invoke(\n", + " {\"messages\": [{\"role\": \"user\", \"content\": \"look up user information\"}]},\n", + " # highlight-next-line\n", + " config={\"configurable\": {\"user_id\": \"user_123\"}}\n", + " )\n", + " ```\n", + " \n", + " 1. The `InMemoryStore` is a store that stores data in memory. In a production setting, you would typically use a database or other persistent storage. Please review the [store documentation](../reference/store.md) for more options. If you're deploying with **LangGraph Platform**, the platform will provide a production-ready store for you.\n", + " 2. For this example, we write some sample data to the store using the `put` method. Please see the [BaseStore.put][langgraph.store.base.BaseStore.put] API reference for more details.\n", + " 3. The first argument is the namespace. This is used to group related data together. In this case, we are using the `users` namespace to group user data.\n", + " 4. A key within the namespace. This example uses a user ID for the key.\n", + " 5. The data that we want to store for the given user.\n", + " 6. The `get_store` function is used to access the store. You can call it from anywhere in your code, including tools and prompts. This function returns the store that was passed to the agent when it was created.\n", + " 7. The `get` method is used to retrieve data from the store. The first argument is the namespace, and the second argument is the key. This will return a `StoreValue` object, which contains the value and metadata about the value.\n", + " 8. The `store` is passed to the agent. This enables the agent to access the store when running tools. You can also use the `get_store` function to access the store from anywhere in your code." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Update\n", + "\n", + "```python\n", + "from langchain_core.runnables import RunnableConfig\n", + "from langchain_core.tools import tool\n", + "from langgraph.graph import StateGraph\n", + "# highlight-next-line\n", + "from langgraph.config import get_store\n", + "\n", + "@tool\n", + "def save_user_info(user_info: str, config: RunnableConfig) -> str:\n", + " \"\"\"Save user info.\"\"\"\n", + " # Same as that provided to `builder.compile(store=store)` \n", + " # or `create_react_agent`\n", + " # highlight-next-line\n", + " store = get_store()\n", + " user_id = config[\"configurable\"].get(\"user_id\")\n", + " # highlight-next-line\n", + " store.put((\"users\",), user_id, user_info)\n", + " return \"Successfully saved user info.\"\n", + "\n", + "builder = StateGraph(...)\n", + "...\n", + "graph = builder.compile(store=store)\n", + "```\n", + "\n", + "??? example \"Update long-term memory\"\n", + "\n", + " ```python\n", + " from typing_extensions import TypedDict\n", + "\n", + " from langchain_core.tools import tool\n", + " from langgraph.config import get_store\n", + " from langgraph.prebuilt import create_react_agent\n", + " from langgraph.store.memory import InMemoryStore\n", + " \n", + " store = InMemoryStore() # (1)!\n", + " \n", + " class UserInfo(TypedDict): # (2)!\n", + " name: str\n", + "\n", + " @tool\n", + " def save_user_info(user_info: UserInfo, config: RunnableConfig) -> str: # (3)!\n", + " \"\"\"Save user info.\"\"\"\n", + " # Same as that provided to `create_react_agent`\n", + " # highlight-next-line\n", + " store = get_store() # (4)!\n", + " user_id = config[\"configurable\"].get(\"user_id\")\n", + " # highlight-next-line\n", + " store.put((\"users\",), user_id, user_info) # (5)!\n", + " return \"Successfully saved user info.\"\n", + " \n", + " agent = create_react_agent(\n", + " model=\"anthropic:claude-3-7-sonnet-latest\",\n", + " tools=[save_user_info],\n", + " # highlight-next-line\n", + " store=store\n", + " )\n", + " \n", + " # Run the agent\n", + " agent.invoke(\n", + " {\"messages\": [{\"role\": \"user\", \"content\": \"My name is John Smith\"}]},\n", + " # highlight-next-line\n", + " config={\"configurable\": {\"user_id\": \"user_123\"}} # (6)!\n", + " )\n", + " \n", + " # You can access the store directly to get the value\n", + " store.get((\"users\",), \"user_123\").value\n", + " ```\n", + " \n", + " 1. The `InMemoryStore` is a store that stores data in memory. In a production setting, you would typically use a database or other persistent storage. Please review the [store documentation](../reference/store.md) for more options. If you're deploying with **LangGraph Platform**, the platform will provide a production-ready store for you.\n", + " 2. The `UserInfo` class is a `TypedDict` that defines the structure of the user information. The LLM will use this to format the response according to the schema.\n", + " 3. The `save_user_info` function is a tool that allows an agent to update user information. This could be useful for a chat application where the user wants to update their profile information.\n", + " 4. The `get_store` function is used to access the store. You can call it from anywhere in your code, including tools and prompts. This function returns the store that was passed to the agent when it was created.\n", + " 5. The `put` method is used to store data in the store. The first argument is the namespace, and the second argument is the key. This will store the user information in the store.\n", + " 6. The `user_id` is passed in the config. This is used to identify the user whose information is being updated." ] }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 21, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "ToolMessage(content='294', name='multiply', tool_call_id='1')" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "@tool\n", - "def get_weather(location: str):\n", - " \"\"\"Call to get the current weather.\"\"\"\n", - " if location.lower() in [\"sf\", \"san francisco\"]:\n", - " return \"It's 60 degrees and foggy.\"\n", - " else:\n", - " return \"It's 90 degrees and sunny.\"\n", + "from langchain_core.tools import tool\n", "\n", "\n", "@tool\n", - "def get_coolest_cities():\n", - " \"\"\"Get a list of coolest cities\"\"\"\n", - " return \"nyc, sf\"" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "tools = [get_weather, get_coolest_cities]\n", - "tool_node = ToolNode(tools)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Manually call `ToolNode`" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "`ToolNode` operates on graph state with a list of messages. It expects the last message in the list to be an `AIMessage` with `tool_calls` parameter. \n", - "\n", - "Let's first see how to invoke the tool node manually:" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'messages': [ToolMessage(content=\"It's 60 degrees and foggy.\", name='get_weather', tool_call_id='tool_call_id')]}" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "message_with_single_tool_call = AIMessage(\n", - " content=\"\",\n", - " tool_calls=[\n", - " {\n", - " \"name\": \"get_weather\",\n", - " \"args\": {\"location\": \"sf\"},\n", - " \"id\": \"tool_call_id\",\n", - " \"type\": \"tool_call\",\n", - " }\n", - " ],\n", - ")\n", - "\n", - "tool_node.invoke({\"messages\": [message_with_single_tool_call]})" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note that typically you don't need to create `AIMessage` manually, and it will be automatically generated by any LangChain chat model that supports tool calling.\n", - "\n", - "You can also do parallel tool calling using `ToolNode` if you pass multiple tool calls to `AIMessage`'s `tool_calls` parameter:" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'messages': [ToolMessage(content='nyc, sf', name='get_coolest_cities', tool_call_id='tool_call_id_1'),\n", - " ToolMessage(content=\"It's 60 degrees and foggy.\", name='get_weather', tool_call_id='tool_call_id_2')]}" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "message_with_multiple_tool_calls = AIMessage(\n", - " content=\"\",\n", - " tool_calls=[\n", - " {\n", - " \"name\": \"get_coolest_cities\",\n", - " \"args\": {},\n", - " \"id\": \"tool_call_id_1\",\n", - " \"type\": \"tool_call\",\n", - " },\n", - " {\n", - " \"name\": \"get_weather\",\n", - " \"args\": {\"location\": \"sf\"},\n", - " \"id\": \"tool_call_id_2\",\n", - " \"type\": \"tool_call\",\n", - " },\n", - " ],\n", - ")\n", - "\n", - "tool_node.invoke({\"messages\": [message_with_multiple_tool_calls]})" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Using with chat models" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We'll be using a small chat model from Anthropic in our example. To use chat models with tool calling, we need to first ensure that the model is aware of the available tools. We do this by calling `.bind_tools` method on `ChatAnthropic` model" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "from typing import Literal\n", - "\n", - "from langchain_anthropic import ChatAnthropic\n", - "from langgraph.graph import StateGraph, MessagesState\n", - "from langgraph.prebuilt import ToolNode\n", + "def multiply(a: int, b: int) -> int:\n", + " \"\"\"Multiply two numbers.\"\"\"\n", + " return a * b\n", "\n", "\n", - "model_with_tools = ChatAnthropic(\n", - " model=\"claude-3-haiku-20240307\", temperature=0\n", - ").bind_tools(tools)" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[{'name': 'get_weather',\n", - " 'args': {'location': 'San Francisco'},\n", - " 'id': 'toolu_01Fwm7dg1mcJU43Fkx2pqgm8',\n", - " 'type': 'tool_call'}]" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "model_with_tools.invoke(\"what's the weather in sf?\").tool_calls" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "As you can see, the AI message generated by the chat model already has `tool_calls` populated, so we can just pass it directly to `ToolNode`" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'messages': [ToolMessage(content=\"It's 60 degrees and foggy.\", name='get_weather', tool_call_id='toolu_01LFvAVT3xJMeZS6kbWwBGZK')]}" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "tool_node.invoke({\"messages\": [model_with_tools.invoke(\"what's the weather in sf?\")]})" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## ReAct Agent" + "multiply.invoke({\"type\": \"tool_call\", \"id\": \"1\", \"args\": {\"a\": 42, \"b\": 7}})" ] }, { @@ -300,190 +564,488 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Next, let's see how to use `ToolNode` inside a LangGraph graph. Let's set up a graph implementation of the [ReAct agent](https://langchain-ai.github.io/langgraph/concepts/agentic_concepts/#react-agent). This agent takes some query as input, then repeatedly call tools until it has enough information to resolve the query. We'll be using `ToolNode` and the Anthropic model with tools we just defined" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "from typing import Literal\n", + "## Attach tools to a model\n", "\n", - "from langgraph.graph import StateGraph, MessagesState, START, END\n", + "To attach tool schemas to a [chat model](https://python.langchain.com/docs/concepts/chat_models) you need to use `model.bind_tools()`:\n", "\n", + "```python\n", + "from langchain_core.tools import tool\n", + "from langchain.chat_models import init_chat_model\n", "\n", - "def should_continue(state: MessagesState):\n", - " messages = state[\"messages\"]\n", - " last_message = messages[-1]\n", - " if last_message.tool_calls:\n", - " return \"tools\"\n", - " return END\n", + "@tool\n", + "def multiply(a: int, b: int) -> int:\n", + " \"\"\"Multiply two numbers.\"\"\"\n", + " return a * b\n", "\n", + "model = init_chat_model(model=\"claude-3-5-haiku-latest\")\n", + "# highlight-next-line\n", + "model_with_tools = model.bind_tools([multiply])\n", "\n", - "def call_model(state: MessagesState):\n", - " messages = state[\"messages\"]\n", - " response = model_with_tools.invoke(messages)\n", - " return {\"messages\": [response]}\n", + "model_with_tools.invoke(\"what's 42 x 7?\")\n", + "```\n", "\n", - "\n", - "workflow = StateGraph(MessagesState)\n", - "\n", - "# Define the two nodes we will cycle between\n", - "workflow.add_node(\"agent\", call_model)\n", - "workflow.add_node(\"tools\", tool_node)\n", - "\n", - "workflow.add_edge(START, \"agent\")\n", - "workflow.add_conditional_edges(\"agent\", should_continue, [\"tools\", END])\n", - "workflow.add_edge(\"tools\", \"agent\")\n", - "\n", - "app = workflow.compile()" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "image/jpeg": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from IPython.display import Image, display\n", - "\n", - "try:\n", - " display(Image(app.get_graph().draw_mermaid_png()))\n", - "except Exception:\n", - " # This requires some extra dependencies and is optional\n", - " pass" + "```\n", + "AIMessage(\n", + " content=[{'text': \"I'll help you calculate that by using the multiply function.\", 'type': 'text'}, {'id': 'toolu_01GhULkqytMTFDsNv6FsXy3Y', 'input': {'a': 42, 'b': 7}, 'name': 'multiply', 'type': 'tool_use'}]\n", + " tool_calls=[{'name': 'multiply', 'args': {'a': 42, 'b': 7}, 'id': 'toolu_01GhULkqytMTFDsNv6FsXy3Y', 'type': 'tool_call'}]\n", + ")\n", + "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Let's try it out!" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "================================\u001b[1m Human Message \u001b[0m=================================\n", - "\n", - "what's the weather in sf?\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "[{'text': \"Okay, let's check the weather in San Francisco:\", 'type': 'text'}, {'id': 'toolu_01LdmBXYeccWKdPrhZSwFCDX', 'input': {'location': 'San Francisco'}, 'name': 'get_weather', 'type': 'tool_use'}]\n", - "Tool Calls:\n", - " get_weather (toolu_01LdmBXYeccWKdPrhZSwFCDX)\n", - " Call ID: toolu_01LdmBXYeccWKdPrhZSwFCDX\n", - " Args:\n", - " location: San Francisco\n", - "=================================\u001b[1m Tool Message \u001b[0m=================================\n", - "Name: get_weather\n", - "\n", - "It's 60 degrees and foggy.\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "The weather in San Francisco is currently 60 degrees with foggy conditions.\n" - ] - } - ], - "source": [ - "# example with a single tool call\n", - "for chunk in app.stream(\n", - " {\"messages\": [(\"human\", \"what's the weather in sf?\")]}, stream_mode=\"values\"\n", - "):\n", - " chunk[\"messages\"][-1].pretty_print()" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "================================\u001b[1m Human Message \u001b[0m=================================\n", - "\n", - "what's the weather in the coolest cities?\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "[{'text': \"Okay, let's find out the weather in the coolest cities:\", 'type': 'text'}, {'id': 'toolu_01LFZUWTccyveBdaSAisMi95', 'input': {}, 'name': 'get_coolest_cities', 'type': 'tool_use'}]\n", - "Tool Calls:\n", - " get_coolest_cities (toolu_01LFZUWTccyveBdaSAisMi95)\n", - " Call ID: toolu_01LFZUWTccyveBdaSAisMi95\n", - " Args:\n", - "=================================\u001b[1m Tool Message \u001b[0m=================================\n", - "Name: get_coolest_cities\n", - "\n", - "nyc, sf\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "[{'text': \"Now let's get the weather for those cities:\", 'type': 'text'}, {'id': 'toolu_01RHPQBhT1u6eDnPqqkGUpsV', 'input': {'location': 'nyc'}, 'name': 'get_weather', 'type': 'tool_use'}]\n", - "Tool Calls:\n", - " get_weather (toolu_01RHPQBhT1u6eDnPqqkGUpsV)\n", - " Call ID: toolu_01RHPQBhT1u6eDnPqqkGUpsV\n", - " Args:\n", - " location: nyc\n", - "=================================\u001b[1m Tool Message \u001b[0m=================================\n", - "Name: get_weather\n", - "\n", - "It's 90 degrees and sunny.\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "[{'id': 'toolu_01W5sFGF8PfgYzdY4CqT5c6e', 'input': {'location': 'sf'}, 'name': 'get_weather', 'type': 'tool_use'}]\n", - "Tool Calls:\n", - " get_weather (toolu_01W5sFGF8PfgYzdY4CqT5c6e)\n", - " Call ID: toolu_01W5sFGF8PfgYzdY4CqT5c6e\n", - " Args:\n", - " location: sf\n", - "=================================\u001b[1m Tool Message \u001b[0m=================================\n", - "Name: get_weather\n", - "\n", - "It's 60 degrees and foggy.\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "Based on the results, it looks like the weather in the coolest cities is:\n", - "- New York City: 90 degrees and sunny\n", - "- San Francisco: 60 degrees and foggy\n", - "\n", - "So the weather in the coolest cities is a mix of warm and cool temperatures, with some sunny and some foggy conditions.\n" - ] - } - ], - "source": [ - "# example with a multiple tool calls in succession\n", + "## Use tools\n", "\n", - "for chunk in app.stream(\n", - " {\"messages\": [(\"human\", \"what's the weather in the coolest cities?\")]},\n", - " stream_mode=\"values\",\n", - "):\n", - " chunk[\"messages\"][-1].pretty_print()" + "LangChain tools conform to the [Runnable interface](https://python.langchain.com/docs/concepts/runnables/), which means that you can execute them using `.invoke()` / `.ainvoke()` methods:\n", + "\n", + "```python\n", + "from langchain_core.tools import tool\n", + "\n", + "@tool\n", + "def multiply(a: int, b: int) -> int:\n", + " \"\"\"Multiply two numbers.\"\"\"\n", + " return a * b\n", + "\n", + "# highlight-next-line\n", + "multiply.invoke({\"a\": 42, \"b\": 7})\n", + "```\n", + "\n", + "```\n", + "294\n", + "```\n", + "\n", + "If you want the tool to return a [ToolMessage](https://python.langchain.com/docs/concepts/messages/#toolmessage), invoke it with the tool call:\n", + "\n", + "```python\n", + "tool_call = {\n", + " \"type\": \"tool_call\",\n", + " \"id\": \"1\",\n", + " \"args\": {\"a\": 42, \"b\": 7}\n", + "}\n", + "multiply.invoke(tool_call)\n", + "```\n", + "\n", + "```\n", + "ToolMessage(content='294', name='multiply', tool_call_id='1')\n", + "```\n", + "\n", + "??? example \"Use with a chat model\"\n", + "\n", + " ```python\n", + " from langchain_core.tools import tool\n", + " from langchain.chat_models import init_chat_model\n", + " \n", + " @tool\n", + " def multiply(a: int, b: int) -> int:\n", + " \"\"\"Multiply two numbers.\"\"\"\n", + " return a * b\n", + " \n", + " model = init_chat_model(model=\"claude-3-5-haiku-latest\")\n", + " # highlight-next-line\n", + " model_with_tools = model.bind_tools([multiply])\n", + " \n", + " response_message = model_with_tools.invoke(\"what's 42 x 7?\")\n", + " tool_call = response_message.tool_calls[0]\n", + "\n", + " # highlight-next-line\n", + " multiply.invoke(tool_call)\n", + " ```\n", + "\n", + " ```\n", + " ToolMessage(content='294', name='multiply', tool_call_id='toolu_0176DV4YKSD8FndkeuuLj36c')\n", + " ```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "`ToolNode` can also handle errors during tool execution. You can enable / disable this by setting `handle_tool_errors=True` (enabled by default). See our guide on handling errors in `ToolNode` [here](https://langchain-ai.github.io/langgraph/how-tos/tool-calling-errors/)" + "## Use prebuilt agent\n", + "\n", + "To create a tool-calling agent, you can use the prebuilt [create_react_agent][langgraph.prebuilt.chat_agent_executor.create_react_agent]\n", + "\n", + "```python\n", + "from langchain_core.tools import tool\n", + "# highlight-next-line\n", + "from langgraph.prebuilt import create_react_agent\n", + "\n", + "@tool\n", + "def multiply(a: int, b: int) -> int:\n", + " \"\"\"Multiply two numbers.\"\"\"\n", + " return a * b\n", + "\n", + "# highlight-next-line\n", + "agent = create_react_agent(\n", + " model=\"anthropic:claude-3-7-sonnet\",\n", + " tools=[multiply]\n", + ")\n", + "graph.invoke({\"messages\": [{\"role\": \"user\", \"content\": \"what's 42 x 7?\"}]})\n", + "```\n", + "\n", + "See this [guide](../../agents/overview) to learn more." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Use prebuilt `ToolNode`\n", + "\n", + "[`ToolNode`][langgraph.prebuilt.tool_node.ToolNode] is a prebuilt LangGraph [node](../../concepts/low_level#nodes) for executing tool calls.\n", + "\n", + "**Why use `ToolNode`?**\n", + "\n", + "* support for both sync and async tools\n", + "* concurrent execution of the tools\n", + "* error handling during tool execution. You can enable / disable this by setting `handle_tool_errors=True` (enabled by default). See [this section](#handle-errors) for more details on handling errors\n", + "\n", + "ToolNode operates on [MessagesState](../../concepts/low_level#messagesstate):\n", + "\n", + "* input: `MessagesState` where the last message is an `AIMessage` with `tool_calls` parameter\n", + "* output: `MessagesState` with [`ToolMessage`](https://python.langchain.com/docs/concepts/messages/#toolmessage) the result of tool calls\n", + "\n", + "!!! tip\n", + "\n", + " `ToolNode` is designed to work well out-of-box with LangGraph's prebuilt [agent](../../agents/agents), but can also work with any `StateGraph` that uses `MessagesState.`\n", + "\n", + "```python\n", + "# highlight-next-line\n", + "from langgraph.prebuilt import ToolNode\n", + "\n", + "def get_weather(location: str):\n", + " \"\"\"Call to get the current weather.\"\"\"\n", + " if location.lower() in [\"sf\", \"san francisco\"]:\n", + " return \"It's 60 degrees and foggy.\"\n", + " else:\n", + " return \"It's 90 degrees and sunny.\"\n", + "\n", + "def get_coolest_cities():\n", + " \"\"\"Get a list of coolest cities\"\"\"\n", + " return \"nyc, sf\"\n", + "\n", + "# highlight-next-line\n", + "tool_node = ToolNode([get_weather, get_coolest_cities])\n", + "tool_node.invoke({\"messages\": [...]})\n", + "```\n", + "\n", + "??? example \"Single tool call\"\n", + "\n", + " ```python\n", + " from langchain_core.messages import AIMessage\n", + " from langgraph.prebuilt import ToolNode\n", + " \n", + " # Define tools\n", + " @tool\n", + " def get_weather(location: str):\n", + " \"\"\"Call to get the current weather.\"\"\"\n", + " if location.lower() in [\"sf\", \"san francisco\"]:\n", + " return \"It's 60 degrees and foggy.\"\n", + " else:\n", + " return \"It's 90 degrees and sunny.\"\n", + " \n", + " # highlight-next-line\n", + " tool_node = ToolNode([get_weather])\n", + " \n", + " message_with_single_tool_call = AIMessage(\n", + " content=\"\",\n", + " tool_calls=[\n", + " {\n", + " \"name\": \"get_weather\",\n", + " \"args\": {\"location\": \"sf\"},\n", + " \"id\": \"tool_call_id\",\n", + " \"type\": \"tool_call\",\n", + " }\n", + " ],\n", + " )\n", + " \n", + " tool_node.invoke({\"messages\": [message_with_single_tool_call]})\n", + " ```\n", + " \n", + " ```\n", + " {'messages': [ToolMessage(content=\"It's 60 degrees and foggy.\", name='get_weather', tool_call_id='tool_call_id')]}\n", + " ```\n", + "\n", + "??? example \"Multiple tool calls\"\n", + "\n", + " ```python\n", + " from langchain_core.messages import AIMessage\n", + " from langgraph.prebuilt import ToolNode\n", + " \n", + " # Define tools\n", + " \n", + " def get_weather(location: str):\n", + " \"\"\"Call to get the current weather.\"\"\"\n", + " if location.lower() in [\"sf\", \"san francisco\"]:\n", + " return \"It's 60 degrees and foggy.\"\n", + " else:\n", + " return \"It's 90 degrees and sunny.\"\n", + " \n", + " def get_coolest_cities():\n", + " \"\"\"Get a list of coolest cities\"\"\"\n", + " return \"nyc, sf\"\n", + " \n", + " # highlight-next-line\n", + " tool_node = ToolNode([get_weather, get_coolest_cities])\n", + "\n", + " message_with_multiple_tool_calls = AIMessage(\n", + " content=\"\",\n", + " tool_calls=[\n", + " {\n", + " \"name\": \"get_coolest_cities\",\n", + " \"args\": {},\n", + " \"id\": \"tool_call_id_1\",\n", + " \"type\": \"tool_call\",\n", + " },\n", + " {\n", + " \"name\": \"get_weather\",\n", + " \"args\": {\"location\": \"sf\"},\n", + " \"id\": \"tool_call_id_2\",\n", + " \"type\": \"tool_call\",\n", + " },\n", + " ],\n", + " )\n", + "\n", + " # highlight-next-line\n", + " tool_node.invoke({\"messages\": [message_with_multiple_tool_calls]}) # (1)!\n", + " ```\n", + "\n", + " 1. `ToolNode` will execute both tools in parallel\n", + "\n", + " ```\n", + " {\n", + " 'messages': [\n", + " ToolMessage(content='nyc, sf', name='get_coolest_cities', tool_call_id='tool_call_id_1'),\n", + " ToolMessage(content=\"It's 60 degrees and foggy.\", name='get_weather', tool_call_id='tool_call_id_2')\n", + " ]\n", + " }\n", + " ```\n", + "\n", + " \n", + "\n", + "??? example \"Use with a chat model\"\n", + "\n", + " ```python\n", + " from langchain.chat_models import init_chat_model\n", + " from langgraph.prebuilt import ToolNode\n", + " \n", + " def get_weather(location: str):\n", + " \"\"\"Call to get the current weather.\"\"\"\n", + " if location.lower() in [\"sf\", \"san francisco\"]:\n", + " return \"It's 60 degrees and foggy.\"\n", + " else:\n", + " return \"It's 90 degrees and sunny.\"\n", + " \n", + " # highlight-next-line\n", + " tool_node = ToolNode([get_weather])\n", + " \n", + " model = init_chat_model(model=\"claude-3-5-haiku-latest\")\n", + " # highlight-next-line\n", + " model_with_tools = model.bind_tools([get_weather]) # (1)!\n", + " \n", + " \n", + " # highlight-next-line\n", + " response_message = model_with_tools.invoke(\"what's the weather in sf?\")\n", + " tool_node.invoke({\"messages\": [response_message]})\n", + " ```\n", + "\n", + " 1. Use `.bind_tools()` to attach the tool schema to the chat model\n", + "\n", + " ```\n", + " {'messages': [ToolMessage(content=\"It's 60 degrees and foggy.\", name='get_weather', tool_call_id='toolu_01Pnkgw5JeTRxXAU7tyHT4UW')]}\n", + " ```\n", + "\n", + "??? example \"Use in a tool-calling agent\"\n", + "\n", + " This is an example of creating a tool-calling agent from scratch using `ToolNode`. You can also use LangGraph's prebuilt [agent](../../agents/agents).\n", + "\n", + " ```python\n", + " from langchain.chat_models import init_chat_model\n", + " from langgraph.prebuilt import ToolNode\n", + " from langgraph.graph import StateGraph, MessagesState, START, END\n", + " \n", + " def get_weather(location: str):\n", + " \"\"\"Call to get the current weather.\"\"\"\n", + " if location.lower() in [\"sf\", \"san francisco\"]:\n", + " return \"It's 60 degrees and foggy.\"\n", + " else:\n", + " return \"It's 90 degrees and sunny.\"\n", + " \n", + " # highlight-next-line\n", + " tool_node = ToolNode([get_weather])\n", + " \n", + " model = init_chat_model(model=\"claude-3-5-haiku-latest\")\n", + " # highlight-next-line\n", + " model_with_tools = model.bind_tools([get_weather])\n", + " \n", + " def should_continue(state: MessagesState):\n", + " messages = state[\"messages\"]\n", + " last_message = messages[-1]\n", + " if last_message.tool_calls:\n", + " return \"tools\"\n", + " return END\n", + " \n", + " def call_model(state: MessagesState):\n", + " messages = state[\"messages\"]\n", + " response = model_with_tools.invoke(messages)\n", + " return {\"messages\": [response]}\n", + " \n", + " builder = StateGraph(MessagesState)\n", + " \n", + " # Define the two nodes we will cycle between\n", + " builder.add_node(\"call_model\", call_model)\n", + " # highlight-next-line\n", + " builder.add_node(\"tools\", tool_node)\n", + " \n", + " builder.add_edge(START, \"call_model\")\n", + " builder.add_conditional_edges(\"call_model\", should_continue, [\"tools\", END])\n", + " builder.add_edge(\"tools\", \"call_model\")\n", + " \n", + " graph = builder.compile()\n", + " \n", + " graph.invoke({\"messages\": [{\"role\": \"user\", \"content\": \"what's the weather in sf?\"}]})\n", + " ```\n", + " \n", + " ```\n", + " {\n", + " 'messages': [\n", + " HumanMessage(content=\"what's the weather in sf?\"),\n", + " AIMessage(\n", + " content=[{'text': \"I'll help you check the weather in San Francisco right now.\", 'type': 'text'}, {'id': 'toolu_01A4vwUEgBKxfFVc5H3v1CNs', 'input': {'location': 'San Francisco'}, 'name': 'get_weather', 'type': 'tool_use'}],\n", + " tool_calls=[{'name': 'get_weather', 'args': {'location': 'San Francisco'}, 'id': 'toolu_01A4vwUEgBKxfFVc5H3v1CNs', 'type': 'tool_call'}]\n", + " ),\n", + " ToolMessage(content=\"It's 60 degrees and foggy.\"),\n", + " AIMessage(content=\"The current weather in San Francisco is 60 degrees and foggy. Typical San Francisco weather with its famous marine layer!\")\n", + " ]\n", + " }\n", + " ```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Handle errors\n", + "\n", + "By default, the `ToolNode` will catch all exceptions raised during tool calls and will return those as tool messages. To control how the errors are handled, you can use `ToolNode`'s `handle_tool_errors` parameter:\n", + "\n", + "=== \"Enable error handling (default)\"\n", + "\n", + " ```python\n", + " from langchain_core.messages import AIMessage\n", + " from langgraph.prebuilt import ToolNode\n", + " \n", + " def multiply(a: int, b: int) -> int:\n", + " \"\"\"Multiply two numbers.\"\"\"\n", + " if a == 42:\n", + " raise ValueError(\"The ultimate error\")\n", + " return a * b\n", + " \n", + " tool_node = ToolNode([multiply])\n", + " \n", + " # Run with error handling (default)\n", + " message = AIMessage(\n", + " content=\"\",\n", + " tool_calls=[\n", + " {\n", + " \"name\": \"multiply\",\n", + " \"args\": {\"a\": 42, \"b\": 7},\n", + " \"id\": \"tool_call_id\",\n", + " \"type\": \"tool_call\",\n", + " }\n", + " ],\n", + " )\n", + " \n", + " tool_node.invoke({\"messages\": [message]})\n", + " ```\n", + "\n", + " ```\n", + " {'messages': [ToolMessage(content=\"Error: ValueError('The ultimate error')\\n Please fix your mistakes.\", name='multiply', tool_call_id='tool_call_id', status='error')]}\n", + " ```\n", + "\n", + "=== \"Disable error handling\"\n", + "\n", + " ```python\n", + " from langchain_core.messages import AIMessage\n", + " from langgraph.prebuilt import ToolNode\n", + "\n", + " def multiply(a: int, b: int) -> int:\n", + " \"\"\"Multiply two numbers.\"\"\"\n", + " if a == 42:\n", + " raise ValueError(\"The ultimate error\")\n", + " return a * b\n", + "\n", + " tool_node = ToolNode(\n", + " [multiply],\n", + " # highlight-next-line\n", + " handle_tool_errors=False # (1)!\n", + " )\n", + " message = AIMessage(\n", + " content=\"\",\n", + " tool_calls=[\n", + " {\n", + " \"name\": \"multiply\",\n", + " \"args\": {\"a\": 42, \"b\": 7},\n", + " \"id\": \"tool_call_id\",\n", + " \"type\": \"tool_call\",\n", + " }\n", + " ],\n", + " )\n", + " tool_node.invoke({\"messages\": [message]})\n", + " ```\n", + "\n", + " 1. This disables error handling (enabled by default). See all available strategies in the [API reference][langgraph.prebuilt.tool_node.ToolNode].\n", + "\n", + "=== \"Custom error handling\"\n", + "\n", + " ```python\n", + " from langchain_core.messages import AIMessage\n", + " from langgraph.prebuilt import ToolNode\n", + "\n", + " def multiply(a: int, b: int) -> int:\n", + " \"\"\"Multiply two numbers.\"\"\"\n", + " if a == 42:\n", + " raise ValueError(\"The ultimate error\")\n", + " return a * b\n", + "\n", + " # highlight-next-line\n", + " tool_node = ToolNode(\n", + " [multiply],\n", + " # highlight-next-line\n", + " handle_tool_errors=(\n", + " \"Can't use 42 as a first operand, you must switch operands!\" # (1)!\n", + " )\n", + " )\n", + " tool_node.invoke({\"messages\": [message]})\n", + " ```\n", + "\n", + " 1. This provides a custom message to send to the LLM in case of an exception. See all available strategies in the [API reference][langgraph.prebuilt.tool_node.ToolNode].\n", + "\n", + " ```\n", + " {'messages': [ToolMessage(content=\"Can't use 42 as a first operand, you must switch operands!\", name='multiply', tool_call_id='tool_call_id', status='error')]}\n", + " ```\n", + "\n", + "See [API reference][langgraph.prebuilt.tool_node.ToolNode] for more information on different tool error handling options." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Handle large numbers of tools" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As the number of available tools grows, you may want to limit the scope of the LLM's selection, to decrease token consumption and to help manage sources of error in LLM reasoning.\n", + "\n", + "To address this, you can dynamically adjust the tools available to a model by retrieving relevant tools at runtime using semantic search.\n", + "\n", + "See [`langgraph-bigtool`](https://github.com/langchain-ai/langgraph-bigtool) prebuilt library for a ready-to-use implementation and this [how-to guide](../many-tools) for more details." ] } ], @@ -503,7 +1065,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.9" + "version": "3.12.3" } }, "nbformat": 4, diff --git a/docs/docs/how-tos/ttl/configure_ttl.md b/docs/docs/how-tos/ttl/configure_ttl.md index de431946c..a5f1e0b05 100644 --- a/docs/docs/how-tos/ttl/configure_ttl.md +++ b/docs/docs/how-tos/ttl/configure_ttl.md @@ -2,7 +2,7 @@ !!! tip "Prerequisites" - This guide assumes familiarity with the [LangGraph Platform](../../concepts/index.md#langgraph-platform), [Persistence](../../concepts/persistence.md), and [Cross-thread persistence](../../concepts/persistence.md#memory-store) concepts. + This guide assumes familiarity with the [LangGraph Platform](../../concepts/langgraph_platform.md), [Persistence](../../concepts/persistence.md), and [Cross-thread persistence](../../concepts/persistence.md#memory-store) concepts. ???+ note "LangGraph platform only" diff --git a/docs/docs/how-tos/update-state-from-tools.ipynb b/docs/docs/how-tos/update-state-from-tools.ipynb deleted file mode 100644 index 1aea00556..000000000 --- a/docs/docs/how-tos/update-state-from-tools.ipynb +++ /dev/null @@ -1,381 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "7c58c957-83d8-44ff-8580-a9b3dd39a0a9", - "metadata": {}, - "source": [ - "# How to update graph state from tools" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "95f30587-8dd2-40be-920d-59539089c09f", - "metadata": {}, - "source": [ - "!!! info \"Prerequisites\"\n", - " This guide assumes familiarity with the following:\n", - " \n", - " - [Command](../../concepts/low_level/#command)\n", - "\n", - "A common use case is updating graph state from inside a tool. For example, in a customer support application you might want to look up customer account number or ID in the beginning of the conversation. To update the graph state from the tool, you can return `Command(update={\"my_custom_key\": \"foo\", \"messages\": [...]})` from the tool:\n", - "\n", - "```python\n", - "@tool\n", - "def lookup_user_info(tool_call_id: Annotated[str, InjectedToolCallId], config: RunnableConfig):\n", - " \"\"\"Use this to look up user information to better assist them with their questions.\"\"\"\n", - " user_info = get_user_info(config)\n", - " return Command(\n", - " update={\n", - " # update the state keys\n", - " \"user_info\": user_info,\n", - " # update the message history\n", - " \"messages\": [ToolMessage(\"Successfully looked up user information\", tool_call_id=tool_call_id)]\n", - " }\n", - " )\n", - "```\n", - "\n", - "!!! important\n", - "\n", - " If you want to use tools that return `Command` and update graph state, you can either use prebuilt [`create_react_agent`][langgraph.prebuilt.chat_agent_executor.create_react_agent] / [`ToolNode`][langgraph.prebuilt.tool_node.ToolNode] components, or implement your own tool-executing node that collects `Command` objects returned by the tools and returns a list of them, e.g.:\n", - " \n", - " ```python\n", - " def call_tools(state):\n", - " ...\n", - " commands = [tools_by_name[tool_call[\"name\"]].invoke(tool_call) for tool_call in tool_calls]\n", - " return commands\n", - " ```\n", - "\n", - "This guide shows how you can do this using LangGraph's prebuilt components ([`create_react_agent`][langgraph.prebuilt.chat_agent_executor.create_react_agent] / [`ToolNode`][langgraph.prebuilt.tool_node.ToolNode]).\n", - "\n", - "!!! note\n", - "\n", - " Support for tools that return [`Command`][langgraph.types.Command] was added in LangGraph `v0.2.59`.\n", - "\n", - "## Setup\n", - "\n", - "First, let's install the required packages and set our API keys:" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "64500eca-1cdc-43d9-9401-f4cd9999881f", - "metadata": {}, - "outputs": [], - "source": [ - "%%capture --no-stderr\n", - "%pip install -U langgraph langchain-openai" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "a3f92fb2-9175-47fa-9c7d-ad5f44bfd20e", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Please provide your OPENAI_API_KEY ········\n" - ] - } - ], - "source": [ - "import os\n", - "import getpass\n", - "\n", - "\n", - "def _set_if_undefined(var: str):\n", - " if not os.environ.get(var):\n", - " os.environ[var] = getpass.getpass(f\"Please provide your {var}\")\n", - "\n", - "\n", - "_set_if_undefined(\"OPENAI_API_KEY\")" - ] - }, - { - "cell_type": "markdown", - "id": "caf6ff9f-c1e6-499e-a230-9fa231ea7d2f", - "metadata": {}, - "source": [ - "
    \n", - "

    Set up LangSmith for LangGraph development

    \n", - "

    \n", - " Sign up for LangSmith to quickly spot issues and improve the performance of your LangGraph projects. LangSmith lets you use trace data to debug, test, and monitor your LLM apps built with LangGraph — read more about how to get started here. \n", - "

    \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "id": "10e9a9c6-fa3f-416c-bac0-3e58d7259908", - "metadata": {}, - "source": [ - "Let's create a simple ReAct style agent that can look up user information and personalize the response based on the user info." - ] - }, - { - "cell_type": "markdown", - "id": "4255b9b9-cf67-4cc3-8018-1708f5dfcfd2", - "metadata": {}, - "source": [ - "## Define tool" - ] - }, - { - "cell_type": "markdown", - "id": "7de6b010-aab1-4fe8-8251-907fcae78583", - "metadata": {}, - "source": [ - "First, let's define the tool that we'll be using to look up user information. We'll use a naive implementation that simply looks user information up using a dictionary:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "8d070c9f-6e61-4724-85dc-ac4531b9c79a", - "metadata": {}, - "outputs": [], - "source": [ - "USER_INFO = [\n", - " {\"user_id\": \"1\", \"name\": \"Bob Dylan\", \"location\": \"New York, NY\"},\n", - " {\"user_id\": \"2\", \"name\": \"Taylor Swift\", \"location\": \"Beverly Hills, CA\"},\n", - "]\n", - "\n", - "USER_ID_TO_USER_INFO = {info[\"user_id\"]: info for info in USER_INFO}" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "08d1ecca-ee57-4e97-b8d0-e09de85337d4", - "metadata": {}, - "outputs": [], - "source": [ - "from langgraph.prebuilt.chat_agent_executor import AgentState\n", - "from langgraph.types import Command\n", - "from langchain_core.tools import tool\n", - "from langchain_core.tools.base import InjectedToolCallId\n", - "from langchain_core.messages import ToolMessage\n", - "from langchain_core.runnables import RunnableConfig\n", - "\n", - "from typing_extensions import Any, Annotated\n", - "\n", - "\n", - "class State(AgentState):\n", - " # updated by the tool\n", - " user_info: dict[str, Any]\n", - "\n", - "\n", - "@tool\n", - "def lookup_user_info(\n", - " tool_call_id: Annotated[str, InjectedToolCallId], config: RunnableConfig\n", - "):\n", - " \"\"\"Use this to look up user information to better assist them with their questions.\"\"\"\n", - " user_id = config.get(\"configurable\", {}).get(\"user_id\")\n", - " if user_id is None:\n", - " raise ValueError(\"Please provide user ID\")\n", - "\n", - " if user_id not in USER_ID_TO_USER_INFO:\n", - " raise ValueError(f\"User '{user_id}' not found\")\n", - "\n", - " user_info = USER_ID_TO_USER_INFO[user_id]\n", - " return Command(\n", - " update={\n", - " # update the state keys\n", - " \"user_info\": user_info,\n", - " # update the message history\n", - " \"messages\": [\n", - " ToolMessage(\n", - " \"Successfully looked up user information\", tool_call_id=tool_call_id\n", - " )\n", - " ],\n", - " }\n", - " )" - ] - }, - { - "cell_type": "markdown", - "id": "b99e5f24-5e5e-4a34-baae-467182675bb5", - "metadata": {}, - "source": [ - "## Define prompt" - ] - }, - { - "cell_type": "markdown", - "id": "cbb06aea-6654-4245-91f8-af6e8f2b5377", - "metadata": {}, - "source": [ - "Let's now add personalization: we'll respond differently to the user based on the state values AFTER the state has been updated from the tool. To achieve this, let's define a function that will dynamically construct the system prompt based on the graph state. It will be called every time the LLM is called and the function output will be passed to the LLM:" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "c553d062-d145-4145-84bd-9b798f7c95c2", - "metadata": {}, - "outputs": [], - "source": [ - "def prompt(state: State):\n", - " user_info = state.get(\"user_info\")\n", - " if user_info is None:\n", - " return state[\"messages\"]\n", - "\n", - " system_msg = (\n", - " f\"User name is {user_info['name']}. User lives in {user_info['location']}\"\n", - " )\n", - " return [{\"role\": \"system\", \"content\": system_msg}] + state[\"messages\"]" - ] - }, - { - "cell_type": "markdown", - "id": "c5acdd5d-68be-466b-9c21-46cbed91d2bc", - "metadata": {}, - "source": [ - "## Define graph" - ] - }, - { - "cell_type": "markdown", - "id": "afb65028-0359-46c8-b09c-ffc90180f759", - "metadata": {}, - "source": [ - "Finally, let's combine this into a single graph using the prebuilt `create_react_agent`:" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "2d59db29-fd51-4d29-9854-21763a4855e3", - "metadata": {}, - "outputs": [], - "source": [ - "from langgraph.prebuilt import create_react_agent\n", - "from langchain_openai import ChatOpenAI\n", - "\n", - "model = ChatOpenAI(model=\"gpt-4o\")\n", - "\n", - "agent = create_react_agent(\n", - " model,\n", - " # pass the tool that can update state\n", - " [lookup_user_info],\n", - " state_schema=State,\n", - " # pass dynamic prompt function\n", - " prompt=prompt,\n", - ")" - ] - }, - { - "cell_type": "markdown", - "id": "0782b8ab-a603-47b8-9a76-77f593402678", - "metadata": {}, - "source": [ - "## Use it!" - ] - }, - { - "cell_type": "markdown", - "id": "6165e153-ab28-4404-adea-796c7bd0701b", - "metadata": {}, - "source": [ - "Let's now try running our agent. We'll need to provide user ID in the config so that our tool knows what information to look up:" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "de34a58b-1765-4b63-a232-d46790aff884", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'agent': {'messages': [AIMessage(content='', additional_kwargs={'tool_calls': [{'id': 'call_7LSUh6ZDvGJAUvlWvXiCK4Gf', 'function': {'arguments': '{}', 'name': 'lookup_user_info'}, 'type': 'function'}], 'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 11, 'prompt_tokens': 56, 'total_tokens': 67, 'completion_tokens_details': {'accepted_prediction_tokens': 0, 'audio_tokens': 0, 'reasoning_tokens': 0, 'rejected_prediction_tokens': 0}, 'prompt_tokens_details': {'audio_tokens': 0, 'cached_tokens': 0}}, 'model_name': 'gpt-4o-2024-08-06', 'system_fingerprint': 'fp_9d50cd990b', 'finish_reason': 'tool_calls', 'logprobs': None}, id='run-57eeb216-e35d-4501-aaac-b5c6b26fb17c-0', tool_calls=[{'name': 'lookup_user_info', 'args': {}, 'id': 'call_7LSUh6ZDvGJAUvlWvXiCK4Gf', 'type': 'tool_call'}], usage_metadata={'input_tokens': 56, 'output_tokens': 11, 'total_tokens': 67, 'input_token_details': {'audio': 0, 'cache_read': 0}, 'output_token_details': {'audio': 0, 'reasoning': 0}})]}}\n", - "\n", - "\n", - "{'tools': {'user_info': {'user_id': '1', 'name': 'Bob Dylan', 'location': 'New York, NY'}, 'messages': [ToolMessage(content='Successfully looked up user information', name='lookup_user_info', id='168d8ff8-b021-4c8b-a11a-3b50c30a072c', tool_call_id='call_7LSUh6ZDvGJAUvlWvXiCK4Gf')]}}\n", - "\n", - "\n", - "{'agent': {'messages': [AIMessage(content=\"Hi Bob! Since you're in New York, NY, there are plenty of exciting things to do over the weekend. Here are some suggestions:\\n\\n1. **Explore Central Park**: Take a leisurely walk, rent a bike, or have a picnic in this iconic park.\\n\\n2. **Visit a Museum**: Check out The Metropolitan Museum of Art or the Museum of Modern Art (MoMA) for an enriching cultural experience.\\n\\n3. **Broadway Show**: Catch a Broadway show or an off-Broadway performance for some world-class entertainment.\\n\\n4. **Food Tour**: Explore different neighborhoods like Greenwich Village or Williamsburg for diverse culinary experiences.\\n\\n5. **Brooklyn Bridge Walk**: Take a walk across the Brooklyn Bridge for stunning views of the city skyline.\\n\\n6. **Visit a Rooftop Bar**: Enjoy a drink with a view at one of New York’s many rooftop bars.\\n\\n7. **Explore a New Neighborhood**: Discover the unique charm of areas like SoHo, Chelsea, or Astoria.\\n\\n8. **Live Music**: Check out live music venues for a night of great performances.\\n\\n9. **Art Galleries**: Visit some of the smaller art galleries around Chelsea or the Lower East Side.\\n\\n10. **Attend a Local Event**: Look up any local events or festivals happening this weekend.\\n\\nFeel free to let me know if you want more details on any of these activities!\", additional_kwargs={'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 285, 'prompt_tokens': 95, 'total_tokens': 380, 'completion_tokens_details': {'accepted_prediction_tokens': 0, 'audio_tokens': 0, 'reasoning_tokens': 0, 'rejected_prediction_tokens': 0}, 'prompt_tokens_details': {'audio_tokens': 0, 'cached_tokens': 0}}, 'model_name': 'gpt-4o-2024-08-06', 'system_fingerprint': 'fp_9d50cd990b', 'finish_reason': 'stop', 'logprobs': None}, id='run-f13ce15b-02b6-40e6-8264-c4d9edd0d03a-0', usage_metadata={'input_tokens': 95, 'output_tokens': 285, 'total_tokens': 380, 'input_token_details': {'audio': 0, 'cache_read': 0}, 'output_token_details': {'audio': 0, 'reasoning': 0}})]}}\n", - "\n", - "\n" - ] - } - ], - "source": [ - "for chunk in agent.stream(\n", - " {\"messages\": [(\"user\", \"hi, what should i do this weekend?\")]},\n", - " # provide user ID in the config\n", - " {\"configurable\": {\"user_id\": \"1\"}},\n", - "):\n", - " print(chunk)\n", - " print(\"\\n\")" - ] - }, - { - "cell_type": "markdown", - "id": "d9b2281f-269c-41dd-b6b2-4c743f11ffc9", - "metadata": {}, - "source": [ - "We can see that the model correctly recommended some New York activities for Bob Dylan! Let's try getting recommendations for Taylor Swift:" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "9d71af94-572a-4961-88a7-665e792cf96a", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'agent': {'messages': [AIMessage(content='', additional_kwargs={'tool_calls': [{'id': 'call_5HLtJtzcgmKbtmK6By21wW5Y', 'function': {'arguments': '{}', 'name': 'lookup_user_info'}, 'type': 'function'}], 'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 11, 'prompt_tokens': 56, 'total_tokens': 67, 'completion_tokens_details': {'accepted_prediction_tokens': 0, 'audio_tokens': 0, 'reasoning_tokens': 0, 'rejected_prediction_tokens': 0}, 'prompt_tokens_details': {'audio_tokens': 0, 'cached_tokens': 0}}, 'model_name': 'gpt-4o-2024-08-06', 'system_fingerprint': 'fp_c7ca0ebaca', 'finish_reason': 'tool_calls', 'logprobs': None}, id='run-bacacd7d-76cc-4f6b-9e9b-d9e6f00b9391-0', tool_calls=[{'name': 'lookup_user_info', 'args': {}, 'id': 'call_5HLtJtzcgmKbtmK6By21wW5Y', 'type': 'tool_call'}], usage_metadata={'input_tokens': 56, 'output_tokens': 11, 'total_tokens': 67, 'input_token_details': {'audio': 0, 'cache_read': 0}, 'output_token_details': {'audio': 0, 'reasoning': 0}})]}}\n", - "\n", - "\n", - "{'tools': {'user_info': {'user_id': '2', 'name': 'Taylor Swift', 'location': 'Beverly Hills, CA'}, 'messages': [ToolMessage(content='Successfully looked up user information', name='lookup_user_info', id='d81ef31e-6d77-4f13-ae86-e2e6ba567e3d', tool_call_id='call_5HLtJtzcgmKbtmK6By21wW5Y')]}}\n", - "\n", - "\n", - "{'agent': {'messages': [AIMessage(content=\"Hi Taylor! Since you're in Beverly Hills, here are a few suggestions for a fun weekend:\\n\\n1. **Hiking at Runyon Canyon**: Enjoy a scenic hike with beautiful views of Los Angeles. It's a great way to get some exercise and enjoy the outdoors.\\n\\n2. **Visit Rodeo Drive**: Spend some time shopping or window shopping at the famous Rodeo Drive. You might even spot some celebrities!\\n\\n3. **Explore the Getty Center**: Check out the art collections and beautiful gardens at the Getty Center. The architecture and views are stunning.\\n\\n4. **Relax at a Spa**: Treat yourself to a relaxing day at one of Beverly Hills' luxurious spas.\\n\\n5. **Dining Out**: Try a new restaurant or visit your favorite spot for a delicious meal. Beverly Hills has a fantastic dining scene.\\n\\n6. **Attend a Local Event**: Check out any local events or concerts happening this weekend. Beverly Hills often hosts exciting events.\\n\\nEnjoy your weekend!\", additional_kwargs={'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 198, 'prompt_tokens': 95, 'total_tokens': 293, 'completion_tokens_details': {'accepted_prediction_tokens': 0, 'audio_tokens': 0, 'reasoning_tokens': 0, 'rejected_prediction_tokens': 0}, 'prompt_tokens_details': {'audio_tokens': 0, 'cached_tokens': 0}}, 'model_name': 'gpt-4o-2024-08-06', 'system_fingerprint': 'fp_c7ca0ebaca', 'finish_reason': 'stop', 'logprobs': None}, id='run-2057df76-f192-4c69-a66a-1f0a86bf5d66-0', usage_metadata={'input_tokens': 95, 'output_tokens': 198, 'total_tokens': 293, 'input_token_details': {'audio': 0, 'cache_read': 0}, 'output_token_details': {'audio': 0, 'reasoning': 0}})]}}\n", - "\n", - "\n" - ] - } - ], - "source": [ - "for chunk in agent.stream(\n", - " {\"messages\": [(\"user\", \"hi, what should i do this weekend?\")]},\n", - " {\"configurable\": {\"user_id\": \"2\"}},\n", - "):\n", - " print(chunk)\n", - " print(\"\\n\")" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.3" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/docs/docs/how-tos/use-functional-api.md b/docs/docs/how-tos/use-functional-api.md new file mode 100644 index 000000000..cea53c0ca --- /dev/null +++ b/docs/docs/how-tos/use-functional-api.md @@ -0,0 +1,532 @@ +# Use the functional API + +## Creating a simple workflow + +When defining an `entrypoint`, input is restricted to the first argument of the function. To pass multiple inputs, you can use a dictionary. + +```python +@entrypoint(checkpointer=checkpointer) +def my_workflow(inputs: dict) -> int: + value = inputs["value"] + another_value = inputs["another_value"] + ... + +my_workflow.invoke({"value": 1, "another_value": 2}) +``` + +??? example "Extended example: simple workflow" + + ```python + import uuid + from langgraph.func import entrypoint, task + from langgraph.checkpoint.memory import MemorySaver + + # Task that checks if a number is even + @task + def is_even(number: int) -> bool: + return number % 2 == 0 + + # Task that formats a message + @task + def format_message(is_even: bool) -> str: + return "The number is even." if is_even else "The number is odd." + + # Create a checkpointer for persistence + checkpointer = MemorySaver() + + @entrypoint(checkpointer=checkpointer) + def workflow(inputs: dict) -> str: + """Simple workflow to classify a number.""" + even = is_even(inputs["number"]).result() + return format_message(even).result() + + # Run the workflow with a unique thread ID + config = {"configurable": {"thread_id": str(uuid.uuid4())}} + result = workflow.invoke({"number": 7}, config=config) + print(result) + ``` + +??? example "Extended example: Compose an essay with an LLM" + + This example demonstrates how to use the `@task` and `@entrypoint` decorators + syntactically. Given that a checkpointer is provided, the workflow results will + be persisted in the checkpointer. + + ```python + import uuid + from langchain.chat_models import init_chat_model + from langgraph.func import entrypoint, task + from langgraph.checkpoint.memory import MemorySaver + + llm = init_chat_model('openai:gpt-3.5-turbo') + + # Task: generate essay using an LLM + @task + def compose_essay(topic: str) -> str: + """Generate an essay about the given topic.""" + return llm.invoke([ + {"role": "system", "content": "You are a helpful assistant that writes essays."}, + {"role": "user", "content": f"Write an essay about {topic}."} + ]).content + + # Create a checkpointer for persistence + checkpointer = MemorySaver() + + @entrypoint(checkpointer=checkpointer) + def workflow(topic: str) -> str: + """Simple workflow that generates an essay with an LLM.""" + return compose_essay(topic).result() + + # Execute the workflow + config = {"configurable": {"thread_id": str(uuid.uuid4())}} + result = workflow.invoke("the history of flight", config=config) + print(result) + ``` + +## Parallel execution + +Tasks can be executed in parallel by invoking them concurrently and waiting for the results. This is useful for improving performance in IO bound tasks (e.g., calling APIs for LLMs). + +```python +@task +def add_one(number: int) -> int: + return number + 1 + +@entrypoint(checkpointer=checkpointer) +def graph(numbers: list[int]) -> list[str]: + futures = [add_one(i) for i in numbers] + return [f.result() for f in futures] +``` + + +??? example "Extended example: parallel LLM calls" + + This example demonstrates how to run multiple LLM calls in parallel using `@task`. Each call generates a paragraph on a different topic, and results are joined into a single text output. + + ```python + import uuid + from langchain.chat_models import init_chat_model + from langgraph.func import entrypoint, task + from langgraph.checkpoint.memory import MemorySaver + + # Initialize the LLM model + llm = init_chat_model("openai:gpt-3.5-turbo") + + # Task that generates a paragraph about a given topic + @task + def generate_paragraph(topic: str) -> str: + response = llm.invoke([ + {"role": "system", "content": "You are a helpful assistant that writes educational paragraphs."}, + {"role": "user", "content": f"Write a paragraph about {topic}."} + ]) + return response.content + + # Create a checkpointer for persistence + checkpointer = MemorySaver() + + @entrypoint(checkpointer=checkpointer) + def workflow(topics: list[str]) -> str: + """Generates multiple paragraphs in parallel and combines them.""" + futures = [generate_paragraph(topic) for topic in topics] + paragraphs = [f.result() for f in futures] + return "\n\n".join(paragraphs) + + # Run the workflow + config = {"configurable": {"thread_id": str(uuid.uuid4())}} + result = workflow.invoke(["quantum computing", "climate change", "history of aviation"], config=config) + print(result) + ``` + + This example uses LangGraph's concurrency model to improve execution time, especially when tasks involve I/O like LLM completions. + +## Calling graphs + +The **Functional API** and the [**Graph API**](../concepts/low_level.md) can be used together in the same application as they share the same underlying runtime. + +```python +from langgraph.func import entrypoint +from langgraph.graph import StateGraph + +builder = StateGraph() +... +some_graph = builder.compile() + +@entrypoint() +def some_workflow(some_input: dict) -> int: + # Call a graph defined using the graph API + result_1 = some_graph.invoke(...) + # Call another graph defined using the graph API + result_2 = another_graph.invoke(...) + return { + "result_1": result_1, + "result_2": result_2 + } +``` + +??? example "Extended example: calling a simple graph from the functional API" + + ```python + import uuid + from typing import TypedDict + from langgraph.func import entrypoint + from langgraph.checkpoint.memory import MemorySaver + from langgraph.graph import StateGraph + + # Define the shared state type + class State(TypedDict): + foo: int + + # Define a simple transformation node + def double(state: State) -> State: + return {"foo": state["foo"] * 2} + + # Build the graph using the Graph API + builder = StateGraph(State) + builder.add_node("double", double) + builder.set_entry_point("double") + graph = builder.compile() + + # Define the functional API workflow + checkpointer = MemorySaver() + + @entrypoint(checkpointer=checkpointer) + def workflow(x: int) -> dict: + result = graph.invoke({"foo": x}) + return {"bar": result["foo"]} + + # Execute the workflow + config = {"configurable": {"thread_id": str(uuid.uuid4())}} + print(workflow.invoke(5, config=config)) # Output: {'bar': 10} + ``` + + +## Call other entrypoints + +You can call other **entrypoints** from within an **entrypoint** or a **task**. + +```python +@entrypoint() # Will automatically use the checkpointer from the parent entrypoint +def some_other_workflow(inputs: dict) -> int: + return inputs["value"] + +@entrypoint(checkpointer=checkpointer) +def my_workflow(inputs: dict) -> int: + value = some_other_workflow.invoke({"value": 1}) + return value +``` + +??? example "Extended example: calling another entrypoint" + + ```python + import uuid + from langgraph.func import entrypoint + from langgraph.checkpoint.memory import MemorySaver + + # Initialize a checkpointer + checkpointer = MemorySaver() + + # A reusable sub-workflow that multiplies a number + @entrypoint() + def multiply(inputs: dict) -> int: + return inputs["a"] * inputs["b"] + + # Main workflow that invokes the sub-workflow + @entrypoint(checkpointer=checkpointer) + def main(inputs: dict) -> dict: + result = multiply.invoke({"a": inputs["x"], "b": inputs["y"]}) + return {"product": result} + + # Execute the main workflow + config = {"configurable": {"thread_id": str(uuid.uuid4())}} + print(main.invoke({"x": 6, "y": 7}, config=config)) # Output: {'product': 42} + ``` + + +## Streaming + +The **Functional API** uses the same streaming mechanism as the **Graph API**. Please +read the [**streaming guide**](../concepts/streaming.md) section for more details. + +Example of using the streaming API to stream both updates and custom data. + +```python +from langgraph.func import entrypoint +from langgraph.checkpoint.memory import MemorySaver +from langgraph.config import get_stream_writer # (1)! + +checkpointer = MemorySaver() + +@entrypoint(checkpointer=checkpointer) +def main(inputs: dict) -> int: + writer = get_stream_writer() # (2)! + writer("Started processing") # (3)! + result = inputs["x"] * 2 + writer(f"Result is {result}") # (4)! + return result + +config = {"configurable": {"thread_id": "abc"}} + +# highlight-next-line +for mode, chunk in main.stream( # (5)! + {"x": 5}, + stream_mode=["custom", "updates"], # (6)! + config=config +): + print(f"{mode}: {chunk}") +``` + +1. Import `get_stream_writer` from `langgraph.config`. +2. Obtain a stream writer instance within the entrypoint. +3. Emit custom data before computation begins. +4. Emit another custom message after computing the result. +5. Use `.stream()` to process streamed output. +6. Specify which streaming modes to use. + +```pycon +('updates', {'add_one': 2}) +('updates', {'add_two': 3}) +('custom', 'hello') +('custom', 'world') +('updates', {'main': 5}) +``` + +!!! important "Async with Python < 3.11" + + If using Python < 3.11 and writing async code, using `get_stream_writer()` will not work. Instead please + use the `StreamWriter` class directly. See [Async with Python < 3.11](../how-tos/streaming.md#async-with-python-<3.11) for more details. + + ```python + from langgraph.types import StreamWriter + + @entrypoint(checkpointer=checkpointer) + # highlight-next-line + async def main(inputs: dict, writer: StreamWriter) -> int: + ... + ``` + +## Retry policy + +```python +from langgraph.checkpoint.memory import MemorySaver +from langgraph.func import entrypoint, task +from langgraph.types import RetryPolicy + +# This variable is just used for demonstration purposes to simulate a network failure. +# It's not something you will have in your actual code. +attempts = 0 + +# Let's configure the RetryPolicy to retry on ValueError. +# The default RetryPolicy is optimized for retrying specific network errors. +retry_policy = RetryPolicy(retry_on=ValueError) + +@task(retry=retry_policy) +def get_info(): + global attempts + attempts += 1 + + if attempts < 2: + raise ValueError('Failure') + return "OK" + +checkpointer = MemorySaver() + +@entrypoint(checkpointer=checkpointer) +def main(inputs, writer): + return get_info().result() + +config = { + "configurable": { + "thread_id": "1" + } +} + +main.invoke({'any_input': 'foobar'}, config=config) +``` + +```pycon +'OK' +``` + +## Resuming after an error + +```python +import time +from langgraph.checkpoint.memory import MemorySaver +from langgraph.func import entrypoint, task +from langgraph.types import StreamWriter + +# This variable is just used for demonstration purposes to simulate a network failure. +# It's not something you will have in your actual code. +attempts = 0 + +@task() +def get_info(): + """ + Simulates a task that fails once before succeeding. + Raises an exception on the first attempt, then returns "OK" on subsequent tries. + """ + global attempts + attempts += 1 + + if attempts < 2: + raise ValueError("Failure") # Simulate a failure on the first attempt + return "OK" + +# Initialize an in-memory checkpointer for persistence +checkpointer = MemorySaver() + +@task +def slow_task(): + """ + Simulates a slow-running task by introducing a 1-second delay. + """ + time.sleep(1) + return "Ran slow task." + +@entrypoint(checkpointer=checkpointer) +def main(inputs, writer: StreamWriter): + """ + Main workflow function that runs the slow_task and get_info tasks sequentially. + + Parameters: + - inputs: Dictionary containing workflow input values. + - writer: StreamWriter for streaming custom data. + + The workflow first executes `slow_task` and then attempts to execute `get_info`, + which will fail on the first invocation. + """ + slow_task_result = slow_task().result() # Blocking call to slow_task + get_info().result() # Exception will be raised here on the first attempt + return slow_task_result + +# Workflow execution configuration with a unique thread identifier +config = { + "configurable": { + "thread_id": "1" # Unique identifier to track workflow execution + } +} + +# This invocation will take ~1 second due to the slow_task execution +try: + # First invocation will raise an exception due to the `get_info` task failing + main.invoke({'any_input': 'foobar'}, config=config) +except ValueError: + pass # Handle the failure gracefully +``` + +When we resume execution, we won't need to re-run the `slow_task` as its result is already saved in the checkpoint. + +```python +main.invoke(None, config=config) +``` + +```pycon +'Ran slow task.' +``` + +## Human-in-the-loop + +The functional API supports [human-in-the-loop](../concepts/human_in_the_loop.md) workflows using the `interrupt` function and the `Command` primitive. + +Please see the following examples for more details: + +* [How to wait for user input (Functional API)](./wait-user-input-functional.ipynb): Shows how to implement a simple human-in-the-loop workflow using the functional API. +* [How to review tool calls (Functional API)](./review-tool-calls-functional.ipynb): Guide demonstrates how to implement human-in-the-loop workflows in a ReAct agent using the LangGraph Functional API. + +## Short-term memory + +Short-term memory allows storing information across different **invocations** of the same **thread id**. See [short-term memory](../concepts/functional_api.md#short-term-memory) for more details. + +### Decouple return value from saved value + +Use `entrypoint.final` to decouple what is returned to the caller from what is persisted in the checkpoint. This is useful when: + +* You want to return a computed result (e.g., a summary or status), but save a different internal value for use on the next invocation. +* You need to control what gets passed to the previous parameter on the next run. + +```python +from typing import Optional +from langgraph.func import entrypoint +from langgraph.checkpoint.memory import MemorySaver + +checkpointer = MemorySaver() + +@entrypoint(checkpointer=checkpointer) +def accumulate(n: int, *, previous: Optional[int]) -> entrypoint.final[int, int]: + previous = previous or 0 + total = previous + n + # Return the *previous* value to the caller but save the *new* total to the checkpoint. + return entrypoint.final(value=previous, save=total) + +config = {"configurable": {"thread_id": "my-thread"}} + +print(accumulate.invoke(1, config=config)) # 0 +print(accumulate.invoke(2, config=config)) # 1 +print(accumulate.invoke(3, config=config)) # 3 +``` + +### Chatbot example + +An example of a simple chatbot using the functional API and the `MemorySaver` checkpointer. +The bot is able to remember the previous conversation and continue from where it left off. + +```python +from langchain_core.messages import BaseMessage +from langgraph.graph import add_messages +from langgraph.func import entrypoint, task +from langgraph.checkpoint.memory import MemorySaver +from langchain_anthropic import ChatAnthropic + +model = ChatAnthropic(model="claude-3-5-sonnet-latest") + +@task +def call_model(messages: list[BaseMessage]): + response = model.invoke(messages) + return response + +checkpointer = MemorySaver() + +@entrypoint(checkpointer=checkpointer) +def workflow(inputs: list[BaseMessage], *, previous: list[BaseMessage]): + if previous: + inputs = add_messages(previous, inputs) + + response = call_model(inputs).result() + return entrypoint.final(value=response, save=add_messages(inputs, response)) + +config = {"configurable": {"thread_id": "1"}} +input_message = {"role": "user", "content": "hi! I'm bob"} +for chunk in workflow.stream([input_message], config, stream_mode="values"): + chunk.pretty_print() + +input_message = {"role": "user", "content": "what's my name?"} +for chunk in workflow.stream([input_message], config, stream_mode="values"): + chunk.pretty_print() +``` + +??? example "Extended example: build a simple chatbot" + + [How to add thread-level persistence (functional API)](./persistence-functional.ipynb): Shows how to add thread-level persistence to a functional API workflow and implements a simple chatbot. + +## Long-term memory + +[long-term memory](../concepts/memory.md#long-term-memory) allows storing information across different **thread ids**. This could be useful for learning information about a given user in one conversation and using it in another. + + +??? example "Extended example: add long-term memory" + + [How to add cross-thread persistence (functional API)](./cross-thread-persistence-functional.ipynb): Shows how to add cross-thread persistence to a functional API workflow and implements a simple chatbot. + +## Workflows + +* [Workflows and agent](../tutorials/workflows.md) guide for more examples of how to build workflows using the Functional API. + +## Agents + +* [How to create an agent from scratch (Functional API)](./react-agent-from-scratch-functional.ipynb): Shows how to create a simple agent from scratch using the functional API. +* [How to build a multi-agent network](./multi-agent-network-functional.ipynb): Shows how to build a multi-agent network using the functional API. +* [How to add multi-turn conversation in a multi-agent application (functional API)](./multi-agent-multi-turn-convo-functional.ipynb): allow an end-user to engage in a multi-turn conversation with one or more agents. + +## Integrate with other libraries + +* [Add LangGraph's features to other frameworks using the functional API](./autogen-integration-functional.ipynb): Add LangGraph features like persistence, memory and streaming to other agent frameworks that do not provide them out of the box. \ No newline at end of file diff --git a/docs/docs/how-tos/visualization.ipynb b/docs/docs/how-tos/visualization.ipynb deleted file mode 100644 index 544f7e66a..000000000 --- a/docs/docs/how-tos/visualization.ipynb +++ /dev/null @@ -1,381 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "8bcd1a3d-7c50-4f58-be4e-1ed654aa33be", - "metadata": {}, - "source": [ - "# How to visualize your graph\n", - "\n", - "This guide walks through how to visualize the graphs you create. This works with ANY [Graph](https://langchain-ai.github.io/langgraph/reference/graphs/).\n", - "\n", - "## Setup\n", - "\n", - "First, let's install the required packages" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "32a0e7f4", - "metadata": {}, - "outputs": [], - "source": [ - "%%capture --no-stderr\n", - "%pip install -U langgraph" - ] - }, - { - "cell_type": "markdown", - "id": "e130cf70-a30e-47d7-8fd5-464f1a92e374", - "metadata": {}, - "source": [ - "## Set up Graph\n", - "\n", - "You can visualize any arbitrary [Graph](https://langchain-ai.github.io/langgraph/reference/graphs/), including [StateGraph](https://langchain-ai.github.io/langgraph/reference/graphs/#langgraph.graph.state.StateGraph). Let's have some fun by drawing fractals :)." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "6d604311", - "metadata": {}, - "outputs": [], - "source": [ - "import random\n", - "from typing import Annotated, Literal\n", - "\n", - "from typing_extensions import TypedDict\n", - "\n", - "from langgraph.graph import StateGraph, START, END\n", - "from langgraph.graph.message import add_messages\n", - "\n", - "\n", - "class State(TypedDict):\n", - " messages: Annotated[list, add_messages]\n", - "\n", - "\n", - "class MyNode:\n", - " def __init__(self, name: str):\n", - " self.name = name\n", - "\n", - " def __call__(self, state: State):\n", - " return {\"messages\": [(\"assistant\", f\"Called node {self.name}\")]}\n", - "\n", - "\n", - "def route(state) -> Literal[\"entry_node\", \"__end__\"]:\n", - " if len(state[\"messages\"]) > 10:\n", - " return \"__end__\"\n", - " return \"entry_node\"\n", - "\n", - "\n", - "def add_fractal_nodes(builder, current_node, level, max_level):\n", - " if level > max_level:\n", - " return\n", - "\n", - " # Number of nodes to create at this level\n", - " num_nodes = random.randint(1, 3) # Adjust randomness as needed\n", - " for i in range(num_nodes):\n", - " nm = [\"A\", \"B\", \"C\"][i]\n", - " node_name = f\"node_{current_node}_{nm}\"\n", - " builder.add_node(node_name, MyNode(node_name))\n", - " builder.add_edge(current_node, node_name)\n", - "\n", - " # Recursively add more nodes\n", - " r = random.random()\n", - " if r > 0.2 and level + 1 < max_level:\n", - " add_fractal_nodes(builder, node_name, level + 1, max_level)\n", - " elif r > 0.05:\n", - " builder.add_conditional_edges(node_name, route, node_name)\n", - " else:\n", - " # End\n", - " builder.add_edge(node_name, \"__end__\")\n", - "\n", - "\n", - "def build_fractal_graph(max_level: int):\n", - " builder = StateGraph(State)\n", - " entry_point = \"entry_node\"\n", - " builder.add_node(entry_point, MyNode(entry_point))\n", - " builder.add_edge(START, entry_point)\n", - "\n", - " add_fractal_nodes(builder, entry_point, 1, max_level)\n", - "\n", - " # Optional: set a finish point if required\n", - " builder.add_edge(entry_point, END) # or any specific node\n", - "\n", - " return builder.compile()\n", - "\n", - "\n", - "app = build_fractal_graph(3)" - ] - }, - { - "cell_type": "markdown", - "id": "edcd9ad2", - "metadata": { - "ExecuteTime": { - "end_time": "2024-04-18T12:18:30.629307Z", - "start_time": "2024-04-18T12:18:30.609323Z" - } - }, - "source": [ - "## Mermaid\n", - "\n", - "We can also convert a graph class into Mermaid syntax." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "66007b2d", - "metadata": { - "ExecuteTime": { - "end_time": "2024-04-19T11:25:38.733126Z", - "start_time": "2024-04-19T11:25:38.726838Z" - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "%%{init: {'flowchart': {'curve': 'linear'}}}%%\n", - "graph TD;\n", - "\t__start__([

    __start__

    ]):::first\n", - "\tentry_node(entry_node)\n", - "\tnode_entry_node_A(node_entry_node_A)\n", - "\tnode_entry_node_B(node_entry_node_B)\n", - "\tnode_node_entry_node_B_A(node_node_entry_node_B_A)\n", - "\tnode_node_entry_node_B_B(node_node_entry_node_B_B)\n", - "\tnode_node_entry_node_B_C(node_node_entry_node_B_C)\n", - "\t__end__([

    __end__

    ]):::last\n", - "\t__start__ --> entry_node;\n", - "\tentry_node --> __end__;\n", - "\tentry_node --> node_entry_node_A;\n", - "\tentry_node --> node_entry_node_B;\n", - "\tnode_entry_node_B --> node_node_entry_node_B_A;\n", - "\tnode_entry_node_B --> node_node_entry_node_B_B;\n", - "\tnode_entry_node_B --> node_node_entry_node_B_C;\n", - "\tnode_entry_node_A -.-> entry_node;\n", - "\tnode_entry_node_A -.-> __end__;\n", - "\tnode_node_entry_node_B_A -.-> entry_node;\n", - "\tnode_node_entry_node_B_A -.-> __end__;\n", - "\tnode_node_entry_node_B_B -.-> entry_node;\n", - "\tnode_node_entry_node_B_B -.-> __end__;\n", - "\tnode_node_entry_node_B_C -.-> entry_node;\n", - "\tnode_node_entry_node_B_C -.-> __end__;\n", - "\tclassDef default fill:#f2f0ff,line-height:1.2\n", - "\tclassDef first fill-opacity:0\n", - "\tclassDef last fill:#bfb6fc\n", - "\n" - ] - } - ], - "source": [ - "print(app.get_graph().draw_mermaid())" - ] - }, - { - "cell_type": "markdown", - "id": "8f77ad75", - "metadata": {}, - "source": [ - "## PNG\n", - "\n", - "If preferred, we could render the Graph into a `.png`. Here we could use three options:\n", - "\n", - "- Using Mermaid.ink API (does not require additional packages)\n", - "- Using Mermaid + Pyppeteer (requires `pip install pyppeteer`)\n", - "- Using graphviz (which requires `pip install graphviz`)\n", - "\n", - "\n", - "### Using Mermaid.Ink\n", - "\n", - "By default, `draw_mermaid_png()` uses Mermaid.Ink's API to generate the diagram." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "967f116d", - "metadata": {}, - "outputs": [ - { - "data": { - "image/jpeg": "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IgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiIC17waINTV+xJ/958l3/8Aa/nWwlr3g1v5Jq/fb+s+S7tv879CDYSIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiIC15wZG1TWHUH/3oyXcP/nLYa15wZ28k1ht7UZLw2/tkGw0REBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEUzmdU3GZGbH4alDcs1w3yma1M6KGEkAhm4a4ufykO2AAAI3I3G+O8+6w/0DB+9zfVrqp6NXVF+yPWYWy3RRHn3WH+gYP3ub6tPPusP9Awfvc31a1utecawWW6KI8+6w/0DB+9zfVp591h/oGD97m+rTda841gs+3GHXd3hhwz1BqvH4N+pLGJr+VOxsc/YOlja4dq4P5XbcrOd/cd+Xbx3XmD4G3wvbXGbX+X0tR0LJSq2rd3OXMm7JB7abJHbtZyCFvOS8tbvuO8nw2XpafLasswyQzYzAyxSNLHxvsyua5pGxBBi6grU3wfeA1r4OsOpWafp4id2avutOkntS80MI37KAHs+rWczuvjum615xrBZ6TRRHn3WH+gYP3ub6tPPusP9Awfvc31abrXnGsFluiiPPusP9Awfvc31aefdYf6Bg/e5vq03WvONYLLdFEefdYf6Bg/e5vq1+2ai1VBvJPicXZjb1MVW69sjht+LzxhpPqBIHXqQm615xrBZaIupicpWzeOgvVHl9eZvM0uaWuHgQQeoIIIIPUEELtrkmJpm0oIiKAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIggNPnfNasJ7/Ox6/8A+vAs4sHp/wD6a1Z+lj/w8Kzi+vicY9I+kLPEREXmgi6NzOY/H5HH0LN2CC9kHPZUrSSASTljC9/I3vdytBJ27gu8gIiICIiAi6uVylbCYu5kbsvY06cL7E8vKXckbGlzjsASdgD0A3X4weap6kwuPy+Om8ox9+vHarTcrm9pE9ocx2zgCNwQdiAfWoO6iIqOtwxO+mJ/oyuSAAHcBenVYpLhh/Vix+lsn/x06rVy9J+PX6z9WquMiIi5mRERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEX5kkbExz3uDGNG5c47ABRuZ408P9PTdjktbafp2CdhXlycIlcfUGc3MT9ACC0Ra6dx60vO0nG19Q5vpuHYzTt6aI/8AfdiIh+t4UXmvhb4bHWvJIsDYbcPyYchl8bXkd+aFtl8//wBpBdaf/wCmtWfpY/8ADwrOKF4Salm1hjc5mJ6Xm6W1lHuNbeQ8m0UQHWSON3UAHqwd/TcbE3S+vicY9I+kLPF5d1bPr7ihxk1/hcNYsw0tMGpVqQU9VS4V0RmrNl7d7I6svb8znOA5zygR7cu+5PfxWB1dq7izR0prLVuXp2a2haVu/HprJy1IZr3ldiN07XMDXAkAEgcodsA4ENaBtjW/A3RHEXMsy2ewgs5JsPkzrVe1PWfLDvv2chie3tGdT6L9x1PRZ6lofCY7Uoz9aiIcsMdHiRO2R+wqxvc9kYZvyjZznHfbfrtvsufZm/ajyphq1ji5N8G/I6jzOY85XoMtVsW8fk56UkjoYJAJAYnt5Xu5PSc3YuG4O46LZun9PXdccfuJ1bI6o1FFh8JLifIcXQy09aFj31Gve48jgSCQN278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1J98f3FpEez2Dxe3drfEhLOsXw+WCHT+auOrW2VC2Ku1na83fKwyPaHRt8Xb/mBVEiCctaky7BeFbSeQmdXtMgiMlmqxtqM/KmYRKSGN9Tw158GnvXNrJ6m5rramAov7O1HHXdayZibNAflynlheWub12Zseb1tVEiCdnk1ZIbIhr4aANusEDpJ5Zeer+O54DG8svqaC5vrKS09VymcMy2IrDy9r4j5tlkIpj5UTvv4++n/OD0R+QVRIgnZMHnp+231M6EHINsR+T0YgWVh/1Y8/Nzb+MnR3q2XEmlL0/bCTVWZIfkBdYGCtH2UY/wCqtLYQTF6+bmkP5fgqNEE7LoitY7cT5TNSCW+3IANyc0XI4d0TTG5p7L1x9WnxBXE3D/CWRYE8Fmy2e83JPbPenkAnb8ktDnnkaPyG7M/1VRognpeHel7BtGfT2Ms+U3W5Gbt6jJOe035Mx5gfTHg7vHgsjHp7FRPsPZjKbH2JhYmc2uwGSUd0junV30nqsgiDgADuGy5REBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERBhtaaVqa70dndNZB80VDM0J8dYfXcGytjmjdG4sJBAds47EgjfwK0Fjvgd8KeBWkMnnMHp039QY6tJPUy2WlNieKYDeORoOzGua7YhzWgghellitVYUak0zlcUXBnltWWuHn8UuaQD+ondeuDNNOJTNfC8XWOLzXBC2tBHEwbMjaGNH0AbBftfKrJJJCBMwxWGExzRHvjkaS17T9IcCP1LCag1Rdwl1kFbS+YzbHRh5sY81hG07kcp7WZjt+m/QbdR179v6jVVFMXliVAoHizxJm0HHhqdGFs2Vy9h8MDpa09iOFrGF75HRwNdI/YAANaB1duSACV3PjAym39QNTfm5qH2pY7O4C1xOioXW1MtonOYS15Rj712OvMd3MLXgsjleHMc0kOBLT3bFc+JXNVExhcfSf1427hJt41aobhJ98RWfkY8xQx0FuxRt0qltll/Ju1kzRIxzDuD8sDoeu+yyd/i9mdGs1hU1DUo5HJ4aGnNTOMa+GO2bT3RxRlr3PLCJG7E7kbHfbpsqDIcO8xn8HQqZvUzchcq5mrlRZZj2ws5YZGPELWB/QHlPpFziC4942C+WquD9XV+S1RYuZCWOLN0KlRrIY+V9aSvI+RkrX79TzOadth8nvO65tjpEReme39Mp9e+3/AFxNYIapHHvD/dQ7EPsnTdt0fmlkrWNHlFfma7tCSdunpDbf1BbmWsaeidRac1LDq7L5qfWV2njpMdHQx2NhqySNklicXgumDdxybncgEd222xzrdfZRx2OgdSt6E7l1D1d3/Ol7YM9XeK4ntm+f0uLFFKUNbZK7dggk0TqGlHK8MdYsOpdnECflO5bLnbD6AT9Cq3ODWlziAANyT4LrpqirgjRvwg/gza8494dmQ0jSwt9uBlkp9hKeyyMgftYIbI70DGDO7ZhIIJceu422p/7P7hbrnRnArVOGzT8porIzZx7q0NvGtbNBtFBzzM7VpbI14HKDsWgscQSe70NwUwz8ZooWpWlkuUsPv8p/IcGsjP642MP61fL+cdPmmrpWJNPC/wD9/d6TxTmR0peyPnhp1Vmasd9sLYWVhWZ5Bybcxhd2JcTJt6XaF+2/o8iZLRFfLeeG2MpmhFk2wtfHWyc1fsBHtt2DonNdEXbekWkF3j06KjRcCJzJcP8ACZjzyLsFm0zLiEW4pL05jcItuQMZz8sfd15A3mPV26/WR4d6XzDswchp7GZAZnsPOLblRkzbfY7dj2jXAh3JsC3fuI3CoUQY52ncS+e7M7GU3TXTG61Ia7OacsGzC87ekWgADffbwWQAAJ2AG/U/SuUQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREGsOJHDCfJW5M1gmB9143s0C4NFggdHsJ2DX+B3IDum5BG51BcvRYyya2QLsbaHfBeaYX/qDttx9I3C9XL5z1orUZjmiZMw/iyNDh/4FfoOifxfE6PRGHiU7URw7bT917J4vKfneiP8Artf/ABW/xXHnej/ptf8AxW/xXp/7msR81Uvd2fwT7msR81Uvd2fwX0fx3D/xzr/pLQ8wed6P+m1/8Vv8U870f9Nr/wCK3+K9P/c1iPmql7uz+Cfc1iPmql7uz+CfjuH/AI51/wBFoeYPO9H/AE2v/it/innej/ptf/Fb/Fen/uaxHzVS93Z/BPuaxHzVS93Z/BPx3D/xzr/otDy/55omRsbLUUsrzs2KJ3O9x9Qa3cn9QWwtDcLruoLEdzOVJMfiWEObUnHLNa+h7e9jPWDs49xAHfuirj6tEEVq0NcHv7KMN/3LsLj6T/Gq8SmaMGnZv33vP6cLHZHBwAGgADYDuAXKIvzQIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiIP/Z", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from IPython.display import Image, display\n", - "from langchain_core.runnables.graph import CurveStyle, MermaidDrawMethod, NodeStyles\n", - "\n", - "display(\n", - " Image(\n", - " app.get_graph().draw_mermaid_png(\n", - " draw_method=MermaidDrawMethod.API,\n", - " )\n", - " )\n", - ")" - ] - }, - { - "cell_type": "markdown", - "id": "b9e767fc", - "metadata": { - "ExecuteTime": { - "end_time": "2024-04-18T12:18:30.873950Z", - "start_time": "2024-04-18T12:18:30.871750Z" - } - }, - "source": [ - "### Using Mermaid + Pyppeteer" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "d403e1e7", - "metadata": { - "ExecuteTime": { - "end_time": "2024-04-19T11:25:44.798703Z", - "start_time": "2024-04-19T11:25:44.793438Z" - } - }, - "outputs": [], - "source": [ - "%%capture --no-stderr\n", - "%pip install --quiet pyppeteer\n", - "%pip install --quiet nest_asyncio" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "058546ee", - "metadata": { - "ExecuteTime": { - "end_time": "2024-04-19T11:25:47.412695Z", - "start_time": "2024-04-19T11:25:45.405158Z" - } - }, - "outputs": [ - { - "data": { - "image/png": "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AAAAJpWJUwAAwEHt2zUw+nHjDG8hflVPT0++8IW/O2C9tbUt5557YXbs2J5HH30k3d37kiSXXnplqqurR89bsuS4XHDBpdm1a0ceffSRMde44IJLD7ju3Lnzxxy3t8/JZZe9Kffcc9eY9cbGpixbdnx27hyZCvWrPve5/5WPf/xPDutz/OY37xj9eNGipTn99Feno2NLfvrTH+f6629MfX19Zs5sG817//33jnn+2Wefd0BZ7MQTTzmse5dRY0ttsqk3e5/32gMAAAAAYOL5rgcAAHBQfb1DSZLaegNrx/OLX6wYLUXt9/GP/0kuvfSNo8c9PT25/fYv5J/+6dM5//xfG3PueeddlPPOuygbNz6T97//raPrS5celz/8wz87rAzvfOfNo8WpD3/4Y7nkkjfmmGNmjj6+efOz+Yu/+OMsX/6T0bV77/123vKWd+bUU1912J/r7/7u7+Xqq68fPV6z5qm0t89JkixYsGg07zve8cYxW/197GN/lLa2WYd9n7KrrRt5re1/7QEAAAAAMDkUpwAAgIPq/2V5o6ZWcWo8u3fvOmDt4ovfMOa4oaEhN974m3nTm64bU2iaKMuWHZ+PfeyTOeusc0eLTM83f/7C/NEf/WXe+95rxxSaVq1aedjFqf/0n/4gb3rTm8esHXfciS8vOOPaX1LsV5wCAAAAAJhUvvMBAAAc1P6pN3UmTo1rzpx5B6z94hc/H/fc9vbZqa2tnZQcr3/9VeOWpvZraGjI2972njFr423hN57jjjsxV1xxzcvKx+GrrR/ZytHEKQAAAACAyeU7HwAAwEH19/1yq766SsFJpqalS487YO2P/uijWbHi4QLSjLVz54488cRjeeCB+7J27dNZvHjpmMcPtzh13XW/kerq6smIyDj2b9W3/7UHAAAAAMDksFUfAABwUJXKSGFquOAcU1Vz84zcfPPv5B/+4W9H13bs6MpHP/rbueKKa3L99Tce0S3tHn74gXzxi/+YVatWprt730HP3bz58IpTS5YcOxHROEy/fMll2IsOAAAAAGBSKU4BAAAHtX/S1GC/FscLeetbb8zTT6/K97//nTHrd9/99dx999dz3nkX5eabPzSpBapVq1bm7/7uf2bFip8e9nMGBwcP67x58xa81Fi8BM9NeTMkGgAAAABgMvkqLAAAcFC19bYNO5S6urr83u/9t9x002+N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DgAAAAAAAABA76NVHwAAAIBeUVS0QTfccHnA0FQgL7/8rG644XLV1m7qcu2zzz6km266xi801dGiRR/rgQfu7NbzH6gVK/4dMDTV5txzLzUqZbX57LOPujxvXd1WU2hKkk444bT92+Q+euWVv+ruu//LLzTVUVHRBs2Y8Qs1NDQEXbNu3Wpdd91FAUNTHXm9bt1887WaPfsF+Xy+oOv27Nmjp5/+n4Chqf21bVud7rrr5oChqUA++2yerrrqPK1c+W2P7QEAAAAAAAAAEBpUnAIAAAAQcjt31uvuu/9LXq/bNG+12pWfP1oWS4y8XrfWrPnO9HhFRZmefPJ+3XffUwoLCwt6/u++W2oaH3bYWGVlOVVZ6TJVA5Kk5cu/0YYNa02VnYYOTdRPfrK3fds33ywxrZ8w4WhZLDGmueHDR3RxxXurLrVJSEjU+PFHS5IWL16gww4bq7y8kWppaTZVP1q06GNdd93vZLFYgp63Y9BowoSjZbMld7mfnuD1uk2fw/T0LB1++Hht3bpZ3377lWltY2ODPv74PV144RV+59m82aubb77Wbz4ry6lx446SxWJRQcGPWr16henx11//X2VlOXX88acG3N/99//R7/Mn7f06Gz36CEnSmjXf+bVj7MwTT9znd20xMbEaPfoIJSQMU339DhUUrDWds7GxQffcc5teffWfGjo0oeMpAQAAAAAAAAD9BMEpAAAAACE3a9ZzfqGpGTNu05lnnq9BgwYZc9u21em55x7V4sULjLnvvluqzz6bp9NPP7vL57nggst16aVXa8iQocbcqlXLdffdtxjt5iTp3Xff0J13/qcqUWpquu6662FJ0iWXnG4Kwdx22z1KTBy2D1drNmXKuZox4w9Gy8HrrvudsZeRI8coK8upiooySXsDN//+97900klnBD3f4sWfmMannDJ1v/e2v8aOnajf//5OpaVlGHObNlXrvvtuV1HRBmNu9uwXdN55lyoiwvyj5+uv/6/fOW+88Vadc87FprnS0iLdcceNps/Hyy8/o2OOOcGvheOyZV/7haYSEhJ1992PatSow405n8+n1157Xm+++XKX1/nll4v8znnOORfrqqt+bWr32NzcrHfeeU2zZj1nzDU2NuiFF57ULbfc1eXzAAAAAAAAAAD6Bq36AAAAAITU2rWr9MEHfzfNPfXULJ199kWm0JQkDR2a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379qGHV1dZo7d67mzp0rr9drzFssFk2bNk2XXXYZbfyAQ1Rtba2ee+45I1xVX1+vCy+8ULfffrtp3RNPPKHZs2cbY7vdrvvvv1/jxo3r7S0DPaKpqUlut9sIWG3ZskU///nPTWvWrFmj6dOnm+YuueQS3Xrrraa5++67T++//74kKS4uTna7XY888oiysrJM69avXy+bzSar1RqCKwIAAAAAdIbgFABgwNu9e7epelTbv5WVlWppaQl6XHx8vF/1qJycHKWkpAzYKkjbt283wlEbNmxQQUGBysvL1draGnC9xWLR8OHDTa328vLyTH/JC+DAtLb4tPKLzfp2oVe7mwL/twjg0JNgjdSE45OUP3aIYuIOvMpcc3OzFi1apDlz5uiHH34wPTZp0iRdeumlOu644wbsayBgIPB6vWppaVFysrnl50033aQvv/zSNPf2228rNzfXNDdt2jRZrVZlZ2fL4XAoPz9fP/3pT0O+byBUtmzZIrfbrc2bN6umpkY5OTkaP368aU37tn9tFixYYApI7dixQyeddJIxttvtOvHEE3XbbbeZjnO73WpoaFBKSgo/MwMAAABADyI4BQAYMNraUZSVlamkpMQISVVVVamzb4eJiYnKyckxhaOcTueA/0vQmpoaUxWpgoIC1dTUBF0/ZMgQo3pU283hcCg8PLwXdw0MXL+dcZMifamKDx+ulj2RptZbnfH5fEYQov39uLg45efnh2y/OHBbt2412swkJSUpOzu7j3eEUBocP0hDk6I0NClKw+xRSs8ZHLLnKigo0BtvvKFPP/3UVIUzIyNDF110kc477zwNHhy65wfQvzQ2Npra/pWWlv5/9u48Lup6+x/4i0U2kU1AcB3WGTZFBMR9QyX1uqQVopZL3TYzu9atzG5a3ntb7GplV7uZ4m5qRaWlaLngQkKKMOwgg4DADCAgwoAIvz/88vn5ccByYT4sr+fjMQ+d9+eM94A3kJnXnIN//vOforVkV69exfjx40WP8/DwwO7du0Vnly5dQnJysrD2jytBqSPIz88XVgNqNBrMnTtXdD0rKwvh4eGis7CwMKxevVp09t///hebN28GAFhYWMDR0RFvv/02BgwYIKrLyMiAtbW1TsiRiIiIiIiImsfgFBERdTharVY0OaopJFVQUHDXgJSDg4MoGOXq6go3NzdYWVnpsfu2p76+HtnZ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4OnpKTpLT0/HsmXLUFRUJJw98sgjeO+990R1O3bswLp164Q1gzKZDHPnzoVCodBL70REREQPisEpIhLJz8+HUqlEYmIikpKSWgzrGBsbw8PDA35+fujfvz9X7j2g6upqJCYmCpOklEolysvLdeoMDQ3h6uoqCqe5urrC0NBQgq6JiKi2thZbt27F1q1b0adPH+zevRsGBgZSt0VERG1QSUkJtmzZgu+++w51dXUAbq3RnDdvHmbNmgUzMzOJOyQiIildunQJubm56NKlC4YPHy669uGHH2Lv3r3CfVNTU7z11luYNGmSvtskok4qNTUVly9fRvfu3REYGCi69v7772P//v2is40bN+rUrVixAqampnB0dISjoyNkMhkGDhzY6r0TERER/REGp4g6sbq6OqSkpCAxMRGJiYm4ePEirl692mytg4MD/Pz8hJu3tzdMTEz03HHH0NjYCJVKJYTTEhMTkZOTg+a+HNvZ2cHPzw++vr7Cr3xBhYiobYiOjsbatWuh0WgAAGZmZoiMjOTUKSIiuqvS0lJs374d+/fvh1arBXBreu+cOXPw+OOPo2vXrhJ3SEREbc2ePXsQHR2NtLQ0IXzbXChh/fr16NKlC7y9vdG/f39YW1tL0S4RdTLp6elIT0+HRqOBWq2GRqPB8uXLYW9vL9Rcv34do0aNEj0uMDAQGzduFJ0lJSUhLy8Pffv2hbu7O58LJyIiIr1gcIqoEykpKcHFixeFkFRaWlqz06RMTEygUCiEkJSvry/3kz+AqqoqKJVKISSVlJSEqqoqnTpjY2MoFAohJOXn54eePXtK0DEREf0ZixYtwsWLFwEAU6ZMwZIlS7gqldqcL774AgAwduxYrnQhamMqKiqwfft27N27F9XV1QCAbt26ITw8HHPmzOHacyIialZaWhpSU1MxceJEWFhYiK6NHDlS+J4CAD179sQPP/yg7xaJiHRcvXoVn332GXJycpCTk4Oqqio8+uijWL58uahuzZo12LNnj3DfwcEBq1atQnBwsL5bJiIiok6EwSmiDurmzZvIzMwUTZMqLCxsttbe3h4DBgxA//79MWDAACgUChgbG+u5444jJydHCEglJSXh0qVLzU6TcnJyEk3xUigU6NKliwQdExHR/VCpVFi5ciVeffVV+Pr6St0OkQ6tViuseVm1ahUmT54scUdE1Jyqqirs3LkTu3fvFt5g0bVrV0RERDBARUREf9q1a9ewatUqxMfHC99PPD09sWvXLlFdUlISjh49iqCgIAQGBnKaCxFJoqSkBPX19Tpv2F66dClOnTolOouMjNR53uXRRx+FpaUl+vXrB5lMBrlcrrPmlIiIiOjPYnCKqIPQarVISkpCQkICEhISkJiYiJqaGp06Q0NDeHp6on///kJQytnZWYKOO4ba2loolUrRJK9r167p1JmYmMDLywt+fn7o378//P39OZWEiKidqK6uxpYtW7Bw4UKYm5tL3Q7Rn8bgFFH7cv36dXz99dfYtWsXysvLAdyaQDVv3jyEh4frTBUhIiJqiVKpRHx8PLp06YI5c+aIrm3atEm0GisgIACvvPIKvLy89N0mEZEOrVaLS5cuQaVS4fLly8jJycHy5ctFq0erq6sxcuRI0eOaC4qmp6cjMzMTrq6ucHFx4XM6RERE1CKOlCFqpyoqKnD+/HkhKJWWloabN2/q1HXr1k0UkvL19eU7yR5ASUmJKJyWnp7e7Oe9R48eQkiqf//+nOJFRNROHTp0COvWrUNJSQnMzc2xcOFCqVsiIqIOqmvXrli4cCEiIiKwe/dubN++HZWVlfjvf/+LXbt24cknn8Tjjz/On+eIiOgP+fr6tjgVt6KiQnT//PnzzU5AP3DgAIYNGwZbW9tW6ZGIqDlmZmbw9vaGt7d3izWGhoZ49913oVKpkJOTA5VKBU9PT526Y8eOYdOmTcJ9R0dHfPzxxwyKEhERkQ6+ik/UTuTn5yMhIQEXLlxAQkICcnNzm62TyWSioJSLi4ueO+04GhsbkZ2dLQSlWlp3aGRkBE9PTwwYMAADBgyAv78/HBwcJOiYiIgelpKSErz55pu4cOGCcKZUKiXsiIiIOgszMzMsWLAAjz32GHbv3o2dO3eivLwcn376KXbs2IEFCxZg5syZMDExkbpVIiJqh5YtW4bFixcjNTUVSUlJSE1Nhbu7u6gmMTERK1euBADI5XIEBQVh6tSpcHV1laJlIiIRMzMzTJo06Q/ramtrYW5uLmzmUKvVzW6BGDt2LPr27QuZTCas/RsyZMhD75uIiIjaLq7qI2qDGhoakJGRIQR2EhISUFJSolNnbGwMhUIBf39/+Pv7IyAgAFZWVhJ03DHU1dUJ6w6bVu9VVVXp1HXr1g1+fn5CUIpTvIiIOp66ujrMmDEDxcXFcHV1xeLFi3XGwBMREenDtWvXsGPHDuzevRvV1dUAAAcHByxatAjTp0/nZFsiInroDhw4IASnmrz77rs6QYX8/Hz07t1bn60REd2z4uJiYTJVeHi46FpeXh5mzJghOvP29sa2bdtEZ1lZWVCpVPD19YWTk1Or90xERET6xeAUURtw8+ZNpKSk4PfffxfW7zU9IX47c3Nz+Pn5YeDAgfD390f//v1hamoqQccdw/Xr14UJXufPn0dKSgrq6+t16nr27ClMkhowYADc3NxgYGAgQcdERKRPp06dwtWrV/GXv/xF6laIiIhQUVGBbdu24euvv4ZWqwVw62eVF154ARMnTuTPKERE9FBVV1fj3LlzOHv2LGJjY7F582Z0795duF5fX4/Ro0fDwsICwcHBCA4OxpAhQziFnYjalfz8fGzatAkqlQoqlQpVVVWYNGkS3n33XVHdV199hQ0bNgAAunfvDh8fHzz77LOQy+VStE1EREQPGYNTRBKor6+HUqnE+fPnhaBU0xPft7O1tRWmSQ0cOBByuRxGRkYSdNwxVFRUCOG0CxcuICMjA3d+CTQ0NISnp6cQkho4cCDs7e0l6piIiFpbcXExtm3bhsrKSrz33ntSt0NERPSHysvLsWXLFuzfvx+1tbUAbq1ReumllxASEiJxd0RE1FlcvHgRixYtEp15eXlh+/btEnVERPTgSkpKUF9frzNVasWKFTh06JDoLDIyEr6+vqKz1157TVj55+LiAldXV26rICIiagcYnCLSgxs3biAxMRHnz5/H77//jqSkJOEJ7tvZ29tj0KBBCAgIwKBBgyCTySTotuNQqVRISEhAYmIiLl68iNzcXJ2apqBUYGAgAgMDERAQAAsLCwm6JSIifcrLy8OWLVvw008/CdMGd+zYAYVCIXFnREREf45Go8HGjRvx448/oqGhAQAQEBCAZcuW8Z3vRESkFwkJCTh37hx+++03XLx4EfPnz8fixYtFNd9//z3UajUGDx6M/v37S9QpEdGD0Wq1UKlUyMnJEdb+vffee6KNILm5uZg5c6bocWFhYVi9erW+2yUiIqJ7xOAUUSuor69HcnIy4uLiEB8fj8TERNTV1enU9ejRQwhJBQQEoG/fvhJ023E0Te9KTExEQkICqqqqmq2Ty+UICAhAUFAQAgICYGlpqedOiYhIap988onwTmgTExOEh4dj/vz5sLKykrgzIiKie5OTk4PPPvsMJ0+eFM4mTpyIF198ET179pSwMyIi6kxqamqg1Wpha2srOl+wYAGSkpIAAObm5hg8eDBWr17NCSxE1OGoVCp8+umnSExMRHl5OQDghRdewMKFC0V1GzZswOHDh4WpVDKZDCNGjICdnZ0UbRMREREYnCJ6KBoaGpCRkYG4uDjExcXhwoULqKmp0anr2bOnKCjVq1cvCbrtOFJSUkSf8+ameAGATCbD4MGDERwcjICAAHTr1k3PnRIRUVtTXl6OyZMnIywsDM899xwcHBykbomoVfz1r38FACxcuJArvIg6OKVSiY8++gjJyckAAGNjY8yaNQtPP/00bGxsJO6OiIg6qzfeeAO//fYbrl27BgBwdnbGjz/+KKqpqalBbW0tv18RUYdRVFQEpVIJmUwGd3d30bUlS5bgzJkzorPm1v5lZWXpPJaIiIhaB4NTRPcpOztbmCj1+++/Cz/8387R0RGBgYEICgpCUFCQzl5sujc5OTmIi4vDuXPnWvycA7cmeQUFBSE4OBjBwcGwt7fXc6dERNRWFBUVYefOnXjxxRd13tFcXl7OJ+apQ9NqtRg+fDgAYNWqVZg8ebLEHRGRPhw7dgzr168XVpV37doVzzzzDMLDw2FsbCxxd0RE1FmlpqYiNjYWpqamiIiIEF07dOgQVqxYAYVCgaCgIAwZMgTBwcESdUpE1LpiY2MRFxcHpVKJlJQU1NTUICYmBubm5kJNZWUlxo4dCwDo1asXXFxcMHr0aEyfPl2qtomIiDo0PmNG9CeVlJTg7Nmz+O233xAXF4fS0lKdGjs7OwQGBgo3rt57MMXFxYiNjcW5c+cQFxeHsrKyZuusra0xaNAgIaAmk8n03CkREbU1KpUKW7ZswaFDh3Dz5k04OTlhzpw5ohqGpoiIqCMaM2YMRo4ciaioKPzvf/9DaWkp1q1bh2+//RZ/+9vfhEAlERGRPnl5ecHLy6vZazExMQCAtLQ0pKWlYfv27fjXv/6FCRMm6LNFIiK9CAkJEU2EzsnJEYWmgFth0yYFBQUoKChAnz59dP6s48ePw9zcHL6+vujatWvrNU1ERNTBMThF1ILr168L043OnTsHlUqlU2NlZYVBgwYJQSk3NzcJOu04amtrER8fj7Nnz+Ls2bPCO6TvZGFhgYEDBwpBKU9PTxgYGOi5WyIiaqtycnLw2GOPic7y8vIk6oaIiEj/jIyMMHPmTEyePBlffPEFdu/ejcuXL2Pp0qUICgrCm2++yTf6EBFRm/Haa69hxIgRiIuLQ0xMDMrKyjB06FCduqioKAwbNoyr1omoQ3FxcdE5Gzx4MHbu3AmlUincPD09derWr18vvHbVp08f+Pj44PXXX0e3bt1avW8iIqKOhKv6iP5PfX09EhMTce7cOfz2229ISUnBzZs3RTWmpqbw9/dHcHAwBg8eDLlczsDOA8rOzhaCUhcuXEBdXZ1OTZcuXTBgwABh7aGvry+MjIwk6JaIiNqLefPmIT09HRMmTMDChQvh6uoqdUtEesdVfUTURKVS4Z///CcuXLgAADA2NkZ4eDieeeYZvjOdiIjanPz8fPTu3Vt0du7cObzwwgsAboUMgoKCEBYWhv79+0vRIhFRmzBlyhQUFRUJ983MzHDq1ClRTXV1NaKjo+Ht7d1s+IqIiIgYnKJOrqioCDExMTh79izi4uJQU1Mjum5gYACFQoHBgwcjODgY/v7+MDExkajbjuH69etCUOrs2bNQq9U6NYaGhvD29kZgYCCCg4MxYMAAmJqaStAtERG1dfn5+bh+/TrkcrnoPC0tDVZWVujZs6dEnREREbU9Bw8exCeffCKsQbe2tsbLL7+MqVOnStwZERHR3W3duhWfffaZ6Oy5557D008/LVFHRERtQ0VFBZKSkpCSkoLr16/j9iCfAQAAIABJREFUlVdeEV2Pi4vD888/D+BWsMrb2xuzZs3iOlQiIqLbMDhFnYpWq0VcXBzOnj2LM2fOID8/X6emd+/eCA4OFqZKcaTpg2loaEBKSgpiY2Nx5swZKJVKNDQ06NQ5ODhg6NChGDJkCEJCQmBpaSlBt0RE1F6kpKRg8+bNOHHiBHx8fBAZGSl1S0RERO1CdXU1Nm7ciD179gg/mwUHB2PVqlVcfURERG1aYWEhfvnlF/z6669ITEzE1q1b4ePjI6r57LPPIJPJMG7cOFhYWEjUKRFR2/HTTz9h9erVom0fy5Ytw+zZs0V1R48ehZ2dHXx8fPhGdiIi6nQYnKIOLysrC2fOnBFWwdXX14uu29jYICgoCIMHD0ZISAicnJwk6rTjqKurw9mzZ3HixAmcPHkS5eXlOjXGxsbw9/fHkCFDMGzYMLi7u0vQKRERtUeLFy9GbGyscL9nz56IjIyEnZ2dhF0RERG1L5cuXcKqVauQnJwMADA3N8eyZcswffp0iTsjIiL6YyUlJbC3t9c5CwsLE+6PGDECjz76KEaMGKHv9oiI2pyMjAwkJydDqVTi8ccf15neHhoaKryWI5fLMWbMGE71IyKiTsNY6gaIHraqqiphotTZs2dRUlIium5oaAhfX18MHToUQ4cOhZeXFwwMDCTqtuOorKzEyZMncfz4ccTGxkKr1erUODs7C1OlBg8eDHNzcwk6JSKi9s7NzQ2xsbHw9fXFk08+iTFjxvB7ORER0T1ydXXFli1bsGPHDmzYsAE1NTVYvXo1oqOj8d5776F79+5St0hERNSiO0NTwK3glKenJzIyMgAAMTExcHZ2ZnCKiAiAp6cnPD09MWPGDJ1rTau8m6Snp6NPnz46dZcuXUJOTg4UCgV69erVar0SERHpGydOUYeQnZ2NmJgYnDp1ComJiTqr4Lp3744hQ4Zg6NChCAkJgZWVlUSddixFRUX45ZdfcOLECSQkJDS7gs/X1xcjR47EyJEjOVWKiIjuSVxcHH7//Xc899xzovPS0lLk5uYiICBAos6I2o/4+HgAgIuLC0MQRNQilUqFFStWIC0tDQBgaWmJ1157DZMnT5a4MyIionuXn5+P6OhoHD16FK+++qrOz46RkZFwcnISTaciIiLgypUrSEpKQmpqKry9vTFhwgTR9Q0bNuCrr74CcGubi6+vLxYtWgQ/Pz8p2iUiInpoGJyidqm+vh7x8fGIiYlBTEwMrly5IrpuZGQEPz8/YaqUQqGQqNOOp7i4GIcOHcKRI0eEJ9VvZ2pqiuDgYIwaNQqjRo2Cra2tBF0SEVF7dePGDRw6dAi7du1CZmYmACAqKgq9e/eWuDOi9ker1WL48OEAgFWrVjEAQUR31dDQgO3bt2Pjxo24ceMGAGDo0KF45513GLwkIqIOo7q6GqGhoairq4OVlRUeeeQRzJgxg2/4JCL6E1auXIkDBw6Izv73v//pBFRVKhVkMpk+WyMiInogDE5Ru1FeXo6TJ08iJiYGsbGxqKmpEV23srLC0KFDMXz4cAwfPhyWlpYSddrxaDQaHD58GEeOHEFycrLOdVtbW4wYMQIjR45ESEgIzMzMJOiSiIg6gsWLFyM2Nla437VrV6xevZqrFYjuA4NTRHQ/7pw+ZW1tjTVr1mDgwIESd0ZERPTgcnJysGzZMly+fFk48/T0xK5duyTsioio/SgrK8O5c+dw5swZxMfH49tvvxW9JlRZWYmxY8fCwsICvr6+8PPzw4gRI+Dr6yth10RERHdnLHUDRHeTnZ2NkydP4sSJE0hOTsadOT8XFxeMGDECI0aMwIABA2BoaChRpx1PWVkZoqOjceTIEVy8eFHnevfu3TFmzBiMHz8eAQEBMDAwkKBLIiLqaEJDQxEbG4s+ffpg9uzZmDp1KgO5REREeiSTybBt2zZh+lRFRQWee+45vPLKKwgPD5e6PSIiogfi4uKCb7/9FklJSYiKisLhw4cxadIknbqSkhLY29tL0CERUdtmZ2eHsLCwFtedxsfHA7g14e/cuXM4d+4cGhoaGJwiIqI2jROnqE1paGjA+fPncfLkSZw8eRL5+fmi6126dMGgQYMwfPhwjB49Gk5OThJ12jHV19fj2LFj+P777/Hbb7/pBNXs7OwwduxYhIaGYtCgQQxLERHRfUtMTMRPP/2EpUuXioJRWq0Wv/32G0aNGiVhd0QdAydOEdGDysjIwNKlS6FWqwEA48ePx6pVq2BiYiJxZ0RERA+HVqtFfX29zvaCxx57DDdv3sS0adMwbdo02NjYSNQhEVH7cuPGDSQkJCA2NhaxsbFIT0/HunXrhOcnmixduhSNjY0IDg5GcHAwPDw8JOqYiIiIwSlqA2pra3Hq1CkcO3YMp06dQlVVlei6hYUFhg4divHjx2Po0KEwNzeXqNOOKysrC9999x0OHTqEiooK0bXbw1IBAQGc6kVERPft2rVrOHjwIL777jtkZ2cDAF599VVOryBqRV988QUAYOzYsXwSkojuS3l5OV599VUkJCQAADw8PPDZZ59xCgcREXVYSqUS8+fPF51NnToV//jHPyTqiIio/SovL4eZmZnojZM1NTUYMWKEqM7GxgZHjx7Vd3tEREQAuKqPJHLjxg2cPn0a0dHROHnyJLRarei6g4MDRo0ahdGjRyMwMBDGxvy/6sN27do1/PTTT/jxxx+RlpYmusawFBERtYZff/0Va9asEe7LZDJOjyRqZc8++6zULRBRO2djY4MvvvgCa9euxZ49e5CZmYnw8HCsXbsWfn5+UrdHRET00Hl6emL16tWIiooSVk5x2iIR0f1pbmJfQ0MDli5divj4ePz++++oqamBs7OzTl1+fj6ysrIwePBgDlUgIqJWxYlTpDc3b95EbGwsjhw5guPHj+tMlpLJZBg9ejRGjx7NXcetSKVSYceOHfj5559RW1srnBsZGWHYsGGYMWMGhg4dCiMjIwm7JCKijqiurg7jx4+Hn58f5s6di5CQEKlbIiIionsQHR2Nd955Bzdu3ICxsTH+85//YOjQoVK3RURE1GoKCgoQFRWF0NBQyOVy0bVt27bB3d2d3wuJiB5QQkICamtrMXjwYNH5pk2bsHHjRgCAv78/hgwZghkzZsDOzk6KNomIqANjcIpaVUNDA+Lj4xEdHY1jx47prIHr27cvJkyYgEmTJqFv374Sddk5nDlzBrt27UJsbKzovFevXpg2bRqmT5/Of2wSEdEDu3btGr799lscOHAAGzZs0Fnjc/XqVdja2krUHRERET2ojIwMvPTSSygtLYWxsTE++OADjBo1Suq2iIiI9Kq8vByhoaEAADc3N8ybNw9TpkyRuCsioo7lH//4B3766SfR2YEDBzjBnoiIHjoGp6hVJCQkIDo6Gr/88gtKS0tF15ydnTF+/HhMmDABCoVCog47h7q6Ohw4cAC7d+9GTk6OcG5sbIwxY8ZgxowZCAoKgoGBgYRdEhFRR5CXl4cNGzYgOjpaOFu0aBGef/55CbsiIiKi1lBcXIynn34ahYWFMDIywocffsjwFBERdSpKpRJLlixBZWWlcDZjxgy89dZbEnZFRNTxaDQanDp1CmfPnoVGo8GWLVtE11NSUvDuu+9izJgxGDNmDDw9PSXqlIiI2jMGp+ihSU5OxpEjR3DkyBEUFxeLrjk4OCA0NBQTJkyAn5+fRB12HvX19YiKisKXX34pCq5ZWVlh1qxZmD17Nqd9EBHRQ1VQUIDp06ejsbER9vb2mD59Oh599FE4OjpK3RpRp/bFF18AAMaOHQsPDw+JuyGijoThKSIiImD//v348ccfkZycjB07dvCNwkREenb7Oj8AcHJywuLFixEWFiZhV0RE1N4wOEUPJCMjA9HR0Th69Cjy8/NF12xsbBAaGorx48cjICCAU430oLGxEdHR0diwYYPo78PZ2Rlz5szB9OnTYWZmJmGHRETUEZw5cwYKhUJnxeuXX34JV1dXjBs3TqLOiOh2Wq0Ww4cPBwCsWrUKkydPlrgjIupoiouLsWDBAqjVaoaniIioU9NoNHBwcNA5/89//oOpU6fC3d1dgq6IiDq+vXv3Yu/evVCpVMLZ6tWrGZwiIqJ7wuAU3bOqqiocOHAA33//PTIzM0XXunXrhjFjxmDChAkICgqCkZGRRF12PrGxsVi/fj3S0tKEM4VCgXnz5iE0NJR/F0RE9EDy8vLw/fff4+DBg9BoNHjppZfw1FNPSd0WEd0Fg1NEpA9XrlzB008/LYSnNm/eDB8fH6nbIiIiktyZM2ewZMkSAEBgYCDmzJmDESNGSNwVEVHHVFZWhnPnzuHUqVN488030bVrV9H1iIgIeHt7Y+LEiQgKCpKoSyIiaqsYnKI/pbGxEfHx8fj+++/x66+/oq6uTrhmYWGBkSNHYuLEiRgyZAiMjY0l7LTzqa6uxrvvvoujR48KZ7169cKSJUs48YOIiB6K6OhoLF++XHTm7++PTZs2SdQREf0ZDE4Rkb5cuXIFCxYsQGlpKRwcHLB3715069ZN6raIiIgk9fXXX+Ojjz4Snb3xxhuYNWuWRB0REXVOycnJojeAWltb4/nnn+fXYyIiEjDhQndVUlKCH374AT/88IPOKr6BAwdi2rRpCA0N5fo3iaSmpuLvf/87CgsLAQBdu3bFwoULMWfOHAbYiIjooRk6dCiMjIxgYGCA4cOHY+rUqRg2bJjUbREREVEb0bNnT3zyySeYP38+NBoNli9fjk8//RQGBgZSt0ZERCSZJ554AuPGjcOuXbuwb98+NDY2YuLEiVK3RUTU6djY2GD27Nn4+eefUV5ejoqKCqlbIiKiNoYTp0jHzZs3ERMTg++//x6nT59GQ0ODcO3/sXfnYVGW+x/HPywiIKKGS4YauGtuIaYZlWtHU9HUSo/asXLBNDNTM4/l0mZpZacs13ItK+woaW64VFRqaFguKJqE4IKQqCwjgvz+8DC/JkhRgZsZ3q/r6mqe+3lm5oMzLPcz3+f+Vq5cWd27d1evXr1Uo0YNgylLt8uXL2vx4sWaN2+esrOzJV35UHvKlCny8fExnA4AYI8sFos2bNigr776SkOHDlWbNm1s9m/fvl3NmzdXpUqVDCUEAAAl3fLlyzV79mxJ0ogRI/Tkk08aTgQAQMlw4cIFHThwQK1bt7YZT0hIUHZ2tmrVqmUoGQCULnv27NHXX3+tp556SrfccovNviFDhqhRo0bq1auX6tSpYyghAMAECqdgFR8fr9WrV2vt2rVKSkqyjru4uOiee+5Rz549FRQUJBcXF4MpYbFYNH78eP3444+SJA8PD02YMEE9evQwnAwAYI8SExM1b948bdy4URaLRZLUpUsXvfLKK4aTAQAAe/TUU09p165dcnJy0ocffqjAwEDTkQAAKLEmT56sDRs26NFHH9WIESPk5eVlOhIAlEoHDx7UoEGDrNsNGzZU37591atXL4OpAADFhcKpUi4zM1Ph4eFas2aNdu/ebbOvVq1aCg4OVnBwcJ6qa5iRmpqqUaNGad++fZKku+66S9OmTVOVKlUMJwMA2KukpCR16dLFul2nTh3179+fkwIAAOCGpKSkqE+fPjp37pyqV6+uNWvWyNnZ2XQsAABKnDNnzqhr167W7VtuuUXPPPOMunXrZjAVAJROcXFx+vjjj7Vp0yZdvHhRktSuXTvNmjXLcDIAQHGgcKqUOnLkiFatWqX169crNTXVOu7u7q6OHTuqZ8+eCggIMJgQ+RkzZowiIiIkSZ06ddKMGTMMJwIA2JOdO3eqbt26edq6Tpw4UeXLl1fPnj3VpEkTQ+kAAICj2LJli55//nlJ0iuvvGJTpA0AAP7fwYMHNX36dMXExEiS6tatqxUrVtD1AQAMSU9P15YtW7RmzRr1799fHTt2tNm/aNEi+fj4qFOnTqwSCAAOhMKpUiQnJ0fbtm3T8uXL9csvv9jsa9y4sYKDg9W1a1eVK1fOUEJcTXh4uCZOnChJatGihebOnStXV1fDqQAAJd2pU6cUFhamsLAwnTp1Sk8//bT+9a9/mY4FAAAcWE5Ojvr06aO4uDjVqVNHK1eulJOTk+lYAACUSDk5Odq+fbsWLVqkSZMmqXHjxqYjAQDykZqaqk6dOikrK0tly5ZVjx499K9//UvVq1c3HQ0AcJMonCoFLBaLwsLC9Mknnyg+Pt46XqFCBXXt2lW9e/dW7dq1DSbEtVy+fFkPPvigkpKSdPvtt2vp0qUUuAEArikyMlIhISE2Y4GBgZo7d66hRACKk8ViUVBQkCRp2rRptPwAUKzWrVunKVOmSJI++ugjNWvWzHAiAADsU0REhPXvegCAOdHR0ZoyZYqOHj1qHevXr5/GjRtnMBUAoDCwXI0DO3v2rD755BOtWrVK58+ft477+flpwIAB6tatm9zc3AwmREFt3bpVSUlJkqRRo0ZRNAUAyCM9PV1OTk7y8PCwjgUGBsrLy0upqakKCgpS7969dd999xlMCQAASosHHnhAr732mi5evKhvvvmGwikAAG7A4sWL9f777+uee+7RxIkTWdUEAAxq2LChPvvsMx09elQrV67Uf//7X/Xt29d0LABAIaBwygHFxsZqyZIl2rBhgy5dumQdDwwM1MCBA7k6xQ7ltlZ0dnZWmzZtDKcBAJQke/fu1Zo1a7Rx40aNGzdODz30kM3+1157TfXr11flypUNJQQAAKVRmTJlFBQUpC1btuibb77R008/bToSAAB2Z+3atZKk77//Xg8//LCmTp2qTp06GU4FAKVbnTp19O9//1sjR45UxYoV8+wfNmyYWrVqpYcffjjf/QCAkofCKQeyY8cOrVixQj/++KN1zNXVVQ888IAee+wx1a1b12A63IxTp05Jkpo0aWKzkggAoPSKjY3V2LFjFRcXZx0LCwvLUzjVtm3b4o4GAAAgSbr33nu1ZcsWxcbGKiEhQb6+vqYjAQBgV0JDQ7Vw4ULNnTtXFotFEydO1ObNm1WpUiXT0QCg1MuvKCoyMlJ79uzRnj17tHjxYvXo0UMDBw5UjRo1DCQEABQUhVN2LisrSxs2bNCKFSsUExNjHffy8lKfPn3Uv39/VphwALRUBAD8VfXq1ZWYmChJKl++vLp27arevXsbTgWgJHF3d1dAQIAkycfHx3AaAKXRnXfeab39888/UzgFAMANGDJkiIKCgjRhwgQ9/PDDFE0BQAnm6empwMBARUZG6uLFiwoNDZWbm5vGjh1rOhoA4CoonLJTqampCg0N1WeffaYzZ85Yx319fdW/f3/16tVL7u7uBhOiMNWuXVvSlZZ9KSkpLO0JAKXIyZMntWbNGt13331q3Lixdbxs2bIKCQlR5cqV1aVLF4MJAZRk8+fPNx0BQCnm6+srd3d3WSwWxcbGmo4DAIDdatiwoT755BN5eXmZjgIAuIrGjRtr7ty5io6O1rJly7Rx40b179/fdCwAwDU45eTk5JgOgYJLT0/XihUrtHz5cqWlpVnHmzZtqoEDB6p9+/ZydnY2mBBFIS4uzrqKyJNPPqkRI0YYTgQAKEqXLl3S1q1btWbNGu3atUuS1Lt3b02aNMlwMgAAgOszePBg7du3Tx06dNCbb75pOg4AAA4lKipKH3zwgd544w1WogKAEii/xRB27dqlDz74QAMGDFDnzp0NJQMA/BkVNnYiMzNTy5cvV3BwsObNm6e0tDQ5OzurY8eOWrp0qT7++GN17NiRoikHVatWLbVr106StGjRIh05csRwIgBAUTp8+LD+/e9/W4umJCk7O9tgIgAAgBtTp04dSdLvv/9uOAkAAI4lLS1NY8aM0Z49e/Too48qKirKdCQAwF/k10Hmvffe0759+/TCCy+ob9+++v777w0kAwD8GStOlXBZWVkKCwvTwoULlZiYaB3v1KmTRo4cqZo1axpMh+KUmJiohx56SBcvXpSfn5+WLl0qT09P07EAADfphx9+UKNGjfJcGdq3b19JUo8ePdSzZ0/atAIAALs0b948LViwQBUrVlR4eLjpOAAAOJStW7fqpZdeksVikYuLi5599ln169fPdCwAwFXs2bNHy5cv17fffmsdmzdvnlq2bGkwFQCUbq6mAyB/OTk52rhxo+bNm6fjx49bx4OCgjRq1CjVrVvXYDqYULVqVT3//POaPn26YmNjNWnSJM2ePdt0LADADTh16pRWr16tr776SqdPn9bYsWP1z3/+0+aYDz74QFWrVjWUEICjmDdvniSpQ4cOqlevnuE0AEqj3At+LBaL4SQAADieDh06yM/PT88++6wSEhIUHR1tOhIA4BoCAgIUEBCgw4cP64033tDly5cpmgIAw1hxqgT69ttv9cEHH9i0Y2vRooXGjh2rxo0bG0yGkuC1117Tl19+KUnq3r27pk6dajgRAOB67Ny5UyNHjrQZa9Omjd5//31DiQA4KovFoqCgIEnStGnT1K1bN8OJAJRGoaGhmjFjhiQpMjLScBoAABxTamqqlixZkud8AwCg5EtJScnTbeDgwYO69dZb83QpAAAUDVacKkGioqL01ltv6eDBg9axxo0b66mnnlKbNm0MJkNJMmnSJMXFxSkyMlJr166Vt7e3xo4dazoWAKCAWrRoIQ8PD126dEn33nuvevbsqbvvvtt0LAAAgCLx5xbzFotF7u7uBtMAAOCYvLy8KJoCADv116IpSZo4caLOnTunESNG6NFHHzWQCgBKF2fTASBFR0dr5MiRGjJkiLVoqnbt2po5c6aWLl1K0RTyeOedd9SgQQNJ0ieffELLPgAoYY4cOaKFCxeqX79++vXXX232lS1bVq+//rq+/vprzZw5U0FBQXJxcTGUFAAAoGi5ublZb1+8eNFgEgAASpecnByNHz+eFR8BwM78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DvYhqYCAALy9vQ3UitQ8q1evBqBhw4b27UBERKqLzp07a3BKRERqvUaNGjFkyBD76rGZmZlXrNx88OBBioqKKCwsZN++fezbt4/FixdjsVho3749PXr0ICAggMDAwHLbTu/ll19m+/btbNy4kVWrVpXLzxQRkdrp0qVLvPnmmwC88847hISEGC4SEfltGpwSERERkWuy2WwcOXLEPiSVmJhIWlraVec5OTnRuXNn+1OwAQEBuLi4GCgWqflsNht169Zl1KhRODg4mM4RESkTX19foqKiOHLkCIWFhdqmV0REBPDw8KB///70798fAKvVyvfff2//Pfz777/HarXaf0c/cuQIy5YtA6BFixYEBAQQEBBAjx49aN68eZn/+19//TXbt28HYOjQoeX3xkREpFbKycmxf12vXj2DJSIi1093qEREREQE+Peg1O7du+3b712+fPmq81xcXOjatSsBAQF0796drl27UrduXQPFIrXPyy+/TG5uLkVFRaZTRETKzM/PD4CioiL2799P9+7dDReJiIhUPS4uLgQHBxMcHAyU/Lt58OBBEhMT2bNnD0lJSfbf1VNSUkhJSWHNmjUANG7c+IqHmtq1a/er/62MjAxee+01ANq2bcvDDz9cge9MRERqg+zsbPvXbm5uBktERK6fBqdERMrgnnvuITU11X7DX0SkOrPZbBw7doyEhAQSEhJITEwkIyPjqvPc3d3tW+716NEDPz8/6tSpY6BYRABcXV1NJ4iI3JDOnTvj5OREQUEBcXFxGpwSERG5DnXq1MHf3x9/f38eeugh++/ye/bssQ9SpaamAnDhwgU2btzIxo0bAfDy8rIPUQUEBNChQwcsFov9Z1+8eBEPDw8yMzOZNWuWVoMUEZGb9ssVpzQ4JSLVhcVms9lMR1yP0NBQCgoKmDJlCpGRkaZzRERERKql48ePk5CQwO7du9m9ezfp6elXnePt7W1/QrVHjx5X3VgVERERuVGTJk1ix44d+Pv78/HHH5vOERERqRFOnz5tX5EqMTGRM2fOXPO80gejAgMDCQgIoFOnTtSpU4edO3fSq1evSq4WEZGaKDk52T7AO27cOFxcXAwXiYj8Nj0+ICIiIlKDnT9/nri4OOLj49m1axdpaWlXnePl5UVAQABBQUEEBQX95lL+IlL5fv75Zxo2bGg6Q0TkpvXu3ZsdO3awf/9+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Z4mIiFRJsbGx/N///R/z58+nS5cupnOMadSoEXfffTd33303NpuNH3/8kbi4OHbu3ElSUhL5+fmcOXOG5cuXs3z5chwdHenatat9kKpjx45YLBbTb0NEpEa4dOkSAD4+Pvq7VUSqFQ1OiYiUga+vL25ubrRu3dp0iohUkOPHj7NkyRKioqLIz8+3Hw8KCuKBBx6gX79+ODg4GCwUkZrkk08+ISwsjLZt21dsP9kAACAASURBVJpOERExrnHjxrz++us8/vjjJCcn88ILLzBnzhzTWSIiIlXOihUrePXVVwF46qmnWLdunYaNAYvFQseOHenYsSPjxo0jLy+P3bt3ExcXx44dOzhx4gSFhYXs2bOHPXv2MH/+fLy8vAgJCSE0NJTevXvToEED029DRKTaKl1xSqupi0h1Y7HZbDbTEdcjNDSUgoICpkyZQmRkpOkcERERqWGOHj3KO++8Q2xsrP2Yi4sLd911F5GRkbRp08ZgnYjURLGxsUyePBmAhQsXEhQUZLhIRKRqeO+99/j73/8OwNNPP82YMWMMF4mIiFQdn332GW+88QYAjo6OzJ49m/DwcMNV1UNqaiqxsbH2FakuX7581TmdOnWiT58+9OnTB39/fz08JyJSBlFRUcTFxeHj48MTTzxhOkdE5LppcEpERERqteTkZBYsWMDmzZvtxzw8PHjggQeIjIykfv36ButEpKY6d+4cY8eOJSMjg44dO/Lpp5+aThIRqTJsNhuPP/44u3fvpk6dOvz973+na9euprNERESqhPnz57No0SIaNmzIG2+8QefOnU0nVUvFxcX88MMP7Nixgx07dvDDDz9QXFx8xTmenp6EhobSp08fevfujaenp6FaEREREalIGpwSERGRWikrK4t3332X5cuX22+MNWzYkDFjxnDffffh6upquFBEaiqr1cr48eM5evQozs7OfPbZZ9oGWETkP6SnpxMZGcnFixfx9PTko48+0t+VIiIi/7Jw4UJGjx5Nw4YNTafUGFlZWezYsYPvvvuO7du327ebKmWxWOjcuTN9+vShb9++dOrUCYvFYqhWRERERMqTBqdERESk1lm7di1vv/02ly5dAqBp06Y89NBDjBw5krp16xquE5GarqCggFmzZrF+/XpmzJhBRESE6SQRkSrp2LFjPPLII2RlZeHj48MHH3xAixYtTGeJiIhIDWez2Th06BDfffcd33333TVXo/L29qZv376EhYUREhKiB/BEREREqjENTomIlMGKFStITU3Fz8+PsLAw0zkiUkZHjhzh1VdfZd++fQC4uLjwyCOP8NBDD+Ho6Gi4TkRqm/j4eIKDg01niIhUaT/88AN/+MMfyMvLo0mTJnz88cc0atTIdJaIiEiliI6OJioqijlz5uDg4GA6p9bKzMy8YjWq9PT0K153dHQkKCiIvn37MmDAAJo2bWqoVERERERuhAanRETKYOzYsRw+fJiRI0fy/PPPm84RkTL49NNPefvttykqKgIgPDycqVOn4uPjY7hMRERERH7N7t27+eMf/0hhYSGtWrXigw8+wNvb23SWiIhIhcnNzeVvf/sby5YtA+DRRx/lscceM1wlULIa1Q8//MC2bdvYtm0bP/7441Xn3HLLLfTv35/+/fvj5+enLf1EpFY4e/Ys8+bNo1GjRowfP15DpCJSrWhpBREREanRcnNzef755/n2228BaNmyJS+++CLdu3c3XCYitUlGRgaenp6mM0REqqXAwEDmzp3L008/zalTp/j973/PwoULadasmek0ERGRcnfo0CGmTp3KuXPnAAgKCuL+++83XCWlLBYL/v7++Pv7M3HiRFJTU9m6dSuxsbHEx8eTl5fHsWPHOHbsGB999BE+Pj6EhYXRv39/evXqhZOTk+m3ICJSIc6cOUNMTAwADzzwgOEaEZGy0dquIiIiUmOdOnWKMWPG2Iemhg4dyrJlyzQ0JSKV6vLlyzz88MM8++yz5OXlmc4REamWwsLCeOGFF4CSG/IPPfQQBw4cMFwlIiJS/ho1akRWVhYAEyZMYOHChXh5eRmukv/Gx8eHUaNG8dZbb7F582b++te/cvfdd9OgQQMAUlNTWblyJZMnT2bgwIFMnTqVdevWkZGRYbhcRKR8Xbhwwf61VpsSkepGK06JiIhIjXT27FnGjRvH5cuXqVOnDk8//bSe0BQRIyZPnszJkyc5efIkQ4cOpX///qaTRESqpWHDhmGxWJg5cybp6ek8+uijzJkzhz59+phOExERKTcNGzZk1qxZODo6EhoaajpHysDFxcW+RZ/NZuP7778nJiaGmJgYkpOTsVqtbN26la1bt2KxWOjevTsDBgxg4MCB/M///I/pfBGRm1I6OFWvXj1cXFwM14iIlI0Gp0REyuCee+4hNTUVPz8/0yki8isyMzOZOHEily9fxmKx8MorrzBo0CDTWSJSyxQVFTFlyhT27t0LwMSJEzU0JSJykyIiIvD09OTPf/4zeXl5TJ48menTpzN8+HDTaSIiIjfku+++u2oIOCwszFCNlBeLxULXrl3p2rUrkyZN4syZM3zzzTfExMSwd+9eiouLSUxMJDExkTfffJNbb72VgQMHMnDgQG699VbT+SIiZXbx4kUAGjdubLhERKTsLDabzWY64nqEhoZSUFDAlClTiIyMNJ0jIiIiVdjEiROJj48H4LnnnuPee+81XCQitdGZM2cYO3YsWVlZREREMGPGDNNJIiI1RlJSEpMnT7ZvZTR+/HieeOIJw1UiIiLX7+jRo8yYMYNDhw4xf/58evXqZTpJKklGRgYxMTFs2bKF2NjYq15v1qwZ4eHhDBo0CH9/fwOFIiI35uzZs+Tk5HDLLbeYThERKRMNTomIiEiNkpSUxIQJEwB49NFHeeyxxwwXiUhtduzYMd58803eeustHB214K+ISHk6evQoEydO5NKlSwCEhITw6quvUr9+fcNlIiIiv+6f//wnc+fOtf85PDyc1157zWCRmJKTk8N3333HN998Q2xsLDk5OVe8XjpENXjwYHx9fQ1VioiIiNRsGpwSERGRGmXKlCnExMTg4eHB119/rUEFERERkRrsp59+4n//939JSUkBSj5cnDdvHh07djRcJiIicm3JycmMGjUKAFdXV5588klGjx5tuEqqitjYWL755huio6PJzs6+4rUmTZowZMgQwsPDNUQlIiIiUo40OCUiIiI1St++fbFarYwdO5annnrKdI6I1DJZWVm4u7ubzhARqVWysrKYPn26fasbJycnZs6cyeDBgw2XiYiIXNubb77Jrl27mDt3Li1atDCdI1VQYWEhO3fuZNOmTWzdutW+PXGpli1bMmTIEIYOHUrLli0NVYqIiIjUDBqcEhEpg9mzZ3Pq1Cn69evHgw8+aDpHRP5DYWEhISEhAEybNs3+BKeISGXYunUrs2fPZuHChbRv3950johIrfPRRx+xYMECSm913X333fz5z3/GxcXFcJmIiNRmGRkZeHp6XnHMarXq3ye5boWFhezYsYOvv/6ab7/99qqVqPz8/Ljzzju544478Pb2NlQpIrVZTk4OKSkpNG7cGC8vL9M5IiJl5mA6QESkOjl48CB79uzh5MmTplNE5Bq0LZ+ImBIbG8vUqVNJT0/XanciIoY8/PDDvPvuu/aV/9asWcP999/PwYMHDZeJiEhtlJOTw5w5c7jrrrs4f/78Fa9paErKwtHRkbCwMGbNmkV0dDTz5s3jjjvuwNXVFYADBw7w17/+lSFDhvDHP/6RdevWkZOTY7haRGqTH374gTFjxhAeHk5ycrLpHBGRMtPglIiIiNQofn5+AMTHxxsuEZHaIj4+nqlTpwLg6urKnDlzDBeJiNRewcHBLF26lG7dugFw5swZfv/737N48WKqyaLrIiJSA0RFRTFixAiWLVuG1WplwYIFppOkhnBycmLAgAG8/PLLREdH88orr9C3b1/q1KlDcXExO3fuZMaMGYSHhzNt2jS2bt1KQUGB6WwRqeHOnDlj/7pp06YGS0REbowGp0RERKRG6dChA1CyZdbFixcN14hIbbBs2TIKCwtxcXHh3XffxdfX13SSiEit1rRpU/7+978zceJE6tSpQ2FhIX/729/4wx/+wNmzZ03niYhIDRcbG8v06dNJS0sDYNSoUfYHLUTKk7OzM4MHD+att97i66+/5tlnn6VLly4A5OfnEx0dzdSpU7njjjt4/fXXOXDggOFiEampfvrpJwAaNGigVRVFpFrS4JSIiIjUKPfccw8ARUVFLFq0yHCNiNQGs2bNonfv3rz77rv2m9QiImKWg4MDjzzyCB9//DHNmjUDIDExkfvvv59Vq1YZrhMRkZqsd+/etG/fniZNmrBo0SKmTZtm30ZWpKJ4enoyevRoFi1axOrVq3n88cdp1aoVAJmZmXzxxRf87ne/Y/To0XzyySf2wT4RkfJQOjhV+ruXiEh1Y7FVk3XKQ0NDKSgoYMqUKURGRprOERERkSrstddeY/ny5QC8/vrrDBo0yHCRiIiIiJiSk5PDG2+8ccXAVGhoKC+++CI+Pj4Gy0REpCZIT0/Hy8vrimOHDh2iRYsWGpgS4/bv38+6devYuHEjly9fth93cHAgJCSEiIgIBgwYQN26dQ1Wikh1t2zZMqKiomjZsiUzZ840nSMiUmYanBIREZEax2q18uCDD5KcnIyjoyMLFy6ke/fuprNEpIbYuXMnvXr1Mp0hIiJltH37dmbOnMnPP/8MgIeHB9OmTWPw4MGGy0REpDpKTk7mtddeIz09nc8//xyLxWI6SeS/KigoICYmhnXr1rF9+3aKi4vtr7m7uzN48GCGDRumVZRFRESkVtLglIiIiNRIycnJPPzww2RmZuLq6sqiRYto37696SwRqcaKioqYOXMm69ev1+8lIiLV1OXLl3nppZf45ptv7Mf69OnDiy++iLe3t8EyERGpLpKTk1m0aBFfffWV/dicOXO47bbbDFaJXL/09HTWrVvHunXrOHr06BWvtWnThuHDhzNs2LCrVlITERERqak0OCUiIiI11pEjR5gwYQLZ2dm4uroyZ84cQkNDTWeJSDWUlZXF1KlTSUhIAMDf35+PP/7YcJWIiNyojRs38tprr9m3rKlfvz5TpkwhIiLCcJmIiFR1f/3rX/n8888BaNCgAZMmTWLYsGFacUqqpUOHDrFu3TqioqJIT0+3H69Tpw5hYWGMGDGC0NBQ6tSpY7BSREREpGJpcEpEpAwOHjxIdnY2jRo1onXr1qZzROQ6HDp0iD/96U/2LVkmT57Mgw8+aLhKRKqbxx9/3D40dfvtt/Pqq68aLhIRkZv1888/M3PmTLZv324/FhgYyEsvvUSTJk0MlomISFWWnp7OsGHDGDFiBI8//jhubm6mk0RuWmFhITExMaxatYq4uDh++dGhj48PERERjBgxghYtWhisFBEREakYGpwSESmDsWPHcvjwYUaOHMnzzz9vOkdErtOlS5d45plnSEpKAuC2227jpZdewsXFxXCZiFQX33//PRMmTOD2229n1qxZeppcRKQGiYqKYu7cuWRkZADg6urKE088wX333ae/70VEarGcnBw++eQThg8fTrNmza54LTMzEw8PD0NlIhXrwoULrF69mtWrV3Pu3LkrXgsICGD48OEMGjRI99VEBIDo6Gg2b95Mq1atmDhxoukcEZEb4mA6QERERKSiNWjQgA8++IDbb78dgC1btjBu3DiSk5MNl4lIddGlSxfef/99Zs+erQ/RRURqmCFDhrB8+XIGDhwIQG5uLnPnzuWRRx7h1KlThutERKSyWa1WPvnkE4YNG8YHH3xwzS26NTQlNVnjxo159NFHWbduHW+//TaDBg2yv7Znzx5efPFF+0NF+/fvN1gqIlVBQkICmzZtYsuWLaZTRERumAanREREpNZ45ZVXGDFiBADHjh3jwQcfZNu2bYarRKQqunz58lXHunXrZqBEREQqQ4MGDZg7dy6vvfYaXl5eAOzbt4/7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IlLzZGVlXXVs6NChdOrUiaeeeooNGzbwpz/9iUaNGhmoE5GyaNasGZMmTWL9+vW8/vrrhISEYLFYKCoqIiYmhsmTJzNs2DDef/99Lly4YDpXRP7l2LFj9q+12pSIVHcanBIRERH5FR06dOCzzz4jKCgIgCNHjhAZGcmOHTsMl4lIWUVERDB//nz+8pe/ULduXdM5IiJSw3h4eDBjxgwWLlxI06ZNAdi/fz/3338/H330EUVFRYYLRUSqv5SUFObOncudd95JVFTUVa8vWbKEsWPHamVZkWrI0dGRQYMG8c4777B27VoeeeQRfHx8ADh//jzvv/8+ERERTJ48mZiYGF1biRh29OhRAFxcXOy//4iIVFcWWzVZMzw0NJSCggKmTJlCZGSk6RwRERGpZYqLi5k/fz6LFy8GwGKx8NhjjzFhwoQy/ZygoCASEhIqIlFEfuGLL77A19cXf39/0ykiIlILWa1W3nvvPT799FP71jK33HILL730Eh07djRcJyJS/Rw/fpx33nmHb7/91n6sW7du9q24RaRmKioqYtu2baxatYrvvvvuim2QfXx8GD58OCNHjtTQhogBGzZsYOXKlTg5OTF//nzTOSIiN0WDUyIiIiJlsGXLFl544QWsVisAffv2Zfbs2bi7u//m95auWuXk5KQVq0QqyE8//cT06dPZt28fLVu2ZOnSpTg7O5vOEhGRWurw4cO88MIL9m0sHBwcePDBB3n88cdvaPVDDeGLSG118uRJ7r33XqBkhb8777yTkSNHamsgkVrkwoULrFq1itWrV3P+/Hn7cYvFQq9evbjnnnvo168fjo6OBitFRESkOqozY8aMGaYjrseHH35IcXExvXv3pkuXLqZzREREpJZq27Ytt912Gzt37iQjI4NTp06xadMmQkND8fLy+q/fFxQUZH8qrri4mIKCAnr27FlZ2SK1wubNm3nyySdJSUkBoEmTJvTr14/69esbLhMRkdrKx8eHe+65B1dXV/bu3UthYSF79+4lKioKf39/mjRpct0/q3QI//3338fb2xs/P7+KyhYRMSouLg53d3dcXFzsx7y8vCgqKuLee+9l1qxZ9OnTB29vb4OVIlLZ3NzcCAwMJDIyks6dO5Obm0tKSgrFxcWkpKSwadMmvvzySzIyMmjZsqXuBYiIiMh104pTIiIiIjcgNzeX5557jtjYWKBk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Wrvh5FwyhnTmRK7hmuvnaDpARKQ6+fTTT00n1Chp5/MBcPN0sm99IyIiIlJVOdRxoElLN84mZ5N2Ps90jlSAtAv//v+1eTs3gyUiIiIiv635LfU5kpRBUYGNrPQC6jfQ/bWa5tK/fu9o0d7dcImIiIjIb7M4WGjaxo3Thy9Xq/unWnFKRESMycoseZrf3VM3dURERKR6qO9V8vxRdmah4RKpCKXXp6BrVBEREan63Dz+/Wx89i+uY6TmyPrX7x31dG0qIiIi1YS7Z+n90+pzfarBKRERMcaaXQSAs2sdwyUiIiIi16duvZJf/HOyigyXSEUovT4FcK6nRbpFRESkaqvn/u9hmpxsXZ/WRNacYgBc6+n+qYiIyP9n787Doqr+P4C/URQGFwbFBdlBFMXEfd9x18wtK5fU0qTUXHL7luWeS2mWmZpL5ZZbpua+b6louIUKoqAoYgiCKIsywO8PfozcubMBs13m/XqenriHO3c+cmfOvefczzmHpKFMudx71HQJ3Z8ycYqIiMwmJyf3/yV4NSIiIiKJKFHSBgCQk51j5kjIGPLuT2Fj1jCIiIiI9GKTr08tWzrPpUhf+ZscNrxBJSIiIon4/9uW7GzzhlEQHD5JRFQAt27dQmpqKipVqgRPT09zh0NERERERERERERERERERESFxDk+iIgKYO7cuQgODsbGjRvNHQoREREREREREREREREREREVAROniIiIiIiIiIiIiIiIiIiIiIjI6jBxioiIiIiIiIiIiIiIiIiIiIiIrA4Tp4iIiIiIiIiIiIiIiIiIiIiIyOrYmjsAIiIp6du3LxISElC7dm1zh0JERERERERERERERERERERFwMQpIqIC6Nevn7lDICIiIiIiIiIiIiIiIiIiIgPgUn1ERERERERERERERERERERERGR1mDhFRERERERERERERERERERERERWh4lTRERERERERERERERERERERERkdWzNHQARkZTMnTsXMTExaNOmDQYPHmzucIiIiIiIiIiIiIiIiIiIiKiQmDhFRFQAt27dQkREBDw9Pc0dChERERERERERERERERERERUBl+ojIiIiIiIiIiIiIiIiIiIiIiKrw8QpIiIiIiIiIiIiIiIiIiIiIiKyOkycIiIiIiIiIiIiIiIiIiIiIiIiq2Nr7gCIiKRk+vTpSE1NRaVKlcwdChERERERERERERERERERERUBE6eIiAqgVq1a5g6BiIiIiIiIiIiIiIiIiIiIDIBL9RERERERERERERERERERERERkdVh4hQREREREREREREREREREREREVkdJk4REREREREREREREREREREREZHVsTV3AEREUjJ37lzExMSgTZs2GDx4sLnDISIiIiIiIiIiIiIiIiIiokJi4hQRUQHcunULERER8PT0NHcoREREREREREREREREREREVARcqo+IiIiIiIiIiIiIiIiIiIiIiKwOE6eIiIiIiIiIiIiIiIiIiIiIiMjqMHGKiIiIiIiIiIiIiIiIiIiIiIisjq25AyAikpJNmzaZOwQiIiIiIiIiIiIiIiIiIiIyAM44RUREREREREREREREREREREREVoeJU0REREREREREREREREREREREZHWYOEVERERERERERERERERERERERFbH1twBEBFJya1bt5CamopKlSrB09PT3OEQERERERERERERERERERFRIXHGKSKiApg7dy6Cg4OxceNGc4dCRERERERERERERERERERERcDEKSIiIiIiIiIiIiIiIiIiIiIisjpMnCIiIiIiIiIiIiIiIiIiIiIiIqvDxCkiIiIiIiIiIiIiIiIiIiIiIrI6tuYOgIhISvr27YuEhATUrl3b3KEQERERERERERERERERERFRETBxioioAPr162fuEIiIiIiIiIiIiIiIiIiIiMgAmDhFRERkZWbOnISUlGQAQMmStpgzZyns7e3NHBXl2bRpDUJDLyi3g4M/Q40atcwYEVHxEBJyFlu3/qrc7tz5TXTt+pYZIyoahUKBly8zkJGRAYUiEwqFAtnZWShZ0hYVK1aCnZ2duUPUKisrC6GhF1Ctmjvc3DzMHQ4RmVlxq6OLG54fIuMpTu3znJwcvHz5Ei9fZiAz8xUyMzOhUGQiOzsbMpkDKlashJIlS5o7TGRlZeHVq1d4+TIDr169hEKhQFaWAjk5OShfXg653MncIRKRmcXHP8aCBdOV297efhg7dqoZIyJVxen6SWRJituzifz3fJmZmcjKykJWlgIymQOcnCrC1tayU2UePXqIhIR4PH2agOzsLDg6OkEurwC53AmOjk4WH7/U8K9JRERkZa5evYT09DTldlaWwozRkKp79+7ixo1ryu3k5KdmjIao+Hjy5LHguxUQEGjGaArv+PEDWLjwK537yeVOcHX1QIcOXdGxY0+L60C8fDkEX345HoGBjbBo0Qpzh0NEZlZc6ujiiueHyHiKS/t82LDeiIuL1bmfh4c3/PxqoU+f9+Dn52+CyF579Oghhg/vo3M/mcwB7u5eqFu3Afr2HYiKFSuZIDoisiSpqS8E9z6vXr00YzSkTnG5fhJZmuLybOKHHxZg374/dO7n7FwZvr410KNHPzRp0hI2NjYmiE67589TsGfPNhw7dgCxsTEa95PJHNClSy+0b98FNWsGWETsUlfC3AEQEREREVmKzMxM5OTkmDsMIo0UCv06A5OTk3DjxjUsW7YQQ4f2wrFj+40cWcHs3/8nAODatX/w339xZo6GiIjIcuXk5CAzM9PcYRBplf/htTYxMdE4dmw/xowZgpkzJ+Hp00QjR/aavu289PQ03L59Ezt2bMTAgd2xZs0Pet+DExERWYNXr16ZOwQirfRNeE1IiEdIyFl89dUEjB37PsLDw4wcmXanTx/FkCFvYv36VVqTpoDce9Zdu7Zg3LjhiIi4YaIIizcmThERFcDcuXPx0UcfYePGjeYOhYiIDCg6+g5Wr/4eb7/dERcunDZ3OEQGlZychEWLZgim2janxMQnOHfupHL7xImDZoyGiIjIMiUmJmDHjo348MP++OWX5eYOh8jgzp8/hfnzv7D4pKTt2zdg06bV5g6DiIjIrLKysnD5cggWLPgSb77ZEs+eJZs7JCKDiowMx7Rpo/HkyX9mef/ff1+HefP+p/eAhDwymQN8fWsaKSrrwqX6iIgK4NatW4iIiICnp6e5QyEiIgP5+eel+OOPTcrt7OxsM0ZDVDByuRMGDBgKe3t7lCpVGunpaYiPf4yTJw8jISFesO+cOVOxdu0Osy83cuTIXsH2wYO78c47wzilNBER0f87d+4kZs2arNzm/SlJTVBQd/j7B6B0aTsAwNOnCbh79zbOnj0u2O/69VCsX78SH3wwxhxhYujQYJQrVx52dvbIzHyFxMQnCA0NEc02sHnzOtSuHYjGjVuYJU4iIiJzGz16MKKj7yi3eX9KUhIQEIjWrYNgZ2cPW1tbpKQk49GjWNFyfunpaZg7dxqWLl1n0n7KHTs24NdfV6j9nYuLKxo0aIZq1dyQkpKMp08TcedOuPL72KvX2yhVqpTJYi3OmDhFRERERFYtJeWZuUMgKjRXVw/06zdIVD58+Gj8/vs6bNz4enR8enoarly5iI4de5gyRAGFQoG//tohKIuLi8XNm9cREBBopqiIiIgsy4sXz80dAlGRdOrUA/XrNxGVP3wYg6lTPxYk+B86tMdsiVN9+w6Cvb29oOz994OVS7bkd+bMMSZOERGR1UpKMt3yukSGVr9+Y/Tp856ofPjwT/DNNzMQEnJWWRYeHoa4uFhUq+ZmktjCw8OwevUPovIGDZpi0qQZGgfA3rr1Lw4e3I0uXd4ydohWg0v1ERERERERFTO2trYYPHgk6tSpJyi/e/e2mSLKdeXKRdFMWABw/DiX6yMiIiIq7tzcPDB58kxBWXJyksUt99O0aSsMHjxSUHbr1r9mioaIiIiIjKFcufKYPHmWqPzevTtq9ja8ly9fYtGiGaLyNm06YtasJVpXDahV6w1MmDAdrq7uxgzRqjBxioiIiIiIqBiysbERjfS/cyfCTNHk2r//T7Xlx47tR0ZGhomjISIiIiJTq1Wrrqjs/v0oM0SiXd26DQTbMTHRyMzMNFM0RERERGQM5cqVFw08zb8spTGdOXMUsbExgrI2bTpi2rS5KF26tElioNe4VB8RUQFs2rTJ3CGQiTx/noI//9wMAKhQwRk9e/ZXll+79g8iIm7g5s3rePjwPjw9feHrWwN16zZA8+Zt9X6PjIwMXLv2D+7ejUBkZDhu374JB4cyqFkzAF5evvDx8UNgYCOULFlS72O+evUKISFncPbscdy/H4WkpERUqlQFLi5u8PWtgR49+hXsD/H/oqIicePGVdy5E4GIiBt4/jwF3t7V4eHhDXd3L9Sr1xguLq6FOnZhSPX8AEBY2FWcOHEId+6E4/HjWMhkDvDw8IGHhxe6dOlVoGPlSUiIx5UrFxEVFYmIiBuIjY2Bm5snvLyqw93dE/7+deDvX6dQxzYUQ8S4Y8cGpKWlAgDeeWc47OzsoFAocP16KCIibuDWrX8REXEDlSu7wNe3Jvz8aqJTpzc1NjI2b14LhSITYWFXBOWHDv2Fu3eFySVOThXx5ptvC8qio+/gzJmjyu2AgHpo2LAZMjIycPLkIZw7dxIPH8YgNfU5nJwqwt3dC+7uXgBylK/p0aM/KlZ01vn3e/LkPxw48DrhpFw5R7XTCxvC2bPHERWVOytR+/Zd/z9mICLiBsLDw3DrVhjCw/9FqVKl4etbE97evujYsade/4489+9H4datf3H37m2Eh4chPj4Ovr414etbA15evggIqIeqVasVKO6HD2Nw8uQhXLsWikePHgDIXcbO3d0LLVu2K9Cx8qSnpyM09Dyiom7j9u1biIy8hUqVqsDDwweent7w8qqORo2aF7geMKeyZcuZ7b0TEuJx7txJtb9LT0/DxYtn0aZNRxNHRSQthr4WqsrJyUFY2FXcvRuBO3cicPPmdWRnZ8HXtyZ8fPzg5eWLwMBGBa5LjFFHW+L9D6+hr0nhGmqIGA19zk+cOIQHD6Jx61aYoDw09ALWr18pKLOxscHbbw8VLDOWmvoCf/yxUbmd11bKzs5GaOgFHD26T9lOLFOmHNzcPOHvHwCF4nUySOPGLVGr1hs6/37Z2dn4/fd1yMpSKMv69x8CB4cyOl9bUJGR4Th/Pvceolatusrl0h49eoiwsCuIiLiJGzeu4vnzFPj51YKPT3U0b94Ofn7+er9HYmLC/7d5wxEZGY6oqNtwdfWAr29NeHn5oEaNgAIdDzBO+zwnJwdXrlxEZOQt3LkTgcjIWyhRoiS8vavD09Mbbm6eaNq0NcqUKVvgY5tKTk6OqEwmczBDJAUnpft+IlOQav387Fkyzpw5iosX/1b227i6eqBaNXfUrdsA3t5+BToeYJn1s1TPj7X0bxsjRkP3mScmJmDfvh0AcmeIzO/339ehbFnh59nf/w00adJSUHbhwmncvn1TuZ13z5yYmICDB3fh6tV/lG2QChWc4ebmIfg3urt7o337Llr/bnmOHt2nPBYAtG7dEd7e1fV6bUFJtW1urc8mCspU/ae7dm0RlQ0b9gnvOc2EiVNERERqJCY+waZNa5Xb9es3RalSpTBlSjDi4mIF+yYn/4Nr1/7Bzp2bERTUHaNHT9bZCI6OvoM5c6aKssmB3FGMeerWbYgpU2ahUqUqesU8e/YUhIcLO9mTk5MQGRmO06ePYsuWX5GenqbzWHkyMjLw228rsHPnZtHvEhLicenSOeX2Bx+MRt++g1CqVCm9j19YUjw/r169wk8/fStIfsmNLwlxcbEICTmD7ds36DxOfjk5OTh0aA+++26u6HfJyUkIC7uq3O7UqSdGjPgUcrlTgd6jqAwZ48aNa5Sf32rV3NG6dUfMm/c/hIScER339u2bOHAAOHBgF6ZNmwc3Nw/R8X77baWoDABCQs6Ijunq6iFKnIqMvCX4HPbu/S4qV66KL78cr+ZzmISMjHQkJyfh+vVQZbmDQ1n07z9YbRz5nTx5SPBeTZu2Mlri1KlTR3D6dG5CWELCE0yc+CW2bPkFv/zyk2jfmJhonDgB/P77L/jii/nKTjhNFAoFfv99HTZuXC36XWjoBYSGXlBujx//Bbp1661XzPv27cQPP8wXlSckxOPatX+wd+8OvY6T340b1/DNNzPUnsvIyHDltr9/HYwb9zl8fAresWoKqteEGjVqmSkS4MiRvYLtTp16CsqOHt3HxCkiHQx9LcwvJeUZliyZg/PnT4l+FxcXi7NnjwMAnJ0r4/PPv0ZAQKBeMRu6jrbk+x9eQ3NJ4RpqqBgNfc6PHdsvaGPlf23+e8E83bv3FSROJScnCfZzdfVA+/ZdsXDhV2rridyHGh7444/Xg8Tu3InA7Nnfqf335hcRcQPr169SbstkDnjnneE6X1cYt2/fUP67nJ0r47ffduP69VD8739jRPuSKSehAAAgAElEQVQmJMTj/PlT2LRpLUaO/BR9+w5CiRLaF104e/Y4vv12lqitnJychBs3rim333rrHXzwwRjB31wTY7TP4+MfY+nSeYLve57Y2BicPZv7s1zuhHHjPkeLFoVLfDS26OhIUZmnp48ZItEu/0NeAAgMbKTzs0RkbaRYP9+4cQ2zZ08WJYHkHVO13aoPS62fpXh+rKl/Oz9DxWjoPvMnTx6rvQcFgN27t4rKevUaIEqcOnv2hOB75eNTA7GxDzBjxkS1/1Ynp4qC95TJHNC8eVudn5+MjAx8841wOeAmTVppfU1RSK1tbq3PJvSRkZGBu3dvC8p8fWsa/X2jo+8I2p5A7mxTXHrPfHinT0REpIflyxdhwoQPRQ0MVceO7cf8+V9o3efAgV0IDn5PbVKOquvXQzFy5AC1N8n5hYeH4ZNPBokalaoK0qiMjAzHJ58MUttgU2fduuX45JNB+O+/OL3fw1As/fwkJiZg2rRPRA2Tonj2LBkzZkxU2zBR58iRvRg2rDcuXw4xWAy6GDPGX375CTNnfiZqjKqKjAzHmDFDkJam/2e/sOLjH2Ps2KEaP4d9+ryHHj36Csr27/9T7YhrVceOHRBsd+jQrfCBFsChQ3vw7bez1D78yy89PQ3Tp4/DrVv/atwnISEeU6d+rPaBrzpLl87DnDlT8eLFc437ZGZmYtmyhWof+BZWVlYW1q37ERMnjtBZpwC59e/HHw/Etm2/GSwGQzl9+qigc00mc0DXrvo9SDc0hUKBvXv/EJSNGjVBMLtASMhZJCY+MXVoRJJlyGvhjRvXMHLk2zrvaYDc+nzixBHYuHG11muYMepoKdz/5OE11DKvocaM0ZDn3JBmzZqssZ5o0aIdevd+V1AWEnIWCQnxOo975swxwXZQUHfY2dkVPlA9JSTEY8mSOWof+qpavfoH7Nypeebwly9fYvnybzBnzlS92sq7d2/F2LHvCwbTqGOM9vmJE4fw0UfvqH0oryo5OQmzZk3GrFmToVAodO5vSi9fvsT3338tKBs8eKTFLUUSG/sAa9YsE5S9955xEgOJigsp1M8HDuzCxIkjRElTRSGV+lkK58da+7eNGaMh+8wN5Z9/zqtNmsozePBIwYxTeTOU63L16kXBtouLK2rWDCh8oAVg6W1za302oa+1a5cJ6pU6deqhdm3x0tKGpq492K/fIKO/L2nGGaeIiIj0oNr4DQgIhIeHNx48uCfInAeAS5fOITw8TO30oxcv/o2lS+eJyvNuxjIyMhAeHiYY2ZienoaZMydhw4a/ULlyVdFrw8PDMG6c+g68gIBAuLt74d69uzobnfmlpr7AzJmfiTrMnZ0ro0aN2rC3lyEhIV4wcw6QOxL6+++/xrx5P8DGxkbv9ysqSz4/qakv8OmnQ9U+fPDw8EbNmgFITn6qdmS5NkuXzkNIiLDRKJM5oHbtupDLK+DFi+eIiAgTdAalp6dh9uwp+O233XB0lBfo/QrDmDEmJMQL/qaurh544436SEpKFL1nenoa9u/fKZrZqX37rnj5MgNXrlwUNI68vavDxcVNsK8+S96oLkHWtGkrODlVxIULp5GcnISgoO6wtS0FmcxB+X6xsTEIDw/TuhzKgwf3ROuqN23aWmc8hpJ/VJhM5oAWLdohM/MVrl8PVTtNt7oZCrKzszFr1mTRqG253AkNGzZH1aouiI6+KzoXZ88eR4UKzhg9erLa2L7++nO1S785O1dWNnDVxanNvn1/YOtW8cPRgIBA5exykZHhouTKtWt/RO3agahTp57e72UIWVlZyM7OVo4ETU19gUePHuLAgV3Yt0+YqDR58kw4OVUwaXx5Ll8OEXxng4K6o1y58mjbthMOHtytLD9x4pBes7ARkWGuhUBuJ+rEiSNE5R4e3qhXrzHs7e0REXET1679I/j9hg0/w8PDW+NMccaoo6Vw/5Mfr6G5LOkaauwYi3rO33ijPkqVKo3796MEMcjlTqhdWzyS3N5epjWe2NgYwXECAgLh5VUdN29eQ3T0Hbz11gBUrlwVTZu2Eny3jh8/gAEDhmo8blZWFo4d2y8o03cJFUNQfe+mTVujfHlHRETcED2U3bhxDbp37wcHB/FScJs2rcaePdsEZTKZA+rWbYjq1WsgPv4/hIVdETxsjImJxpw5U7FixWbY2oq71o3RPo+MDMeCBdNF5R4e3vD1rYmcnGw8evRQVE+cO3cSO3ZswLvvmj7hJ39CgEKhQFJSIv799zI2blwj+Ez6+9fR+lkztuzsLOXPGRkZSEx8gjNncmczya9fv0GoX7+JqcMjkhxLrp937dqCFSsWi8plMgfUqVMPcnkF3Lx5Xa+BlHmkVj9b8vmx1v5tY8dY1D5zR0cn5Qxpqm2HBg2aiu5Fq1fXPUvPgQO7lD/L5U6oX78pAODEiYMICAhEjRq10LNnf6xe/b1yv4MHd+ucofzkySOC7a5d3zLZ8wlLbptb87OJ/BQKBXJycmBjY4OcnBw8e5aM6OhIbNu2XpDMJZM5YOLEr0wyy+jNm9cF23K5k+SWNCxumDhFRERUAP36DcK77w5H+fKOyrKrVy9h5sxJggcVf/yxCV98IRy9rVAosHLlEkGZTOaAuXO/F3XAnzhxSNTwXr9+FSZNmiEoy87OxvLl34ji7NVrAEaM+FQw4jc29gGmTAnWa/Twr7+uEO03ZswUdO/eV7C+8rNnyVixYjFOnDioLAsNvYAjR/aic+c3db6PoVna+QGArVt/Ff0t69Sph88//xoVK1ZSlqWnp2POnCl6jVA7c+aYqLHaq9cADBv2sWBKZYVCge3b1+PXX1fke580rF79vdpYDclUMQYGNsL48V+gWrXXiU5xcbGYN2+aYKrbjRtXo3fvdwWdM9OmzQEAfPvtLMFDriFDPkLLlu0L8K8VqlGjNmbOXIyKFZ0B5HbA37t3R7k2erduvQWjyI4c2ac1cUp1NH+XLr0gk2l/SGZocrkTvvxyEWrXrqtsOKanp2PZsgWCjreQkLOIiooULWdz8uRhUUdhUFB3jB//hWB0eUrKM8yZM1XQIbRnzzb06vU23N29BK+/ePFv0WdMLnfCzJmLBX/PnJwcrF+/Eps3r9P574yLixXVqYGBjTBu3OeiaZLPnTuJRYtmCOqWb7+diZUrt+g1/byhhIeHoVu3plr3kckcMHPmt6hXr7GJohLbv184qq1du84AgJYt2wsSpw4d2sPEKaICKsq1EMjtZFU1evRk9Oo1QFAWFRWJ//1vtKDjc926H9G8eVvRMhHGqKOlcP+jDq+hlnMNNVWMRTnn77wzDABw+PBfWLx4trK8ffuuCA7WPDJfF5nMAfPn/6g8vzk5OQgLu6ps53Tt+pbgwcf+/X/i7bff1/iw6ebN64K6IH/CnSlNmjQDbdp0UrZ7c3JysHv3VsGD8fT0NBw7tk+07PajRw9FSXTe3tUxb94PgnaaQqHAunU/CpYzjImJxvHjB0RtXmO0zxUKBRYvniUoc3Fxxbhxn4sSeaKj72Dx4lmCuv+XX35C8+ZtTb4U3vTp43TuExTUHZ9++j+TzFSmSZ8+upfLGjlyHO9PiQrI0urnxMQEtUlTEyZMR5cuvQTXuwsXzmidDSf/+0uxfgYs7/xYc/+2qWIsbJ+5i4srZszIPTfvvNNZcP83ZcrsIg3O69r1LYwZM1XZlhw5cpwylvbtuwoSp0JDLyA+/rHaQctA7r12/r8NALRp06nQsRWWJbbNrfXZhKotW34VJcar8vPzx5dfLkKVKi4mienBg3uCbVdX7Us4kvFxqT4iogIYNGgQGjVqhHnzxDPSUPH3ySeT8NFH4wUNDACoV6+xaMp21WxxADhw4E/RqKWlS9epHbXcvn0XfPnlQkHZkSN7ERUVKSg7efKQ6EHKZ599hdGjJ4s6H11d3fHdd+rXJM8vLOyqaNTQDz/8ijfffFvQYAMAR0c5pk2bg27d+gjK164VTmlvCpZ4fmJjH4g6E7p164OFC1cIGiYAIJPJMGPGt/Dz89fwL8yVkvJM8BAFAIKDJ6pdh97W1hbvvfcBpk6dI4r14UP9R9AVlKli7NChG+bO/V7QGAVyG/UffzxJUJaenoanTxMK+k8pMBcXV3zzzSpl0hQA2NvbC0aLdOrUU/Caffv+QHp6usZjHj0qHBHYoUNXA0WrH2/v6li+fCPq1KknGG0jk8kwduw0wVJrAHDv3l3BdkZGBlatEiYlBgV1x+TJM0VLcpQv74ivv14m+h6sX79KsK0u0bFGjdpYuXKLKAnNxsYGQ4d+jLfeekfrvzMnJwfLli0QlLVo0Q4LF/6kdm35Fi3aYfnyjYKyuLhYnDp1WOv7mMO77w4TPTQ3pSdP/hNMMS6TOSg7kuvWbSjYNyYmGrdv3zJpfERSVtRr4d27t0XT9Y8f/4WoYxYAfHz88OOPGwRlcXGxOHhwl6DMGHW0FO5/1OE11HKuoaaKsajn3Fi+//4Xwfm1sbHBG2/UVz4obty4pSC2uLhY3LhxTePxVBP7u3Z9yySjsvPIZA5YvHg1OnXqKWj32tjYoHfvd9GggTCp/O7dSNVD4Jdflgu2XV09sHjxalE7zdbWFh99NF60pOHatcuQkZEhKDNG+3z79vWC2WednStj2bL1amc/8vaujiVL1sLDw1tQrm6WNXPz9q6OTp16iB7uWZpOnXqiYcNm5g6DSDIstX7esEF4PySTOWDZsvVqZ6Rp1qw1pk8X3jOoI8X62VLPj7X2b5sqxqL2mRtDUFB3TJgwXXAfULGiM9zcPJQ/t2rVQfCa48cPaDzeP/8IZ0sKCAgUtZGNzRLb5tb6bKKw+vYdiPLlTTcT1rNnwhmJq1Z11bAnmQoTp4iIiPTg5+ev9YFBUFB3wXZCQjyysrIEZRs3rhZsd+rUE15evhqP2bx5W8F63gBw9Og+5c+5D1KESzu0adNR6yiTypWrijrrVf3220rB9gcfjNa5HviHH44RHDc5OalAy3oUlSWeHyB3pEd+crkTgoMnqp2SGgDs7OxES8Sp+uuv7YKRQA0bNhN1Qqhq374LAgMbCcpiYqK0vqYoTBXjJ59MEj00zBMQECg6P0+e/Kf1eIbw0Ufjdc5C4OPjJ2qEnj8vXioHyB1BpLpMyxtvNCh6oAUwfPhoODtXVvs7mUwm+n49efJYsH327DFRfTBo0AiNMxiUKlUKffsOFJSdPn0UKSnPlNv79+8UJTpOmDBd60g3Dw/tiUP//ntFMKpKLnfChAnTtU7r7erqjvffHyUoM9UD0IL45ZefMHBgd2zY8DOys7NN/v75Z3QDcuvXvM4xe3t7dOjQTfB71VGCRKRZUa+Fu3dvFWw7O1cWJfjmV6lSFXTr1ltQtm/fTsG2MepoKdz/qMNrqOVcQ00VY1HPuTH07TtQ52wWpUqVwptv9heUqbZt8igUChw+/JegLG8mSVPp2bOf1mUTu3TpJdiOj48TbD969BCnTx8VlL333nDRw578VOuc5OQkXL16UbltjPZ5RkaGYIQ+AHz++dcoV668xteULl0aY8dOE5RFRlpeUnp09B1MmzYaI0cOEI22tyRHjuxFcPB7mDlzElJTX5g7HCKLZ4n1c24ygjCZ4MMPx6BGjVoaj+nm5qnxd4B062dLPD/W3L9tihgN0WduDB98MFrnPqqfx4MHd2vs01L9XGpr0xqLJbbNrfXZRGEtXPgV3nuvq2DwpzGpfnerVjXNTFekmWQSp/JGLZlqPVIiIqKCUNc5npz8VPlzauoL0Y2Q6kMNVSVLlkTPnsLO6/yZ+HfvRoiOOXTox3rHrE5OTo6o0d6xYw+drytXrjzq1hUmc1hS56c5zo9CocDZs8cFvx8x4tMiLz9y506EYFuf9dptbGzQpElLQZkxH0yZKkZdx1QdyZeY+ETr/kUllzuhRQvdSz0AQI8e/QTbBw7sVrvf338LP0NduvQSjTozN9WGf3y8sOEfExMt2G7TpqPamR3ya9myg6gT7PHjR8qfL1w4I/hdp049RUsbFdS9e3cE223adBKNxlOnUaPmgu27d28XKY6CcnX1wPz5P2Lx4tVYsmQNZsz4BmPHTkXfvgNFf8ONG1dj9uwpUCgUJotPoVCIOn/athVOl96ypfB7c+DALrx69crosREVB0W9FuYfJQ/kzlCnqRM1j2rnbHT0HeTk5Ci3jVFHS+H+pzB4DTXdNdRSYtR1zo2he/c+uneC+AHTgQO7kJaWJtrv338vCx6W1KhR2+QzW+r6/qv+nR89eiDYfvjwvmBbLndC27bak79cXFzRtGkrleM+VP5sjPa5atyurh4ICAjU+TrVfWJiopGZmVmkWApq+PBPsGjRCixZsgYLFizHlCmzMGLEWFFssbExGDHibVy9esmk8eWZNWsxvvlmFZYuXYc5c5Zi4sQvMWTIR6I+hPPnT2Hs2KGIjzd+siORlFli/aw6E42Liyu6dhXezxaUVOtnSzw/1tq/bSkx6uozN4agoO4aBxrk16BBU8jlTsrtuLhYhIVdFe2XmvpClDilOluVKVha29yan02o065dZyxc+BOWLFmDb7/9GV98MR/BwRPRvr1wZYf09DTMnDkJ27evN2l8AODgoDkJlUxD+zfOApljhDQREZE+nJ0rC9aLfv48RTnlaf4GYR5v7+o6j6l6Q52/gao6Urxu3YbK6WwLKyEhXtAJDgDffTdXr9deuiTsiHj48D7eeKN+keIxJFOfn//+i1PdHe3addE7Xk2io4XTZG/evFY04lsd1cZ4TIzxEtssJUYnp4qC7efPn2nY0zB8fGrovW/r1kFYuvT1sq/Xr4fi0aOHgumcc3JycOyYcBpqQ3yGDE11hoqUlGTB9oMHwo61/MsWamJnZwd3dy/BVO2PH8cqR4TevStspGsbiaive/eEI52OHNmLuDhx3aDq+fMUwbbq9PLGJpc7iabTzzN48Ej8/vs6bN/+evru8+dP4ejRfeja9S2TxHf5coigE1Qud0Lt2nUF+zRoIFz+JD09DaGh59G8eVuTxEhUnGm7Fubk5IjqLF0jnAH1I/CfPk1ULlNrjDraUu4tDI3XUNNdQy0lRl3n3Bh0jRrP4+HhjYCAQMESfefOnRA9xDt1SvhgqnNn04/o18XR0UmwrfpAVvXc16xZR+MMAfl5efkiJORsvuPEKn82Rvv8/n3h5zY2NgbTp48r1LEeP441aYJbzZoBopkFAODtt9/HjRvX8PXXnwva5998MxO//rrL5Ev31avXRO0DxHffHY7Tp49g4cKvlGWxsTH49dcVmDJllilDJCpWzFE/q95P5Z8BubCkXD9rU1yun1Lo37akGLX1mRuDp6e37p2Qu8xbz579sHHjGmXZ0aP7RIlj+T9bQO5gE22zv5mLqdvm1vxsQh03Nw/Uq9dY7e+GDg3GsmULBDMUr1mzDM2atTFq/azabs//PSTzkFziFBGROdWqVQtlypSBp6f26XrJOjk5VdB4c6PasHR19dBrFkXVG+rY2BgoFArY2tqKRpOoJvEUhroRKqqNMX3lzRZpKUx9flRHYbm4uBa5YyYjI0PQuQDkjiRRHZGiD2OdH0uK0dSN5GrVtM8AkV/ZsuXQpUsvHDq0R1l2/PgBDB48UrkdGRku+Ft6e1cv8owQxlC2rPa/s2qHYqVKVfQ6rrNzZdFDXwB48eK5qPMuf8JZYanORJGenlao+s/Ozq7IsRhKmTJl8cEHY3Dv3l3Bv+WXX5ajQ4duenVwFtX+/X8Ktrt06SX6bjs4OKBFi3Y4d+71kpWHD+9l4hSRAWi7Fj59migqq1hR98hfdUtxxMfHoWJFZ6PU0ZZ0b2FovIYKGfMaaikx6jrnhubi4qpzpHp+3bv3ESROHTiwS5A49erVK5w8eUjwmlatgooeqIFpWzIIEM4UDABVqui3LIbqQ8T8D3uN0z6PFpUVtn1uY2M59V9AQCA+//xrTJw4QlmWkBCPI0f26j1DmrHZ2tqiQ4duSEiIx9q1r5e5OXZsPwYMeB9eXr5mjI5IusxRP6veA7i6Fi0pByi+9XPxuX5afv+2JcWorc/cGKpUqab3vkFBPQSJU4cO7cGoURMEn9WTJw8LXtOhg3AGIUth6ra5tT6bKAwXF1dMnToHH300QNBe3rRpLaZNm2O093V19RC021Vn+SPTs5xPpQ55Dy/zT/9ORGRq06dPx88//4zBgwebOxSSGNWRyroaonkcHeWismfPcm/eVB+kqE6nXBiGnH5Y38azJTDG+TFGw191FFZRGOLzoo4lxWjqJZ4L8lAKEM/wcODALmRlZSm3z5xRHc1f9BkhzOHp0wTBtr7fL9XExCdPcjtxVBv+gLgTrjDyPyQsCkN0whpSiRIlMGjQCEFZcnKSQb+rmjx58h/Onz8lKNM0jX/r1sKHrufOnRQ93CeigtN2LVQ3E6PqbDiaqF6jnzzJXW7MGHW0Jd1bmBqvoYYjhRiNoUSJgi3x3KJFe8F2WNhVxMa+7sC/evWSYHaEpk1b611vmJKudoDqTF8ymUyv45YvL2z/5V8G0xjt8+howy1hos+SOKYUEBCIxo1bCMquXLlopmg069t3kKgsLOyKGSIhKh5MXT9nZWUhMjJc8DvWz5oVl+unFPq3pRCjsRSk/7RaNTfRLOt//31C+XNKyjOEhLxeilwmc0DDhsKlti2Fqdvm1vpsorAcHeXo31/43PfChdNGfc9q1YR/A9XkVDI9yc04xcQpIiKSopIlhR3W+mbUp6WlisrKlCkHIHfEeH45OUVfzlY1TpnMAV99tajAx7GxsYG//xtFjsdUjHF+0tJeCMoNsdywurhmzPgG9vb6dVTk5+lpnBGyUojRUgQEBMLV1UPZ6ExIiMf166GoX78JsrOzRdMct23byRxhFpmdnZ1o+nF9qHYalCuX990Sf++ys7NF32NdVDssZDIHQZz9+w9Gw4bNVF+mkzGnMy8sddNKx8c/1mtJ0qJQ/Qy7unrAx8dPbZuuUSNxx9bp00fQq9cAo8VHZO3U1ZsvX77U6wGIamJj2bLGq6Ot+d6C11DDkUKMlsDBwQE9e/bH3r07lGXHj+/HkCGjAACnTwsT+zt27G7S+AylZElblW39vgOqbTy5/PWSRsZon6s+WGzQoCnefntIgY9TurSd2uXozM3bu7pgdg19ls80NVtbW/j5+QsSL/I/8CciwzJ0/ZyZmSnatzD9c6qzQhX3+lkTqVw/pdC/LYUYLUWXLr1w+XKIcvvgwd3KwaWqiS2dOvU0yezqhmactrl1PpsoCg8PH8F2enoanj9PMdqqFlWrChOnYmNj8OxZstrB+mQakkmcMvWMAURERIakmkGft1yGLomJTwTbcrmTskFdrZq7YOT048fidasLSt3DddVRHcWRMc6P6o2vuhH+BaVuKbiqVV0tavk2KcRoKWxsbNC9ex+sXv29suzw4b2oX78JIiJuCBq+DRs2k+yDOjc3T8G/RXX2DE3i4x8Ltl1ccpcSUjeld1JSYoFHaaom7/j61kBY2FXldtWq1YpN/aeuA+PJk8dq9jQchUKBPXu2CcpiY2PQtWsTvY9x+PBfTJwiMqLKlcUjk5OSEiGTaV+6LT09XZTMk3ffY4w62prvLXgNNRwpxGgpOnfuKUic2rv3D7z33odQKBQ4cmSvYN8mTVqZOjyDUF2iMm9WNl1Ul7HJXz8Zo33u6Sl8eFO2bLli9blVnUXPUkfZlyvnKNj+77+in1siUs/Q9bO9vT3kcifB/dR//8WhVq2CJZqoJvMU9/pZE6lcP6XQvy2FGC1Fs2ZtBIMgbty4hgcP7sHd3Uu0TF+7dupnObd0xmibW+uziaJQN8NzQkK80RKn1LXPd+/egvffDzbK+5FuXKqPiIjIBFRvgpKTk6BQKHS+TjWBJ38mvmpj1RBrILu5CRtt6elpSEzU7wGNlBnj/OQ9oMoTFxer1zG1sbOzEy0PYorltgpCCjHq8urVK5O9V/v2XQXbx48fwPPnKcVmND+Q+9A3P9UOM3WysrLUTNee+52qXLmqaH9DjPr29a0p2H7woOgdCpZC9QE6ADg46LfcU2GFhl4o8lJ7kZHhiI6+Y6CIiEiVnZ2dKGFGn8Sc//4T17l5dbMx6ujicG9RWLyGGo4UYtTGlPenNWsGCJbySE5OwrVr/+Dy5QuC/bp16y2pWTLyUx04o+5eSR3VxB5X1/wPfg3fPld9MH/37u0iH9OSWGqilKqoqOL1dyeyZMaon1VnNdF3sKQ2xb1+1kQq108p9G9LIUZdFArxjG7GYG9vj27degvKjh8/gKdPExEa+vr+1MXFFbVr1zVJTIZmjLa5tT6bKAp1s5+qS6YylBo1akMmcxCUbdq0Fs+eJWt4BRmbZBKniIgswc6dO7Fq1SqcPm3ctW2p+FE3ivvixbM6X3fgwC7Bdv7RKKoZ/pcvhxR5ffSKFZ1FN2uHD+8p0jGlwBjnR9063cePHyhEdEJ+fv6C7f37/7S4xHIpxKhNcvJTk71XxYrOaNWqg6Ds1KnDos9Ks2ZtTBaToal2gp06dUTna/7557yaEVO5CY6lSpUSfb8OHtxdxCjFHZ+HD/+FlJRnGvaWloiIG6Ky6tVrqtnTcFTrx8IyRL1JRJqp1n1//31C52uOHt0n2HZxcVUuV2KsOlrq9xaFxWuo4UghRm30nW3MUN58s79g+8iRfTh9+pigTHUAgJSojsC/du0fnQ8rk5KeigY35H8gZYz2ef4ENiD3wVT+mdOkTKFQ4ObN64IyNzcPDXubT3z8Y9FggLw6lYgMzxj1s+rMPgcP7la7hF9BFOf6WRupXD+l0L8thRh1KepguYLo1KmnYHv//j/x99/HRftIefUqQ7fNrfnZRGHduhUm2JbJHNQOPjIUmUyGYcM+FpXv2LFB72NkZ2cjIyPDkGFZNckkTnHGKSKyBDt37sTq1auZOEUFZmtri8aNWwjKdu3aqoXzZFoAACAASURBVPU1//57BZGR4YKywMCGyp/VTYG6fv2qIkSZSzXOX39dIZmRoIVljPNToYIz5HInwe/Xrl1W5BvZN96oL9i+fDnE4hILpBBjfnlrv+cx9QwEnTu/KdhetmyhoPOhU6eecHAoY9KYDCkwsJFgOzr6Dv7994rW1/zxxybBtqurBypUcFZu+/sLp9U/cmQvoqIiixSn6lT96elpWLt2WZGOaQmSkp5i5crFonLVEWKGFB//GOfPnxKUDRv2MVas2Kzzv65d3xK87vDhv4o8Io6INGvQQLh85s6dm5GWlqpx/9TUF9i+XdiJ17Bhc8G2Mepoqd1bGAqvoYYjhRjzUx3ZfO/eHZP2ibZtK1zm5MSJgzhx4qByWy53Qp069UwWj6F5e/uJHlYeOqQ9ifDAgT9FZfk/V8Zon1er5i5qUy5ZMsekM5AZy9atv4pmKGjbtpOZolEvOzsb3303V1TeokU7M0RDZB2MUT+rDhqKi4vFwYNFG+hTnOtnbaRy/QSk0b8thRjzK19eLtg2xNJv+vLx8RMk7CQnJ+HHHxcJ9mnXrovJ4jEGQ7fNrfnZRGFcuxaKffv+EJTVrdtQw96G07Vrb9F52rZtPX75ZTmys7M1vCpXauoLzJ49BVOnfsy+UwNh4hQRUQFIOWOdzG/48NGC7WvX/sHOnZvV7vvwYQwWLJguKPPz8xfMTOPh4Y2gIOHyXadPH8XPPy/VeAMcGRkuGoGuauTIcaKyuXOn4t69uxpfExMTjZkzJyEkRPcsTZbK0OenRIkSomMmJydh9uzJGqeyTkl5hsjIW1rj7Nq1t2hkx7JlC3HhwhmNr0lJeYYVKxZjw4aftR7bUKQQY36qow/37fvDpFPiNmzYTNRAyq99e2k3/P3964hm1frhh/lqvwc5OTlYv34lrl37R1D+0UfjUaLE66bLwIEfiF47e/Zk3LhxTW0MCoVC54NmHx8/9Os3SFB28OBubNv2m8bGp0KhwO7dW/HVVxORlZWl9fimlpOTg4sX/8aXX44TjQLs1q03SpYsabT3PnJkr6ise/e+8PHx0/mf6ijC5OQkXLly0WixElm7nj3fFl2Dvv/+a7X3kmlpaZg//wtRuWqdbIw6Wmr3FobCa6jhSCHG/FSXaYyLi8XlyyEme39HRznatOmo8ffdu/cx6r2EsTk4OOCDD4RttW3b1ou+P3kuXDiD335bKSjr338wqlRxUW4bo31eqlQpjB8vrHdjY2OwePEsre2Vixf/xsSJI/Ra3tPUEhMT8NtvK9Q+FG/ZsoOaV5hHVFQk5s//QvS9c3aujJo1A8wUFVHxZ4z6uUOHbqKZ5n/8cREOHtyt8Xnjv/9e1hpncayf9SGV6ycgjf5tKcSYn2qS219/bdeZ2GFIqgPt8vP3ryNYAlKKDN02t+ZnEwWRkZGBfft2YsaMiaLftWtn/KR+e3t7vP9+sKh8y5ZfMX/+F0hLU1/XxcY+wPjxH+D8+VMIDw/D5s1rjB2qVbA1dwD6yuvkMWUlTESkikmcVBS+vjUQFNQdx47tV5atWvUdoqIiERTUDZ6evnj+/Blu3ryOVau+EzUAR44cJ3joAQBDhwYLjgfkjjI/d+4kevd+F+7uXqhcuSoePXqIixf/xt69O3TGWblyVYwf/wWWLp2nLIuOvoNRo95F//6D8cYbDeDq6o6MjAw8fHgfYWFXlce9d+8O6tVrDDs7uwL/fczNGOenY8ce+OOPTYiJiVaWhYZewJAhb2LIkI/g4+MHFxc3pKa+wNWrl7Bjx0adDX9bW1t89tkMBAe/pyxLT0/DjBkT0apVB7RuHQQPD2+ULFkSjx49QFRUJLZv36A8btu2nURTihuaFGLMT92SZePGDcOoURPg5uaJuLhYhIVdQUrKM1HHmCHY2tqiS5de2Lr1N9Hv5HIn0WwTUjRs2Mc4e/b1FNoxMdEYO/Z9fPjhWNSoURtyeQVERd3GkSP7RKOU6tZtiGbNWgvKPDy80avXAOzZs01ZFhcXi4kTR6Bbtz6oW7cB3Nw8YGNTArduXcf+/X8iOvqOzjjffz8Y586dRFxcrLJs7dofcfz4QfTp8x48PLxRrpwj4uPj8ODBPezevU05Uv7Ikb1aO3GMJSoqEqtXf4/y5R1RsqQtkpOf4smT/xAZGS4axQ8A3t7VERz8mdHiUSgUgvMCAE2btoajo1zDK4T8/etALncSJHsdO3ZANBKTiAzD3t4eH3wwBkuWzFGWnTx5GI8fP8I77wyFj08NlChRArdv38TWrb/h9u2bgtcPGfIRKlasJCgzRh0ttXsLQ+I11HCkEGMeFxc3yGQOgrbB55+PxdixUxEQUA+pqS9w48ZV3LhxHZMnz0S5cuUNHkOnTj1FS+vkUZ2RSoq6du2NrVt/Uz68Tk9Pw5QpH2P48E9Qr15jVKvmjkePHuCff86LHvLIZA54551homMao33evHlbdOjQTfD9PnnyMEJCzmLw4JGoXr0mKlWqiqSkRDx8eB/nzp1UPkxdt245pkyZVeC/jSHs3r0NYWFX4eBQBhkZ6UhMTEB8fBwuXTqndv9RoyaIlic1hbVrl8HJqQLs7OyRmvoc8fH/4dGjBxqTSadPXyBq9xORYRm6frazs8OoURMwb97/BOXffTcXp04dQZs2HeHm5glHRzkiI2/h1KmjCAnRnACQR6r1c1FJ5fophf5tKcSYn59fLZw8eVi5fePGNXz11QQMGDAUcrkT7t69jbCwq/D0zG1vGFqbNp2wbNlCtb/r3Lmn2nIpMUbb3FqfTagTEnIWCoUC5cqVR1ZWFp4+TUR8/GNcuXJR7b+5R49+6NChm0li69z5TezatUVwnoDcJNLTp48iICAQAQGBkMsrIDr6Dm7evC7q8920aS0aNmyOgIBAk8RcXEkmcSpvFJOljeQmIuvCxCkqqqFDgxEael7wQPjIkb1qZ+fIr0uXXmqTJ6pUccHw4Z/gl19+EpTHxcVixQrx0kz66tr1LZw/f0o0emXHjo3YsWOjxtfFxcVi794dotHcUmHo82Nra4sxY6ZgyhTxWtVFGWHh7V0dI0aMxZo1wuVFzp49Lniwps6aNcswe/aSQr+3vqQQY56aNQPQpk1HwYOhuLhYzJw5SbTvmDFTlWvFG1KHDt3UJk516tTTKO9nau7uXhg8eCQ2blytLEtOTsLixbO1vk4mc0BwsHjEDwAMHPghTp8+IppN6cCBP9VOBa8Pe3t7TJo0E599NlJQHh19R9Bxoc7KlUvQrl0X2NvbF+q9Cys9PU1rvZyfTOaAGTO+NWqMoaEXROekILOm2draok2bToIH+idOHMTo0ZON8lCYiPD/ieMHBCPFw8PDMGvWZK2v8/DwRt++6u/5jFFHS+newpB4DTUcKcSYp3Tp0hgxYqzo4ZC6h0UPH94XLUVoCA0aNBUlMwO5M+16efka/P1MrXTp0hg37nN8+eV4Qblq21qdTz6ZhPLlHUXlxmqfBwdPxOXLwnus9PQ0rF79vdbXHTu2H717v4MaNWoX+r0L6/z5U6KlmzXp0+c99O070MgRqaea8K/NF1/MN8p3jYiEjFE/t24dhIYNmyE09IKg/PLlkCLN6CjF+rmopHT9lEL/thRizNOjRz/8+efvghnTLl06J0qKbtiwmVESp8qXdxT13+Zp1SrI4O9nDoZum1vzswlVkZHhiIwM12vfgIBAjW1pYyhVqhQWLPgJkyePUjsI9saNaxqT+vPI5U6i5d6p4CQzPCIvcYprNBKROfXp0wcjR45E27ZtzR0KSVSVKi5YvXo7mjfX/zP06afTMGHCdI2/f/fd4Zg2ba4hwlOysbHBV199gw8/HFOg10l92npjnJ/AwEb48ccNcHFxNUSISm+//T5mzVqsdYk3dZo3b2PQOLSRQox5Ro2aoFecjx8/Msr7e3n5QiZzEJUXh9H8eYYM+QhffrlQ7b9TnTp16uHnn7fC17eG2t87OVXAqlVbDT4TUZ069bBq1ZYCd2AGBXW36CS33Ifuew1eF6nat2+nqKxp09Zq9tSsVav2ojJdHS9EVHi2trb4+utlGDx4hN6v6dmzP5YtWw8HB/V1urHqaCndWxgSr6GGI4UY83Tt2hsNGjTVuZ/qyGRDsbW1Rd26DUXlqsvqSlmTJi2xcuXvcHX10Gt/udwJixevRufOb2rcxxjtc0dHOVav3l7gv32dOvVEMw9YEn//Oli0aKVJH0wVRlBQd6xbt1Pr8pVEZFiGrp9tbGwwe/Z3GDDgfUOGWWzrZ12kcv2UQv+2FGLMI5PJMHHilzr3u3s3wmgx1KsnHrjcokU7vWc5t3TGaJtb87OJgnJ2rozPPvsKixatROnSpU363hUrOuPbb39Gq1YFX7q6ceMWWLHi92IxuMXcLLdnX0Ve5wQTp4jInHr37m3uEMhEbG1LCbZLltR9ySxdWjg1ruox8pQv74gZM77B3r07cPTofoSHh4n2kcudUKtWXQwdGgxv7+o637t9+y6oXr0m1q79EVevXlI7vWiLFu0watQEjBs3TDASqkSJkmqPaWtriwEDhqJ587Zaj+vh4Q0fHz80adISbdt2NskDBamdHz8/fyxfvhHr1i1HaOh5wfIg+fcJDv4MBw/uFsxwpe0mvVmzNlizZgfWr1+Fc+dOCkb85HF2rgxf35oICKiLzp17wcmpgs54DcmQMdrZ2Qk+g7qWSChVSniONZ3zvBjWrNmBH36Yr3FJErncCc+fP9N4vKJ+9mvVekMw0tHDw1u0ZrwplCpVWmVb899N3e9VX59fq1Yd4OtbE+vW/YibN6+r/Tz4+fmjVasO6N9/iM6/qVzuhNmzv8POnZtx9Og+tUsJyeVO+OCDMcjOzhZMf25np3nGCC8vX3z33Vrs2rUFhw7tUftAUiZzQI0ateHn549OnXqarHGq7XOcRy53goeHD1xdPeDm5oEOHbqhQoWKRo8tIyNDtKRB+/ZdNXbeaBIQUE+0PNHFi3+jWzfehxEZ61poa2uLIUNGoW7dhtiy5VfcuvWv2vu+OnXqoW/fgWjZUpzgqMpYdbQl3//wGmrZ11BjxGjMc25ra4s5c5Zi69ZfsX79KrX7yGQOyMhI13j8onb4+/rWEN0bm2NEv2rdpevvrNrG1baMjbd3dSxfvhEbNqzCpUvn1H4eXFxc0aBBMwwb9rHamTJUGaN9Xr68IyZNmoHWrYOwefNate1UAKhRozZ8fPwQFNQddes20Bmroei6R5XJHFCpUhV4eHjD1dUdderUR+PGLZQzu5uCrs8NkBunu7sX3N29UK2aG1q0aAcfHz8TREckTVKqn21tbfHhh2NRp059bNv2G8LCrqrdb8CA99G6dUeMHfs6yUomK6PxuJZcP0vp/ADW179tjBiN2WcO5M4mtWrVFixYMF3jct6596cZyplaxf2nuq/Hmnh6iu/Jg4JMs5yaKim1za3x2YQ+nzMXF1e4uXnCzc0T3t7V0a5dF5Muf6mqQoWK+PLLhbh06Rz++muHzmVjW7Roh379BqFOnXomirD4s8mRyHpTvXv3xsOHDzFkyBCMGzfO3OEQEZEBbP/pHh7eTYNXrXJo08fN3OGYjUKhQFzcQzx4cA8ymQM8PX2L/IA7Pv4x7t27C1tbW7i4uKFSpSoGafAlJMTj/v0ovHr1Eq6uHnBxcdOr81HKjHF+nj9PQVRUJDIy0lG1ajVUqVLNIMt+PH+egvv3o5CUlIgqVarBzc0DDg6aO3fMQQoxvnjxHHfv3kZKSjIqVHCGs3NlVKjgbPTP+qpVuQ8v84wc+Sn69x9i1Pc0t7zPQ3Ly0/9P8vEs0t85IyMDMTFRSEiIR6VKVeHi4oqyZcsVOc6MjAw8eHAPjx/HwsmpIlxdPUyehEiW4+qZJ7h+JgEOZUti1Kya5g6HDOza309xfOdjwAZ4/3+1zB2OWT158h9iYqKRmZkJDw9vVK1aTWdnsDbGqqOlcG9hDLyGGo4UYnz58iXu34/C48excHSUo2LFyqhYsRJkMplR3/fcuZOCpUEaN26BuXO1Lz8kdXmfh7i4h6hUqQo8PX2KXKcYo32uUCjw+PEjPHgQjdKl7eDm5olKlaoUqZ4macpIVWDb95EAgDeHuaP6G0Wvu8mC5ADfTboJAGjWrSpq1C/YzB7FiaHr57z+vocP76NcOUe4uLihQoWKRU7otNb6WSrXT0Aa/dtSiTEqKhJZWQrlvamTUwWjftafPUvGgAGdlNsymQO2bDlksuW0zcXQbXNrfjYhJampLxAVFYmkpEQ8e5aEkiVt4egoR4UKzvD1rWnyWbEK6ubFRPxzNB4lbW3w6UJp9K9JJnGqX79+uH//PgYOHIiJEy17+l4iItIPE6eKvxcvniMzM9Ngx7O1tUW5cuUNdjxrx/NjWWbNmoxz504qtzds+AuVK1dVu29GRoba0UZFYWkPCKVMoVDg+fMUgx6zXLnyBh/xyM9R4TBxqnhj4lTxx7rPsknlGmotdu/eip9++la5PW3aXLRv30Xj/snJSTBkV7O9vczoyWHWRCrnRypxWgomThVzTJyyCqz3LBvPj+WIjAzHmDGvB5n26NEPn346TeP+7Pu2bFJpm/NzVDhSTJySTK9ByZK50yxmZWWZORIiIiLS16efDkNsbIzBjieTOWDXrlMGO5614/mxHGfPHhckTQUGNtKYNAUAa9cuw5492wwaw5o12+Hu7mXQY1qrc+dOYt68/xn0mOPHf2Hwper4OSIia8S6z7JJ5RpqDR48uIfNm9cKypo1a6Nx/8TEJxg4sLtBY2jfviumTZtj0GNaK6mcH6nESURkKKz3LBvPj+VIS0vFypWLBWUdOnTV+hr2fVs2qbTN+TmyHpJLnFIoFGaOhIis2ZIlSxAeHo4mTZpgxIgR5g6HyOJlZzPh2ZLx/JhfbOwD7NmzDbt2bRGU9+zZT+vrsrOzDR6LMY5praRyfqRyTCIiQ2LdZ9l4fswvJeUZDh/eg40b1whGgHfr1lvr7AjGWNQgJ4fnzlCkcn6kEicRkaGw3rNsPD/ml5mZibNnj2Pz5rWIiYlWlru4uKJ27bpaX8u+b8smlbYfP0fWQzKJU3nrNBpyKjQiooK6c+cOLl++DCcnTotMpI/cWXNcDHY8R0e5wY5FPD/m9NVXE3H9eqja6YgDAxuhdesgra/39PRGYGAjg8ZUtiyXdDAUZ+fKBj8/2mYgKyx+jojIGrHus2xSuYYWR7//vg579/6BhIR40e9kMgcMGqR98JidnT0aNGhq0NUCfHz8DHYsayeV8yOVOImIDIX1nmXj+TGfS5fOYcWKxRpn+hk9egpKlCih9Rjs+7ZsUmmb83NkPSSXOPXq1SszR0JE1izvRozLhhLpZ8KE6eYOgbTg+TGfu3cj1CZN+fvXwdSps2FjY6P19b16DUCvXgOMFR4VUZ069bBo0Qpzh6ETP0dEZI1Y91k2qVxDi6PHjx9pTJqaM2cpKlWqovX15cqVx/z5PxorPCoiqZwfqcRJRGQorPcsG8+P+aSkJGtMmvrkk0lo3LiFzmOw79uySaVtzs+R9ZBc4tTLly/NHAkRWbO8ZUM51T8RERnagAHvY8iQUcr7XiIiIiIic2rVqgOCgyfqTJoiIiIiIjK2GjVqIzh4IgICAs0dChEVQ5JLnOKMU0RkTnmJU5xxioiIisLXtyZcXT3g4uIKf/86aNu2Exwcypg7LCIiIiKyUlWquMDfvw6qVXOHl5cPOnToxoQpIiIiIjILJ6eK8PPzR5Uq1VCtmhvatOkEPz9/c4dFRMWYZBKn7OzsAHDGKSIyryVLlpg7BCIiKgZmz+b1hIiIiIgsx8CBH2LgwA/NHQYRERERERo0aIoGDZqaOwwisiIlzB2AvjjjFBERERERERERERERERERERERGQoTp4iIiIiIiIiIiIiIiIiIiIiIyOpIJnEqb6m+9PR0M0dCRERERERERERERERERERERERSZ2vuAPQlk8kAAKmpqWaOhIisWUxMDOLj41GmTBnUqlXL3OEQERERERERERERERERERFRIUkmcapMmTIAgLS0NDNHQkTWbOvWrdi6dSt8fHywbds2c4dDREREREREREREREREREREhSSZpfqYOEVElqB06dIAgMzMTDNHQkREREREREREREREREREREUhmcQpBwcH5c/p6elmjISIrBkTp4iIiIiIiIiIiIiIiIiIiIoHySROlS1bVvlzamqqGSMhImuWlzj16tUrM0dCRERERERERERERERERERERWFr7gD0Vb58eeXPKSkpcHZ2NmM0RGStGjVqhJEjR8Le3t7coRAREREREREREREREREREVERSCZxqkKFCsqfExIS4OPjY8ZoiMhaBQYGIjAw0NxhEBERERERERERERERERERURFJZqm+/DNMPX361IyREBERERERERERERERERERERGR1Ekmcaps2bKwtc2dICshIcHM0RARERERERERERERERERERERkZRJJnEKeD3rVGJiopkjISIiIiIiIiIiIiIiIiIiIiIiKZNk4hSX6iMic4mLi8OCBQvw2Wef4fHjx+YOh4iIiIiIiIiIiIiIiIiIiApJUolTFSpUAMAZp4jIfJ4+fYodO3bg1KlTSE5ONnc4REREREREREREREREREREVEiSSpyqWLEiACZOEZH5lClTRvlzamqqGSMhIiIiIiIiIiIiIiIiIiKiopBk4lRcXJyZIyEia5U/cSotLc2MkRAREREREREREREREREREVFRSCpxqmrVqgCAFy9e4NmzZ2aOhoiskYODg/JnzjhFREREREREREREREREREQkXbbmDqAgPDw8lD8/fPgQjo6OZoyGiP6PvTuPrqo82z9+hYRAJgiQSQYzAgHCaBgUEApRVKJSRKUOVBGLUxUp/gSHNq0T+mrFVl5wZBBb8aWCGgQlzKCAAYIkJDGQQUjICAmZTubfH+hpt6GtIMmTk3w/a53l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xXQMAAAAAAAAAAAAwK6srMx0BABocZxjYmJiTIdoau7u7vLy8tKXX36poqIi2Ww2XX755aZjAWiF7r33Xr3xxhs6c+aMfdodAKD5bdu2TZ9//rlOnDih8PBw03EAAADQhr344ot64403VFJSoqFDh5qOAwAAgDZs6dKlevLJJ1VdXa1hw4aZjgMALUKbmDglSbfeeqvGjBkjSXr//fe1d+9ew4kAtEYDBw6UJO3cuZPpdgBg0LZt2/TWW29p3bp1pqMAAACgjfvqq6+UnJysrKws01EAAADQhhUVFWn16tUqLi7W8ePHTccBgBajzTROSdKf/vQndevWTZL05JNPqri42HAiAK3NxIkTJUlVVVXatGmT4TQAAAAAAMCknJwcnThxQpIUGRlpOA0AAADaqoaGBj355JOqqqqSi4uLHnzwQdORAKDFaFONU506ddILL7wgSSouLtYTTzyhhoYGw6kAtCYDBgxQz549JUlbtmwxnAYAAAAAAJj0w7WBdu3a6corrzScBgAAAG3V4cOHFR8fL0m699575efnZzgRALQcbapxSpKGDRumO++8U5K0b98+rVy50nAiAK3NPffco2eeeUYvv/yy6SgAAAAAAMAgFxcXde7cWcOHD1enTp1MxwEAAEAbNWjQIC1ZskSXX3657r77btNxAKBFcWpogyOXamtr9etf/1qpqalq166d/vKXv2jUqFGmYwEAAAAAAABohQoKCuTr62s6BgAAAAAA+JE22TglSdnZ2br11ltls9nUsWNHLVu2TL179zYdCwAAAAAAAAAAAAAAAEAzaHNb9f2gR48eWrhwoZycnGSz2fTQQw8pLy/PdCwAAAAAAAAAAAAAAC7YkSNHNGvWLJWWlpqOAgAtXpttnJKkMWPGaMGCBZKkoqIiPfjggyorKzOcCkBrkpCQoMWLF5uOAQAAAAAAmtGOHTtMRwAAAEAbFRsbqxkzZighIUFz5841HQcAWrw23TglSVOnTtXMmTMlSZmZmZo7d65qa2sNpwLQGqxfv16zZs3SsmXLlJycbDoOAAAAAABoBtu3b9fcuXN11113KTc313QcAAAAtCEPP/ywYmJiJEne3t767W9/azgRALR8bb5xSpIeeOABRUdHS5IOHDhg/8cEAH6O8ePHq2PHjpKk5cuXG04DAG1LTEyMIiMjddddd5mOAgAAgDaksrJS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XJxqa2u1ceNGbdy4UWFhYZo8ebImT57MFCqglXFxcdH8+fPVv39//elPf1Jtba327NlD4xQAAAAAwCEUFRWpW7dullppaan9eVBQkKKiolRXV9fc0QAAANqU3NxcdejQQV26dLHUY2JiFBcXZ6ldf/31lsapjh076oYbbpC3t7eCg4MVEhKikJCQRr8Hk6UAAC0ZE6dakVOnTmnNmjX66KOPVFhYaK87OTlp5MiRmjx5sn7xi1+oY8eOBlMCuNiOHj2q559/XosWLVKnTp1MxwGAFoGJUwAAAC3P9u3btWnTJu3YsUPXXnutFixYYDn+xRdf6Pjx45o4caKCgoIMpQQAAGjdCgoKtHjxYqWnpysjI0OVlZV69NFHdfvtt1vWvfnmm3rzzTfl6uqq0NBQ9erVS7/61a80cOBAQ8kBAGgaNE61QrW1tfryyy+1fv167dixQzU1NfZjbm5umjhxoqKjo3XZZZfJycnJYFIATc1ms9EsCaBNWrFihXbv3q2QkBDNnz/fdBwAAIA27cyZM7ruuutks9nstUsuuUSffvqpwVQAAACtT0pKig4cOKDMzExlZWUpPT1db731lqUp/fTp07rqqqss75syZYqeeuopS62wsFC1tbUKCAholuwAAJhC41QrV1ZWps8//1yxsbE6fPiw5Zi/v7+uvfZaXX/99QoMDDSUEEBTWbx4sTZs2KCYmBhFRkaajgMAAAAAaOXKy8u1d+9e9e/fv9EXbNOnT9fRo0fl6empyMhIjRgxQrfccouhpAAAAI7JZrPp2LFjOn78uPz9/TV06FDL8ZdfflkffPCBpbZo0SKNGTPGUluwYIF69uyp4OBg+4ObsAEAbRWNU21Idna2Pv30U61fv14nT560HAsLC1NUVJSuvvpqXXrppYYSArhYsrOzdeONN9pfX3PNNZo3b568vb0NpgIAAAAAtDa5ubn65JNP9NVXX9lv2ps/f76mTZtmWbd371517NhRgwcPNhETAADAYaSlpal3796W2r59+/SHP/xBBQUF9toNN9yg3//+95Z1H3zwgV5++WV16NBBQUFBCgoK0m233aYBAwY0S3YAABwRjVNtUENDgw4ePKj169crLi5O5eXlluPBwcGaOHGioqKiFBYWZiglgJ/ryy+/1DPPPGP/QWrs2LF69dVXDacCAAAAALQm33zzjWbOnGmpRUVF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AAAAms6HH36ojRs36ptvvrHXhg8fbpmK3bdvX/n5+alPnz6KiIhQREQEW9UAAACdOXNGBQUF6tatW6MtfJ988knt379fhYWF9lp8fLxlTUVFhdasWWOp5eXlNfp9RowYoW7dutkbovz8/NShQ4dG637c6A0AANBW0EUCh+Ph4WG5q6G6ulpJSUk6ePCgDhw4oG+++UYVFRUqKyvT7t27tXv3bkmSq6urwsPDNXDgQPvD39/f5KkArYKvr68eeughPfTQQ8rNzW10fNu2bZo3b56uuuoq3XjjjRo1apSBlAAAAABw/mw2m44dO6asrCz17NlTgwYNshzPzMy0NE1J0rfffmtpnJKkzz77rMmzAgCAliMnJ0dVVVUKDg621P/xj39o5cqVKigosE/JjomJUXR0tGVdUVGRpWlKOrudno+Pj/21n5+frrzySsu2eT+eSiVJd91118U6LQAAgFaJxik4PFdXV/tUqZkzZ6q+vl7ffvutfWu/hIQEnTp1StXV1frmm28sFzR9fHw0aNAgeyNVv379znmnBYCfJiAgoFHtk08+kSRt2rRJmzZtkp+fn55//nkNGTKkueMBaEOCg4M1bNgwhYSEmI4CAAAc0K5du/Tss89avrCcMmVKo8apyy+/XBUVFQoKClJISIgCAwPPua0NAABwbGVlZSovL1dFRYXKy8sVGBjYaML+jBkzlJOTo+LiYknSwIEDtWzZMssam82m7OxsS62oqKjR7zd8+HD5+fnJz8/PPiXK09PTsqZz587685//fDFODwAAoE1zamhoaDAdAmhq6enpSkpKUlJSkhISEnT06NF/uzY8PFzh4eHq37+/+vfvf847NAD8dMePH9fatWsVGxurU6dOSZI2bNggX19fw8kAAAAAtEU2m03p6enKyMhQRkaGsrKy9D//8z+WNd98841mzpxpqU2aNEnPPfdcc0YFAABNrKSkRAUFBSosLFReXp68vLw0YcIEy5q33npLb7zxhqX26quvauzYsZbaddddp/z8fPvrgIAAxcbGWtbs2bNHa9eula+vr/0xcOBA9erV6yKfGQAAAH4qGqfQJtlsNiUmJioxMVGHDx/W4cOH7Q0dP+bq6qq+fftqwIAB9maqwMBAOTk5NXNqwPFt3bpVqampuu+++yz13Nxcvffee5o4caKGDRtmKB0AAACAtuDpp5/Whg0b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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import nest_asyncio\n", - "\n", - "nest_asyncio.apply() # Required for Jupyter Notebook to run async functions\n", - "\n", - "display(\n", - " Image(\n", - " app.get_graph().draw_mermaid_png(\n", - " curve_style=CurveStyle.LINEAR,\n", - " node_colors=NodeStyles(first=\"#ffdfba\", last=\"#baffc9\", default=\"#fad7de\"),\n", - " wrap_label_n_words=9,\n", - " output_file_path=None,\n", - " draw_method=MermaidDrawMethod.PYPPETEER,\n", - " background_color=\"white\",\n", - " padding=10,\n", - " )\n", - " )\n", - ")" - ] - }, - { - "cell_type": "markdown", - "id": "d821b2f6", - "metadata": { - "ExecuteTime": { - "end_time": "2024-04-18T12:18:30.629629Z", - "start_time": "2024-04-18T12:18:30.620092Z" - } - }, - "source": [ - "### Using Graphviz" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "d4234400-75cd-4b13-aeff-828f7fb68ab1", - "metadata": { - "ExecuteTime": { - "end_time": "2024-04-19T11:25:42.057704Z", - "start_time": "2024-04-19T11:25:42.019017Z" - } - }, - "outputs": [], - "source": [ - "%%capture --no-stderr\n", - "%pip install pygraphviz" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "ee026342-f560-4ce0-ab43-1718bd19a366", - "metadata": { - "ExecuteTime": { - "end_time": "2024-04-19T11:25:42.631675Z", - "start_time": "2024-04-19T11:25:42.452377Z" - } - }, - "outputs": [ - { - "data": { - "image/png": "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P87s2bNZt24dDz/8MP/85z8xGAxahyWEEGesrKyMPXv2OBWn0tLSUBSlSXHq/PPPJzQ0VOuQRQdw8OBBbDYb/fr10zoUIYToSFq3EFVYWMiQIUOYOHEiq1ataq3ZCKGJJUuWoNPpmDdvntahCCGEaCNJSUksWrSItWvXMmLECObNm8f1118vB2mFEC5FURRefPFFEhMTGTFiBKtWrSIqKkrrsIQQ4pyVlpayd+9ep+LU/v37AZoUpy644AK5zbJo4u6772bFihVccsklrF69msDAQK1DEkKIjqB1C1EA33zzDVOnTuXVV1/lr3/9a2vOSgghhBCixdlsNr766iueeOIJkpOTiYuLIzExkWnTpmkdmhBCtKrU1FSuu+46fv/9d15++WWuu+46rUMSQogWV1JSwr59+9iyZQtJSUmkpKSQm5sLNC1OxcfHExwcrHHEQks2m401a9bwzTff8Morr2gdjhBCdBStX4gCeOihh3jhhRf46aefiI2Nbe3ZCSGEEEKcs5qaGv7zn//wr3/9i0OHDjFlyhQeffRRRo8erXVoQgjRZsxmM4mJiSxbtowbbriBFStW4Ofnp3VYQgjRqnJycpyumtq+fTt5eXkYDAb69+/vVJwaMWIEPj4+WocshBBCtGdtU4iyWq1MnjyZw4cPk5ycLJetCiGEEKLdKisr46233uLZZ5+lsLCQa665hkceeUTuAy+EcGv//e9/ue222/D392fVqlWMHTtW65CEEKJNnVic2rZtG/n5+RiNRvr16+dUnBo5ciTe3t5ahyw0lJubS5cuXeQW3kIIoWqbQhRAXl4esbGxxMfH89FHH7XFLIUQQgghTlteXh4vv/wyS5cuxWq1csstt5CYmEh4eLjWoQkhRLuQl5fHLbfcwvr163n44Yd59NFH0ev1WoclhBCaObE49fPPP1NYWNhscWr06NF4enpqHbJoIwkJCWRnZ3PnnXdy7733ah2OEEJore0KUQA//PADF198MUuXLuXOO+9sq9kKIYQQ7daRI0dQFIXu3btrHYrbyszMZOnSpaxcuZKAgAD+/ve/M3/+fIKCgrQOTQgh2h1FUXjxxRe5//77iYuL47333iMiIkLrsIQQot04sTi1ZcsWiouLMZlM9O3b16k4dd555+Hh4aF1yKIV/Prrr6xYsYK8vDw++OADrcMRQgittW0hCuCJJ57g6aef5ocffpDbOQghhHB7c+bM4eDBg/zvf//TOhS3s2vXLp5//nk++OADevbsydy5c7n99tvlNipCCHEaUlJSmDlzJsePH+eVV17h2muv1TqkDmPr1q1s3bqV+fPnax2KEKINWK1W0tPTnYpTO3fupKqqqqE4FR8fT1xcHCNHjmTgwIFytakQQghX0/aFKJvNxowZM/jll1/Ytm0bPXv2bMvZCyGEEO3KFVdcgYeHB6tXr9Y6FLeRlJTEokWLWLt2LcOGDWPBggXMnDkTo9GodWhCCNGhVFdX88ADD/Diiy9y44038vLLL+Pr66t1WO3e/fffz3fffceuXbu0DkUIoZHmilM7duyguroaPz8/hg0b5nTllBSnXJfFYpH9ECGEO2j7QhRARUUFcXFxWCwWfvrpJwIDA9s6BCHOWUpKCgUFBUyePFnrUIQQHdjq1avx9PTk8ssv1zoUl2az2fjqq6946qmn2LZtG3FxcSQmJjJ16lR0Op3W4QkhRIf2+eefc9tttxEaGsoHH3xAbGys1iG1axdeeCHR0dG8/vrrWocihGhHLBYLGRkZTsWplJQUzGYz/v7+DB061Kk4FRMTI/3YDs5mszFkyBBGjRrF3LlzGTlypNYhCSFEa9GmEAVw+PBhxowZw4gRI1izZg0Gg0GLMIQ4a3feeSepqan8+OOPWocihBDiJGpra1m9ejXPPPMMBw4cYMqUKTz88MOcf/75WocmhBAuJTs7m5tuuoktW7bw0EMP8eijj8rZ+ydRVFREVVUVkZGRWocihGjn6urqOHDggFNhavv27dTW1hIYGMjgwYOlONWBWSwW3n77bV566SXGjBnDq6++qnVIQgjRWrQrRAH89NNPXHjhhcybN49FixZpFYYQZ2XBggX8/PPP/Pzzz1qHIoQQ4gQVFRW88cYbLF68mOPHj3Pttdfy4IMPMnDgQK1DE0IIl6UoCi+++CL3338/48aN49133yU8PFzrsIQQwqU0Lk5t2bKFpKQkMjIysFqtBAUFMWjQoIbCVHx8PNHR0VqHLE5DdXW1PKtWCOHKtC1EAbz33nvcfPPNvPnmm8yaNUvLUIQ4I3v27KGsrIz4+HitQxFCCFEvPz+f5cuXs2zZMmpra5k9ezb33XefnHUuhBBtKDk5mZkzZ1JSUsLrr7/O9OnTtQ5JCCFcWkVFBbt27XK6cio9PR2bzUZYWJjTVVOjR4+mW7duWocshBDCvWhfiAJ46KGHeO6551izZg2XXHKJ1uEIIYQQooP57bffeOGFF3j99dfx9fXljjvuYO7cuXTq1Enr0IQQwi2Vl5dz7733snLlSm688UZeeeUVfHx8tA5LCCHcRnl5Obt373YqTqWlpaEoSpPi1JgxY+jSpYvWIYuTqKysZNq0adx4441cd911eHl5aR2SEEKcqfZRiFIUhVtvvZX//Oc/rF+/ngsuuEDrkIQQQgjRAezdu5d///vffPjhh0RGRjJ//nxuu+02OdgphBDtxKeffsrtt99O165d+eCDDxg+fLjWIQkhhNsqKytjz549p1WcGjt2LJ07d9Y6ZAHk5uZy77338sknn/D444/z4IMPah2SEEKcqfZRiAKwWq1cffXVbNq0ic2bN8szHIQQQghxUklJSSxatIivvvqKwYMHc++99zJz5kyMRqPWoQkhhDjB77//zo033sgvv/zC448/zn333Yder9c6LCGEEEBJSQn79u1zKk7t378foElxKi4uTu44oKFjx47h6elJcHCw1qEIIcSZaj+FKFAfzHfJJZeQlZXFli1b6Nmzp9YhCSGEEKKdUBSFtWvXsnDhQn766Sfi4uJITExk6tSp6HQ6rcMTQghxClarlcWLF/PPf/6TCRMm8M477xAWFqZ1WEIIIZqRm5tLcnJyQ2EqOTmZY8eOAY7iVHx8PHFxccTGxuLr66txxEIIIdq59lWIAigtLWX8+PFUVVWRlJQk96gVQgjhsr7//ntSUlK47777tA6lXaurq+PDDz/k2WefZf/+/Vx22WU88MADxMXFaR2aEEKIM/TLL79w/fXXU1payptvvsnUqVObHc9qtfLxxx/zl7/8pY0jbD0lJSX4+/tjMBi0DkUIIc5YTk6O01VTv/zyC8ePH8dgMNC/f3+nK6dGjhyJt7e31iG7naNHj7J8+XLuvPNOIiIitA5HCCEaa3+FKFA3nHFxcYSFhfHdd9/h7++vdUhCCCFEi3vkkUdYs2YNu3fv1jqUdqmyspLXX3+d559/niNHjnDllVfy2GOPMWjQIK1DE0IIcQ7Kysq46667eP/997ntttt44YUXmjzb78knn+Txxx/nxx9/ZNy4cRpF2rJuu+02fv/9d9atW6d1KEII0SJOLE5t3bqVgoICjEYj/fr1cypMjRo1Ci8vL61Ddmk//PAD119/PQUFBXz77bdceOGFWockhBB27bMQBZCRkcH48ePp27cv33zzDX5+flqHJIQQQrSoOXPmcOjQITZs2KB1KK2uoqLitHN5WVkZb731FgsXLqS4uJhrrrmGRx99lD59+rRylEIIIdrSxx9/zJw5cwgPD+eDDz5g6NChAPz888/Ex8ejKArh4eGkpqYSGBiocbTnLiYmhhkzZvD0009rHYoQQrSaE4tTP/30E0VFRc0Wp0aPHo2np6fWIbuU2tpaPvnkE6644gop/Akh2pP2W4gCtRg1ceJEoqOj+fbbb6UYJdoVm83Gn//8Z+6//36XOUtTCNG2SktLqaqqcvlnZCxdupTvv/+eL7744pTjHTt2jFdeeYUlS5agKAqzZs3igQcecPnfRwgh3Nnhw4e54YYbSE5OZuHChcyePZuhQ4dy5MgRLBYLJpOJa665hvfff1/rUM+JoigkJiYyffp04uPjtQ5HCCHalL04tWXLFpKSkti1axeVlZWYTCb69u3rVJw677zz8PDw0DpkIYQQLat9F6IA0tPTmThxIn369JEro0S7ExgYyHPPPcdf//pXrUMRQoh2afHixdx3333odDr27dtHTExMk3EOHjzIsmXLWLlyJUFBQcyZM4d//OMfLnH2uxBCiD9msVh44oknePrpp+nWrRvHjx+nrq7OaZwPP/zQpZ4XJYQQ7sxqtZKenu505dTOnTupqqrC19eX4cOHOxWnBg4ciF6v1zpsl3Ho0CGqq6sZPHiw1qEIIdxH+y9EgaMY1bdvX77++mspRol2IyYmhr///e/cfffdWocihBDtzrPPPktiYiIAJpOJv/zlL7z77rsNn+/YsYMlS5bwwQcf0KtXL+6++27mzJkjt5AQQgg39cQTT/DYY481Ga7T6fD19SU1NZUePXpoEJkQQojWZrFYyMjIcCpOpaSkYDab8ff3Z+jQoVKcaiH3338/ixcvZtKkSaxevZqQkBCtQxJCuL6OUYgC2LNnD5MmTSImJoavv/4aX19frUMSQgghxEksWrSIBx54wGmYwWDg0KFDZGdns2jRItauXUtsbCzz58/n+uuvx2AwaBStEEIIrWVlZTFkyBCqqqpobhfVZDJx3nnnsWnTJjnwKIQQbqK54lRycjI1NTUEBAQwZMgQp+JUTEwMOp1O67DbPUVRWLduHZ999hmv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5BNcvHgR0dHReOqppzB9+nS4ubkJHe+OKC0thbe3t9AxiIiI6BYYDAacOXMGiYmJcHFxwfPPPy90JCKyAnq9Hrm5ufD29oajo2Or44YPH47y8nIMGDAAH3/8sRkTEhEREVEHUCEWOgFRR+Tp6Ym//e1vuHDhAk6ePIl7770XL730Evz8/DB16lTs378fHbnHe+LECchkMmzatEnoKERERHSLxo4di1WrVqGoqEjoKERkBb744gs4Ojqia9euSElJaXPsgQMHcPr0aTahiIiIiOiGeEUU0R2iUCiwdetWrF+/vvGmun/5y1/wl7/8pcMtfaPX67Fo0SIsX74cJ06cQExMjNCRiIiI6CZyc3MRFBQEkUgkdBQislAGgwFr1qxBZmYmgoKCsHDhwlbHZmRk4OjRo+jWrRt69erF++MSERER0R/FpfmI2kNaWho2b96MDRs2QKlUYvz48Zg5cyYefPBB2NjYCB3vlqWmpvL+V0RERAJSKBRISEjADz/8gEcffRTjxo0TOhIRWSiNRoPs7GyEhoZCIpG0Oq5nz55wdnbGgw8+iNdff92MCYmIiIiok+LSfETtISoqCkuXLkV+fj6++OILVFRUYPz48ejatSv+8Y9/ICcnR+iIt4RNKKI7LzExEatWrRI6BhF1EEVFRZg9ezYKCws71GQWIjKv9957D46OjoiIiMDly5fbHHv+/HkcPXqUTSgiIiIiMhteEUVkJunp6di4cSM2btyIa9euYdiwYXj66acxYcIESKVSoeMRkZksXrwYiYmJSE1NFToKEXUQSqWSS2IRdUJKpRLr1q2DXC7HgAED8OSTT7Y69vTp08jIyEB4eDh69uwJOzs78wUlIiIiImobr4giMpeIiAgsXboUV69exZYtWwAAjz76KLp27YpXX331pjMXiYiIyHqcP38eixYtQnR0NPLz89scyyYUkfWpra3FxYsX2xxjY2ODDz74ABcuXEBdXV2bY/v27Ytp06YhJiaGTSgiIiIisji8IopIQHl5efjyyy+xdu1a5OTkICYmBjNnzsTMmTPh6ekpdLw2ffvtt7j33nsRHBwsdBSiDqW2thYajQaurq5CRyEiAf3vf//De++9hzFjxuDll19mPSXqRObNm4f169cDAFQqFRwcHARORERERETUrirYiCKyAHq9HklJSdi0aRN27twJvV6P+Ph4zJw5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IiIiItLgaWk+EZG64HQ62bFjB6tWrSIpKYlvvvkGX19frr/+ehITE7n55puJjo42OqbUk61bt3LNNdeccd5qtfL0008zY8YMA1LJxcrNzWXChAls3LiRJ554glmzZhkdSS7QnDlz+O677zCZTCxatKjWcXa7na1btxIVFUX79u0xmUz1mFJERERERETkkqRClIhIXSovLycuLo4hQ4YQFRXF1q1bSUpKori4mMjISBITE2v2lvL19TU6rtShyMhIcnJyzjj/448/0rlzZwMSycWqrKzk/vvvZ/DgwQwePJjg4GCjI8kp3G43ubm5ZGZm0qNHD1q3bl3r2D/84Q8UFBQQGxvLzJkz6zGliIiIiIiISKOnQpSISF0qKSnhpZdeYsGCBUyaNImnn34ah8PBxo0b+eqrr1i2bBnp6ekEBgZy4403MmLECIYPH06HDh2Mji5eNnPmTP7617/WLM9nMpno2bMn27dvNziZnI3b7Wb79u3ExMSoSHyJWrhwIXfddRcAixYt4tZbbzU4kYiIiIiIiMhlSYUoEZH64HK5qKioICAg4Ixr+fn5rFixgi+//JIVK1ZQWlpa0y2VmJjI8OHDCQwMNCC1eNPu3btPW47RYrEwe/ZsHnnkEQNTydksXryYBx54gPz8fFauXEliYqLRkeQUjz/+OBkZGYSHh/PGG2/UOi4/P5/MzEw6d+5MSEhIPSYUERERERERkVOoECUi0lAUFhYSFBTEhg0bWL58OStWrCA9PR1/f38GDBjA0KFDGTZsGF27djU6qlyg7t27k56ejtvtxmQykZubS7t27YyOJf8jPT2dpKQkhg0bRs+ePbUPUD1wOBzs27ePrKws+vfvf9ai/c9uu+02bDYb/fr148EHH6zHlCIiIiIiIiJyAVSIEhFpCH766SfCw8OJj4/n8ccfZ+TIkYDnX/SvX7+epKQkli5dytGjRwkNDWXw4MGMGjWKxMREWrRoYXB6OVezZ89m+vTpuFwubrjhBtauXWt0pMtOQUEBKSkpDBs2zOgocornnnuOGTNmALBlyxb69OljcCIRERERERER8RIVokREGoKqqipWrFjBhx9+yMiRI7nzzjvPGON0OtmxYwerVq1i1apVrFu3DpfLRa9evWqW8Rs4cCAWi8WAGci5yM3NpWPHjrjdbubNm8ekSZOMjnRZeeCBB3j77bcJCAigoKAAf39/oyM1asePH2fatGlkZWXRr18/nn766VrHHjhwgIKCAqKiomjevHk9phQRERERERGROqZClIjIpaqoqIhVq1axYsUKVqxYQV5eHq1bt2bw4MEMHTqUxMRELfvWAPXr14+tW7eSn5+vbrZ69vXXX1NeXk5CQgJNmjQxOs4lq6KigszMTLKyshg9enSt41wuF4MHD6Zjx44MHTqUsWPH1mNKEREREREREWkgVIgSEbnUzJw5k4EDB9K/f398fHxqzu/cubOmKLVx40YqKyuJjo4+rVuqadOmBiYXgLfeeovly5ezZMkSo6M0CAUFBYSEhFzUMxwOB5s2baKqqoohQ4Z4KZnUZvLkycybNw/w7G3XunVrgxOJiIiIiIiISAOmQpSIyKWkqKiIhIQEdu7cyf3338/cuXPPOu7EiRNs2rSpZhm/7du3YzKZTlvG74YbbsDX17eeZ9D4lZeXY7fbsdvtNefsdjsOhwOA0tJSUlJSGDhwYM31UzujfH19CQoKavRFw8rKSmbMmMFXX31FWlraBT/H5XLRoUMH8vLyGDNmDP/+97+9mPLycejQIWbOnElmZibjxo1j8uTJtY7du3cvFRUVREVFaXlDEREREREREfk1KkSJiFyK9u7di9vtpkuXLuc0/siRI6xZs6amMJWdnU1AQAB9+/atKUz17t0bs9nslXwul8trzzJSUVEReXl5HD58mPz8fAoLC8nPz/ccFxzm2NEjlJWVUlZWRklJGaX2cpxOl9e+v1nTJgQFNiEoMJDAoEBatGxNcEgYwcHBtGnThtDQ0Jrjtm3bEhYWhslk8tr315X09HTGjh1LRkYGbrebAwcO0KFDhwt+3tKlS4mOjiYyMtKLKRuH0tJSMjMzyc/PZ/jw4bWOKygoYPz48URFRTFmzBgGDx5cjylFREREREREpBFTIUpEpLHasmULXbt2PWtnTXZ2Nhs3bmTTpk18+eWX5OXlERwczMCBA0lMTGTIkCFERERc0PdmZWVx1113MX/+fLp27XqRs6hbTqeT7Oxsdu3aRU5OjueVncW+nL3s259LaVl5zVirxUxIcwshTU2ENq0mJMhJiyYQ5A+BftA8AIL8PMdB/p7jn/nbwM969gzVTiirOPn5RBXYKzznisuh7ITns70SjtqhsMxMod3C4RIT+ceqKa901tzra7PSMbwtEZ2uIKJTFBEREXTq1IkuXboQHR1tePeK2+1m3rx5PPzwwzidTqqrq7FYLMydO5dJkyadMT4rK4vly5dz3XXXERcXZ0DiS9/QoUNJTk4mKCiIkpKSS6JQKSIiIiIiIiKNigpRIiKNkdvtpn379hQVFXHffffx5ptv/uL47Ozsmm6p5cuXU1ZWRmRkZE231I033kjLli3P6bvfffddJk2ahM1m49lnn2XKlCmn7WVllP3797Nt2zZ27dpFWtoP7M7Yya7dmVRWeZbMC21pI6I1RLSqolMwRARDp2Bo3xJCmkGrQIMnUIvjlXC4GH4qhpxCyCmAfUdgX5GVnEITB484qHa6MZtNdOrYjpjYXnSLiaVbt2707NmTmJiYevnzyc/PZ8KECaxcuRKX62TXmI+PD6NGjWLx4sWnjd++fTtXXXUVTZs25e9//zsTJ06s84yXirS0NF544QUyMzOZPn06o0aNqnVseno6VquViIgIbDZbPaYUEREREREREQFUiBIRabyOHTtGUlISTqeTe++995zvq66uJjU1taYwtW7dOpxOJ717964pTF1//fX4+flRWVmJ1Wo9bRm+8ePH8+mnn1JdXY3ZbKZXr168//77dOvWrS6meValpaXs3LmTbdu2sWnjetavW0t+4VEAwlpaiWnnpFtbFzHtoVs76NXR08nUGFU74UARpB+EjEOQfshExk82dh2sprzCSZMAP3r17EFcH0/XUVxcHN26dfNq58znn3/OfffdR3l5ec1eWacKCAiguLgYq/Vk25jL5WLDhg307dv3tPON2ZEjR8jMzKS8vJyEhIRax6WmpjJ9+nSioqK46667uPrqq+sxpYiIiIiIiIjIeVEhSkTkcpednU3z5s1r7Xiy2+189913NYWplJQU/Pz86NevH6GhoezYsYOPP/6YmJgYAEJCQigsLKy532Kx4Ha7efTRR5k1a1addGWUlJSwfv16vv76a9Z8vYIf0vfgdrvpFGrjmk4O+kS6ueYKuCoCmvh6/esvSdVOSD8EW7NgcxZs3Wcj/YCne6p92xASEoeSkHAjCQkJF7x/U1lZGVOmTOGdd97BbDaf1gn1v9atW0f//v0vdDqNQteuXdmzZw+xsbH88MMPRscREREREREREfEGFaJERC53Y8aMISkpiX79+pGcnPyrhaLc3NyaotSSJUsoL/fsoxQbG8uYMWOYNWvWWe/z8fGhS5cuLFy4kKuuuuqic6ekpLB48WKSly9l2/ZU3G43PTpaGdS1ioQYuPYKCD5zeyz5BeVVkJIDa3fB6gwfvt3rpqLKRVSnDiQOHcno0aNJSEg4p2Li5s2bGTt2LHl5eWftgjqVzWZj6tSpPP/8896aSoOxdu1a3nzzTbKyspg3b94v/t1PTU2lWbNmdOjQoUEsZykiIiIiIiIi4gUqRImIXO6Ki4tJTk4mLS2t1iJSbWJiYsjIyACoWcrNZDLV2vlyMd1RTqeTDRs2sGTJEpZ8voj9uXmEh/gyskclCTEwMBpaB51XfPkVFQ745kdYnQHLd1pIyakmKDCAESNu4jdjfsvw4cMJCjr9h15dXc1LL73Ek08+CXj+3M5FTEwMaWlpvzru0KFDtGvX7vwn42UHDx4kKysLq9VK3759ax23cuVK5s6dS1RUFL///e/p3LlzPaYUERERERERETGcClEiInJuDh48SFpaGv379ycgIICSkhJatmx5WtHJZDJxLr9WfHx86Ny5MwsXLiQuLu4Xx+7Zs4ePPvqI9979Pw4cPExkqJWbejq47Vro1wW8uJWR/IrcIvgqFZJ2WFmR6sRs9uHmm2/mrrsnMGLECLKyshg3bhzbtm0772ebTCYOHTpEWFjYWa/v3r2bp556is2bN3PgwIGLncpFcbvdBAYGUl5ezk033URSUpKheUREREREREREGjAVokRE5NzMnz+fiRMn4uvrS3JyMqWlpYwaNeqCn2exWHC5XEybNo1nnnkGX9+TmzcdP36cDz74gPfmz+O7zd/TMcTGPddXMb4fdA71xmzkYhXZ4fOt8N56C9/+WE14+1C6dutBREQELpeL4uJiCgsLOXr0KCUlJZSWlmK326murq71me+99x733HPPaeeys7OZOXMmH374YU233fHjx/H39/f6nD777DMWLlzI3r17Wb16NW3atKl17Pfff0+7du1qLZyJiIiIiIiIiAigQpSIiJyPvLw8Vq5cyS233MJzzz3HK6+8QlVV1QU96+el/NxuN7GxsSxYsIDw8HBef/113njtFcrL7fy2j5t7+rsY1A3M6nxqsHYdggXr4f1vrBwpdXHHHXcw7bHH6d69+xljy8vLKSkpoaSkhOLi4tPeO3XqxODBgwFPB96LL77IW2+9BXDaPlNpaWnExMScUzan08n+/fvJzMwkODiY3r171zp24cKFLF26lKioKB5++GGCg4PP58cgIiIiIiIiIiJnUiFKREQuTFxcHCkpKed1T5MmTQgJCSEkJIT27dsTFhZGcHAwNpuNjRs3sPrrVTTxdfNQooOHhkCrwDoKL3XC4YSPvoHZyyyk51YzbOhgZjz151/cQ+l/HTlyhDlz5vCPf/wDt9t9WgHqZ0uWLGH06NHn9LyCgoKazqaHHnqI11577ZyziIiIiIiIiIjIRVMhSkREzp/dbqd58+Y4nc5zGv/z3lHjxo3j1VdfpVWrVoBnCb7Zs2cz+8W/ERLkYupwB/cNhABb3WWXuud2w7Id8MJSCxt3O7n9tlt54cXZdOzYsdZ7jh49yquvvsrs2bOpqqqqdQk/m83G888/T5MmTfjPf/5Dbm4uO3fuxGw21/rsLVu2EBUVRcuWLS96biIiIiIiIiIicl5UiBIRkfO3cuVKhgwZck5jbTYbJpOJyspKAEJCQnjttddwOBw8/thUyoqLeHJ0NX8cCr7WukwtRvgiBR79yMLBo2amTJ3GjBkz8PPzq7lut9t54403ePbZZ6msrDxrB9SprFYrEydOpEuXLqSmphIVFcW0adNO22NMREREREREREQaDBWiRETk/D311FM899xz2Gw2HA4HLper5prFYqFVq1a0b9+etm3b0qFDB9q0aUPbtm0JDQ0lKCiIl+bMZumyZUwaCH+5zU1IU+PmInWvqhreWAnPLLbQoeMVfPTJZ0RGRvLGG2/w/PPPU1paetrfoV8zYMAA1q5dW3eBRURERERERETEW1SIEhGR8/fiiy+Sl5dHWFgYYWFhhIaG1hSaWrduXet9Gzdu5M5xY3GUF/LPyQ4SY+sxtBhuXyHcOdeHbfvMXH/DAPLy8ti9ezculwur1Yrb7a51Sb5ThYWFkZeXVw+JRURERERERETkIqkQJSIi9eOzzz5j/LjfMaynm3cnOWkdZHQiMYLTBc8tgb8sMXP/Aw8wZ85LZGZmsm3bNrZt28a3337Ljh07cDgcWCwWTCbTGcv1mUwmysvLT1viT0REREREREREGiQVokREpO4tXLiQe++ZwOQEN69NcGM2GZ3o0tPnKfg+G4L8oPRdo9NcvKQUuP01H8b89jb++a/3sVgsNdfKy8tJTU0lJSWlpji1d+9enE4nZrMZl8tFRkYG0dHRBs5ARERERERERETOwTHLr48RERG5cIsWLeLuu+/mqd+4eea3RqeRhmLUVfCfKU7GvLyIBx9swttvv1NzLSAggPj4eOLj42vOnThxgp07d7Jt2zZSUlIoLS01IraIiIiIiIiIiJwndUSJiEidycrKIu6qntx1XTmvTdCvm4vR2DqifpaUAqP/DgsXfsC4ceOMjiMiIiIiIiIiIt6ljigREakbTqeTO26/lStaVzFnXOMrQu08AGt3wb5C6NoW+nf1vJ9qcybs/gksZhjfzzM2+QfY8xPEtIcxfaB5wJnP3pzpeXZxOcR3hlG962dORhh1FTwy3MT9/28S1113HZGRkUZHEhERERERERERL1IhSkRE6sT777/PjtRUfvibG1+r0Wm8x+WGpz+Dv/7Hc/wziw/85VZ4fBSY/rsH1r82wpsrwd8GAb5w5xtQXnXynlmfw9fT4Yo2ns9uNzz6Ifx92enfObI3lJ2o23kZ6W9j3SzfWc2MJ6fz4UcfGx1HRERERERERES8yGx0ABERaZxeffklxvc7s0voUjd/LTy3xFOEahUIvx8E7VtCtRP+9Aks2nzmPRUOuPVliO0ADw+FiGDP+f1H4IWkk+M+3XyyCGUyebqF+naBpds9XVSNlc0CM0Y7WLToM376qRFPVERERERERETkMqRClIiIeF12djbbU9OYcEPjWpKvqhqe/NRz3DwA9r8Kb0+CnJchvJXn/J8/93Q2ncrthpvjYPMseOVuWPmnk9d25p48nvX5yeNl0+CLqbBpJsybVDfzaUjG9IEAXxNLliwxOoqIiIiIiIiIiHiRClEiIuJ1mzdvxmY1E9/Z6CTelZUPBaWe4xtjPZ1ORXYoOQEjennO7zoEh0vOvPfBxJPHUW2gdZDnuKjM8+5wnux6ahUIQ3qcHH/fQGh2lr2kGhM/K1wbBVu2bDE6ioiIiIiIiIiIeJH2iBIREa87fPgwwc0s+Fmrfn3wJWRv/snjf2/xvM7m0FEIa376ueCmp38OsHnenS7Pe27RyeMB0WA2nRxrNnmW/yspv/Dsl4LwltXkHjpgdAwREREREREREfEiFaJERMTrzGYzLpfRKbzP6nPyuFdHuDry7OP8bGee8/2f37jm/+lJbup/8tjhPP1atRMOHDn3nJcqpwt8fPSfJiIiIiIiIiIijYn+b4+IiHhdu3btKCxxcLwSmvgancZ7IkNOHgf5nb53U/pBCPTz7BVlMp1579nOnap1kGf5vZJy2JYDLvfJrqhvM6Gs4uLzN3Q5R6x06dfR6BgiIiIiIiIiIuJF2iNKRES8Lj4+HqcL1u0yOol3XRkGV0V4jjf+CJ985+ni2X8E+j0DEX+EXtOhqvrCnv+bqz3vecfgoQVQegKOlMGzi72RvmErq4AtWS7i4+ONjiIiIiIiIiIiIl6kQpSIiHhdu3bt6Bd/De+u8/n1wZeYOeM9+zu53XDHaxD6IEQ+4ulksvjA2xPBdoH9xs/efnKJvrmroOVkCHkAVmfAFW28N4eG6MNN4HKbueWWW4yOIiIiIiIiIiIiXqRClIiI1Imp055g8VYnW7KMTuJdg7rBN89AXCdP4elImafwNLg7fPAgXBt14c9u1wI2z4LeEZ7PTheENYcvpsKNMV6J3yDZK+D5JCv3TZxIixYtjI4jIiIiIiIiIiJeZHK73W6jQ4iISOPjdrsZNnQwWWnrSfmLo6bTpzGpcMDewxDVBvxt3n12folnubqoRt4JBXDnXDMrdzcj9YcMQkNDjY4jIiIiIiIiIiLec0yFKBERqTMFBQX06hHD9Z2O8clDTkwmoxNJQzNvDdw/38RXXy1nyJAhRscRERERERERERHvUiFKRETq1po1axg2dAjj+7qYN8mFTz0sCtvjiXMbt+cnqKqG7h3ObfzCB6FH+IXn8pY9P8Ftr5z72IY6x39tgPveNvHkjKd45pln6udLRURERERERESkPh27wO3URUREzs2gQYP4avkKRt88kqPHq/jkIRe+1rr9zuyCcxtXVX1+4yurLyyPt1VVX/pzfOtr+MMCE9OmPaYilIiIiIiIiIhII6aOKBERqRcbNmzgppHD6BJSxYcPVtNZWwFdlk5UwROfmHl1uYs///nPzJw50+hIIiIiIiIiIiJSd7Q0n4iI1J89e/Yw7o7b2ftjBnN+V83kBKMTSX3algPj51rJt/vy1v+9w9ixY42OJCIiIiIiIiIidetYPezUISIi4nHllVfyzXdbmPzAH7l/vokRs33YdcjoVFLXjh2HKQsh/s9m2l/Zl7T03SpCiYiIiIiIiIhcJlSIEhGReuXr68ucOXNYs2YNP7m60nO6mYf/ZaLIbnQy8bZqJ7y5Ero8amHhlua89vqbJK9cTbt27YyOJiIiIiIiIiIi9URL84mIiGFcLhfz58/nqSef4MTxEh64sZo/DoXQ5kYnk4tR4YB/roc5X1k5cMTNw398hBkzZtCsWTOjo4mIiIiIiIiISP3SHlEiImK8srIyXn/9dV59+SWOHSvm7hvcTB3h4sowo5PJ+Th2HOaugleTLRSXw90TJvD443/iiiuuMDqaiIiIiIiIiIgYQ4UoERFpOKqqqvj444/52/Oz2LUni7hIHyYPcjKuLwT6GZ1Ozsblhm9+hPc3mflgkwkfqy/33DuJxx57TEvwiYiIiIiIiIiIClEiItLwuFwuli9fzvx33yEpKQlfK9x+jYs7r3dxw5Xgox0ODZdxCD79DhZstLK/wEH8tVdz78TJ3HHHHQQFBRkdT0REREREREREGgYVokREpGE7cuQIH3zwAQvmz2PHznRaNbUyqlc1t1ztZkh38LcZnfDy4HLD5kxY8j0s2W7jx0NVhLVpzZ1338u9995LdHS00RFFRERERERERKThUSFKREQuHZmZmSxevJglny/iuy3f42czk9ANEro5SYiBHh3AZDI6ZeORWwSrM2B1uonkNAuHjzmIigznljG3c8sttxAfH4/ZrPY0ERERERERERGplQpRIiJyaTp8+DBffPEFyckrWLvma4qOltC6mZVB0U4GdnUR3xliO4DVx+ikl47MfNiSBet2wZrdVvbmOfDztRJ/3bUkDhnOzTffTGxsrNExRURERERERETk0qFClIiIXPpcLhepqamsWbOG1V+vZP36dZTZT+Dv60OvCDPXdHLQJxKujoSoNtpjCuDQMUjJga3ZsDXHhy1ZJo6WVWO1+HB1XG8SEoeSkJBAfHw8/v7+RscVEREREREREZFLkwpRIiLS+LhcLnbv3s2WLVvYunUrW77bSOrOdBzVTnytZqLbW4kOqyK2vZtu7SCmPXRsDTaL0cm9y+32FJx250H6Qcg4BGmHrGQcclNsr8ZkMtH5inD6XNuPa665lj59+tC7d2/8/PyMji4iIiIiIiIiIo2DClEiInJ5qKys5IcffiA9PZ2MjAzS03aSkf4D+w7k4Xa7MZtNtG1pJSLYTadWDiKCISIY2reE0GYQ0hSCmzasbqqjdsgvgcIyOHgU9hX+91VkYd8RHw4UOqh0uABo3bIZsbGxRMf0oHv37kRHR9OrVy+aN29u8CxERERERERERKQRUyFKREQub3a7nT179pCTk8O+ffs8r5wscrL3sm//QcpPVNaMNZtNBDezEtzURGgzFy38HTQLgEBfCPSDIH9oHgBBfmDx8exPFXhKc5G/DfysnmOnC0pPnLxW6YDyKs/xseNgr/C8yio840rKwV7lw+ESC4dL3BSWVFP13yITgNXiQ/t2oUREdCIisjMRERF06tSJiIgIunbtSnBwcF3+GEVERERERERERM5GhSgREZFfcuzYMQ4fPkxhYSGHDx8mPz+/5ri4uJiS4iLsZaWUlZVSVlZGSUkZpfZynE7Xrz+8Fs2aNiEosAmBTZoQ1DSIZs1a0KxFKwIDgwgJCSEsLIzg4GDatGlDaGgowcHBhISEYDY3oHYtERERERERERERFaJERETqTkVFBSdOnGx7stvtOByOms8tWrSoObZYL2SkjgAAAF9JREFULAQFBdVrPhERERERERERkTqmQpSIiIiIiIiIiIiIiIjUiWNaw0dERERERERERERERETqhApRIiIiIiIiIiIiIiIiUicswDajQ4iIiIiIiIiIiIiIiEijU/r/ARN5/xGPrsbJAAAAAElFTkSuQmCC", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "try:\n", - " display(Image(app.get_graph().draw_png()))\n", - "except ImportError:\n", - " print(\n", - " \"You likely need to install dependencies for pygraphviz, see more here https://github.com/pygraphviz/pygraphviz/blob/main/INSTALL.txt\"\n", - " )" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.9" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/docs/docs/index.md b/docs/docs/index.md index bc3661e22..60ec1b509 100644 --- a/docs/docs/index.md +++ b/docs/docs/index.md @@ -28,4 +28,4 @@ title: LangGraph } -{!../README.md!} +{!../README.md!} \ No newline at end of file diff --git a/docs/docs/llms.txt b/docs/docs/llms.txt index f48191903..6ce5dc889 100644 --- a/docs/docs/llms.txt +++ b/docs/docs/llms.txt @@ -20,15 +20,13 @@ [Authentication & Access Control](https://langchain-ai.github.io/langgraph/concepts/auth/): LLM should read this page when implementing authentication in LangGraph Platform, designing access control for LangGraph applications, or troubleshooting security issues in LangGraph deployments. This page explains LangGraph's authentication and authorization system, covering the difference between authentication and authorization, system architecture, implementing custom auth handlers, common access patterns, and supported resources/actions for access control. -[Bring Your Own Cloud (BYOC)](https://langchain-ai.github.io/langgraph/concepts/bring_your_own_cloud/): LLM should read this page when learning about LangGraph Platform deployment options, understanding Bring Your Own Cloud architecture, or managing deployments in AWS. This page explains LangGraph's BYOC deployment model, detailing how it separates control plane (managed by LangChain) from data plane (in customer's AWS account), outlines AWS requirements, infrastructure setup via Terraform, required permissions, and explains the deployment workflow. - [Deployment Options](https://langchain-ai.github.io/langgraph/concepts/deployment_options/): LLM should read this page when needing information about LangGraph deployment options, comparing different deployment methods, or understanding LangGraph Platform plans. This page outlines four deployment options for LangGraph Platform: Self-Hosted Lite (available for all plans), Self-Hosted Enterprise (Enterprise plan only), Cloud SaaS (Plus and Enterprise plans), and Bring Your Own Cloud (Enterprise plan only, AWS-only). [Double Texting](https://langchain-ai.github.io/langgraph/concepts/double_texting/): LLM should read this page when handling concurrent user interactions in LangGraph Platform, implementing double-texting safeguards, or designing stateful conversation systems. This page explains four approaches to handling "double texting" in LangGraph (when users send a second message before the first completes): Reject, Enqueue, Interrupt, and Rollback, noting these features are currently only available in LangGraph Platform. [Durable Execution](https://langchain-ai.github.io/langgraph/concepts/durable_execution/): LLM should read this page when needing to understand durable execution in LangGraph, implementing workflow persistence, or troubleshooting workflow resumption. This page explains durable execution in LangGraph: how workflows save progress to resume later, requirements (checkpointers and thread IDs), determinism guidelines for consistent replay, using tasks to encapsulate non-deterministic operations, and approaches for pausing/resuming workflows. -[FAQ](https://langchain-ai.github.io/langgraph/concepts/faq/): LLM should read this page when needing to understand differences between LangGraph and LangChain, exploring deployment options for LangGraph Platform, or determining compatibility with various LLMs. FAQ covering LangGraph basics, comparisons with other frameworks, deployment options (free self-hosted, Cloud SaaS, BYOC, Enterprise), compatibility with different LLMs including OSS models, and feature differences between open-source LangGraph and proprietary LangGraph Platform. +[FAQ](https://langchain-ai.github.io/langgraph/concepts/faq/): LLM should read this page when needing to understand differences between LangGraph and LangChain, exploring deployment options for LangGraph Platform, or determining compatibility with various LLMs. FAQ covering LangGraph basics, comparisons with other frameworks, deployment options (free self-hosted, Cloud SaaS, Enterprise), compatibility with different LLMs including OSS models, and feature differences between open-source LangGraph and proprietary LangGraph Platform. [Functional API](https://langchain-ai.github.io/langgraph/concepts/functional_api/): LLM should read this page when implementing workflows with persistent state, adding human-in-the-loop features, or converting existing code to use LangGraph. The page documents LangGraph's Functional API, which allows adding persistence, memory, and human-in-the-loop capabilities with minimal code changes using @entrypoint and @task decorators, handling serialization requirements, state management, and common patterns for parallel execution and error handling. diff --git a/docs/docs/reference/index.md b/docs/docs/reference/index.md index b0d9b67c0..49b101769 100644 --- a/docs/docs/reference/index.md +++ b/docs/docs/reference/index.md @@ -16,4 +16,7 @@ search: Welcome to the LangGraph API reference! This reference provides detailed information about the LangGraph API, including classes, methods, and other components. -If you are new to LangGraph, we recommend starting with the [Quick Start](../tutorials/introduction.ipynb) in the Tutorials section. \ No newline at end of file +!!! tip + + If you are new to LangGraph, we recommend starting with [LangGraph basics](../concepts/why-langgraph.md). + diff --git a/docs/docs/stylesheets/navigation_title_ovverides.css b/docs/docs/stylesheets/navigation_title_ovverides.css new file mode 100644 index 000000000..4e7c937d7 --- /dev/null +++ b/docs/docs/stylesheets/navigation_title_ovverides.css @@ -0,0 +1,29 @@ +/* + * This file is used to override the navigation title for the LangGraph documentation. + * It is used to change the title of the first and second items in the navigation menu. + * The first item is the Guides page, and the second item is the Reference page. + */ + +.md-nav--primary > .md-nav__list > .md-nav__item:nth-child(1) > .md-nav__link .md-ellipsis { + visibility: hidden !important; + position: relative; +} + +.md-nav--primary > .md-nav__list > .md-nav__item:nth-child(1) > .md-nav__link .md-ellipsis::after { + content: "Home"; + visibility: visible; + position: absolute; + left: 0; +} + +.md-nav--primary > .md-nav__list > .md-nav__item:nth-child(2) > .md-nav__link .md-ellipsis { + visibility: hidden !important; + position: relative; +} + +.md-nav--primary > .md-nav__list > .md-nav__item:nth-child(2) > .md-nav__link .md-ellipsis::after { + content: "Home"; + visibility: visible; + position: absolute; + left: 0; +} \ No newline at end of file diff --git a/docs/docs/stylesheets/sticky_navigation.css b/docs/docs/stylesheets/sticky_navigation.css new file mode 100644 index 000000000..d16c8ea88 --- /dev/null +++ b/docs/docs/stylesheets/sticky_navigation.css @@ -0,0 +1,23 @@ +@media screen and (min-width: 76.25em) { + .md-nav__toggle ~ .md-nav > .md-nav__list { + overflow: clip; + } + + .md-nav__link { + margin: 0; + padding: 0.325em 0; + } + + .md-nav__link:has(+ .md-nav[aria-expanded="true"]) { + position: sticky; + top: 2em; + + z-index: 1; + background-color: var(--md-default-bg-color); + } + + .md-nav__link.md-nav__container { + z-index: 2 !important; + box-shadow: none !important; + } +} diff --git a/docs/docs/troubleshooting/errors/INVALID_LICENSE.md b/docs/docs/troubleshooting/errors/INVALID_LICENSE.md index de6426455..b65ee2f61 100644 --- a/docs/docs/troubleshooting/errors/INVALID_LICENSE.md +++ b/docs/docs/troubleshooting/errors/INVALID_LICENSE.md @@ -21,18 +21,19 @@ See the [local server](../../tutorials/langgraph-platform/local-server.md) docs If you would like a fast managed environment, consider the [Cloud SaaS](../../concepts/langgraph_cloud.md) deployment option. This requires no additional license key. -#### For Self-Hosted Lite (Limited Features) +#### For Standalone container (Self-Hosted Lite) -If your deployment is unlikely to see more than 1 million node executions per year and don't need Crons and other enterprise features, consider the [Self-Hosted Lite](../../concepts/deployment_options.md#self-hosted-lite) deployment option. +If your deployment is unlikely to see more than 1 million node executions per year and don't need Crons and other enterprise features, consider the [Self-Hosted Lite](../../concepts/deployment_options.md) deployment option. You can deploy with Self-Hosted Lite by setting a valid `LANGSMITH_API_KEY` in your environment (e.g., in the `.env` file referenced by `langgraph.json`) and building a Docker image. The API key must be associated with an account on a **Plus** plan or greater. -#### For Self-Hosted Enterprise (Full Features) +#### For Standalone Container (Enterprise) For full self-hosting, set the `LANGGRAPH_CLOUD_LICENSE_KEY` environment variable. If you are interested in an enterprise license key, please contact the LangChain support team. For more information on deployment options and their features, see the [Deployment Options](../../concepts/deployment_options.md) documentation. + ### Confirm credentials If you have confirmed that you would like to self-host LangGraph Platform, please verify your credentials. @@ -42,7 +43,7 @@ If you have confirmed that you would like to self-host LangGraph Platform, pleas 1. Confirm that you have provided a working `LANGSMITH_API_KEY` environment variable in your deployment environment or `.env` file 2. Confirm the provided API key is associated with an account on a **Plus** or **Enterprise** plan (or equivalent) -#### For Self-Hosted Enterprise +#### For Standalone Container (Enterprise) 1. Confirm that you have provided a working `LANGGRAPH_CLOUD_LICENSE_KEY` environment variable in your deployment environment or `.env` file 2. Confirm the key is still valid and has not surpassed its expiration date \ No newline at end of file diff --git a/docs/docs/tutorials/auth/add_auth_server.md b/docs/docs/tutorials/auth/add_auth_server.md index 3ae46d257..05c9fad6f 100644 --- a/docs/docs/tutorials/auth/add_auth_server.md +++ b/docs/docs/tutorials/auth/add_auth_server.md @@ -6,11 +6,11 @@ 2. [Resource Authorization](resource_auth.md) - Let users have private conversations 3. Production Auth (you are here) - Add real user accounts and validate using OAuth2 -In the [Making Conversations Private](resource_auth.md) tutorial, we added [resource authorization](../../concepts/auth.md#resource-authorization) to give users private conversations. However, we were still using hard-coded tokens for authentication, which is not secure. Now we'll replace those tokens with real user accounts using [OAuth2](../../concepts/auth.md#oauth2-authentication). +In the [Making Conversations Private](resource_auth.md) tutorial, we added [resource authorization](../../tutorials/auth/resource_auth.md) to give users private conversations. However, we were still using hard-coded tokens for authentication, which is not secure. Now we'll replace those tokens with real user accounts using [OAuth2](../auth/getting_started.md). -We'll keep the same [`Auth`](../../cloud/reference/sdk/python_sdk_ref.md#langgraph_sdk.auth.Auth) object and [resource-level access control](../../concepts/auth.md#resource-level-access-control), but upgrade our authentication to use Supabase as our identity provider. While we use Supabase in this tutorial, the concepts apply to any OAuth2 provider. You'll learn how to: +We'll keep the same [`Auth`](../../cloud/reference/sdk/python_sdk_ref.md#langgraph_sdk.auth.Auth) object and [resource-level access control](../../concepts/auth.md#single-owner-resources), but upgrade our authentication to use Supabase as our identity provider. While we use Supabase in this tutorial, the concepts apply to any OAuth2 provider. You'll learn how to: -1. Replace test tokens with real [JWT tokens](../../concepts/auth.md#jwt-tokens) +1. Replace test tokens with real JWT tokens 2. Integrate with OAuth2 providers for secure user authentication 3. Handle user sessions and metadata while maintaining our existing authorization logic diff --git a/docs/docs/tutorials/auth/getting_started.md b/docs/docs/tutorials/auth/getting_started.md index acfe8e0bd..6669be1cb 100644 --- a/docs/docs/tutorials/auth/getting_started.md +++ b/docs/docs/tutorials/auth/getting_started.md @@ -11,7 +11,7 @@ This guide assumes basic familiarity with the following concepts: * [**Authentication & Access Control**](../../concepts/auth.md) - * [**LangGraph Platform**](../../concepts/index.md#langgraph-platform) + * [**LangGraph Platform**](../../concepts/langgraph_platform.md) !!! note "Python only" diff --git a/docs/docs/tutorials/auth/resource_auth.md b/docs/docs/tutorials/auth/resource_auth.md index f8e3e9edb..54e3b8322 100644 --- a/docs/docs/tutorials/auth/resource_auth.md +++ b/docs/docs/tutorials/auth/resource_auth.md @@ -17,7 +17,7 @@ In this tutorial, we will extend our chatbot to give each user their own private ## Understanding Resource Authorization -In the last tutorial, we controlled who could access our bot. But right now, any authenticated user can see everyone else's conversations! Let's fix that by adding [resource authorization](../../concepts/auth.md#resource-authorization). +In the last tutorial, we controlled who could access our bot. But right now, any authenticated user can see everyone else's conversations! Let's fix that by adding [resource authorization](../auth/resource_auth.md). First, make sure you have completed the [Basic Authentication](getting_started.md) tutorial and that your secure bot can be run without errors: diff --git a/docs/docs/tutorials/deployment.md b/docs/docs/tutorials/deployment.md index d2c7567e7..3da0dc0be 100644 --- a/docs/docs/tutorials/deployment.md +++ b/docs/docs/tutorials/deployment.md @@ -3,32 +3,20 @@ search: boost: 2 --- -# Deployment +# Deployment 🚀 -Get started deploying your LangGraph applications locally or on the cloud with -[LangGraph Platform](../concepts/langgraph_platform.md). +There are two free options for deploying LangGraph applications via the LangGraph Server: -## Get Started 🚀 {#quick-start} +- [Local](./langgraph-platform/local-server.md): Deploy for local testing and development. +- Self-Hosted Lite: A limited version of Standalone Container for deployments unlikely to see more that 1 million node executions per year and that do not need crons and other enterprise features. Self-Hosted Lite is free with a LangSmith API key. -- [LangGraph Server Quickstart](../tutorials/langgraph-platform/local-server.md): Launch a LangGraph server locally and interact with it using REST API and LangGraph Studio Web UI. -- [LangGraph Template Quickstart](../concepts/template_applications.md): Start building with LangGraph Platform using a template application. -- [Deploy with LangGraph Cloud Quickstart](../cloud/quick_start.md): Deploy a LangGraph app using LangGraph Cloud. +## Other deployment options +Additionally, you can deploy to production with [LangGraph Platform](../concepts/langgraph_platform.md): -## Deployment Options - -- Cloud SaaS(Beta): Connect to your GitHub repositories and deploy LangGraph Servers to LangChain's cloud. We manage everything. -- Self-Hosted Data Plane(Beta): Create deployments from the [Control Plane UI](../concepts/langgraph_control_plane.md#control-plane-ui) and deploy LangGraph Servers to your cloud. We manage the [control plane](../concepts/langgraph_control_plane.md), you manage the deployments. -- Self-Hosted Control Plane(Beta): Create deployments from a self-hosted [Control Plane UI](../concepts/langgraph_control_plane.md#control-plane-ui) and deploy LangGraph Servers to your cloud. You manage everything. +- [Cloud SaaS](../concepts/langgraph_cloud.md): Connect your GitHub repositories and deploy LangGraph Servers within LangChain's cloud. *We manage everything.* +- [Self-Hosted Data Plane(Beta)](../concepts/langgraph_self_hosted_data_plane.md): Create deployments from the [Control Plane UI](../concepts/langgraph_control_plane.md#control-plane-ui) and deploy LangGraph Servers to **your** cloud. *We manage the [control plane](../concepts/langgraph_control_plane.md). You manage the deployments.* +- [Self-Hosted Control Plane(Beta)](../concepts/langgraph_self_hosted_control_plane.md): Create deployments from a self-hosted [Control Plane UI](../concepts/langgraph_control_plane.md#control-plane-ui) and deploy LangGraph Servers to **your** cloud. *You manage everything.* - [Standalone Container](../concepts/langgraph_standalone_container.md): Deploy LangGraph Server Docker images however you like. -A quick comparison... - -| | **Cloud SaaS** | **Self-Hosted [Data Plane](../concepts/langgraph_data_plane.md)** | **Self-Hosted [Control Plane](../concepts/langgraph_control_plane.md)** | **Standalone Container** | -|----------------------|----------------|----------------------------|-------------------------------|--------------------------| -| **[Control Plane UI/API](../concepts/langgraph_control_plane.md)** | Yes | Yes | Yes | No | -| **CI/CD** | Managed internally by platform | Managed externally by you | Managed externally by you | Managed externally by you | -| **Data/Compute Residency** | LangChain’s cloud | Your cloud | Your cloud | Your cloud | -| **Required Permissions** | None | See details [here](). | See details [here](). | None | -| **LangSmith Compatibility** | Trace to LangSmith SaaS | Trace to LangSmith SaaS | Trace to Self-Hosted LangSmith | Optional tracing | -| **[Pricing](https://www.langchain.com/pricing-langgraph-platform)** | Plus | Enterprise | Enterprise | Developer | +For more information, see [Deployment options](../concepts/deployment_options.md) diff --git a/docs/docs/tutorials/get-started/1-build-basic-chatbot.md b/docs/docs/tutorials/get-started/1-build-basic-chatbot.md new file mode 100644 index 000000000..a71d88390 --- /dev/null +++ b/docs/docs/tutorials/get-started/1-build-basic-chatbot.md @@ -0,0 +1,204 @@ +# Build a basic chatbot + +In this tutorial, you will build a basic chatbot. This chatbot is the basis for the following series of tutorials where you will progressively add more sophisticated capabilities, and be introduced to key LangGraph concepts along the way. Let’s dive in! 🌟 + +## Prerequisites + +Before you start this tutorial, ensure you have access to a LLM that supports +tool-calling features, such as [OpenAI](https://platform.openai.com/api-keys), +[Anthropic](https://console.anthropic.com/settings/admin-keys), or +[Google Gemini](https://ai.google.dev/gemini-api/docs/api-key). + +## 1. Install packages + +Install the required packages: + +```bash +pip install -U langgraph langsmith +``` + +!!! tip + + Sign up for LangSmith to quickly spot issues and improve the performance of your LangGraph projects. LangSmith lets you use trace data to debug, test, and monitor your LLM apps built with LangGraph. For more information on how to get started, see [LangSmith docs](https://docs.smith.langchain.com). + +## 2. Create a `StateGraph` + +Now you can create a basic chatbot using LangGraph. This chatbot will respond directly to user messages. + +Start by creating a `StateGraph`. A `StateGraph` object defines the structure of our chatbot as a "state machine". We'll add `nodes` to represent the llm and functions our chatbot can call and `edges` to specify how the bot should transition between these functions. + +```python +from typing import Annotated + +from typing_extensions import TypedDict + +from langgraph.graph import StateGraph, START +from langgraph.graph.message import add_messages + + +class State(TypedDict): + # Messages have the type "list". The `add_messages` function + # in the annotation defines how this state key should be updated + # (in this case, it appends messages to the list, rather than overwriting them) + messages: Annotated[list, add_messages] + + +graph_builder = StateGraph(State) +``` + +Our graph can now handle two key tasks: + +1. Each `node` can receive the current `State` as input and output an update to the state. +2. Updates to `messages` will be appended to the existing list rather than overwriting it, thanks to the prebuilt [`add_messages`](https://langchain-ai.github.io/langgraph/reference/graphs/?h=add+messages#add_messages) function used with the `Annotated` syntax. + +------ + +!!! tip "Concept" + + When defining a graph, the first step is to define its `State`. The `State` includes the graph's schema and [reducer functions](https://langchain-ai.github.io/langgraph/concepts/low_level/#reducers) that handle state updates. In our example, `State` is a `TypedDict` with one key: `messages`. The [`add_messages`](https://langchain-ai.github.io/langgraph/reference/graphs/#langgraph.graph.message.add_messages) reducer function is used to append new messages to the list instead of overwriting it. Keys without a reducer annotation will overwrite previous values. To learn more about state, reducers, and related concepts, see [LangGraph reference docs](https://langchain-ai.github.io/langgraph/reference/graphs/#langgraph.graph.message.add_messages). + +## 3. Add a node + +Next, add a "`chatbot`" node. **Nodes** represent units of work and are typically regular Python functions. + +Let's first select a chat model: + +{!snippets/chat_model_tabs.md!} + + + + +We can now incorporate the chat model into a simple node: + +```python + +def chatbot(state: State): + return {"messages": [llm.invoke(state["messages"])]} + + +# The first argument is the unique node name +# The second argument is the function or object that will be called whenever +# the node is used. +graph_builder.add_node("chatbot", chatbot) +``` + +**Notice** how the `chatbot` node function takes the current `State` as input and returns a dictionary containing an updated `messages` list under the key "messages". This is the basic pattern for all LangGraph node functions. + +The `add_messages` function in our `State` will append the LLM's response messages to whatever messages are already in the state. + +## 4. Add an `entry` point + +Add an `entry` point to tell the graph **where to start its work** each time it is run: + +```python +graph_builder.add_edge(START, "chatbot") +``` + +## 5. Compile the graph + +Before running the graph, we'll need to compile it. We can do so by calling `compile()` +on the graph builder. This creates a `CompiledGraph` we can invoke on our state. + +```python +graph = graph_builder.compile() +``` + +## 6. Visualize the graph (optional) + +You can visualize the graph using the `get_graph` method and one of the "draw" methods, like `draw_ascii` or `draw_png`. The `draw` methods each require additional dependencies. + +```python +from IPython.display import Image, display + +try: + display(Image(graph.get_graph().draw_mermaid_png())) +except Exception: + # This requires some extra dependencies and is optional + pass +``` + +![basic chatbot diagram](basic-chatbot.png) + + +## 7. Run the chatbot + +Now run the chatbot! + +!!! tip + + You can exit the chat loop at any time by typing `quit`, `exit`, or `q`. + +```python +def stream_graph_updates(user_input: str): + for event in graph.stream({"messages": [{"role": "user", "content": user_input}]}): + for value in event.values(): + print("Assistant:", value["messages"][-1].content) + + +while True: + try: + user_input = input("User: ") + if user_input.lower() in ["quit", "exit", "q"]: + print("Goodbye!") + break + stream_graph_updates(user_input) + except: + # fallback if input() is not available + user_input = "What do you know about LangGraph?" + print("User: " + user_input) + stream_graph_updates(user_input) + break +``` + +``` +Assistant: LangGraph is a library designed to help build stateful multi-agent applications using language models. It provides tools for creating workflows and state machines to coordinate multiple AI agents or language model interactions. LangGraph is built on top of LangChain, leveraging its components while adding graph-based coordination capabilities. It's particularly useful for developing more complex, stateful AI applications that go beyond simple query-response interactions. +Goodbye! +``` + +**Congratulations!** You've built your first chatbot using LangGraph. This bot can engage in basic conversation by taking user input and generating responses using an LLM. You can inspect a [LangSmith Trace](https://smith.langchain.com/public/7527e308-9502-4894-b347-f34385740d5a/r) for the call above. + +Below is the full code for this tutorial: + +```python +from typing import Annotated + +from langchain.chat_models import init_chat_model +from typing_extensions import TypedDict + +from langgraph.graph import StateGraph, START +from langgraph.graph.message import add_messages + + +class State(TypedDict): + messages: Annotated[list, add_messages] + + +graph_builder = StateGraph(State) + + +llm = init_chat_model("anthropic:claude-3-5-sonnet-latest") + + +def chatbot(state: State): + return {"messages": [llm.invoke(state["messages"])]} + + +# The first argument is the unique node name +# The second argument is the function or object that will be called whenever +# the node is used. +graph_builder.add_node("chatbot", chatbot) +graph_builder.add_edge(START, "chatbot") +graph = graph_builder.compile() +``` + +## Next steps + +You may have noticed that the bot's knowledge is limited to what's in its training data. In the next part, we'll [add a web search tool](./2-add-tools.md) to expand the bot's knowledge and make it more capable. + + diff --git a/docs/docs/tutorials/get-started/2-add-tools.md b/docs/docs/tutorials/get-started/2-add-tools.md new file mode 100644 index 000000000..f63597560 --- /dev/null +++ b/docs/docs/tutorials/get-started/2-add-tools.md @@ -0,0 +1,330 @@ +# Add tools + +To handle queries you chatbot can't answer "from memory", integrate a web search tool. The chatbot can use this tool to find relevant information and provide better responses. + +!!! note + + This tutorial builds on [Build a basic chatbot](./1-build-basic-chatbot.md). + +## Prerequisites + +Before you start this tutorial, ensure you have the following: + +- An API key for the [Tavily Search Engine](https://python.langchain.com/docs/integrations/tools/tavily_search/). + +## 1. Install the search engine + +Install the requirements to use the [Tavily Search Engine](https://python.langchain.com/docs/integrations/tools/tavily_search/): + +```bash +pip install -U langchain-tavily +``` +## 2. Configure your environment + +Configure your environment with your search engine API key: + +```bash +_set_env("TAVILY_API_KEY") +``` + +``` +TAVILY_API_KEY: ········ +``` + +## 3. Define the tool + +Define the web search tool: + +```python +from langchain_tavily import TavilySearch + +tool = TavilySearch(max_results=2) +tools = [tool] +tool.invoke("What's a 'node' in LangGraph?") +``` + +The results are page summaries our chat bot can use to answer questions: + +``` +{'query': "What's a 'node' in LangGraph?", +'follow_up_questions': None, +'answer': None, +'images': [], +'results': [{'title': "Introduction to LangGraph: A Beginner's Guide - Medium", +'url': 'https://medium.com/@cplog/introduction-to-langgraph-a-beginners-guide-14f9be027141', +'content': 'Stateful Graph: LangGraph revolves around the concept of a stateful graph, where each node in the graph represents a step in your computation, and the graph maintains a state that is passed around and updated as the computation progresses. LangGraph supports conditional edges, allowing you to dynamically determine the next node to execute based on the current state of the graph. We define nodes for classifying the input, handling greetings, and handling search queries. def classify_input_node(state): LangGraph is a versatile tool for building complex, stateful applications with LLMs. By understanding its core concepts and working through simple examples, beginners can start to leverage its power for their projects. Remember to pay attention to state management, conditional edges, and ensuring there are no dead-end nodes in your graph.', +'score': 0.7065353, +'raw_content': None}, +{'title': 'LangGraph Tutorial: What Is LangGraph and How to Use It?', +'url': 'https://www.datacamp.com/tutorial/langgraph-tutorial', +'content': 'LangGraph is a library within the LangChain ecosystem that provides a framework for defining, coordinating, and executing multiple LLM agents (or chains) in a structured and efficient manner. By managing the flow of data and the sequence of operations, LangGraph allows developers to focus on the high-level logic of their applications rather than the intricacies of agent coordination. Whether you need a chatbot that can handle various types of user requests or a multi-agent system that performs complex tasks, LangGraph provides the tools to build exactly what you need. LangGraph significantly simplifies the development of complex LLM applications by providing a structured framework for managing state and coordinating agent interactions.', +'score': 0.5008063, +'raw_content': None}], +'response_time': 1.38} +``` + +## 4. Define the graph + +For the `StateGraph` you created in the [first tutorial](./1-build-basic-chatbot.md#2-create-a-stategraph), add `bind_tools` on the LLM. This lets the LLM know the correct JSON format to use if it wants to use the search engine. + +Let's first select our LLM: + +{!snippets/chat_model_tabs.md!} + + + +We can now incorporate it into a `StateGraph`: + +```python hl_lines="15" +from typing import Annotated + +from typing_extensions import TypedDict + +from langgraph.graph import StateGraph, START, END +from langgraph.graph.message import add_messages + +class State(TypedDict): + messages: Annotated[list, add_messages] + +graph_builder = StateGraph(State) + +# Modification: tell the LLM which tools it can call +# highlight-next-line +llm_with_tools = llm.bind_tools(tools) + +def chatbot(state: State): + return {"messages": [llm_with_tools.invoke(state["messages"])]} + +graph_builder.add_node("chatbot", chatbot) +``` + +## 5. Create a function to run the tools + +Now, create a function to run the tools if they are called. Do this by adding the tools to a new node called`BasicToolNode` that checks the most recent message in the state and calls tools if the message contains `tool_calls`. It relies on the LLM's `tool_calling` support, which is available in Anthropic, OpenAI, Google Gemini, and a number of other LLM providers. + +```python +import json + +from langchain_core.messages import ToolMessage + + +class BasicToolNode: + """A node that runs the tools requested in the last AIMessage.""" + + def __init__(self, tools: list) -> None: + self.tools_by_name = {tool.name: tool for tool in tools} + + def __call__(self, inputs: dict): + if messages := inputs.get("messages", []): + message = messages[-1] + else: + raise ValueError("No message found in input") + outputs = [] + for tool_call in message.tool_calls: + tool_result = self.tools_by_name[tool_call["name"]].invoke( + tool_call["args"] + ) + outputs.append( + ToolMessage( + content=json.dumps(tool_result), + name=tool_call["name"], + tool_call_id=tool_call["id"], + ) + ) + return {"messages": outputs} + + +tool_node = BasicToolNode(tools=[tool]) +graph_builder.add_node("tools", tool_node) +``` + +!!! note + + If you do not want to build this yourself in the future, you can use LangGraph's prebuilt [ToolNode](https://langchain-ai.github.io/langgraph/reference/prebuilt/#toolnode). + +## 6. Define the `conditional_edges` + +With the tool node added, now you can define the `conditional_edges`. + +**Edges** route the control flow from one node to the next. **Conditional edges** start from a single node and usually contain "if" statements to route to different nodes depending on the current graph state. These functions receive the current graph `state` and return a string or list of strings indicating which node(s) to call next. + +Next, define a router function called `route_tools` that checks for `tool_calls` in the chatbot's output. Provide this function to the graph by calling `add_conditional_edges`, which tells the graph that whenever the `chatbot` node completes to check this function to see where to go next. + +The condition will route to `tools` if tool calls are present and `END` if not. Because the condition can return `END`, you do not need to explicitly set a `finish_point` this time. + +```python +def route_tools( + state: State, +): + """ + Use in the conditional_edge to route to the ToolNode if the last message + has tool calls. Otherwise, route to the end. + """ + if isinstance(state, list): + ai_message = state[-1] + elif messages := state.get("messages", []): + ai_message = messages[-1] + else: + raise ValueError(f"No messages found in input state to tool_edge: {state}") + if hasattr(ai_message, "tool_calls") and len(ai_message.tool_calls) > 0: + return "tools" + return END + + +# The `tools_condition` function returns "tools" if the chatbot asks to use a tool, and "END" if +# it is fine directly responding. This conditional routing defines the main agent loop. +graph_builder.add_conditional_edges( + "chatbot", + route_tools, + # The following dictionary lets you tell the graph to interpret the condition's outputs as a specific node + # It defaults to the identity function, but if you + # want to use a node named something else apart from "tools", + # You can update the value of the dictionary to something else + # e.g., "tools": "my_tools" + {"tools": "tools", END: END}, +) +# Any time a tool is called, we return to the chatbot to decide the next step +graph_builder.add_edge("tools", "chatbot") +graph_builder.add_edge(START, "chatbot") +graph = graph_builder.compile() +``` + +!!! note + + You can replace this with the prebuilt [tools_condition](https://langchain-ai.github.io/langgraph/reference/prebuilt/#tools_condition) to be more concise. + +## 7. Visualize the graph (optional) + +You can visualize the graph using the `get_graph` method and one of the "draw" methods, like `draw_ascii` or `draw_png`. The `draw` methods each require additional dependencies. + +```python +from IPython.display import Image, display + +try: + display(Image(graph.get_graph().draw_mermaid_png())) +except Exception: + # This requires some extra dependencies and is optional + pass +``` + +![chatbot-with-tools-diagram](chatbot-with-tools.png) + +## 8. Ask the bot questions + +Now you can ask the chatbot questions outside its training data: + +```python +def stream_graph_updates(user_input: str): + for event in graph.stream({"messages": [{"role": "user", "content": user_input}]}): + for value in event.values(): + print("Assistant:", value["messages"][-1].content) + +while True: + try: + user_input = input("User: ") + if user_input.lower() in ["quit", "exit", "q"]: + print("Goodbye!") + break + + stream_graph_updates(user_input) + except: + # fallback if input() is not available + user_input = "What do you know about LangGraph?" + print("User: " + user_input) + stream_graph_updates(user_input) + break +``` + +``` +Assistant: [{'text': "To provide you with accurate and up-to-date information about LangGraph, I'll need to search for the latest details. Let me do that for you.", 'type': 'text'}, {'id': 'toolu_01Q588CszHaSvvP2MxRq9zRD', 'input': {'query': 'LangGraph AI tool information'}, 'name': 'tavily_search_results_json', 'type': 'tool_use'}] +Assistant: [{"url": "https://www.langchain.com/langgraph", "content": "LangGraph sets the foundation for how we can build and scale AI workloads \u2014 from conversational agents, complex task automation, to custom LLM-backed experiences that 'just work'. The next chapter in building complex production-ready features with LLMs is agentic, and with LangGraph and LangSmith, LangChain delivers an out-of-the-box solution ..."}, {"url": "https://github.com/langchain-ai/langgraph", "content": "Overview. LangGraph is a library for building stateful, multi-actor applications with LLMs, used to create agent and multi-agent workflows. Compared to other LLM frameworks, it offers these core benefits: cycles, controllability, and persistence. LangGraph allows you to define flows that involve cycles, essential for most agentic architectures ..."}] +Assistant: Based on the search results, I can provide you with information about LangGraph: + +1. Purpose: + LangGraph is a library designed for building stateful, multi-actor applications with Large Language Models (LLMs). It's particularly useful for creating agent and multi-agent workflows. + +2. Developer: + LangGraph is developed by LangChain, a company known for its tools and frameworks in the AI and LLM space. + +3. Key Features: + - Cycles: LangGraph allows the definition of flows that involve cycles, which is essential for most agentic architectures. + - Controllability: It offers enhanced control over the application flow. + - Persistence: The library provides ways to maintain state and persistence in LLM-based applications. + +4. Use Cases: + LangGraph can be used for various applications, including: + - Conversational agents + - Complex task automation + - Custom LLM-backed experiences + +5. Integration: + LangGraph works in conjunction with LangSmith, another tool by LangChain, to provide an out-of-the-box solution for building complex, production-ready features with LLMs. + +6. Significance: +... + LangGraph is noted to offer unique benefits compared to other LLM frameworks, particularly in its ability to handle cycles, provide controllability, and maintain persistence. + +LangGraph appears to be a significant tool in the evolving landscape of LLM-based application development, offering developers new ways to create more complex, stateful, and interactive AI systems. +Goodbye! +Output is truncated. View as a scrollable element or open in a text editor. Adjust cell output settings... +``` + +## 9. Use prebuilts + +For ease of use, adjust your code to replace the following with LangGraph prebuilt components. These have built in functionality like parallel API execution. + +- `BasicToolNode` is replaced with the prebuilt [ToolNode](https://langchain-ai.github.io/langgraph/reference/prebuilt/#toolnode) +- `route_tools` is replaced with the prebuilt [tools_condition](https://langchain-ai.github.io/langgraph/reference/prebuilt/#tools_condition) + +{!snippets/chat_model_tabs.md!} + + +```python hl_lines="25 30" +from typing import Annotated + +from langchain_tavily import TavilySearch +from langchain_core.messages import BaseMessage +from typing_extensions import TypedDict + +from langgraph.graph import StateGraph, START, END +from langgraph.graph.message import add_messages +from langgraph.prebuilt import ToolNode, tools_condition + +class State(TypedDict): + messages: Annotated[list, add_messages] + +graph_builder = StateGraph(State) + +tool = TavilySearch(max_results=2) +tools = [tool] +llm_with_tools = llm.bind_tools(tools) + +def chatbot(state: State): + return {"messages": [llm_with_tools.invoke(state["messages"])]} + +graph_builder.add_node("chatbot", chatbot) + +tool_node = ToolNode(tools=[tool]) +graph_builder.add_node("tools", tool_node) + +graph_builder.add_conditional_edges( + "chatbot", + tools_condition, +) +# Any time a tool is called, we return to the chatbot to decide the next step +graph_builder.add_edge("tools", "chatbot") +graph_builder.add_edge(START, "chatbot") +graph = graph_builder.compile() +``` + +**Congratulations!** You've created a conversational agent in LangGraph that can use a search engine to retrieve updated information when needed. Now it can handle a wider range of user queries. To inspect all the steps your agent just took, check out this [LangSmith trace](https://smith.langchain.com/public/4fbd7636-25af-4638-9587-5a02fdbb0172/r). + +## Next steps + +The chatbot cannot remember past interactions on its own, which limits its ability to have coherent, multi-turn conversations. In the next part, you will [add **memory**](./3-add-memory.md) to address this. diff --git a/docs/docs/tutorials/get-started/3-add-memory.md b/docs/docs/tutorials/get-started/3-add-memory.md new file mode 100644 index 000000000..854132f2c --- /dev/null +++ b/docs/docs/tutorials/get-started/3-add-memory.md @@ -0,0 +1,209 @@ +# Add memory + +The chatbot can now [use tools](./2-add-tools.md) to answer user questions, but it does not remember the context of previous interactions. This limits its ability to have coherent, multi-turn conversations. + +LangGraph solves this problem through **persistent checkpointing**. If you provide a `checkpointer` when compiling the graph and a `thread_id` when calling your graph, LangGraph automatically saves the state after each step. When you invoke the graph again using the same `thread_id`, the graph loads its saved state, allowing the chatbot to pick up where it left off. + +We will see later that **checkpointing** is _much_ more powerful than simple chat memory - it lets you save and resume complex state at any time for error recovery, human-in-the-loop workflows, time travel interactions, and more. But first, let's add checkpointing to enable multi-turn conversations. + +!!! note + + This tutorial builds on [Add tools](./2-add-tools.md). + +## 1. Create a `MemorySaver` checkpointer + +Create a `MemorySaver` checkpointer: + +``` python +from langgraph.checkpoint.memory import MemorySaver + +memory = MemorySaver() +``` + +This is in-memory checkpointer, which is convenient for the tutorial. However, in a production application, you would likely change this to use `SqliteSaver` or `PostgresSaver` and connect a database. + +## 2. Compile the graph + +Compile the graph with the provided checkpointer, which will checkpoint the `State` as the graph works through each node: + +``` python +graph = graph_builder.compile(checkpointer=memory) +``` + +``` python +from IPython.display import Image, display + +try: + display(Image(graph.get_graph().draw_mermaid_png())) +except Exception: + # This requires some extra dependencies and is optional + pass +``` + +## 3. Interact with your chatbot + +Now you can interact with your bot! + +1. Pick a thread to use as the key for this conversation. + + ```python + config = {"configurable": {"thread_id": "1"}} + ``` + +2. Call your chatbot: + + ```python + user_input = "Hi there! My name is Will." + + # The config is the **second positional argument** to stream() or invoke()! + events = graph.stream( + {"messages": [{"role": "user", "content": user_input}]}, + config, + stream_mode="values", + ) + for event in events: + event["messages"][-1].pretty_print() + ``` + + ``` + ================================ Human Message ================================= + + Hi there! My name is Will. + ================================== Ai Message ================================== + + Hello Will! It's nice to meet you. How can I assist you today? Is there anything specific you'd like to know or discuss? + ``` + + !!! note + + The config was provided as the **second positional argument** when calling our graph. It importantly is _not_ nested within the graph inputs (`{'messages': []}`). + +## 4. Ask a follow up question + +Ask a follow up question: + +```python +user_input = "Remember my name?" + +# The config is the **second positional argument** to stream() or invoke()! +events = graph.stream( + {"messages": [{"role": "user", "content": user_input}]}, + config, + stream_mode="values", +) +for event in events: + event["messages"][-1].pretty_print() +``` + +``` +================================ Human Message ================================= + +Remember my name? +================================== Ai Message ================================== + +Of course, I remember your name, Will. I always try to pay attention to important details that users share with me. Is there anything else you'd like to talk about or any questions you have? I'm here to help with a wide range of topics or tasks. +``` + +**Notice** that we aren't using an external list for memory: it's all handled by the checkpointer! You can inspect the full execution in this [LangSmith trace](https://smith.langchain.com/public/29ba22b5-6d40-4fbe-8d27-b369e3329c84/r) to see what's going on. + +Don't believe me? Try this using a different config. + +```python +# The only difference is we change the `thread_id` here to "2" instead of "1" +events = graph.stream( + {"messages": [{"role": "user", "content": user_input}]}, + # highlight-next-line + {"configurable": {"thread_id": "2"}}, + stream_mode="values", +) +for event in events: + event["messages"][-1].pretty_print() +``` + +``` +================================ Human Message ================================= + +Remember my name? +================================== Ai Message ================================== + +I apologize, but I don't have any previous context or memory of your name. As an AI assistant, I don't retain information from past conversations. Each interaction starts fresh. Could you please tell me your name so I can address you properly in this conversation? +``` + +**Notice** that the **only** change we've made is to modify the `thread_id` in the config. See this call's [LangSmith trace](https://smith.langchain.com/public/51a62351-2f0a-4058-91cc-9996c5561428/r) for comparison. + +## 5. Inspect the state + +By now, we have made a few checkpoints across two different threads. But what goes into a checkpoint? To inspect a graph's `state` for a given config at any time, call `get_state(config)`. + +```python +snapshot = graph.get_state(config) +snapshot +``` + +``` +StateSnapshot(values={'messages': [HumanMessage(content='Hi there! My name is Will.', additional_kwargs={}, response_metadata={}, id='8c1ca919-c553-4ebf-95d4-b59a2d61e078'), AIMessage(content="Hello Will! It's nice to meet you. How can I assist you today? Is there anything specific you'd like to know or discuss?", additional_kwargs={}, response_metadata={'id': 'msg_01WTQebPhNwmMrmmWojJ9KXJ', 'model': 'claude-3-5-sonnet-20240620', 'stop_reason': 'end_turn', 'stop_sequence': None, 'usage': {'input_tokens': 405, 'output_tokens': 32}}, id='run-58587b77-8c82-41e6-8a90-d62c444a261d-0', usage_metadata={'input_tokens': 405, 'output_tokens': 32, 'total_tokens': 437}), HumanMessage(content='Remember my name?', additional_kwargs={}, response_metadata={}, id='daba7df6-ad75-4d6b-8057-745881cea1ca'), AIMessage(content="Of course, I remember your name, Will. I always try to pay attention to important details that users share with me. Is there anything else you'd like to talk about or any questions you have? I'm here to help with a wide range of topics or tasks.", additional_kwargs={}, response_metadata={'id': 'msg_01E41KitY74HpENRgXx94vag', 'model': 'claude-3-5-sonnet-20240620', 'stop_reason': 'end_turn', 'stop_sequence': None, 'usage': {'input_tokens': 444, 'output_tokens': 58}}, id='run-ffeaae5c-4d2d-4ddb-bd59-5d5cbf2a5af8-0', usage_metadata={'input_tokens': 444, 'output_tokens': 58, 'total_tokens': 502})]}, next=(), config={'configurable': {'thread_id': '1', 'checkpoint_ns': '', 'checkpoint_id': '1ef7d06e-93e0-6acc-8004-f2ac846575d2'}}, metadata={'source': 'loop', 'writes': {'chatbot': {'messages': [AIMessage(content="Of course, I remember your name, Will. I always try to pay attention to important details that users share with me. Is there anything else you'd like to talk about or any questions you have? I'm here to help with a wide range of topics or tasks.", additional_kwargs={}, response_metadata={'id': 'msg_01E41KitY74HpENRgXx94vag', 'model': 'claude-3-5-sonnet-20240620', 'stop_reason': 'end_turn', 'stop_sequence': None, 'usage': {'input_tokens': 444, 'output_tokens': 58}}, id='run-ffeaae5c-4d2d-4ddb-bd59-5d5cbf2a5af8-0', usage_metadata={'input_tokens': 444, 'output_tokens': 58, 'total_tokens': 502})]}}, 'step': 4, 'parents': {}}, created_at='2024-09-27T19:30:10.820758+00:00', parent_config={'configurable': {'thread_id': '1', 'checkpoint_ns': '', 'checkpoint_id': '1ef7d06e-859f-6206-8003-e1bd3c264b8f'}}, tasks=()) +``` + +``` +snapshot.next # (since the graph ended this turn, `next` is empty. If you fetch a state from within a graph invocation, next tells which node will execute next) +``` + +The snapshot above contains the current state values, corresponding config, and the `next` node to process. In our case, the graph has reached an `END` state, so `next` is empty. + +**Congratulations!** Your chatbot can now maintain conversation state across sessions thanks to LangGraph's checkpointing system. This opens up exciting possibilities for more natural, contextual interactions. LangGraph's checkpointing even handles **arbitrarily complex graph states**, which is much more expressive and powerful than simple chat memory. + +Check out the code snippet below to review the graph from this tutorial: + +{!snippets/chat_model_tabs.md!} + + + +```python +from typing import Annotated + +from langchain.chat_models import init_chat_model +from langchain_tavily import TavilySearch +from langchain_core.messages import BaseMessage +from typing_extensions import TypedDict + +from langgraph.checkpoint.memory import MemorySaver +from langgraph.graph import StateGraph +from langgraph.graph.message import add_messages +from langgraph.prebuilt import ToolNode, tools_condition + +class State(TypedDict): + messages: Annotated[list, add_messages] + +graph_builder = StateGraph(State) + +tool = TavilySearch(max_results=2) +tools = [tool] +llm_with_tools = llm.bind_tools(tools) + +def chatbot(state: State): + return {"messages": [llm_with_tools.invoke(state["messages"])]} + +graph_builder.add_node("chatbot", chatbot) + +tool_node = ToolNode(tools=[tool]) +graph_builder.add_node("tools", tool_node) + +graph_builder.add_conditional_edges( + "chatbot", + tools_condition, +) +graph_builder.add_edge("tools", "chatbot") +graph_builder.set_entry_point("chatbot") +memory = MemorySaver() +graph = graph_builder.compile(checkpointer=memory) +``` + +## Next steps + +In the next tutorial, you will [add human-in-the-loop to the chatbot](./4-human-in-the-loop.md) to handle situations where it may need guidance or verification before proceeding. \ No newline at end of file diff --git a/docs/docs/tutorials/get-started/4-human-in-the-loop.md b/docs/docs/tutorials/get-started/4-human-in-the-loop.md new file mode 100644 index 000000000..9cb0b3a76 --- /dev/null +++ b/docs/docs/tutorials/get-started/4-human-in-the-loop.md @@ -0,0 +1,277 @@ +# Add human-in-the-loop controls + +Agents can be unreliable and may need human input to successfully accomplish tasks. Similarly, for some actions, you may want to require human approval before running to ensure that everything is running as intended. + +LangGraph's [persistence](../../concepts/persistence.md) layer supports **human-in-the-loop** workflows, allowing execution to pause and resume based on user feedback. The primary interface to this functionality is the [`interrupt`](../../concepts/human_in_the_loop.md#interrupt) function. Calling `interrupt` inside a node will pause execution. Execution can be resumed, together with new input from a human, by passing in a [Command](../../concepts/human_in_the_loop.md#the-command-primitive). `interrupt` is ergonomically similar to Python's built-in `input()`, [with some caveats](../../concepts/human_in_the_loop.md#interrupt). + +!!! note + + This tutorial builds on [Add memory](./3-add-memory.md). + +## 1. Add the `human_assistance` tool + +Starting with the existing code from the [Add memory to the chatbot](./3-add-memory.md) tutorial, add the `human_assistance` tool to the chatbot. This tool uses `interrupt` to receive information from a human. + +Let's first select a chat model: + +{!snippets/chat_model_tabs.md!} + + + +We can now incorporate it into our `StateGraph` with an additional tool: + +``` python hl_lines="12 19 20 21 22 23" +from typing import Annotated + +from langchain_tavily import TavilySearch +from langchain_core.tools import tool +from typing_extensions import TypedDict + +from langgraph.checkpoint.memory import MemorySaver +from langgraph.graph import StateGraph, START, END +from langgraph.graph.message import add_messages +from langgraph.prebuilt import ToolNode, tools_condition + +from langgraph.types import Command, interrupt + +class State(TypedDict): + messages: Annotated[list, add_messages] + +graph_builder = StateGraph(State) + +@tool +def human_assistance(query: str) -> str: + """Request assistance from a human.""" + human_response = interrupt({"query": query}) + return human_response["data"] + +tool = TavilySearch(max_results=2) +tools = [tool, human_assistance] +llm_with_tools = llm.bind_tools(tools) + +def chatbot(state: State): + message = llm_with_tools.invoke(state["messages"]) + # Because we will be interrupting during tool execution, + # we disable parallel tool calling to avoid repeating any + # tool invocations when we resume. + assert len(message.tool_calls) <= 1 + return {"messages": [message]} + +graph_builder.add_node("chatbot", chatbot) + +tool_node = ToolNode(tools=tools) +graph_builder.add_node("tools", tool_node) + +graph_builder.add_conditional_edges( + "chatbot", + tools_condition, +) +graph_builder.add_edge("tools", "chatbot") +graph_builder.add_edge(START, "chatbot") +``` + +!!! tip + + For more information and examples of human-in-the-loop workflows, see [Human-in-the-loop](../../concepts/human_in_the_loop.md). This includes how to [review and edit tool calls](../../how-tos/human_in_the_loop/review-tool-calls.ipynb) before they are executed. + +## 2. Compile the graph + +We compile the graph with a checkpointer, as before: + +```python +memory = MemorySaver() + +graph = graph_builder.compile(checkpointer=memory) +``` + +## 3. Visualize the graph (optional) + +Visualizing the graph, you get the same layout as before – just with the added tool! + +``` python +from IPython.display import Image, display + +try: + display(Image(graph.get_graph().draw_mermaid_png())) +except Exception: + # This requires some extra dependencies and is optional + pass +``` + +![chatbot-with-tools-diagram](chatbot-with-tools.png) + +## 4. Prompt the chatbot + +Now, prompt the chatbot with a question that will engage the new `human_assistance` tool: + +```python +user_input = "I need some expert guidance for building an AI agent. Could you request assistance for me?" +config = {"configurable": {"thread_id": "1"}} + +events = graph.stream( + {"messages": [{"role": "user", "content": user_input}]}, + config, + stream_mode="values", +) +for event in events: + if "messages" in event: + event["messages"][-1].pretty_print() +``` + +``` +================================ Human Message ================================= + +I need some expert guidance for building an AI agent. Could you request assistance for me? +================================== Ai Message ================================== + +[{'text': "Certainly! I'd be happy to request expert assistance for you regarding building an AI agent. To do this, I'll use the human_assistance function to relay your request. Let me do that for you now.", 'type': 'text'}, {'id': 'toolu_01ABUqneqnuHNuo1vhfDFQCW', 'input': {'query': 'A user is requesting expert guidance for building an AI agent. Could you please provide some expert advice or resources on this topic?'}, 'name': 'human_assistance', 'type': 'tool_use'}] +Tool Calls: + human_assistance (toolu_01ABUqneqnuHNuo1vhfDFQCW) + Call ID: toolu_01ABUqneqnuHNuo1vhfDFQCW + Args: + query: A user is requesting expert guidance for building an AI agent. Could you please provide some expert advice or resources on this topic? +``` + +The chatbot generated a tool call, but then execution has been interrupted. If you inspect the graph state, you see that it stopped at the tools node: + +```python +snapshot = graph.get_state(config) +snapshot.next +``` + +``` +('tools',) +``` + +!!! info Additional information + + Take a closer look at the `human_assistance` tool: + + ```python + @tool + def human_assistance(query: str) -> str: + """Request assistance from a human.""" + human_response = interrupt({"query": query}) + return human_response["data"] + ``` + + Similar to Python's built-in `input()` function, calling `interrupt` inside the tool will pause execution. Progress is persisted based on the [checkpointer](../../concepts/persistence.md#checkpointer-libraries); so if it is persisting with Postgres, it can resume at any time as long as the database is alive. In this example, it is persisting with the in-memory checkpointer and can resume any time if the Python kernel is running. + +## 5. Resume execution + +To resume execution, pass a [`Command`](../../concepts/human_in_the_loop.md#the-command-primitive) object containing data expected by the tool. The format of this data can be customized based on needs. For this example, use a dict with a key `"data"`: + +``` python +human_response = ( + "We, the experts are here to help! We'd recommend you check out LangGraph to build your agent." + " It's much more reliable and extensible than simple autonomous agents." +) + +human_command = Command(resume={"data": human_response}) + +events = graph.stream(human_command, config, stream_mode="values") +for event in events: + if "messages" in event: + event["messages"][-1].pretty_print() +``` + +``` +================================== Ai Message ================================== + +[{'text': "Certainly! I'd be happy to request expert assistance for you regarding building an AI agent. To do this, I'll use the human_assistance function to relay your request. Let me do that for you now.", 'type': 'text'}, {'id': 'toolu_01ABUqneqnuHNuo1vhfDFQCW', 'input': {'query': 'A user is requesting expert guidance for building an AI agent. Could you please provide some expert advice or resources on this topic?'}, 'name': 'human_assistance', 'type': 'tool_use'}] +Tool Calls: + human_assistance (toolu_01ABUqneqnuHNuo1vhfDFQCW) + Call ID: toolu_01ABUqneqnuHNuo1vhfDFQCW + Args: + query: A user is requesting expert guidance for building an AI agent. Could you please provide some expert advice or resources on this topic? +================================= Tool Message ================================= +Name: human_assistance + +We, the experts are here to help! We'd recommend you check out LangGraph to build your agent. It's much more reliable and extensible than simple autonomous agents. +================================== Ai Message ================================== + +Thank you for your patience. I've received some expert advice regarding your request for guidance on building an AI agent. Here's what the experts have suggested: + +The experts recommend that you look into LangGraph for building your AI agent. They mention that LangGraph is a more reliable and extensible option compared to simple autonomous agents. + +LangGraph is likely a framework or library designed specifically for creating AI agents with advanced capabilities. Here are a few points to consider based on this recommendation: + +1. Reliability: The experts emphasize that LangGraph is more reliable than simpler autonomous agent approaches. This could mean it has better stability, error handling, or consistent performance. + +2. Extensibility: LangGraph is described as more extensible, which suggests that it probably offers a flexible architecture that allows you to easily add new features or modify existing ones as your agent's requirements evolve. + +3. Advanced capabilities: Given that it's recommended over "simple autonomous agents," LangGraph likely provides more sophisticated tools and techniques for building complex AI agents. +... +2. Look for tutorials or guides specifically focused on building AI agents with LangGraph. +3. Check if there are any community forums or discussion groups where you can ask questions and get support from other developers using LangGraph. + +If you'd like more specific information about LangGraph or have any questions about this recommendation, please feel free to ask, and I can request further assistance from the experts. +Output is truncated. View as a scrollable element or open in a text editor. Adjust cell output settings... +``` + +The input has been received and processed as a tool message. Review this call's [LangSmith trace](https://smith.langchain.com/public/9f0f87e3-56a7-4dde-9c76-b71675624e91/r) to see the exact work that was done in the above call. Notice that the state is loaded in the first step so that our chatbot can continue where it left off. + +**Congratulations!** You've used an `interrupt` to add human-in-the-loop execution to your chatbot, allowing for human oversight and intervention when needed. This opens up the potential UIs you can create with your AI systems. Since you have already added a **checkpointer**, as long as the underlying persistence layer is running, the graph can be paused **indefinitely** and resumed at any time as if nothing had happened. + +Check out the code snippet below to review the graph from this tutorial: + +{!snippets/chat_model_tabs.md!} + +```python +from typing import Annotated + +from langchain_tavily import TavilySearch +from langchain_core.tools import tool +from typing_extensions import TypedDict + +from langgraph.checkpoint.memory import MemorySaver +from langgraph.graph import StateGraph, START, END +from langgraph.graph.message import add_messages +from langgraph.prebuilt import ToolNode, tools_condition +from langgraph.types import Command, interrupt + +class State(TypedDict): + messages: Annotated[list, add_messages] + +graph_builder = StateGraph(State) + +@tool +def human_assistance(query: str) -> str: + """Request assistance from a human.""" + human_response = interrupt({"query": query}) + return human_response["data"] + +tool = TavilySearch(max_results=2) +tools = [tool, human_assistance] +llm_with_tools = llm.bind_tools(tools) + +def chatbot(state: State): + message = llm_with_tools.invoke(state["messages"]) + assert(len(message.tool_calls) <= 1) + return {"messages": [message]} + +graph_builder.add_node("chatbot", chatbot) + +tool_node = ToolNode(tools=tools) +graph_builder.add_node("tools", tool_node) + +graph_builder.add_conditional_edges( + "chatbot", + tools_condition, +) +graph_builder.add_edge("tools", "chatbot") +graph_builder.add_edge(START, "chatbot") + +memory = MemorySaver() +graph = graph_builder.compile(checkpointer=memory) +``` + +## Next steps + +So far, the tutorial examples have relied on a simple state with one entry: a list of messages. You can go far with this simple state, but if you want to define complex behavior without relying on the message list, you can [add additional fields to the state](./5-customize-state.md). \ No newline at end of file diff --git a/docs/docs/tutorials/get-started/5-customize-state.md b/docs/docs/tutorials/get-started/5-customize-state.md new file mode 100644 index 000000000..d887e7bfd --- /dev/null +++ b/docs/docs/tutorials/get-started/5-customize-state.md @@ -0,0 +1,311 @@ +# Customize state + +In this tutorial, you will add additional fields to the state to define complex behavior without relying on the message list. The chatbot will use its search tool to find specific information and forward them to a human for review. + +!!! note + + This tutorial builds on [Add human-in-the-loop controls](./4-human-in-the-loop.md). + +## 1. Add keys to the state + +Update the chatbot to research the birthday of an entity by adding `name` and `birthday` keys to the state: + +```python +from typing import Annotated + +from typing_extensions import TypedDict + +from langgraph.graph.message import add_messages + + +class State(TypedDict): + messages: Annotated[list, add_messages] + # highlight-next-line + name: str + # highlight-next-line + birthday: str +``` + +Adding this information to the state makes it easily accessible by other graph nodes (like a downstream node that stores or processes the information), as well as the graph's persistence layer. + +## 2. Update the state inside the tool + +Now, populate the state keys inside of the `human_assistance` tool. This allows a human to review the information before it is stored in the state. Use [`Command`](../../concepts/low_level.md#using-inside-tools) to issue a state update from inside the tool. + +``` python +from langchain_core.messages import ToolMessage +from langchain_core.tools import InjectedToolCallId, tool + +from langgraph.types import Command, interrupt + +@tool +# Note that because we are generating a ToolMessage for a state update, we +# generally require the ID of the corresponding tool call. We can use +# LangChain's InjectedToolCallId to signal that this argument should not +# be revealed to the model in the tool's schema. +def human_assistance( + name: str, birthday: str, tool_call_id: Annotated[str, InjectedToolCallId] +) -> str: + """Request assistance from a human.""" + human_response = interrupt( + { + "question": "Is this correct?", + "name": name, + "birthday": birthday, + }, + ) + # If the information is correct, update the state as-is. + if human_response.get("correct", "").lower().startswith("y"): + verified_name = name + verified_birthday = birthday + response = "Correct" + # Otherwise, receive information from the human reviewer. + else: + verified_name = human_response.get("name", name) + verified_birthday = human_response.get("birthday", birthday) + response = f"Made a correction: {human_response}" + + # This time we explicitly update the state with a ToolMessage inside + # the tool. + state_update = { + "name": verified_name, + "birthday": verified_birthday, + "messages": [ToolMessage(response, tool_call_id=tool_call_id)], + } + # We return a Command object in the tool to update our state. + return Command(update=state_update) +``` + +The rest of the graph stays the same. + +## 3. Prompt the chatbot + +Prompt the chatbot to look up the "birthday" of the LangGraph library and direct the chatbot to reach out to the `human_assistance` tool once it has the required information. By setting `name` and `birthday` in the arguments for the tool, you force the chatbot to generate proposals for these fields. + +```python +user_input = ( + "Can you look up when LangGraph was released? " + "When you have the answer, use the human_assistance tool for review." +) +config = {"configurable": {"thread_id": "1"}} + +events = graph.stream( + {"messages": [{"role": "user", "content": user_input}]}, + config, + stream_mode="values", +) +for event in events: + if "messages" in event: + event["messages"][-1].pretty_print() +``` + +``` +================================ Human Message ================================= + +Can you look up when LangGraph was released? When you have the answer, use the human_assistance tool for review. +================================== Ai Message ================================== + +[{'text': "Certainly! I'll start by searching for information about LangGraph's release date using the Tavily search function. Then, I'll use the human_assistance tool for review.", 'type': 'text'}, {'id': 'toolu_01JoXQPgTVJXiuma8xMVwqAi', 'input': {'query': 'LangGraph release date'}, 'name': 'tavily_search_results_json', 'type': 'tool_use'}] +Tool Calls: + tavily_search_results_json (toolu_01JoXQPgTVJXiuma8xMVwqAi) + Call ID: toolu_01JoXQPgTVJXiuma8xMVwqAi + Args: + query: LangGraph release date +================================= Tool Message ================================= +Name: tavily_search_results_json + +[{"url": "https://blog.langchain.dev/langgraph-cloud/", "content": "We also have a new stable release of LangGraph. By LangChain 6 min read Jun 27, 2024 (Oct '24) Edit: Since the launch of LangGraph Cloud, we now have multiple deployment options alongside LangGraph Studio - which now fall under LangGraph Platform. LangGraph Cloud is synonymous with our Cloud SaaS deployment option."}, {"url": "https://changelog.langchain.com/announcements/langgraph-cloud-deploy-at-scale-monitor-carefully-iterate-boldly", "content": "LangChain - Changelog | ☁ 🚀 LangGraph Cloud: Deploy at scale, monitor LangChain LangSmith LangGraph LangChain LangSmith LangGraph LangChain LangSmith LangGraph LangChain Changelog Sign up for our newsletter to stay up to date DATE: The LangChain Team LangGraph LangGraph Cloud ☁ 🚀 LangGraph Cloud: Deploy at scale, monitor carefully, iterate boldly DATE: June 27, 2024 AUTHOR: The LangChain Team LangGraph Cloud is now in closed beta, offering scalable, fault-tolerant deployment for LangGraph agents. LangGraph Cloud also includes a new playground-like studio for debugging agent failure modes and quick iteration: Join the waitlist today for LangGraph Cloud. And to learn more, read our blog post announcement or check out our docs. Subscribe By clicking subscribe, you accept our privacy policy and terms and conditions."}] +================================== Ai Message ================================== + +[{'text': "Based on the search results, it appears that LangGraph was already in existence before June 27, 2024, when LangGraph Cloud was announced. However, the search results don't provide a specific release date for the original LangGraph. \n\nGiven this information, I'll use the human_assistance tool to review and potentially provide more accurate information about LangGraph's initial release date.", 'type': 'text'}, {'id': 'toolu_01JDQAV7nPqMkHHhNs3j3XoN', 'input': {'name': 'Assistant', 'birthday': '2023-01-01'}, 'name': 'human_assistance', 'type': 'tool_use'}] +Tool Calls: + human_assistance (toolu_01JDQAV7nPqMkHHhNs3j3XoN) + Call ID: toolu_01JDQAV7nPqMkHHhNs3j3XoN + Args: + name: Assistant + birthday: 2023-01-01 +``` + +We've hit the `interrupt` in the `human_assistance` tool again. + +## 4. Add human assistance + +The chatbot failed to identify the correct date, so supply it with information: + +```python +human_command = Command( + resume={ + "name": "LangGraph", + "birthday": "Jan 17, 2024", + }, +) + +events = graph.stream(human_command, config, stream_mode="values") +for event in events: + if "messages" in event: + event["messages"][-1].pretty_print() +``` + +``` +================================== Ai Message ================================== + +[{'text': "Based on the search results, it appears that LangGraph was already in existence before June 27, 2024, when LangGraph Cloud was announced. However, the search results don't provide a specific release date for the original LangGraph. \n\nGiven this information, I'll use the human_assistance tool to review and potentially provide more accurate information about LangGraph's initial release date.", 'type': 'text'}, {'id': 'toolu_01JDQAV7nPqMkHHhNs3j3XoN', 'input': {'name': 'Assistant', 'birthday': '2023-01-01'}, 'name': 'human_assistance', 'type': 'tool_use'}] +Tool Calls: + human_assistance (toolu_01JDQAV7nPqMkHHhNs3j3XoN) + Call ID: toolu_01JDQAV7nPqMkHHhNs3j3XoN + Args: + name: Assistant + birthday: 2023-01-01 +================================= Tool Message ================================= +Name: human_assistance + +Made a correction: {'name': 'LangGraph', 'birthday': 'Jan 17, 2024'} +================================== Ai Message ================================== + +Thank you for the human assistance. I can now provide you with the correct information about LangGraph's release date. + +LangGraph was initially released on January 17, 2024. This information comes from the human assistance correction, which is more accurate than the search results I initially found. + +To summarize: +1. LangGraph's original release date: January 17, 2024 +2. LangGraph Cloud announcement: June 27, 2024 + +It's worth noting that LangGraph had been in development and use for some time before the LangGraph Cloud announcement, but the official initial release of LangGraph itself was on January 17, 2024. +``` + +Note that these fields are now reflected in the state: + +```python +snapshot = graph.get_state(config) + +{k: v for k, v in snapshot.values.items() if k in ("name", "birthday")} +``` + +``` +{'name': 'LangGraph', 'birthday': 'Jan 17, 2024'} +``` + +This makes them easily accessible to downstream nodes (e.g., a node that further processes or stores the information). + +## 5. Manually update the state + +LangGraph gives a high degree of control over the application state. For instance, at any point (including when interrupted), you can manually override a key using `graph.update_state`: + +``` python +graph.update_state(config, {"name": "LangGraph (library)"}) +``` + +``` +{'configurable': {'thread_id': '1', + 'checkpoint_ns': '', + 'checkpoint_id': '1efd4ec5-cf69-6352-8006-9278f1730162'}} +``` + +## 6. View the new value + +If you call `graph.get_state`, you can see the new value is reflected: + +``` python +snapshot = graph.get_state(config) + +{k: v for k, v in snapshot.values.items() if k in ("name", "birthday")} +``` + +``` +{'name': 'LangGraph (library)', 'birthday': 'Jan 17, 2024'} +``` + +Manual state updates will [generate a trace](https://smith.langchain.com/public/7ebb7827-378d-49fe-9f6c-5df0e90086c8/r) in LangSmith. If desired, they can also be used to [control human-in-the-loop workflows](../../how-tos/human_in_the_loop/edit-graph-state.md). Use of the `interrupt` function is generally recommended instead, as it allows data to be transmitted in a human-in-the-loop interaction independently of state updates. + +**Congratulations!** You've added custom keys to the state to facilitate a more complex workflow, and learned how to generate state updates from inside tools. + +Check out the code snippet below to review the graph from this tutorial: + +{!snippets/chat_model_tabs.md!} + + + +```python +from typing import Annotated + +from langchain_tavily import TavilySearch +from langchain_core.messages import ToolMessage +from langchain_core.tools import InjectedToolCallId, tool +from typing_extensions import TypedDict + +from langgraph.checkpoint.memory import MemorySaver +from langgraph.graph import StateGraph, START, END +from langgraph.graph.message import add_messages +from langgraph.prebuilt import ToolNode, tools_condition +from langgraph.types import Command, interrupt + +class State(TypedDict): + messages: Annotated[list, add_messages] + name: str + birthday: str + +@tool +def human_assistance( + name: str, birthday: str, tool_call_id: Annotated[str, InjectedToolCallId] +) -> str: + """Request assistance from a human.""" + human_response = interrupt( + { + "question": "Is this correct?", + "name": name, + "birthday": birthday, + }, + ) + if human_response.get("correct", "").lower().startswith("y"): + verified_name = name + verified_birthday = birthday + response = "Correct" + else: + verified_name = human_response.get("name", name) + verified_birthday = human_response.get("birthday", birthday) + response = f"Made a correction: {human_response}" + + state_update = { + "name": verified_name, + "birthday": verified_birthday, + "messages": [ToolMessage(response, tool_call_id=tool_call_id)], + } + return Command(update=state_update) + + +tool = TavilySearch(max_results=2) +tools = [tool, human_assistance] +llm_with_tools = llm.bind_tools(tools) + +def chatbot(state: State): + message = llm_with_tools.invoke(state["messages"]) + assert(len(message.tool_calls) <= 1) + return {"messages": [message]} + +graph_builder = StateGraph(State) +graph_builder.add_node("chatbot", chatbot) + +tool_node = ToolNode(tools=tools) +graph_builder.add_node("tools", tool_node) + +graph_builder.add_conditional_edges( + "chatbot", + tools_condition, +) +graph_builder.add_edge("tools", "chatbot") +graph_builder.add_edge(START, "chatbot") + +memory = MemorySaver() +graph = graph_builder.compile(checkpointer=memory) +``` + +## Next steps + +There's one more concept to review before finishing the LangGraph basics tutorials: connecting `checkpointing` and `state updates` to [time travel](./6-time-travel.md). + diff --git a/docs/docs/tutorials/get-started/6-time-travel.md b/docs/docs/tutorials/get-started/6-time-travel.md new file mode 100644 index 000000000..f06cc72f4 --- /dev/null +++ b/docs/docs/tutorials/get-started/6-time-travel.md @@ -0,0 +1,288 @@ +# Time travel + +In a typical chatbot workflow, the user interacts with the bot one or more times to accomplish a task. [Memory](./3-add-memory.md) and a [human-in-the-loop](./4-human-in-the-loop.md) enable checkpoints in the graph state and control future responses. + +What if you want a user to be able to start from a previous response and explore a different outcome? Or what if you want users to be able to rewind your chatbot's work to fix mistakes or try a different strategy, something that is common in applications like autonomous software engineers? + +You can create these types of experiences using LangGraph's built-in **time travel** functionality. + +!!! note + + This tutorial builds on [Customize state](./5-customize-state.md). + +## 1. Rewind your graph + +Rewind your graph by fetching a checkpoint using the graph's `get_state_history` method. You can then resume execution at this previous point in time. + +{!snippets/chat_model_tabs.md!} + + + +```python +from typing import Annotated + +from langchain_tavily import TavilySearch +from langchain_core.messages import BaseMessage +from typing_extensions import TypedDict + +from langgraph.checkpoint.memory import MemorySaver +from langgraph.graph import StateGraph, START, END +from langgraph.graph.message import add_messages +from langgraph.prebuilt import ToolNode, tools_condition + +class State(TypedDict): + messages: Annotated[list, add_messages] + +graph_builder = StateGraph(State) + +tool = TavilySearch(max_results=2) +tools = [tool] +llm_with_tools = llm.bind_tools(tools) + +def chatbot(state: State): + return {"messages": [llm_with_tools.invoke(state["messages"])]} + +graph_builder.add_node("chatbot", chatbot) + +tool_node = ToolNode(tools=[tool]) +graph_builder.add_node("tools", tool_node) + +graph_builder.add_conditional_edges( + "chatbot", + tools_condition, +) +graph_builder.add_edge("tools", "chatbot") +graph_builder.add_edge(START, "chatbot") + +memory = MemorySaver() +graph = graph_builder.compile(checkpointer=memory) +``` + +## 2. Add steps + +Add steps to your graph. Every step will be checkpointed in its state history: + +``` python +config = {"configurable": {"thread_id": "1"}} +events = graph.stream( + { + "messages": [ + { + "role": "user", + "content": ( + "I'm learning LangGraph. " + "Could you do some research on it for me?" + ), + }, + ], + }, + config, + stream_mode="values", +) +for event in events: + if "messages" in event: + event["messages"][-1].pretty_print() +``` + +``` +================================ Human Message ================================= + +I'm learning LangGraph. Could you do some research on it for me? +================================== Ai Message ================================== + +[{'text': "Certainly! I'd be happy to research LangGraph for you. To get the most up-to-date and accurate information, I'll use the Tavily search engine to look this up. Let me do that for you now.", 'type': 'text'}, {'id': 'toolu_01BscbfJJB9EWJFqGrN6E54e', 'input': {'query': 'LangGraph latest information and features'}, 'name': 'tavily_search_results_json', 'type': 'tool_use'}] +Tool Calls: + tavily_search_results_json (toolu_01BscbfJJB9EWJFqGrN6E54e) + Call ID: toolu_01BscbfJJB9EWJFqGrN6E54e + Args: + query: LangGraph latest information and features +================================= Tool Message ================================= +Name: tavily_search_results_json + +[{"url": "https://blockchain.news/news/langchain-new-features-upcoming-events-update", "content": "LangChain, a leading platform in the AI development space, has released its latest updates, showcasing new use cases and enhancements across its ecosystem. According to the LangChain Blog, the updates cover advancements in LangGraph Cloud, LangSmith's self-improving evaluators, and revamped documentation for LangGraph."}, {"url": "https://blog.langchain.dev/langgraph-platform-announce/", "content": "With these learnings under our belt, we decided to couple some of our latest offerings under LangGraph Platform. LangGraph Platform today includes LangGraph Server, LangGraph Studio, plus the CLI and SDK. ... we added features in LangGraph Server to deliver on a few key value areas. Below, we'll focus on these aspects of LangGraph Platform."}] +================================== Ai Message ================================== + +Thank you for your patience. I've found some recent information about LangGraph for you. Let me summarize the key points: + +1. LangGraph is part of the LangChain ecosystem, which is a leading platform in AI development. + +2. Recent updates and features of LangGraph include: + + a. LangGraph Cloud: This seems to be a cloud-based version of LangGraph, though specific details weren't provided in the search results. +... +3. Keep an eye on LangGraph Cloud developments, as cloud-based solutions often provide an easier starting point for learners. +4. Consider how LangGraph fits into the broader LangChain ecosystem, especially its interaction with tools like LangSmith. + +Is there any specific aspect of LangGraph you'd like to know more about? I'd be happy to do a more focused search on particular features or use cases. +Output is truncated. View as a scrollable element or open in a text editor. Adjust cell output settings... +``` + +```python +events = graph.stream( + { + "messages": [ + { + "role": "user", + "content": ( + "Ya that's helpful. Maybe I'll " + "build an autonomous agent with it!" + ), + }, + ], + }, + config, + stream_mode="values", +) +for event in events: + if "messages" in event: + event["messages"][-1].pretty_print() +``` + +``` +================================ Human Message ================================= + +Ya that's helpful. Maybe I'll build an autonomous agent with it! +================================== Ai Message ================================== + +[{'text': "That's an exciting idea! Building an autonomous agent with LangGraph is indeed a great application of this technology. LangGraph is particularly well-suited for creating complex, multi-step AI workflows, which is perfect for autonomous agents. Let me gather some more specific information about using LangGraph for building autonomous agents.", 'type': 'text'}, {'id': 'toolu_01QWNHhUaeeWcGXvA4eHT7Zo', 'input': {'query': 'Building autonomous agents with LangGraph examples and tutorials'}, 'name': 'tavily_search_results_json', 'type': 'tool_use'}] +Tool Calls: + tavily_search_results_json (toolu_01QWNHhUaeeWcGXvA4eHT7Zo) + Call ID: toolu_01QWNHhUaeeWcGXvA4eHT7Zo + Args: + query: Building autonomous agents with LangGraph examples and tutorials +================================= Tool Message ================================= +Name: tavily_search_results_json + +[{"url": "https://towardsdatascience.com/building-autonomous-multi-tool-agents-with-gemini-2-0-and-langgraph-ad3d7bd5e79d", "content": "Building Autonomous Multi-Tool Agents with Gemini 2.0 and LangGraph | by Youness Mansar | Jan, 2025 | Towards Data Science Building Autonomous Multi-Tool Agents with Gemini 2.0 and LangGraph A practical tutorial with full code examples for building and running multi-tool agents Towards Data Science LLMs are remarkable — they can memorize vast amounts of information, answer general knowledge questions, write code, generate stories, and even fix your grammar. In this tutorial, we are going to build a simple LLM agent that is equipped with four tools that it can use to answer a user’s question. This Agent will have the following specifications: Follow Published in Towards Data Science --------------------------------- Your home for data science and AI. Follow Follow Follow"}, {"url": "https://github.com/anmolaman20/Tools_and_Agents", "content": "GitHub - anmolaman20/Tools_and_Agents: This repository provides resources for building AI agents using Langchain and Langgraph. This repository provides resources for building AI agents using Langchain and Langgraph. This repository provides resources for building AI agents using Langchain and Langgraph. This repository serves as a comprehensive guide for building AI-powered agents using Langchain and Langgraph. It provides hands-on examples, practical tutorials, and resources for developers and AI enthusiasts to master building intelligent systems and workflows. AI Agent Development: Gain insights into creating intelligent systems that think, reason, and adapt in real time. This repository is ideal for AI practitioners, developers exploring language models, or anyone interested in building intelligent systems. This repository provides resources for building AI agents using Langchain and Langgraph."}] +================================== Ai Message ================================== + +Great idea! Building an autonomous agent with LangGraph is definitely an exciting project. Based on the latest information I've found, here are some insights and tips for building autonomous agents with LangGraph: + +1. Multi-Tool Agents: LangGraph is particularly well-suited for creating autonomous agents that can use multiple tools. This allows your agent to have a diverse set of capabilities and choose the right tool for each task. + +2. Integration with Large Language Models (LLMs): You can combine LangGraph with powerful LLMs like Gemini 2.0 to create more intelligent and capable agents. The LLM can serve as the "brain" of your agent, making decisions and generating responses. + +3. Workflow Management: LangGraph excels at managing complex, multi-step AI workflows. This is crucial for autonomous agents that need to break down tasks into smaller steps and execute them in the right order. +... +6. Pay attention to how you structure the agent's decision-making process and workflow. +7. Don't forget to implement proper error handling and safety measures, especially if your agent will be interacting with external systems or making important decisions. + +Building an autonomous agent is an iterative process, so be prepared to refine and improve your agent over time. Good luck with your project! If you need any more specific information as you progress, feel free to ask. +Output is truncated. View as a scrollable element or open in a text editor. Adjust cell output settings... +``` + +## 3. Replay the full state history + +Now that you have added steps to the chatbot, you can `replay` the full state history to see everything that occurred. + +``` python +to_replay = None +for state in graph.get_state_history(config): + print("Num Messages: ", len(state.values["messages"]), "Next: ", state.next) + print("-" * 80) + if len(state.values["messages"]) == 6: + # We are somewhat arbitrarily selecting a specific state based on the number of chat messages in the state. + to_replay = state +``` + +``` +Num Messages: 8 Next: () +-------------------------------------------------------------------------------- +Num Messages: 7 Next: ('chatbot',) +-------------------------------------------------------------------------------- +Num Messages: 6 Next: ('tools',) +-------------------------------------------------------------------------------- +Num Messages: 5 Next: ('chatbot',) +-------------------------------------------------------------------------------- +Num Messages: 4 Next: ('__start__',) +-------------------------------------------------------------------------------- +Num Messages: 4 Next: () +-------------------------------------------------------------------------------- +Num Messages: 3 Next: ('chatbot',) +-------------------------------------------------------------------------------- +Num Messages: 2 Next: ('tools',) +-------------------------------------------------------------------------------- +Num Messages: 1 Next: ('chatbot',) +-------------------------------------------------------------------------------- +Num Messages: 0 Next: ('__start__',) +-------------------------------------------------------------------------------- +``` + +Checkpoints are saved for every step of the graph. This __spans invocations__ so you can rewind across a full thread's history. + +## Resume from a checkpoint + +Resume from the `to_replay` state, which is after the `chatbot` node in the second graph invocation. Resuming from this point will call the **action** node next. + +```python +print(to_replay.next) +print(to_replay.config) +``` + +``` +('tools',) +{'configurable': {'thread_id': '1', 'checkpoint_ns': '', 'checkpoint_id': '1efd43e3-0c1f-6c4e-8006-891877d65740'}} +``` + +## 4. Load a state from a moment-in-time + +The checkpoint's `to_replay.config` contains a `checkpoint_id` timestamp. Providing this `checkpoint_id` value tells LangGraph's checkpointer to **load** the state from that moment in time. + + +``` python +# The `checkpoint_id` in the `to_replay.config` corresponds to a state we've persisted to our checkpointer. +for event in graph.stream(None, to_replay.config, stream_mode="values"): + if "messages" in event: + event["messages"][-1].pretty_print() +``` + +``` +================================== Ai Message ================================== + +[{'text': "That's an exciting idea! Building an autonomous agent with LangGraph is indeed a great application of this technology. LangGraph is particularly well-suited for creating complex, multi-step AI workflows, which is perfect for autonomous agents. Let me gather some more specific information about using LangGraph for building autonomous agents.", 'type': 'text'}, {'id': 'toolu_01QWNHhUaeeWcGXvA4eHT7Zo', 'input': {'query': 'Building autonomous agents with LangGraph examples and tutorials'}, 'name': 'tavily_search_results_json', 'type': 'tool_use'}] +Tool Calls: + tavily_search_results_json (toolu_01QWNHhUaeeWcGXvA4eHT7Zo) + Call ID: toolu_01QWNHhUaeeWcGXvA4eHT7Zo + Args: + query: Building autonomous agents with LangGraph examples and tutorials +================================= Tool Message ================================= +Name: tavily_search_results_json + +[{"url": "https://towardsdatascience.com/building-autonomous-multi-tool-agents-with-gemini-2-0-and-langgraph-ad3d7bd5e79d", "content": "Building Autonomous Multi-Tool Agents with Gemini 2.0 and LangGraph | by Youness Mansar | Jan, 2025 | Towards Data Science Building Autonomous Multi-Tool Agents with Gemini 2.0 and LangGraph A practical tutorial with full code examples for building and running multi-tool agents Towards Data Science LLMs are remarkable — they can memorize vast amounts of information, answer general knowledge questions, write code, generate stories, and even fix your grammar. In this tutorial, we are going to build a simple LLM agent that is equipped with four tools that it can use to answer a user’s question. This Agent will have the following specifications: Follow Published in Towards Data Science --------------------------------- Your home for data science and AI. Follow Follow Follow"}, {"url": "https://github.com/anmolaman20/Tools_and_Agents", "content": "GitHub - anmolaman20/Tools_and_Agents: This repository provides resources for building AI agents using Langchain and Langgraph. This repository provides resources for building AI agents using Langchain and Langgraph. This repository provides resources for building AI agents using Langchain and Langgraph. This repository serves as a comprehensive guide for building AI-powered agents using Langchain and Langgraph. It provides hands-on examples, practical tutorials, and resources for developers and AI enthusiasts to master building intelligent systems and workflows. AI Agent Development: Gain insights into creating intelligent systems that think, reason, and adapt in real time. This repository is ideal for AI practitioners, developers exploring language models, or anyone interested in building intelligent systems. This repository provides resources for building AI agents using Langchain and Langgraph."}] +================================== Ai Message ================================== + +Great idea! Building an autonomous agent with LangGraph is indeed an excellent way to apply and deepen your understanding of the technology. Based on the search results, I can provide you with some insights and resources to help you get started: + +1. Multi-Tool Agents: + LangGraph is well-suited for building autonomous agents that can use multiple tools. This allows your agent to have a variety of capabilities and choose the appropriate tool based on the task at hand. + +2. Integration with Large Language Models (LLMs): + There's a tutorial that specifically mentions using Gemini 2.0 (Google's LLM) with LangGraph to build autonomous agents. This suggests that LangGraph can be integrated with various LLMs, giving you flexibility in choosing the language model that best fits your needs. + +3. Practical Tutorials: + There are tutorials available that provide full code examples for building and running multi-tool agents. These can be invaluable as you start your project, giving you a concrete starting point and demonstrating best practices. +... + +Remember, building an autonomous agent is an iterative process. Start simple and gradually increase complexity as you become more comfortable with LangGraph and its capabilities. + +Would you like more information on any specific aspect of building your autonomous agent with LangGraph? +Output is truncated. View as a scrollable element or open in a text editor. Adjust cell output settings... +``` + +The graph resumed execution from the `action` node. You can tell this is the case since the first value printed above is the response from our search engine tool. + +**Congratulations!** You've now used time-travel checkpoint traversal in LangGraph. Being able to rewind and explore alternative paths opens up a world of possibilities for debugging, experimentation, and interactive applications. + +## Learn more + +Take your LangGraph journey further by exploring deployment and advanced features: + +- **[LangGraph Server quickstart](../../tutorials/langgraph-platform/local-server.md)**: Launch a LangGraph server locally and interact with it using the REST API and LangGraph Studio Web UI. +- **[LangGraph Cloud quickstart](../../cloud/quick_start.md)**: Deploy your LangGraph app using LangGraph Cloud. +- **[LangGraph Platform concepts](../../concepts/langgraph_platform.md)**: Understand the foundational concepts of the LangGraph Platform. \ No newline at end of file diff --git a/docs/docs/tutorials/get-started/basic-chatbot.png b/docs/docs/tutorials/get-started/basic-chatbot.png new file mode 100644 index 0000000000000000000000000000000000000000..525391837a85db24dc68991d3ccc411dfc727d50 GIT binary patch literal 6215 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

    t?e`$__OAesq!`;=-&FRCos^S0)VG)jC zCfK)K`9F@gjIJLPy^VZbVz%Vb@iPKqv5LobhD?OFGEB+8L9p%7-evlO%iA=A8zMG` z#LSIiOcJBn7an5~;2FmsIb6{8k|!aOh!LzOOU>N(z9RbhJhXnLc)5hUK|MwC>4gQP^rn* zx6zGp(DX{z*|h7fCzA}pCEsUvSGYyXxOowO!%nT#gw_AHK`XbiRYQvyc%=yKygMp- zQQmu8#(a@cH(^@tHfWLNbHuyN8M9eOHc7CZoBL920{iAXusZpcFB#|kmR?t^S00F4 zHzwkGCF>iqe+P6qubxE(eVgS`8gsl?;(q;S*tx>CQLS%sqOkKuDL$@{$@8QJYz}4X4eCUdmnj13SAN% zam`{FGR_5HPQqz#xLHKQr!a?G`tJ2+&5{8??4=#3>-9xu4Xt4O5w)KLSv)Sl>e!p* zw2=1MppQ6Dwd*?Or5BWKLy$ELvsOL_8c~7n150INVM52p-E2rIpOs@J-1`k{TT4x5 z!8u`yO!r+}`+#F@lPm5?806s>OmAidH^#c!=6Z_Owf z#EucYy~_#GcManm_z}>)vD4S2hw8^VNzw1QnzCT=gR@`6=b95&Kr5Fje8%2XCbawQ zkn$6gZW9Sw9Ey(d_VR+q8lJxN$Nm-d3Tsc_#m08i{CNcAM@wwx`X3d0@SKK3CC7aI!DXv-|}713RIMZe;_msPoc|9M2!hQ z4iPc0pX9Gq)PtAGrgbO6NADJ$ za|e~-z#b%rk*sr|U`k-|&nE-lK?0oMyg}4ECK7|vO!fPQUr`>M?z-QR5JYB-sH|QV z3816S?4+xnierd7iV%n=s?s5YP$nDz8N&e>`&LLj4k&&+OUZ2PK;fwNNS^z_x;<14 z@{;Uq;)(U$p1dDJMu2p(B4gnu@dY7VF_~5#W@;z~BuIflf*K1~2uds^q=LGQC$djr z;9+`Im(T<0?jWj>@&GNK6AiSe>GpqSro(;2`{``w9O82W7I=R^|3dz$*%KfP)H(z6 zDAV;HiOLGvrt6W)V1mYUi0w7k1CTJ;-WU?Z3<^#CB|=CE`|p0QF@?i{`vz%FDd9mi zy##J!Sa@GnYu!Vfc1c>VM3O*|!srH>Lh3Q@eO8(Px3}IPme&*>@ymk@ z@Frjcq)M3e7298}tNv-@?kIs+Obblanaj8k-vS8wp+$=idq4mu0w_PA$P@<$hxtw~ z&n|)07%pD0L2UcBA_tQ;0`13w+*C0RLQ24wG4uwsC@R8I^nrETo7>_Z+|0mU0{z}E zf07g9=cD}t4(deqD&hXuY*Ydv<|6N8tb~f~REn_tn5M;8~*&!iZkfLPC#E_2uu4X&70=a_`g%$mDlNy zT99_;nqqDLX=`hD|D62BohwxY5zug3iob7_XiH8ns57Q40u>7-X!#_mz5gjQoYLs+ zsnnIrZ81l_4g7d9nq}{#?M|||ho=81)ARFCRMsA}$a))}yDO-y?P{y9M~yYWxLm0> zetWw9Q=UPo*=U|nkjH0sF1Mef&p{>EF~2_c!xw5_EA!!BN+dU;XwS291A4cjiq02^ z0kZ24MQnFH?;{j7*c*yTA9_u;h$Ci{*Y(t~&J~!^2Zb~HtGu&l(7*7sJP6pImY2ri zxA;*54mD~AB`MOWBjj=g<{6zYoi>e;B>Lg51CbwRe!1?#&wj%|b1!F{`@G2@yv60l0%bGCO+qSkU*nu~Q3ThLjvw_~R=-mVt-|!>^9y1-rYsmnz7=`0T zHSHI~{5QQemoxcf0=F4-W9r!{Z2GLS4MZYE2CS61X1lU-3%of+WA8-Tf2)Lwh2u3> z^VSF5!ZqsAbs>H z`bAfA1C4yI7(_UqypDTI&8GOQZ}#(-(pJW)ql

    _|7WE!YUxapTVfItTW!HDZ0F2 zJZ>=+x^5@iZ!zvRPhG5*Yr70~EN*hFFDzy`!N2AOebM~`IYF-G%jwHDzurJa6;)Mr z@%^mjh+y2`ys+nL4x|tK{_;JFO^n+=KoDa$BJoUi!@9lxd3D9AK#kwFe}|B{vb{b= zTc>T;QV7dXsv7I_3{INVx3btRcIymXyi0VzGInGapFOd&Gl}7I#5huh3dY*_uEpRc z@qthL)`ju+d9fLkhv?iQKU$F#naM?3$_Ftcq->DBnctMiuXEa(6AG5EDfgDxm!JCc z(IN+GE-y{Spg(LO!v@Es%b7lb&@>t)Oy^L-p}JPAGJ_2wGD8;wUl{J#w*t+ge==Ur zr)VOyB^u<$fx>iY(4{DK7I$W~xsF6M%JxL zb3WFeNoFRH{{4!;i!qyw3(Wjt59)5$J2p^wQ0C&d;?YjQ{qJAwS9=An1Jzhd)sj#M zI|^a6g$PQ|iN*{N z8Z{6SCs6B0aPAtZ3a37!%mK`cas-Nr1DLHLcbrE$n%(v0nQJ74jiXQ#iHeE;vz*v??sbHTSx6u>TMBdl||f`SHlSAUyfzmhrCF5jHe* z17l<{GU}=dI22B!CfP2R6h-v|q#^Z9fbPlK!1hp-iYRNnmxs1C0eyiYFGDYP@chq8 z3wXWy^a<48Dhb2=J0QiT#(@=cXi#$#Y?W6sGQc_0m)WsLggHeZP!Hu5w%8;@7Fw&#{N+VKeG_fEhdg8 z?m=26kkM-D9I9-YxhYO0(*s=*mD1b&P_pS zkS2&}Ks0;-fqTvCwvd(xuQTH#;#k+ePbk3AhZ<6ulAV=JS^DJ#MtLuuy4P*n7e`B@ z?t*6Di37Q>STisLc$E?ktEtkenB*vpEwK1J>@R1Ba3G{x!k}hoBwUL2hsns7WF`Fh z1`Sy72K9P_`dwdpFziUDBNbT^!VP1ufIAxWL`bh5!S<}uo|VquZ-St2db_2jY;5v4 zqh!Nj5RIy1S%7V%NOxXN!7lRY_0}>Tmz|FSU*M)SfX(x+jBWbcUPWci&2y*xWX!*% z+V{P8zirWfXDZI`_si42T(}(_mTL&z{<aejXJP5pMTmde9!wy z<~v_h$qnuN7Y)I75m-^J&E*tz=UwEq+2Nu8)Q1iBjoRAEs{M9~H`nju`ER?MVmkBA z7wI7Ad*RUJvV(8;_VOd@7XozPFo6?2>225R1wN1C0+`;ddT<4i?t>SQGPhu8M(i_vi(Oi@2uX@%tTIiS-A&oLf~O;GpzTXUFt*!I%) zugm*ygX#E(`zLXW&6evpLrXAOubuZ^yQ1Lx9mlc`o6$h{fApmG*2m#v*CYSU^Mske z{KiJZOXuPjQDn?baA+H+bzq$GXG=6*oiW$*w7gh0EimGXR!bQAud7V7;LnU3&3^0& zevqNX&NN!gqr}*CJs;K&6Y;v9rEk3*E=R9dRQBh-?XP}epi_wyObWmFEXIJZmo=i4IbB(fbTUETL=9?4nJD-@Q!n|cVfN4oV(l96TYUgDSQq9lbr zr5G_0f3)M7Q$0OV8MDv@WGFwW_MQH)J;lvt8*O=cRV%C4m-~OSgOzI45VaaaS)4X- zAtEbNKm`nzCo-aFqbQVVl!hh_8H5%rMjhZ(DwBQ$$lTBepU zZf`k`@R!t7Ok(!zsBy>sQ zeL1xOGE=wnHAE~AtY}i~h#euu1}-`xV%q?Pz5#z_&`9Wslu@1RA1kUUqRhiR$I2~H z6z_>l4*1^NK6s{?ee=$tp`ZQ`lqe!XkpK{w%a|@8X*H`i$jH95Lvj%=M`z6 zqQ(LYQEz>1O}hLfLO2u^b_P>53X1_+Rg%bK;p^Fw*`_i2ATBB*oanoMgk-Rp;hxaF zlANtA_UsXaPshRMdFoC33Sx=D{&E~EM;3g$TJHXcQLWq@ylwD#b=?lH6-(Wz*Tk!p z9&58gmDQjUYtY^>{Ee*L;eJhqEEp(#y&Z(y+|*p{X@;rI)z~C%Hl6u?#x}j_yMF$~ z^-;h0Ol9+c`)zl+ZN2XJecGQcl+&qIx$j0$9p-X>ZU-SjZt_2&{(h{jm?~n7p-QsdYyPy?+0o6U0-Ai49N=Yi`>F5EHt-! zIo!Qjb&F-6ZZE@^J4h-8A`)$_1{on}c+x?!3hDUn7fB!q+z*WXa?I$BJyfC5U_diW zMY@nxWqJ#Dl4iJNiO*mK2$5zKoEO?>EGQwoyH#^Sj})A9gw4$~d-w_YcaZE^N@ga| z6LT@TfQq=0&uos_s&9jE93BxoIVI0)JIcZ;i9!!!crS{5Q%!|5&T5M>8`~Jdt}t zC7`g%i@LHY;jdYe6ZC`txUh9~_!{wXW~h1g@Zb_i$EIpBEsY?7YuTs<%6d(QNx8=D z2uNl8m=a;~JQ(kyo#LdmwX3CSh7rNz*`}Hq30waZ93T6ujReSdJz-`DNZb*k8R&+1 ze(om(nX5r}4|Lc+An4gXiG|j5!b4TcIRl}*JY3LC1ggC#W%LRd>2xA2h*GFXd1==S zIxP>eX)0q_I#0Iz8WTboiCkY-7jgW3G$Dv@G<0tE(f~DME#WnY#Xb+M7&KnqXtN)u z$rbWLeEIogWMku?RpD70vdjT<Tn1*YX`#2)En`aEP8e%X|GE*$+qUxL$#a~zbH*ytKSmXI$O*v$#)3d) zNwr%m`Z|HbQh`P+Ldk#KA(lR(gv)=unOucUBsrk6k-s^T2?&?=EU2JKT(#&gr&VAO zd{Hes%v!LfCaAQ27G$r9bWJ>RvS5Re1XEbd9&y;IZ}XAn6yVuoJ{1xjDrthv7!$?= zL~IvKTyzM5b?V9XvP=Ey+@}c3;!-#@PON^_B_R5ts)$pjjf-G~Adc!pT};#f3Eo1) zsu$%S==0Lh?*bKlAfRCJ`nWq^?fg8awTwQq&go-x3$4(l5eu})bYJd?{TYu@)gHv? z)^v!^GNPIX=6IWBMOgg>;E~`${}?@&FsAnuT*qOQ{CXmg**>v8sW7Ll#*pihc_h(# zaGgpU53Q$qvPy!Bcx&B6j`X*bWF&OR1ocfA?!c+ml4`mrDC2Q`-H7(NH8Kdq26rzS zYO~rA69M;=9L+(!=SYSkeKCHTnWa8U=C|!&l9ZSx0hy?TMFAQC+|N`p<`!r`YxMA{ zrmV9M53-w!DrPhGR=24repkmZY2-O?i^_6nwaAHYs`mtZa#G&rbo(x7q^0XCuw7l) z=<(J9jmS_@S_=QFEHBT|RLezvPPVkPHM-3=p{=lj_aE>2)W`#C$XE%NFm7_WS%aa2 zpA4;}80nC`VZC_ZRBxO-c>H604$*8s()1OnSKai%nsA7O` z;Nu@uwc*?)-*1zdNqN>*S;SBKZN85WD{9%F717+Y0_yjPF~E5D`Jc!l8BS^K0Nu!Z z6@0)xd(I{K)=gil+qNcr$v6UD-|lM_6nhYoW@~hX(E}EE!~ki73JM9AfLJ&!045JS z1_7|XCWer938s`Ri`r4%;`$ecZp-7gN|ABJ&rw4nSO8}yS}Xw6?#p6|zSZ4o|U<#rM;%9J-9|CaUNh$R$M%J@BsB@SfcoQHJCrANztU9 zU>pHl{P_B!q^e$c8xW*H^_qN1MEp~a8_xzdB*>*nbU0?q?r@^KUji>`0Qpd5r-GFd zdm9L7EmBPO3T~4ukoEoXtjA*3oNSWoAQvl_iunY1zNWNo=gAsZVfXrr{lSqnHnc9K zF{aOJmsi>#_|iKa_s#ml7@6M+NMrhu^S#~5>K~Wg%jfTF>%JNVO2QVp2}dTii3W_> zHW`b__~+I~^@`7~M~3@3>-Xzh8-i{Z*L#n|=Z?2)7|Q0_ zY_c?ts{#ZW=8_2h-NhE&b1Z?3JJ+xKHe{jv8s)Zl5MAg~MXMmIyA_t`S*79K)}L!| zEiuhw0=Y3qEU#CEan?`U?_#vA4)bAgg4gaSkS@7SA0q?LrrP{%OL?DN@q7G==Ug*|?0C{%i42Ad zyIxJswJu z#nGBM=>e!Ci*+KWdkCNPf*@ExoiNA?2Ceo9(xVZv6Q`UrV=Bt4HaL3H$O3Q%@ly&sSghcjRsN4k|Ym^)w=$BCMhWFe~3leJ> zlvNny*_bmx?GkCVNVaVHeZHsZdBQ4-(Xb1iPvR;)P$zZD%H?;QOUAg*#{R`CJNZh4 zWEBeqQKW_10fw=ibOnjI72Lo>Hux04<7$rjAedoK=|~}qdDh#&E6&f-^p;Ie_zkic z>X3$G1UmJajbUrS8wbn$z<5v861`-FS%U;b)T61K_Mek@tjf<^%=*wNzf=ujVtN^U zhKc>&zEoo%M3P?Iog%|ESQ}Nx#8Lgo zv9vVeVxNFm6J2B!rGRKmg;t@PH7K@0Tj1wOqH2&doP}qQ5!R9%E9lCO$S+Y65t1%g zTGnww)E6b`!j?KcARR*z{*yZW=S?=nPyr#J$!d9y=xk9EvP_6HF;xg*h7XYKN}4BH z_We3)S7qjV0W|d#xMaD^2|IBq84q|hO+*SB#97wJgVTWE$J3t9+&ep6*(5S|n%D!< zwbn~l_W0N3hrq3pc|A{*5a2jM+cmnZ6ULz*4B#Iuyr|_+A*aYp;mS-*2_$BN^I?=K zG-!WBc%?DC>`bst2a8vf@BBi-0mhS!!FV_@R>0L~xJ8&)AoBdG~FcewtC3@HdlfJ{1Xw{YPSv!%ma2hIN zrTvVwsuhmoX^N{PWjgjCarwrqxw#7YKLe0&QTlHXYNrhHavHB(G!Zn!@Y&g_Ps+!! zguLu?v(XBfGQheVI!62lHVKX(aj8Ism13b_^>^_P8n!QMOC`S(S?``*0aI;O>cBt8 zHO+FMw3Qh>$8q<0URtn0W#Th*{-8sk30>1zN#r-HVS}1*#n>I?FwOyzJ35qBXV40~ z_qy9uGGQPRulekog!pHH)AJP8b|D@uYSS~}FSKpc8Kolght4%Zr#z61a_2NFE?zC` zx}rxJZMrmBmxeHx1gRw-yOmJoe0?S+&JS1MAy*NkWFGWK`t!l7fACI}i~vfW9*Z;S zNYHGyM+G(psf`4UGeSw|HH>hxv5T6@ZwtF%!7+B7QgkYX{})T)!MlqWQQFsOC=a;F z$gPqbC!ZQ5{QUWHujuzO&oWHVue;b>r^q9P01FJ_!}$xp?L^$Rz@tO{1=U^ zc7AC{DpMziGqpbWJ_4@+R@e_XmQG~W(z_Z6c9L^0yG_1B=zOee1k&5li__k*h|lL~ zKi?6OFan>uSvYQ}GEpM^VT0%$9W|-Ev+qi?654ZQvvqQ9KW^a&ehO1P?K$<+#|eGm z&f#bJPof({7Cam_XyTU6Kgxf!L}8!L#R z3xkq@#hBy#LMksUN^?Si$`NISl`>>aKRiKt!;|T^(|orR?~hxxEMjv_-0qP?;);cq znGN&ao`MZr7%WW%%H^DL%3_Y1MP#1chlH{wVxLT(H%#5nlXkR89kBp6JW=FfhxaeU z;mYN^fPnCOgxI*rE(ny0Sinve?OMoWi1atA+=_NB^U)MuZ?PRVXF^v>? zK_F*kPePKYy)sx}Zw4gmg(K|k$+NlPH*bNbaAip`WlA4MO;>RQco+nZGnYjgY z-+O7BMRmqCWWm^>zBGZhQJb10M zSVV*I0OUndK0mZ{zXuV&fe9w)(RwKTTPSnXvSOmnC#5(2^L&_9&iXe_HoaDEC2C{r zT8ajfMSetCg?}>;pVJzrh>p|{+~Q9#*+JQ~T?qk%mYS1V z9Nd7)!@EsbRda;k{yfaG+htmSYE6-_q#-$8m;}eI(dE0T^H*DDl=A0E6mXOO=MH4r z4upbN_`*09pojq2E>xv~?~Hjq5o{dArL#gl6cFDUYD@~G3?;z2J)6rkveuqcA^ z`l3#ir4fJFoK6RFPMwB3($;#PpkoPP?(<*uK;m=R4gdnsfQMCq;Ppr5dS{8?{vu5^ zW!Q*c0((0UJVv-r-pz z3$9Tjkp^)0y)eZ4gHfca@E$WIBlCJH$p*C}|MtR?kF-!dGmS6RV@X}Ja$XR!s<4X0 z4@&j(8tm*9{k%qJRK6YDHh8hNKe=F2|D}^IUu;yELNi!Ke({$vGN~JUw{~4@zx4g5 zz4fwK>wB;-2xfn{P(1Gs=W9zt0L#siQ*wDAB|tnsiIxL>@zaxTwUqH~;el`|3lVSd zXA1v#fp&S+D5M`B%zSTdtXQkgSFDBJ+x>RHbdU9iJdXwzVL_DQB@&aa=1ZV{3gluh z5jnLI2!&@DWC*`ZHzc)%_XWU(M&Cr#*na*ba2)ZfRD-hbD_#};Hj30Km+o}oi{vF` zkzTg141Q#`DB*!P1p&S}>13nPeL*Go%u*;s_;yXN1v@#eOcJAv#CjY&!sj>yVXPyT zS8zpjrxE!FEKtc>*9{{93f8NSO>(Qew1g_|g2u*;I(pc+-R-h#_hvj-t8t_e7-Q6G zrYg*fXQ@bWf8MTT%}U&-bS6g)9ZLLgLI-`LR5 zRv*r0nexCIe4Y62PjoQvvRgobjCKE%UeC5taa9n-==pNeUH6@_4+iEuNEuu~M`!y=~e1wf-K z3eX7TlJ1|O3nr5nYfpbq`wFPuk0k|PYCm6?ZVrpxv5>6lWAO_3C#sV@#~&hs$9&Tn z!$gEu<{9W@0DYWAdB*2!D`R#_$@K_Ww;{wA{Jf?xU6qpoG?8?{;#W__N+s3s^HIzKtkA!8}{n;TV_I*N~6hiQ>=zE+xcy&}u$&YD= z#P?exJ#{bGRnZJ7=nv*+{ljHDhr=H95jk!=hM^c4PUj0mNWjf0-It~mi+@x}Ve{YP zGn-=BvB#8csi?60GeEk-<=2HE8GT2?Xj@xjxFUzInJ5;VdbuO_4IV)h%+b7Hu|);4FA3U*5^mEbkeD%rAA<&ep^X} z<=DP-ghpSKNFBwg0Cez3G!^D_+Z;XXefQliouWYNQ!MX=oJhBF1B8G8`C%&4urC5K z;MX^Bl(3H6JP~CFO_GgcP`nNI%iCEsJfBj14SjXQY@!1={a!zd4DNN}Bcw_6sL5LY zp2E-`wQlYfm(hOsziw~B@T!_fW&z%t@cvOI6oh@jKZ=HO{G#c|W{OMq6T8^HK9|H_ zD>(l9*B>v?CW=&+8XgrBE5x3y#X{^m-A0wLX-pgR#AKI*?JvL2np%XQ&|8ys$uj8o zno>*A+Rkpik^67ce0ZQFS*TM^!NBYK>dzb@qDVEhDx`bu9$@SLQwRxDiOcZ1qaqgt zcfQ^uWIIzs7{D=(c;UZ)N)!}qd;03u;20%nMjqi{@zXGEA|#s`QVxfcsf;`KaSQ4!*opn2|=B?B@I$tl^U*q@-JhJ$DFAg$$JiIRd4(e<#q&^e2a6=qrb=#Qfjv6&|`T?D&OA3T;2LL=VP+)I2GC)Ut3c)Rvz|SZw3qb z+sx$L>yDLdn$6z^HjIj0{9X-wqUgi|X_g=Ox|HGDvkDUYxb`!j;rXAaAn>68 z1ugqZ_Go+K#^EP&djFc*+STUwe#jE}Uu;KZsD-5FKRrXR>18lY8)8}ObD!@?A8l%| zFv{2?}t{froLwFFuiS0#tKbQ6WI{nK!yN@eKp+yrJT-X=SNb?oaN#EywQsjp5 z=-kytZ~U%FORcgrUvZcVe7?V5Oi!X+ABZh0f)r!9K?w7Xe(Z6Pb()7n=JVY2z>dcK zmlS7erdgZf>Q&A!b(Z4O;}pHbIpd@!tFbZfOsN;1tTC+GcLgq>UBxMCi+C%i`230d zc{S*^sX0iGdXa9xYytq}Vx*fW&-M#ev>(rZ%M2dtt)T=1qpJJwT>$BFoCgVdHmx$j zd@aYGXWw_a2*hyfQ`Gm~jH<;SD4WOw;00>)uAaMVY;A3`1V4k@+AR5qR5=Q6_{=rx z6CGw%M&f9?#pH9ChL*pJ_m+eqRCb?ML=pKOPiu2Z=k!n*{a*lHC!yHb^sdsV{(Rnb zBkVMTlh*0M8bDX@-FcZhHwG0=ERKI#fo7HqWCKFM0F*48hn?&`G633U&z{9l1a=ts zig7k?-U%Q1U{L~9T;#w{U(L|mjBi7#skemGtiD1n?P32+W`$Qy{uTtak*rv^tFh6A z59x#xj$kln*g;H;As6hZxFhRsYfG|OTzfma5Fym1<#;LXg%|z?sWK=O8$@~+V}afv zUKyP$Nv~-S{We7ddDiH!iSg)8<&zqLFr16q2BKk9_2o@{L!OE_b3w*8;J~g z(#6rj&f~K97`HKV7`iGson&dU@Hzh{;*e|bs*o++`Cs}^Fz9EaZ~9+6&dW!>>KfP1UD+{X#x^x&G2uCwdN$pt)_R4|(kd$LtNPqo)gAmGmGaEE3$gDg=*NEN1eqL~c6iigRz zyFZ_?$S%G3(nl-%A%eQ?ZRjzn46N|^{>mu6H#d-AQ zH5LZ@=cRpqZ#0UpM_%5GM!h3Oun)LD8jX9sA;UqyC!MXg4n+y2(aaxlsOD0{G6biq z(@$jdYFb%xz)+;giE$w>jUV(Qvh3vcw5ijlA9(!Q_Zm(#tYmb4r!a^b9Ej}iT_VUfn& ziEvofA5_!<@pzzV!m4VVmomDqigORTxMwY@!-h$m3SP>ztn{t}b0+lQ`{K?P5ra%ODa z=!s*FdFc1+)HT-aJR~8y*S1Jxn}0H7sD@(XtG#vgu5gW@(2&K+EfZi;4SA0LCd7zP zIbTe?LQo!)=E26!7*NYv&M<>2lp0HJlc_|e&C5$bcAoOLLJqU^gD=Mlwh-QM2XPn* zF>GL!f)|U}7Z61ZwY`NuWlS-n?Iv*=#!is&O7n7+b;YBub!(cIFMD_G>Wxz-ADltW z;l=aut?p_SKV)qw!ESS(tmEye=5#U=8GG2wI-k2L){bS_W$J6!G#4nK-hm+P#G4&iua7*0Cz$R;$dYdq z02HI@WzC~e5Cu8(@rA+*7dV~A*t{(8kvS8jqZ(2)Eh~O#LaCs1NQWb3qC7AETxpaq z3YEngkildoMh1f>RGV9(g|2trZhhq8CnrxjIOrQOf8K2H$GVWts8tZ}4e>*U$XD)5 zdAPApl5WrBT@Bmbcx}xy&ul+w!LgI4U_iK1G=~fvpcc99QBP;5MLT1`JjQjJQ1ar) zF}3qly&Y?{UtzH{ENC;PRlyC2*IImJWeXlF#f9k3SiC(Hl(A_tmGt{U@mMOzbSGY! zHrM_4zse}$xMNO@$1;&{ElbRdwChl^48ELNbhz6m5wadMl*x|qddCbIGWxk^mcO|? z_^D4H;bXBt5|0v<#gW9zYk{=P+IK=?XK|e*Gf{A{_uH;3Vw`vdm0S{1`b?CpG0Qu0 z$?_u08Z0Q03+uHhyc%8)bL6gI0Lz!R>s|l%f6ol5A2)UC438)54@6p8qyB&y)hpa& z?1v+S>BY495#X{yei>iDvvqremsKgQkk4B`W%A)w;ql+T<-v8USv)5d@U!O1Y<4Z{ z+dE@;VLNq}qA*TaSr}6pS5(fapNI+$=Q^LlJ|SKTMPmj0NCL#0I0A)>*c@w9&piFg z%o#_G95I$*Ycz_Q_SMux+S=kmzWgvH8U5HlnWE~GD&+GpKa4vwSyNjLP0?tgDiZK{ zLbcT+=g&L)FN*KVvJjHZ@I%*fgm{ylu1>H&%X{^3~HWRWW3j zV*uz9D03r8KF?@Sn4zC_IJzeVI~6D$ z^6G;KySYu@G8fipsSju|MJmd3WZ858A0k=5$WMq(#$A8>!=ESYcVNID!JNmzVZ2ND zHD&&QIT33*tGGH9))La2+)NuLk_oIpYQ{ubFzAj%aLZI5e9-KB?|BF_Uta8C5edtz zm~HHEbPs|e{5!I>LuP#+kxyjD*3w$!rzsP~ofLr;j0;^R__0f(u3z2r{E73<@Oi2* zd$EpbIo6hP;IZ?Hb+3+NtpaD7329;sD^8^Tc$SbdA2tFLZedNDYbU8 zo)^&VCn&eGqO;imo?Ob$x?W$pBj_K(<|3)IyxSX&1Y@yu2x}Sr%M`!aCe$v@5X=Bl ze-caP&WK9G;FXCB(`0hiG~%wee;pqu2a}1FvpzyT`m^ua&)bD+ym^pYQV@eYW~cbT zNj#lNRo8_0#9f?sc6nDL$mpVd*sxK}O|j+6c9Yn{7^DDW@;HaO5DA#uBKGy574wFP zT0OagHw&&Yr7rq{Fdj?YzzSEQde2E@Jgt&i)=ANMW%GIokQh(0T$qC}`iC!xe;&H3o)$H5fNFN2GCkaZ-WSQ8Bg1XgiWRFh_d~4cqmll zT^PZ}b;kAFUzSc7&$rP0X6~KIUlyJuSbjqLS;!FLY}`;aNAgimtrT8b)6;m-mbDo~ zvWx*&A``grxU382F!g2Wh6y8UQ*O3+gw=*9#sxGbj(jhFaeu>e@?l{SAMPZQWX!zF zl#CnqKKVMm+OCjDC=V-R$cOYk534hM@pytcVk{~KtvCY7H=aySoOsaRUU)OjYC3(? z&cNZnX6;I3>~`Qpqvy8c=1ikYGGe(&4{;_%f50Vc{?0kK(IqPJ3?k;sVz8Qr!0_RBq9^a zZ4W*4;PuyknLa^1jfetdGP8-4uB)qppz3NrC~Rtq!y^Kb2;Vtk(*-|G)7I9`=!a~> z;SiVcc$CUZ2hGAz2C&lgK{X6zoC{#F|7kxq%wu$A6IMBYX$jL9`7HuUvYt#5spne0 zY~|?DW2hRHLadt+5^h39?3_)&T4SeTj0PfL!VWG)0f>t|zebfTwu#}mmWuRj@$H6sf! z8<cpB8VD+r0UyqPnb@&0Wmh@Z2+~b}3J^pJ4I4Ug*|InD`eZI0p`Jnz z97xtCcM)u0iwRlKV0vBxRMF1}!(Rm`jDX!hv!x|QB!bPT06H1+k5}60g0Z@~2!JLf z73N2R+FG!PYEIxGgK@HEPC7J;vXH@|=+VqP3mFBq>H7=Q7$C#KpDi;)WB?jZYZG@c ze!0yChrA}i4HmWQ&qzK2rD<;GER}NFSVlhB&g8&-!!A^+1lyuJ1L1hq-O79Y;VM^i z>$X5B6H7Fu(#?So*l*3cqM2-r;Tm(%=}gq)&9Z_um1c*F)@ZCToox?>ajzt*s)h4t zGqOd*(!!L^T%v)Bl97K_+JwZs1A62DDyE5i)m61kjco}Qn(=6dqZ1>!Lz;pJS{>2N z>l(y@35eUiz4@h=mi+j~KaRzs7hQBAW*wWUnNM0KpL_1PyYBiq3$RCw7{TWiuDIfg zwl-NuivIZd&+l5icriM6(xgem&zm>TFc)c;s;Z9g&H&PG`SN8y{NWE98XBsqsxP=; z;l&q!n$qKO=>vYhI}w+!ONgmeQHMw-Jp>uja#oATyHuMtM)BNon<-;n_4{bzt;|H? znM~yjfceoU8NE@2NE%Nv6pX&Rb{TIhtXZ>m|w5|Gx;L_uZ;c#XbM5D^IBL$!_di&3=g)qOsfrp! z+uVEaJ>$oZ{nD4dc>LUBo_O-1*Is|Ixn);4;(PGnKRo%=qf@6&{^Tdm89r=8Q&TfN zpB$M|BVa}gVo|2CRRk(JHgJe53KUdCfCteiK>ReRY<>N(O&@Nv`cXkb8FuvSfHFJ? z6o4LqR1gUYSzt{zCariCY{5p%?PMm*YQ*+aOf4uL! z^Uq@?;-bZiF1zfq&wcK5bmbG~ov?b%>U)2E??DG2UVRk1rw2r<f~sVw?;v-l>J%{=nR!^ao-M_q>nw)#?d8h{3tfnT+L@K5X zT>v8*b6YA=i3gn4pG_QfmQ}}|sz@zk6~F_S%%GWMogP%JlUrnihLMGc856dV!1OgbmpnzDy2HP7Nc7ci|OI}1N9e?~> z&_*MsQ?y_N=m0o%nCn_#;{(C&q%7z$a$P!xIb_sIpJmujrAq~<|6TmZ6D&g(hw`*c9H7g>A4-FDm0fBuV~{`990Jn*Og_>ccQ@W6wTNm;Us9;S%ussL|PAvnpW z9~_7gkGLv0*zbnTPB;+fVr*ib8op6w0>qm|kTj>Mnl!WYOsS)|+r(GOE1#tFv00*v zMXl}+H#eX>PMUw>%tMa%xFce*xB?#B36U^K$x_>hS84nKx2&5IocVX|+JVV9eE87T z=JrUqn%7o{7a_pAuei*7X0#xW;FMAOmx2uhg#x7rf1s=v=HT_k_9(A10(VAe3Il}% zRTa$Ob(iNl95S>j$pJFxNO<@;GZY;;pzsMgM%ypIXJCzo<91Jl~$k3Nq;2jPNZg9oXoR}AI#<(*WhoKqd$AC|M(g9_CKZ2^d zI!qV`7V@dKR(5d2dKfcizmX$H4;wms#PE@$MvVqxKo*N67H>2DS9&ilK(-t8wzs#9 z88ZrJO-oA?AZ}}KOr`O&vhti))BS7-gwKJdL7?EJKx{)ZHIV<7%p-_l?rCdl4Pirj zm@g1z$Ox*Xr5(aJNC7l4UX2ITgHY^DtoPg;u{m1&m#v%WLmzyw5e}h^M~)aZe*A=` zOJ7SSpo)&}TJqu&rr#%wpD=6YEPUH9JpY23WJ!~F>8neRI`XKN<`$lU`>m~Q02I8o zw?*ksW5$fR@WKnJ5+818XlSpm7iEFOG#k_8B!4kMeSA$*h-? zt+(EeM%(z>ZZPEb_>!&dJ0jJT(-u$euB!G$V@>VRCb}+OFk%s?W5$l;-G-N5eu0fh zLlIW~F-a4rbi9flcgX7ryIsLd8bRwroH9DppK)Z07c-k-)wd@U4&qTnma94f-!z=m z)mZziw-C^>H$pl-bXc9ViCh*O-kWc}IWNKp|Ez1{2fOJ3zI>>wMu|GF9HZdIh-S2+Cc=6L$U3Jx*IY%S#_zJ_r4?m2k z!(Vgfop-KTv-a=*{_hVx^dQ{Y4?XnIinrgMJZW-uRrQy@eEo(E8!&GE@Q3>v8g_r- z3tyn?<0+&=)4<5Ghj`TNew_oqymSVOJlrqtV<%w3D*a{kFl3nZER z!}ZRRrc^BW{`;G2Ylk4{8FRo)tVMb6(U0U~;Ez957BZj*jl28-a`PM&z^fd|Y$vdT7ns9AB=%InOO z3o-ncKSGmSbKqY@(c=suI>sU`@db+fgH*w#JR_Xnw0Z4ehfl2=>M81&RH;-Dbn{-q z(4oVge)=!ZKmRDnflFmQ>e5_!UGE#chtl7=YEo=n+$}6u> zi?4q5tH&RIJn$y{#EBExCKZ`Sns?rL=jE4QUb19Kef^MIZuutSkjXlc=VGRb9b;sm z={CX?{;N>zQwYjXUHER=$^4P_kj7&&BNX(#^2&;lBgV5In4y)CoQGK?!sux9ne4#i zp}hegKb?eNB!v?Z1j|4T5s25HDSEI+_oMB(rrYng-}rH3_TRdt;gy${zW3hhv17-b zaKcFpI#EhbJ@xGHA>$7|@bH@Ix_Hd}++Y7zS37*>j3XHM9dzKKyLL9evvTd)HSg1W zKxp)+i3d)b4#a5}EK4JF%5_#IK?loEtnr1u@8HktJfm#WrM)KJ--&O$DBC_DrO}!2GdAldYlMY;i)+c z8%+r1$Oso?Fs0Vg!WksmN+ zY{4z2gQ*f?k5M9*Bp@pu=fE$>WC`6==#eqIw1uGshllI_`~G^$sV9z|K&;pSMl~q4 z4)G>!iBG~Ri=JGEFlDfAJtmgc&wjdi{J0~6p&@vx&BzZAO9mj4h?h&KpD-$o%|SlK z9cbn!%_T`>#UUyicEX2DCPDKvBfzi{QwBu=Z^fQr|5qrG6!LTk635Rw! zBqCMxTXvnLfmjF)YhUw$UFuR;eT3|P?)NTP{WFq zDMw=59%<9+syfuB^fHDDNe{W1M$gbVke7%@cQX6j^)uC+A^gN6=~qT0Q%yG@_O!ILG8ALht3BF=c`q6ErOuUGtnkRht1idX!{a0(1kz=bHwnAY^W3pWi^DH*`GlAJ$;mi?1QlB&`@MYmFcg;wH*H_$s;rU z;vvJ2dGe{pytVx8apR@{4Tf9j3 z=pb3~54%jC$Dn|Rk{)w{^mqi#XLyN}5fwB12BTzR4T|vK(CxkMYTz?=q-bG_L6$tS zFST5QMTR)&s_KaN{YcDcKt8Bud`Qxo*;FXtS@rIl^G-a1-e;bZX0Wog{}e*7;I>mF zX$eDgxf{JC1ndetgkmP^K> zE%*dcTl7gr8H_sOv1Dy+RZ|o1aSCKRIi!}I7m=6PB(R|4gbjZr5ivAnXRRp{E*;{X z=kf}0g7P+WC`gX%IueUAYZ?LeqQu#RE{o?jHg?>w0}qj2l8nXuVeppgJempD1L-jA zwkp(-bKKQmxvQK{hEo>nki}Yr1Qw89u<(fGZ!VE919_78Q&=ua3*uX0EXdn*ewiXe zigfxz{dF2&ib%sB^hh^<)GZugj-VYEFUAeaw$+Y85Hs!%R|Q{u>Dg0GJ4AA2A9C<# zDI$j_66gwo9ovt@opQDyyWYOYQAEgG7zNSWWaP?IGIC_ucSJ>^7DHj#X$j`~gRW0q zbjE9Mynt5Z>x2y8kb{iISST;MF{uIRhr^VP3Hmk$!W`P{N;wf0 zY58f&N3C6|wxL}P_9i};SiF_x05l1!@5W7VU3t~%E8coD=ntinS!~B4wKcK!6sv_~ zM8|6z#sb09BtO}E2FEo+Mgrv$g9hl`lz=9gD^pijo5n{Qz!1hICyU!7Ro-N}ZN;jk z*Z=bwHEd!d_>)inapED*Iv(1DHj6vn@57k<_7*|N(Nz_CpGu(z zn*iN}|ApoC@-{87%DU=?xXwK5nB{N2!t5C)9Lw%;_F+>QHz7~ade|r^Wm&pnopU{{ z^cA5<!Em| zg2fO!*Q|Xlp4@W7Kc7)M#8q7@!X8lL@y2q-am-fP9a&yv5$7dPdn(6AGlc0`C&|mL zTtQPMvH$Z6FruHR9PxTruZv^zpDbHgxG7(x!cb)9UnX3$_=m-*1P=YK^A^th;Qi#E zAA7nwGPEi(w61o9hz_w&J5Vd);G+b`URMLL){$*{$_+my?+qun@7R(|wZ#(6pEzyq z{*!q3$%V?r#$vt^>BkZls*fqgoPNj51cG!<3{(i4i8y?CZ1IjmOA;`(E6mcy z?U+s9#W3;}Up%`>XV|NXNxw83>zjSVWThmd69)d&AC#JEcJMfqo^tIC20A(XP`(z; zwpt1-xhH-*SSqiPxb~myzxMA=e}6;#t>y16f9pjyI${=+c?jlt)lo`Y8Z!lrTrLRa z=ujl$nNQt6%nTjmDS@m(L8cB@NR%GAFwSN=-Jsc|x}_uZ8oKo!NPDAD?!xIvkJT zA!q86<(AsVWbLHmB<~gS1onjm>1AOgS4bT|1qy*%&^2XRaLNHQT-h0$Hln{$%}s3d z%ljX!t&|y9n9rNz<%VD(iB=`xp2Ci4511JaS2KMQ40`K_xQ32!$rz7*L8Y;@1agdm z$VPt-8x)Gg*-HzFBU_&4fFGjNh`~oNWQeP+UBdYEQ*m+MGeId65S4V$GnolwQek&P zs-}jo3jsda=(m1I9iw9z!lUx!izCo2UAR|hm$J0Pg5o-39ScGc6=E=&c{BPF2V{=h zpVdyZPQBY}Z;eWp+Oh?imh_@C3atXvmW75Q7HVCwu4KD&`5-TJ(;}=Jv@m6=W0p+I zTbD-a6-aS`pqcf;KC>)I@?z$(y)ChGXQqCLq-NOwg9PSyD{serUNng_`wW$=AV)|u zE~&2z?%2*$Sdy7#lmg>8Gsu|{< zFMX&JBJ&DS@BtB7IV*@^B3RzzlLH*;`;1V@kheG^t(r+$a1tq4aDYUQYs82ltiRw5 zq;S|EkGjixDpst}oCV4I{DRjyd3Ue6+SA?+wJ2p-&a{1da=-n?VUg+KyyB#*9D0#v z?e`7}i(7?eP^CY)CPEIglm;!# z5CO-Fyj03fR-f2ak!Q_8*V4{!RmYB}Td72KCC$Sa!v@)D*V0#6Gr!^7^X9X)18Z<( zeGqTL@R>1kkiJ+U2UTT-QXtljJ6BA2OkgT{_b>kRsZX6haenGoeVyb{LQs8TBQmNtyU$eI>0JZWoL-$I9h=LBdP$7Ru>X*H{oogH#J&Cv*D zS@*<20!D!9k;ar_UYHnG)s(o5@*%3?z(Q zV&cnp(l(R^Qm*TnONae(&xWQ%nz58PGEDb2H}#}h8H|+TOy;C9Ld?##*LMopkJR$JEsuwwT(QQE;yI#P#A~aka2S zCBY%7@MizJ>Z&5dJGV@govXq+IuO)oNoA5t*A#JTpe)};(;=X_tQ3+ ztP6R$nium5qHID7(%X@PfBTRF76c0$#=;o(j`~IM3=k9#HLtCTCa$0Z%Gp^NW0FIV z$JQ%3qmi5XGh)(I(wr)Y{y|c3%AjyLikk)p6}QY>g0Vrweb2{9*(Rrx^)`LT$8;(I zk?N*$%ntfc&LnoKW@7u0)WM=V8MFj*g78Skj9 zE<;eW7zRpMp=K6D5!6Z*_pUyqcChG<8~}nk^}C1GLVBnm)W\n", - "

    Set up LangSmith for LangGraph development

    \n", - "

    \n", - " Sign up for LangSmith to quickly spot issues and improve the performance of your LangGraph projects. LangSmith lets you use trace data to debug, test, and monitor your LLM apps built with LangGraph — read more about how to get started here. \n", - "

    \n", - "" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "9c374e41-f9b7-439e-a520-6d8c853c5220", - "metadata": {}, - "source": [ - "## Part 1: Build a Basic Chatbot\n", - "\n", - "We'll first create a simple chatbot using LangGraph. This chatbot will respond directly to user messages. Though simple, it will illustrate the core concepts of building with LangGraph. By the end of this section, you will have a built rudimentary chatbot.\n", - "\n", - "Start by creating a `StateGraph`. A `StateGraph` object defines the structure of our chatbot as a \"state machine\". We'll add `nodes` to represent the llm and functions our chatbot can call and `edges` to specify how the bot should transition between these functions." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "e58df974-7579-4f25-9d91-66389b94eba2", - "metadata": {}, - "outputs": [], - "source": [ - "from typing import Annotated\n", - "\n", - "from typing_extensions import TypedDict\n", - "\n", - "from langgraph.graph import StateGraph, START, END\n", - "from langgraph.graph.message import add_messages\n", - "\n", - "\n", - "class State(TypedDict):\n", - " # Messages have the type \"list\". The `add_messages` function\n", - " # in the annotation defines how this state key should be updated\n", - " # (in this case, it appends messages to the list, rather than overwriting them)\n", - " messages: Annotated[list, add_messages]\n", - "\n", - "\n", - "graph_builder = StateGraph(State)" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "c08c41da-0855-49d3-9a3d-b7eb94413367", - "metadata": {}, - "source": [ - "Our graph can now handle two key tasks:\n", - "\n", - "1. Each `node` can receive the current `State` as input and output an update to the state.\n", - "2. Updates to `messages` will be appended to the existing list rather than overwriting it, thanks to the prebuilt [`add_messages`](https://langchain-ai.github.io/langgraph/reference/graphs/?h=add+messages#add_messages) function used with the `Annotated` syntax.\n", - "\n", - "------\n", - "\n", - "!!! tip \"Concept\"\n", - "\n", - " When defining a graph, the first step is to define its `State`. The `State` includes the graph's schema and [reducer functions](https://langchain-ai.github.io/langgraph/concepts/low_level/#reducers) that handle state updates. In our example, `State` is a `TypedDict` with one key: `messages`. The [`add_messages`](https://langchain-ai.github.io/langgraph/reference/graphs/#langgraph.graph.message.add_messages) reducer function is used to append new messages to the list instead of overwriting it. Keys without a reducer annotation will overwrite previous values. Learn more about state, reducers, and related concepts in [this guide](https://langchain-ai.github.io/langgraph/reference/graphs/#langgraph.graph.message.add_messages).\n", - "\n", - "---------\n", - "\n", - "\n", - "Next, add a \"`chatbot`\" node. Nodes represent units of work. They are typically regular python functions." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "f66edbfb-f374-4998-90a3-78bc8f18e0aa", - "metadata": {}, - "outputs": [], - "source": [ - "from langchain.chat_models import init_chat_model\n", - "\n", - "llm = init_chat_model(\"anthropic:claude-3-5-sonnet-latest\")\n", - "\n", - "\n", - "def chatbot(state: State):\n", - " return {\"messages\": [llm.invoke(state[\"messages\"])]}\n", - "\n", - "\n", - "# The first argument is the unique node name\n", - "# The second argument is the function or object that will be called whenever\n", - "# the node is used.\n", - "graph_builder.add_node(\"chatbot\", chatbot)" - ] - }, - { - "cell_type": "markdown", - "id": "b6c1dcd9-fb86-4649-81b4-ff6ce20a2e46", - "metadata": {}, - "source": [ - "**Notice** how the `chatbot` node function takes the current `State` as input and returns a dictionary containing an updated `messages` list under the key \"messages\". This is the basic pattern for all LangGraph node functions.\n", - "\n", - "The `add_messages` function in our `State` will append the llm's response messages to whatever messages are already in the state.\n", - "\n", - "Next, add an `entry` point. This tells our graph **where to start its work** each time we run it." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "e331e10d-ebcf-4144-9bd3-999b4d656dd3", - "metadata": {}, - "outputs": [], - "source": [ - "graph_builder.add_edge(START, \"chatbot\")" - ] - }, - { - "cell_type": "markdown", - "id": "0499c318-d1e6-46fa-a652-8f9e65313355", - "metadata": {}, - "source": [ - "Similarly, set a `finish` point. This instructs the graph **\"any time this node is run, you can exit.\"**" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "075f0929-3591-4852-b2d3-eaadde40662d", - "metadata": {}, - "outputs": [], - "source": [ - "graph_builder.add_edge(\"chatbot\", END)" - ] - }, - { - "cell_type": "markdown", - "id": "65a9b88c-2c53-4d95-8eb1-d544a8946f65", - "metadata": {}, - "source": [ - "Finally, we'll want to be able to run our graph. To do so, call \"`compile()`\" on the graph builder. This creates a \"`CompiledGraph`\" we can use invoke on our state." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "0bb67a01-cf5c-4625-8c07-6e8c0af50fca", - "metadata": {}, - "outputs": [], - "source": [ - "graph = graph_builder.compile()" - ] - }, - { - "cell_type": "markdown", - "id": "0c39407b-d6f6-48a4-b1f6-31fc7f88b275", - "metadata": {}, - "source": [ - "You can visualize the graph using the `get_graph` method and one of the \"draw\" methods, like `draw_ascii` or `draw_png`. The `draw` methods each require additional dependencies." - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "0eb93a3b-5378-479f-bc32-19afed9c3270", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from IPython.display import Image, display\n", - "\n", - "try:\n", - " display(Image(graph.get_graph().draw_mermaid_png()))\n", - "except Exception:\n", - " # This requires some extra dependencies and is optional\n", - " pass" - ] - }, - { - "cell_type": "markdown", - "id": "a98097a3-a126-4081-b21e-697ec1185fff", - "metadata": {}, - "source": [ - "Now let's run the chatbot! \n", - "\n", - "**Tip:** You can exit the chat loop at any time by typing \"quit\", \"exit\", or \"q\"." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "6a385b06-8d34-4a2d-aded-1cf4bb0ca590", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Assistant: LangGraph is a library designed to help build stateful multi-agent applications using language models. It provides tools for creating workflows and state machines to coordinate multiple AI agents or language model interactions. LangGraph is built on top of LangChain, leveraging its components while adding graph-based coordination capabilities. It's particularly useful for developing more complex, stateful AI applications that go beyond simple query-response interactions.\n", - "Goodbye!\n" - ] - } - ], - "source": [ - "def stream_graph_updates(user_input: str):\n", - " for event in graph.stream({\"messages\": [{\"role\": \"user\", \"content\": user_input}]}):\n", - " for value in event.values():\n", - " print(\"Assistant:\", value[\"messages\"][-1].content)\n", - "\n", - "\n", - "while True:\n", - " try:\n", - " user_input = input(\"User: \")\n", - " if user_input.lower() in [\"quit\", \"exit\", \"q\"]:\n", - " print(\"Goodbye!\")\n", - " break\n", - " stream_graph_updates(user_input)\n", - " except:\n", - " # fallback if input() is not available\n", - " user_input = \"What do you know about LangGraph?\"\n", - " print(\"User: \" + user_input)\n", - " stream_graph_updates(user_input)\n", - " break" - ] - }, - { - "cell_type": "markdown", - "id": "98e1cdb5-869a-41ea-9dab-e28cfc524499", - "metadata": {}, - "source": [ - "**Congratulations!** You've built your first chatbot using LangGraph. This bot can engage in basic conversation by taking user input and generating responses using an LLM. You can inspect a [LangSmith Trace](https://smith.langchain.com/public/7527e308-9502-4894-b347-f34385740d5a/r) for the call above at the provided link.\n", - "\n", - "However, you may have noticed that the bot's knowledge is limited to what's in its training data. In the next part, we'll add a web search tool to expand the bot's knowledge and make it more capable.\n", - "\n", - "Below is the full code for this section for your reference:\n", - "\n", - "
    \n", - "Full Code\n", - "
    \n",
    -    "        \n",
    -    "```python\n",
    -    "from typing import Annotated\n",
    -    "\n",
    -    "from langchain.chat_models import init_chat_model\n",
    -    "from typing_extensions import TypedDict\n",
    -    "\n",
    -    "from langgraph.graph import StateGraph\n",
    -    "from langgraph.graph.message import add_messages\n",
    -    "\n",
    -    "\n",
    -    "class State(TypedDict):\n",
    -    "    messages: Annotated[list, add_messages]\n",
    -    "\n",
    -    "\n",
    -    "graph_builder = StateGraph(State)\n",
    -    "\n",
    -    "\n",
    -    "llm = init_chat_model(\"anthropic:claude-3-5-sonnet-latest\")\n",
    -    "\n",
    -    "\n",
    -    "def chatbot(state: State):\n",
    -    "    return {\"messages\": [llm.invoke(state[\"messages\"])]}\n",
    -    "\n",
    -    "\n",
    -    "# The first argument is the unique node name\n",
    -    "# The second argument is the function or object that will be called whenever\n",
    -    "# the node is used.\n",
    -    "graph_builder.add_node(\"chatbot\", chatbot)\n",
    -    "graph_builder.set_entry_point(\"chatbot\")\n",
    -    "graph_builder.set_finish_point(\"chatbot\")\n",
    -    "graph = graph_builder.compile()\n",
    -    "```\n",
    -    "\n",
    -    "
    \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "id": "f22c5d4a-3134-413c-81fe-dd9752fbeb66", - "metadata": {}, - "source": [ - "## Part 2: 🛠️ Enhancing the Chatbot with Tools\n", - "\n", - "To handle queries our chatbot can't answer \"from memory\", we'll integrate a web search tool. Our bot can use this tool to find relevant information and provide better responses.\n", - "\n", - "#### Requirements\n", - "\n", - "Before we start, make sure you have the necessary packages installed and API keys set up:\n", - "\n", - "First, install the requirements to use the [Tavily Search Engine](https://python.langchain.com/docs/integrations/tools/tavily_search/), and set your [TAVILY_API_KEY](https://tavily.com/)." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "7451151f-41fc-4af0-9359-024ae51b7225", - "metadata": {}, - "outputs": [], - "source": [ - "%%capture --no-stderr\n", - "%pip install -U langchain-tavily" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "0c52923c-5665-4f8c-a1ba-9799e369c49e", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "TAVILY_API_KEY: ········\n" - ] - } - ], - "source": [ - "_set_env(\"TAVILY_API_KEY\")" - ] - }, - { - "cell_type": "markdown", - "id": "591ce9ba-c431-4165-b815-25c944ef7cdb", - "metadata": {}, - "source": [ - "Next, define the tool:" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "a7cc7306-7a4e-466f-8d41-b1a3d07be8bc", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'query': \"What's a 'node' in LangGraph?\",\n", - " 'follow_up_questions': None,\n", - " 'answer': None,\n", - " 'images': [],\n", - " 'results': [{'title': \"Introduction to LangGraph: A Beginner's Guide - Medium\",\n", - " 'url': 'https://medium.com/@cplog/introduction-to-langgraph-a-beginners-guide-14f9be027141',\n", - " 'content': 'Stateful Graph: LangGraph revolves around the concept of a stateful graph, where each node in the graph represents a step in your computation, and the graph maintains a state that is passed around and updated as the computation progresses. LangGraph supports conditional edges, allowing you to dynamically determine the next node to execute based on the current state of the graph. We define nodes for classifying the input, handling greetings, and handling search queries. def classify_input_node(state): LangGraph is a versatile tool for building complex, stateful applications with LLMs. By understanding its core concepts and working through simple examples, beginners can start to leverage its power for their projects. Remember to pay attention to state management, conditional edges, and ensuring there are no dead-end nodes in your graph.',\n", - " 'score': 0.7065353,\n", - " 'raw_content': None},\n", - " {'title': 'LangGraph Tutorial: What Is LangGraph and How to Use It?',\n", - " 'url': 'https://www.datacamp.com/tutorial/langgraph-tutorial',\n", - " 'content': 'LangGraph is a library within the LangChain ecosystem that provides a framework for defining, coordinating, and executing multiple LLM agents (or chains) in a structured and efficient manner. By managing the flow of data and the sequence of operations, LangGraph allows developers to focus on the high-level logic of their applications rather than the intricacies of agent coordination. Whether you need a chatbot that can handle various types of user requests or a multi-agent system that performs complex tasks, LangGraph provides the tools to build exactly what you need. LangGraph significantly simplifies the development of complex LLM applications by providing a structured framework for managing state and coordinating agent interactions.',\n", - " 'score': 0.5008063,\n", - " 'raw_content': None}],\n", - " 'response_time': 1.38}" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "from langchain_tavily import TavilySearch\n", - "\n", - "tool = TavilySearch(max_results=2)\n", - "tools = [tool]\n", - "tool.invoke(\"What's a 'node' in LangGraph?\")" - ] - }, - { - "cell_type": "markdown", - "id": "7f503f02-d23d-42e8-9b5d-eb2681b242f4", - "metadata": {}, - "source": [ - "The results are page summaries our chat bot can use to answer questions.\n", - "\n", - "\n", - "Next, we'll start defining our graph. The following is all **the same as in Part 1**, except we have added `bind_tools` on our LLM. This lets the LLM know the correct JSON format to use if it wants to use our search engine." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "dc5af88b-47d2-43bf-9a2c-6c07506b1732", - "metadata": {}, - "outputs": [], - "source": [ - "from typing import Annotated\n", - "\n", - "from langchain.chat_models import init_chat_model\n", - "from typing_extensions import TypedDict\n", - "\n", - "from langgraph.graph import StateGraph, START, END\n", - "from langgraph.graph.message import add_messages\n", - "\n", - "\n", - "class State(TypedDict):\n", - " messages: Annotated[list, add_messages]\n", - "\n", - "\n", - "graph_builder = StateGraph(State)\n", - "\n", - "\n", - "llm = init_chat_model(\"anthropic:claude-3-5-sonnet-latest\")\n", - "# Modification: tell the LLM which tools it can call\n", - "# highlight-next-line\n", - "llm_with_tools = llm.bind_tools(tools)\n", - "\n", - "\n", - "def chatbot(state: State):\n", - " return {\"messages\": [llm_with_tools.invoke(state[\"messages\"])]}\n", - "\n", - "\n", - "graph_builder.add_node(\"chatbot\", chatbot)" - ] - }, - { - "cell_type": "markdown", - "id": "d1e84cfc-b1b2-48e3-8550-152a408c3926", - "metadata": {}, - "source": [ - "Next we need to create a function to actually run the tools if they are called. We'll do this by adding the tools to a new node.\n", - "\n", - "Below, we implement a `BasicToolNode` that checks the most recent message in the state and calls tools if the message contains `tool_calls`. It relies on the LLM's `tool_calling` support, which is available in Anthropic, OpenAI, Google Gemini, and a number of other LLM providers.\n", - "\n", - "We will later replace this with LangGraph's prebuilt [ToolNode](https://langchain-ai.github.io/langgraph/reference/prebuilt/#toolnode) to speed things up, but building it ourselves first is instructive." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "12f1fc14-cd91-4cd4-9f2e-1d007f8beafc", - "metadata": {}, - "outputs": [], - "source": [ - "import json\n", - "\n", - "from langchain_core.messages import ToolMessage\n", - "\n", - "\n", - "class BasicToolNode:\n", - " \"\"\"A node that runs the tools requested in the last AIMessage.\"\"\"\n", - "\n", - " def __init__(self, tools: list) -> None:\n", - " self.tools_by_name = {tool.name: tool for tool in tools}\n", - "\n", - " def __call__(self, inputs: dict):\n", - " if messages := inputs.get(\"messages\", []):\n", - " message = messages[-1]\n", - " else:\n", - " raise ValueError(\"No message found in input\")\n", - " outputs = []\n", - " for tool_call in message.tool_calls:\n", - " tool_result = self.tools_by_name[tool_call[\"name\"]].invoke(\n", - " tool_call[\"args\"]\n", - " )\n", - " outputs.append(\n", - " ToolMessage(\n", - " content=json.dumps(tool_result),\n", - " name=tool_call[\"name\"],\n", - " tool_call_id=tool_call[\"id\"],\n", - " )\n", - " )\n", - " return {\"messages\": outputs}\n", - "\n", - "\n", - "tool_node = BasicToolNode(tools=[tool])\n", - "graph_builder.add_node(\"tools\", tool_node)" - ] - }, - { - "cell_type": "markdown", - "id": "b049afc4-7757-40ba-8e00-589d378e816d", - "metadata": {}, - "source": [ - "With the tool node added, we can define the `conditional_edges`. \n", - "\n", - "Recall that **edges** route the control flow from one node to the next. **Conditional edges** usually contain \"if\" statements to route to different nodes depending on the current graph state. These functions receive the current graph `state` and return a string or list of strings indicating which node(s) to call next.\n", - "\n", - "Below, call define a router function called `route_tools`, that checks for tool_calls in the chatbot's output. Provide this function to the graph by calling `add_conditional_edges`, which tells the graph that whenever the `chatbot` node completes to check this function to see where to go next. \n", - "\n", - "The condition will route to `tools` if tool calls are present and `END` if not.\n", - "\n", - "Later, we will replace this with the prebuilt [tools_condition](https://langchain-ai.github.io/langgraph/reference/prebuilt/#tools_condition) to be more concise, but implementing it ourselves first makes things more clear. " - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "d662df94-66ac-4c6c-92f0-4c93620f1c74", - "metadata": {}, - "outputs": [], - "source": [ - "def route_tools(\n", - " state: State,\n", - "):\n", - " \"\"\"\n", - " Use in the conditional_edge to route to the ToolNode if the last message\n", - " has tool calls. Otherwise, route to the end.\n", - " \"\"\"\n", - " if isinstance(state, list):\n", - " ai_message = state[-1]\n", - " elif messages := state.get(\"messages\", []):\n", - " ai_message = messages[-1]\n", - " else:\n", - " raise ValueError(f\"No messages found in input state to tool_edge: {state}\")\n", - " if hasattr(ai_message, \"tool_calls\") and len(ai_message.tool_calls) > 0:\n", - " return \"tools\"\n", - " return END\n", - "\n", - "\n", - "# The `tools_condition` function returns \"tools\" if the chatbot asks to use a tool, and \"END\" if\n", - "# it is fine directly responding. This conditional routing defines the main agent loop.\n", - "graph_builder.add_conditional_edges(\n", - " \"chatbot\",\n", - " route_tools,\n", - " # The following dictionary lets you tell the graph to interpret the condition's outputs as a specific node\n", - " # It defaults to the identity function, but if you\n", - " # want to use a node named something else apart from \"tools\",\n", - " # You can update the value of the dictionary to something else\n", - " # e.g., \"tools\": \"my_tools\"\n", - " {\"tools\": \"tools\", END: END},\n", - ")\n", - "# Any time a tool is called, we return to the chatbot to decide the next step\n", - "graph_builder.add_edge(\"tools\", \"chatbot\")\n", - "graph_builder.add_edge(START, \"chatbot\")\n", - "graph = graph_builder.compile()" - ] - }, - { - "cell_type": "markdown", - "id": "a2aa67c2-dd1b-4bf2-8c64-eea44296d15f", - "metadata": {}, - "source": [ - "**Notice** that conditional edges start from a single node. This tells the graph \"any time the '`chatbot`' node runs, either go to 'tools' if it calls a tool, or end the loop if it responds directly. \n", - "\n", - "Like the prebuilt `tools_condition`, our function returns the `END` string if no tool calls are made. When the graph transitions to `END`, it has no more tasks to complete and ceases execution. Because the condition can return `END`, we don't need to explicitly set a `finish_point` this time. Our graph already has a way to finish!\n", - "\n", - "Let's visualize the graph we've built. The following function has some additional dependencies to run that are unimportant for this tutorial." - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "8b49509c-9d97-457c-a76a-c495fb30ccbc", - "metadata": {}, - "outputs": [ - { - "data": { - "image/jpeg": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from IPython.display import Image, display\n", - "\n", - "try:\n", - " display(Image(graph.get_graph().draw_mermaid_png()))\n", - "except Exception:\n", - " # This requires some extra dependencies and is optional\n", - " pass" - ] - }, - { - "cell_type": "markdown", - "id": "c59593ef-5073-4279-931e-828dae971f23", - "metadata": {}, - "source": [ - "Now we can ask the bot questions outside its training data." - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "051dc374-67cc-4371-9dd1-221e07593148", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Assistant: [{'text': \"To provide you with accurate and up-to-date information about LangGraph, I'll need to search for the latest details. Let me do that for you.\", 'type': 'text'}, {'id': 'toolu_01Q588CszHaSvvP2MxRq9zRD', 'input': {'query': 'LangGraph AI tool information'}, 'name': 'tavily_search_results_json', 'type': 'tool_use'}]\n", - "Assistant: [{\"url\": \"https://www.langchain.com/langgraph\", \"content\": \"LangGraph sets the foundation for how we can build and scale AI workloads \\u2014 from conversational agents, complex task automation, to custom LLM-backed experiences that 'just work'. The next chapter in building complex production-ready features with LLMs is agentic, and with LangGraph and LangSmith, LangChain delivers an out-of-the-box solution ...\"}, {\"url\": \"https://github.com/langchain-ai/langgraph\", \"content\": \"Overview. LangGraph is a library for building stateful, multi-actor applications with LLMs, used to create agent and multi-agent workflows. Compared to other LLM frameworks, it offers these core benefits: cycles, controllability, and persistence. LangGraph allows you to define flows that involve cycles, essential for most agentic architectures ...\"}]\n", - "Assistant: Based on the search results, I can provide you with information about LangGraph:\n", - "\n", - "1. Purpose:\n", - " LangGraph is a library designed for building stateful, multi-actor applications with Large Language Models (LLMs). It's particularly useful for creating agent and multi-agent workflows.\n", - "\n", - "2. Developer:\n", - " LangGraph is developed by LangChain, a company known for its tools and frameworks in the AI and LLM space.\n", - "\n", - "3. Key Features:\n", - " - Cycles: LangGraph allows the definition of flows that involve cycles, which is essential for most agentic architectures.\n", - " - Controllability: It offers enhanced control over the application flow.\n", - " - Persistence: The library provides ways to maintain state and persistence in LLM-based applications.\n", - "\n", - "4. Use Cases:\n", - " LangGraph can be used for various applications, including:\n", - " - Conversational agents\n", - " - Complex task automation\n", - " - Custom LLM-backed experiences\n", - "\n", - "5. Integration:\n", - " LangGraph works in conjunction with LangSmith, another tool by LangChain, to provide an out-of-the-box solution for building complex, production-ready features with LLMs.\n", - "\n", - "6. Significance:\n", - " LangGraph is described as setting the foundation for building and scaling AI workloads. It's positioned as a key tool in the next chapter of LLM-based application development, particularly in the realm of agentic AI.\n", - "\n", - "7. Availability:\n", - " LangGraph is open-source and available on GitHub, which suggests that developers can access and contribute to its codebase.\n", - "\n", - "8. Comparison to Other Frameworks:\n", - " LangGraph is noted to offer unique benefits compared to other LLM frameworks, particularly in its ability to handle cycles, provide controllability, and maintain persistence.\n", - "\n", - "LangGraph appears to be a significant tool in the evolving landscape of LLM-based application development, offering developers new ways to create more complex, stateful, and interactive AI systems.\n", - "Goodbye!\n" - ] - } - ], - "source": [ - "while True:\n", - " try:\n", - " user_input = input(\"User: \")\n", - " if user_input.lower() in [\"quit\", \"exit\", \"q\"]:\n", - " print(\"Goodbye!\")\n", - " break\n", - "\n", - " stream_graph_updates(user_input)\n", - " except:\n", - " # fallback if input() is not available\n", - " user_input = \"What do you know about LangGraph?\"\n", - " print(\"User: \" + user_input)\n", - " stream_graph_updates(user_input)\n", - " break" - ] - }, - { - "cell_type": "markdown", - "id": "89da9e85-2e5d-49c2-8cbd-572cbdb89135", - "metadata": {}, - "source": [ - "**Congrats!** You've created a conversational agent in langgraph that can use a search engine to retrieve updated information when needed. Now it can handle a wider range of user queries. To inspect all the steps your agent just took, check out this [LangSmith trace](https://smith.langchain.com/public/4fbd7636-25af-4638-9587-5a02fdbb0172/r).\n", - "\n", - "Our chatbot still can't remember past interactions on its own, limiting its ability to have coherent, multi-turn conversations. In the next part, we'll add **memory** to address this.\n", - "\n", - "\n", - "The full code for the graph we've created in this section is reproduced below, replacing our `BasicToolNode` for the prebuilt [ToolNode](https://langchain-ai.github.io/langgraph/reference/prebuilt/#toolnode), and our `route_tools` condition with the prebuilt [tools_condition](https://langchain-ai.github.io/langgraph/reference/prebuilt/#tools_condition)\n", - "\n", - "
    \n", - "Full Code\n", - "
    \n",
    -    "\n",
    -    "```python\n",
    -    "from typing import Annotated\n",
    -    "\n",
    -    "from langchain.chat_models import init_chat_model\n",
    -    "from langchain_tavily import TavilySearch\n",
    -    "from langchain_core.messages import BaseMessage\n",
    -    "from typing_extensions import TypedDict\n",
    -    "\n",
    -    "from langgraph.graph import StateGraph\n",
    -    "from langgraph.graph.message import add_messages\n",
    -    "from langgraph.prebuilt import ToolNode, tools_condition\n",
    -    "\n",
    -    "\n",
    -    "class State(TypedDict):\n",
    -    "    messages: Annotated[list, add_messages]\n",
    -    "\n",
    -    "\n",
    -    "graph_builder = StateGraph(State)\n",
    -    "\n",
    -    "\n",
    -    "tool = TavilySearch(max_results=2)\n",
    -    "tools = [tool]\n",
    -    "llm = init_chat_model(\"anthropic:claude-3-5-sonnet-latest\")\n",
    -    "llm_with_tools = llm.bind_tools(tools)\n",
    -    "\n",
    -    "\n",
    -    "def chatbot(state: State):\n",
    -    "    return {\"messages\": [llm_with_tools.invoke(state[\"messages\"])]}\n",
    -    "\n",
    -    "\n",
    -    "graph_builder.add_node(\"chatbot\", chatbot)\n",
    -    "\n",
    -    "tool_node = ToolNode(tools=[tool])\n",
    -    "graph_builder.add_node(\"tools\", tool_node)\n",
    -    "\n",
    -    "graph_builder.add_conditional_edges(\n",
    -    "    \"chatbot\",\n",
    -    "    tools_condition,\n",
    -    ")\n",
    -    "# Any time a tool is called, we return to the chatbot to decide the next step\n",
    -    "graph_builder.add_edge(\"tools\", \"chatbot\")\n",
    -    "graph_builder.set_entry_point(\"chatbot\")\n",
    -    "graph = graph_builder.compile()\n",
    -    "```\n",
    -    "\n",
    -    "
    \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "id": "ae45f2aa-396f-4f3f-848b-7750611617f8", - "metadata": {}, - "source": [ - "## Part 3: Adding Memory to the Chatbot\n", - "\n", - "Our chatbot can now use tools to answer user questions, but it doesn't remember the context of previous interactions. This limits its ability to have coherent, multi-turn conversations.\n", - "\n", - "LangGraph solves this problem through **persistent checkpointing**. If you provide a `checkpointer` when compiling the graph and a `thread_id` when calling your graph, LangGraph automatically saves the state after each step. When you invoke the graph again using the same `thread_id`, the graph loads its saved state, allowing the chatbot to pick up where it left off. \n", - "\n", - "We will see later that **checkpointing** is _much_ more powerful than simple chat memory - it lets you save and resume complex state at any time for error recovery, human-in-the-loop workflows, time travel interactions, and more. But before we get too ahead of ourselves, let's add checkpointing to enable multi-turn conversations.\n", - "\n", - "To get started, create a `MemorySaver` checkpointer." - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "6baafdf6-6803-4305-9381-9dc970468a4d", - "metadata": {}, - "outputs": [], - "source": [ - "from langgraph.checkpoint.memory import MemorySaver\n", - "\n", - "memory = MemorySaver()" - ] - }, - { - "cell_type": "markdown", - "id": "08d3d11a-1b42-4cbb-8e11-2a4294263d90", - "metadata": {}, - "source": [ - "**Notice** we're using an in-memory checkpointer. This is convenient for our tutorial (it saves it all in-memory). In a production application, you would likely change this to use `SqliteSaver` or `PostgresSaver` and connect to your own DB.\n", - "\n", - "Next define the graph. Now that you've already built your own `BasicToolNode`, we'll replace it with LangGraph's prebuilt `ToolNode` and `tools_condition`, since these do some nice things like parallel API execution. Apart from that, the following is all copied from Part 2." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "e6a51f1e-00de-4701-8931-de8cf19294ae", - "metadata": {}, - "outputs": [], - "source": [ - "from typing import Annotated\n", - "\n", - "from langchain.chat_models import init_chat_model\n", - "from langchain_tavily import TavilySearch\n", - "from langchain_core.messages import BaseMessage\n", - "from typing_extensions import TypedDict\n", - "\n", - "from langgraph.graph import StateGraph, START, END\n", - "from langgraph.graph.message import add_messages\n", - "from langgraph.prebuilt import ToolNode, tools_condition\n", - "\n", - "\n", - "class State(TypedDict):\n", - " messages: Annotated[list, add_messages]\n", - "\n", - "\n", - "graph_builder = StateGraph(State)\n", - "\n", - "\n", - "tool = TavilySearch(max_results=2)\n", - "tools = [tool]\n", - "llm = init_chat_model(\"anthropic:claude-3-5-sonnet-latest\")\n", - "llm_with_tools = llm.bind_tools(tools)\n", - "\n", - "\n", - "def chatbot(state: State):\n", - " return {\"messages\": [llm_with_tools.invoke(state[\"messages\"])]}\n", - "\n", - "\n", - "graph_builder.add_node(\"chatbot\", chatbot)\n", - "\n", - "tool_node = ToolNode(tools=[tool])\n", - "graph_builder.add_node(\"tools\", tool_node)\n", - "\n", - "graph_builder.add_conditional_edges(\n", - " \"chatbot\",\n", - " tools_condition,\n", - ")\n", - "# Any time a tool is called, we return to the chatbot to decide the next step\n", - "graph_builder.add_edge(\"tools\", \"chatbot\")\n", - "graph_builder.add_edge(START, \"chatbot\")" - ] - }, - { - "cell_type": "markdown", - "id": "8a292dfe-764f-4561-90aa-71317d679d3e", - "metadata": {}, - "source": [ - "Finally, compile the graph with the provided checkpointer." - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "a06548bf-81fa-4436-b4c1-f68601fb4187", - "metadata": {}, - "outputs": [], - "source": [ - "graph = graph_builder.compile(checkpointer=memory)" - ] - }, - { - "cell_type": "markdown", - "id": "df01805c-4458-4474-b13b-59ecfe228f12", - "metadata": {}, - "source": [ - "Notice the connectivity of the graph hasn't changed since Part 2. All we are doing is checkpointing the `State` as the graph works through each node." - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "761d15fb-d5e2-4d50-a630-126d77e77294", - "metadata": {}, - "outputs": [ - { - "data": { - "image/jpeg": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from IPython.display import Image, display\n", - "\n", - "try:\n", - " display(Image(graph.get_graph().draw_mermaid_png()))\n", - "except Exception:\n", - " # This requires some extra dependencies and is optional\n", - " pass" - ] - }, - { - "cell_type": "markdown", - "id": "2c8265ef-e5b4-4c32-9856-5572b5652142", - "metadata": {}, - "source": [ - "Now you can interact with your bot! First, pick a thread to use as the key for this conversation." - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "id": "be7b5abb-04ef-4d53-83d1-d4d3139cc43a", - "metadata": {}, - "outputs": [], - "source": [ - "config = {\"configurable\": {\"thread_id\": \"1\"}}" - ] - }, - { - "cell_type": "markdown", - "id": "d0b1a5ee-7fa2-475c-a9db-749694b90ba9", - "metadata": {}, - "source": [ - "Next, call your chat bot." - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "id": "dba1b168-f8e0-496d-9bd6-37198fb4776e", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "================================\u001b[1m Human Message \u001b[0m=================================\n", - "\n", - "Hi there! My name is Will.\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "Hello Will! It's nice to meet you. How can I assist you today? Is there anything specific you'd like to know or discuss?\n" - ] - } - ], - "source": [ - "user_input = \"Hi there! My name is Will.\"\n", - "\n", - "# The config is the **second positional argument** to stream() or invoke()!\n", - "events = graph.stream(\n", - " {\"messages\": [{\"role\": \"user\", \"content\": user_input}]},\n", - " config,\n", - " stream_mode=\"values\",\n", - ")\n", - "for event in events:\n", - " event[\"messages\"][-1].pretty_print()" - ] - }, - { - "cell_type": "markdown", - "id": "33c6b470-5082-4c3e-b732-34de47c88735", - "metadata": {}, - "source": [ - "**Note:** The config was provided as the **second positional argument** when calling our graph. It importantly is _not_ nested within the graph inputs (`{'messages': []}`).\n", - "\n", - "Let's ask a followup: see if it remembers your name." - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "id": "f5447778-53d7-47f3-801b-f47bcf2185a0", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "================================\u001b[1m Human Message \u001b[0m=================================\n", - "\n", - "Remember my name?\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "Of course, I remember your name, Will. I always try to pay attention to important details that users share with me. Is there anything else you'd like to talk about or any questions you have? I'm here to help with a wide range of topics or tasks.\n" - ] - } - ], - "source": [ - "user_input = \"Remember my name?\"\n", - "\n", - "# The config is the **second positional argument** to stream() or invoke()!\n", - "events = graph.stream(\n", - " {\"messages\": [{\"role\": \"user\", \"content\": user_input}]},\n", - " config,\n", - " stream_mode=\"values\",\n", - ")\n", - "for event in events:\n", - " event[\"messages\"][-1].pretty_print()" - ] - }, - { - "cell_type": "markdown", - "id": "33be4cd8-f96f-4949-9d1f-48054502e5d0", - "metadata": {}, - "source": [ - "**Notice** that we aren't using an external list for memory: it's all handled by the checkpointer! You can inspect the full execution in this [LangSmith trace](https://smith.langchain.com/public/29ba22b5-6d40-4fbe-8d27-b369e3329c84/r) to see what's going on.\n", - "\n", - "Don't believe me? Try this using a different config." - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "id": "4527cf9a-b191-4bde-858a-e33a74a48c55", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "================================\u001b[1m Human Message \u001b[0m=================================\n", - "\n", - "Remember my name?\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "I apologize, but I don't have any previous context or memory of your name. As an AI assistant, I don't retain information from past conversations. Each interaction starts fresh. Could you please tell me your name so I can address you properly in this conversation?\n" - ] - } - ], - "source": [ - "# The only difference is we change the `thread_id` here to \"2\" instead of \"1\"\n", - "events = graph.stream(\n", - " {\"messages\": [{\"role\": \"user\", \"content\": user_input}]},\n", - " # highlight-next-line\n", - " {\"configurable\": {\"thread_id\": \"2\"}},\n", - " stream_mode=\"values\",\n", - ")\n", - "for event in events:\n", - " event[\"messages\"][-1].pretty_print()" - ] - }, - { - "cell_type": "markdown", - "id": "5eeccbf0-ed74-4838-a7e9-31910d82b0b2", - "metadata": {}, - "source": [ - "**Notice** that the **only** change we've made is to modify the `thread_id` in the config. See this call's [LangSmith trace](https://smith.langchain.com/public/51a62351-2f0a-4058-91cc-9996c5561428/r) for comparison. \n", - "\n", - "By now, we have made a few checkpoints across two different threads. But what goes into a checkpoint? To inspect a graph's `state` for a given config at any time, call `get_state(config)`." - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "id": "0be77c25-1423-4f2d-9b2d-28530cc761a4", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "StateSnapshot(values={'messages': [HumanMessage(content='Hi there! My name is Will.', additional_kwargs={}, response_metadata={}, id='8c1ca919-c553-4ebf-95d4-b59a2d61e078'), AIMessage(content=\"Hello Will! It's nice to meet you. How can I assist you today? Is there anything specific you'd like to know or discuss?\", additional_kwargs={}, response_metadata={'id': 'msg_01WTQebPhNwmMrmmWojJ9KXJ', 'model': 'claude-3-5-sonnet-20240620', 'stop_reason': 'end_turn', 'stop_sequence': None, 'usage': {'input_tokens': 405, 'output_tokens': 32}}, id='run-58587b77-8c82-41e6-8a90-d62c444a261d-0', usage_metadata={'input_tokens': 405, 'output_tokens': 32, 'total_tokens': 437}), HumanMessage(content='Remember my name?', additional_kwargs={}, response_metadata={}, id='daba7df6-ad75-4d6b-8057-745881cea1ca'), AIMessage(content=\"Of course, I remember your name, Will. I always try to pay attention to important details that users share with me. Is there anything else you'd like to talk about or any questions you have? I'm here to help with a wide range of topics or tasks.\", additional_kwargs={}, response_metadata={'id': 'msg_01E41KitY74HpENRgXx94vag', 'model': 'claude-3-5-sonnet-20240620', 'stop_reason': 'end_turn', 'stop_sequence': None, 'usage': {'input_tokens': 444, 'output_tokens': 58}}, id='run-ffeaae5c-4d2d-4ddb-bd59-5d5cbf2a5af8-0', usage_metadata={'input_tokens': 444, 'output_tokens': 58, 'total_tokens': 502})]}, next=(), config={'configurable': {'thread_id': '1', 'checkpoint_ns': '', 'checkpoint_id': '1ef7d06e-93e0-6acc-8004-f2ac846575d2'}}, metadata={'source': 'loop', 'writes': {'chatbot': {'messages': [AIMessage(content=\"Of course, I remember your name, Will. I always try to pay attention to important details that users share with me. Is there anything else you'd like to talk about or any questions you have? I'm here to help with a wide range of topics or tasks.\", additional_kwargs={}, response_metadata={'id': 'msg_01E41KitY74HpENRgXx94vag', 'model': 'claude-3-5-sonnet-20240620', 'stop_reason': 'end_turn', 'stop_sequence': None, 'usage': {'input_tokens': 444, 'output_tokens': 58}}, id='run-ffeaae5c-4d2d-4ddb-bd59-5d5cbf2a5af8-0', usage_metadata={'input_tokens': 444, 'output_tokens': 58, 'total_tokens': 502})]}}, 'step': 4, 'parents': {}}, created_at='2024-09-27T19:30:10.820758+00:00', parent_config={'configurable': {'thread_id': '1', 'checkpoint_ns': '', 'checkpoint_id': '1ef7d06e-859f-6206-8003-e1bd3c264b8f'}}, tasks=())" - ] - }, - "execution_count": 26, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "snapshot = graph.get_state(config)\n", - "snapshot" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "id": "c106bd09-f155-4e15-9120-c60c834106e5", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "()" - ] - }, - "execution_count": 27, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "snapshot.next # (since the graph ended this turn, `next` is empty. If you fetch a state from within a graph invocation, next tells which node will execute next)" - ] - }, - { - "cell_type": "markdown", - "id": "627f4998-6780-4cce-8f3c-9a5580888e3a", - "metadata": {}, - "source": [ - "The snapshot above contains the current state values, corresponding config, and the `next` node to process. In our case, the graph has reached an `END` state, so `next` is empty.\n", - "\n", - "**Congratulations!** Your chatbot can now maintain conversation state across sessions thanks to LangGraph's checkpointing system. This opens up exciting possibilities for more natural, contextual interactions. LangGraph's checkpointing even handles **arbitrarily complex graph states**, which is much more expressive and powerful than simple chat memory.\n", - "\n", - "In the next part, we'll introduce human oversight to our bot to handle situations where it may need guidance or verification before proceeding.\n", - " \n", - "Check out the code snippet below to review our graph from this section.\n", - "\n", - "
    \n", - "Full Code\n", - "
    \n",
    -    "\n",
    -    "```python\n",
    -    "from typing import Annotated\n",
    -    "\n",
    -    "from langchain.chat_models import init_chat_model\n",
    -    "from langchain_tavily import TavilySearch\n",
    -    "from langchain_core.messages import BaseMessage\n",
    -    "from typing_extensions import TypedDict\n",
    -    "\n",
    -    "from langgraph.checkpoint.memory import MemorySaver\n",
    -    "from langgraph.graph import StateGraph\n",
    -    "from langgraph.graph.message import add_messages\n",
    -    "from langgraph.prebuilt import ToolNode\n",
    -    "\n",
    -    "\n",
    -    "class State(TypedDict):\n",
    -    "    messages: Annotated[list, add_messages]\n",
    -    "\n",
    -    "\n",
    -    "graph_builder = StateGraph(State)\n",
    -    "\n",
    -    "\n",
    -    "tool = TavilySearch(max_results=2)\n",
    -    "tools = [tool]\n",
    -    "llm = init_chat_model(\"anthropic:claude-3-5-sonnet-latest\")\n",
    -    "llm_with_tools = llm.bind_tools(tools)\n",
    -    "\n",
    -    "\n",
    -    "def chatbot(state: State):\n",
    -    "    return {\"messages\": [llm_with_tools.invoke(state[\"messages\"])]}\n",
    -    "\n",
    -    "\n",
    -    "graph_builder.add_node(\"chatbot\", chatbot)\n",
    -    "\n",
    -    "tool_node = ToolNode(tools=[tool])\n",
    -    "graph_builder.add_node(\"tools\", tool_node)\n",
    -    "\n",
    -    "graph_builder.add_conditional_edges(\n",
    -    "    \"chatbot\",\n",
    -    "    tools_condition,\n",
    -    ")\n",
    -    "graph_builder.add_edge(\"tools\", \"chatbot\")\n",
    -    "graph_builder.set_entry_point(\"chatbot\")\n",
    -    "memory = MemorySaver()\n",
    -    "graph = graph_builder.compile(checkpointer=memory)\n",
    -    "```\n",
    -    "
    \n", - "\n", - "
    " - ] - }, - { - "cell_type": "markdown", - "id": "6f1da240-ec9b-441f-9d47-44c6dc85d540", - "metadata": {}, - "source": [ - "## Part 4: Human-in-the-loop\n", - "\n", - "Agents can be unreliable and may need human input to successfully accomplish tasks. Similarly, for some actions, you may want to require human approval before running to ensure that everything is running as intended.\n", - "\n", - "LangGraph's [persistence](../../concepts/persistence) layer supports human-in-the-loop workflows, allowing execution to pause and resume based on user feedback. The primary interface to this functionality is the [interrupt](../../concepts/human_in_the_loop/#interrupt) function. Calling `interrupt` inside a node will pause execution. Execution can be resumed, together with new input from a human, by passing in a [Command](../../concepts/human_in_the_loop/#the-command-primitive). `interrupt` is ergonomically similar to Python's built-in `input()`, [with some caveats](../../concepts/human_in_the_loop/#interrupt). We demonstrate an example below.\n", - "\n", - "First, start with our existing code from Part 3. We will make one change, which is to add a simple `human_assistance` tool accessible to the chatbot. This tool uses `interrupt` to receive information from a human." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "08439bb4-91e8-4abb-a57a-2511877abcb7", - "metadata": {}, - "outputs": [], - "source": [ - "from typing import Annotated\n", - "\n", - "from langchain.chat_models import init_chat_model\n", - "from langchain_tavily import TavilySearch\n", - "from langchain_core.tools import tool\n", - "from typing_extensions import TypedDict\n", - "\n", - "from langgraph.checkpoint.memory import MemorySaver\n", - "from langgraph.graph import StateGraph, START, END\n", - "from langgraph.graph.message import add_messages\n", - "from langgraph.prebuilt import ToolNode, tools_condition\n", - "\n", - "# highlight-next-line\n", - "from langgraph.types import Command, interrupt\n", - "\n", - "\n", - "class State(TypedDict):\n", - " messages: Annotated[list, add_messages]\n", - "\n", - "\n", - "graph_builder = StateGraph(State)\n", - "\n", - "\n", - "# highlight-next-line\n", - "@tool\n", - "# highlight-next-line\n", - "def human_assistance(query: str) -> str:\n", - " # highlight-next-line\n", - " \"\"\"Request assistance from a human.\"\"\"\n", - " # highlight-next-line\n", - " human_response = interrupt({\"query\": query})\n", - " # highlight-next-line\n", - " return human_response[\"data\"]\n", - "\n", - "\n", - "tool = TavilySearch(max_results=2)\n", - "tools = [tool, human_assistance]\n", - "llm = init_chat_model(\"anthropic:claude-3-5-sonnet-latest\")\n", - "llm_with_tools = llm.bind_tools(tools)\n", - "\n", - "\n", - "def chatbot(state: State):\n", - " message = llm_with_tools.invoke(state[\"messages\"])\n", - " # Because we will be interrupting during tool execution,\n", - " # we disable parallel tool calling to avoid repeating any\n", - " # tool invocations when we resume.\n", - " assert len(message.tool_calls) <= 1\n", - " return {\"messages\": [message]}\n", - "\n", - "\n", - "graph_builder.add_node(\"chatbot\", chatbot)\n", - "\n", - "tool_node = ToolNode(tools=tools)\n", - "graph_builder.add_node(\"tools\", tool_node)\n", - "\n", - "graph_builder.add_conditional_edges(\n", - " \"chatbot\",\n", - " tools_condition,\n", - ")\n", - "graph_builder.add_edge(\"tools\", \"chatbot\")\n", - "graph_builder.add_edge(START, \"chatbot\")" - ] - }, - { - "cell_type": "markdown", - "id": "cada4cd2-0316-487b-923e-0d12fa3473c2", - "metadata": {}, - "source": [ - "------\n", - "\n", - "!!! tip\n", - "\n", - " Check out the [Human-in-the-loop section](../../how-tos/#human-in-the-loop) of the How-to Guides for more examples of Human-in-the-loop workflows, including how to [review and edit tool calls](../../how-tos/human_in_the_loop/review-tool-calls/) before they are executed.\n", - "\n", - "---------\n", - "\n", - "We compile the graph with a checkpointer, as before:" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "16cc6b14-f758-4590-beb7-7b76a6841521", - "metadata": {}, - "outputs": [], - "source": [ - "memory = MemorySaver()\n", - "\n", - "graph = graph_builder.compile(checkpointer=memory)" - ] - }, - { - "cell_type": "markdown", - "id": "bc0e84db-925c-4468-b3e0-639e6b25ac3c", - "metadata": {}, - "source": [ - "Visualizing the graph, we recover the same layout as before. We have just added a tool!" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "22ff19af-5a5b-4ca5-82d8-6a38445c24af", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from IPython.display import Image, display\n", - "\n", - "try:\n", - " display(Image(graph.get_graph().draw_mermaid_png()))\n", - "except Exception:\n", - " # This requires some extra dependencies and is optional\n", - " pass" - ] - }, - { - "cell_type": "markdown", - "id": "ae4663b8-176d-445d-bd07-56938c044f98", - "metadata": {}, - "source": [ - "Let's now prompt the chatbot with a question that will engage the new `human_assistance` tool:" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "9f318020-ab7e-415b-a5e2-eddec6d9f3a6", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "================================\u001b[1m Human Message \u001b[0m=================================\n", - "\n", - "I need some expert guidance for building an AI agent. Could you request assistance for me?\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "[{'text': \"Certainly! I'd be happy to request expert assistance for you regarding building an AI agent. To do this, I'll use the human_assistance function to relay your request. Let me do that for you now.\", 'type': 'text'}, {'id': 'toolu_01ABUqneqnuHNuo1vhfDFQCW', 'input': {'query': 'A user is requesting expert guidance for building an AI agent. Could you please provide some expert advice or resources on this topic?'}, 'name': 'human_assistance', 'type': 'tool_use'}]\n", - "Tool Calls:\n", - " human_assistance (toolu_01ABUqneqnuHNuo1vhfDFQCW)\n", - " Call ID: toolu_01ABUqneqnuHNuo1vhfDFQCW\n", - " Args:\n", - " query: A user is requesting expert guidance for building an AI agent. Could you please provide some expert advice or resources on this topic?\n" - ] - } - ], - "source": [ - "user_input = \"I need some expert guidance for building an AI agent. Could you request assistance for me?\"\n", - "config = {\"configurable\": {\"thread_id\": \"1\"}}\n", - "\n", - "events = graph.stream(\n", - " {\"messages\": [{\"role\": \"user\", \"content\": user_input}]},\n", - " config,\n", - " stream_mode=\"values\",\n", - ")\n", - "for event in events:\n", - " if \"messages\" in event:\n", - " event[\"messages\"][-1].pretty_print()" - ] - }, - { - "cell_type": "markdown", - "id": "39405637-13b1-40b1-a51e-6d60bf675ff1", - "metadata": {}, - "source": [ - "The chatbot generated a tool call, but then execution has been interrupted! Note that if we inspect the graph state, we see that it stopped at the tools node:" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "9f511371-98b6-4513-b450-9143778f12dc", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "('tools',)" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "snapshot = graph.get_state(config)\n", - "snapshot.next" - ] - }, - { - "cell_type": "markdown", - "id": "4574b267-b0d8-4056-aeea-6e8817e8844e", - "metadata": {}, - "source": [ - "Let's take a closer look at the `human_assistance` tool:\n", - "\n", - "```python\n", - "@tool\n", - "def human_assistance(query: str) -> str:\n", - " \"\"\"Request assistance from a human.\"\"\"\n", - " human_response = interrupt({\"query\": query})\n", - " return human_response[\"data\"]\n", - "```\n", - "\n", - "Similar to Python's built-in `input()` function, calling `interrupt` inside the tool will pause execution. Progress is persisted based on our choice of [checkpointer](../../concepts/persistence/#checkpointer-libraries)-- so if we are persisting with Postgres, we can resume at any time as long as the database is alive. Here we are persisting with the in-memory checkpointer, so we can resume any time as long as our Python kernel is running.\n", - "\n", - "To resume execution, we pass a [Command](../../concepts/human_in_the_loop/#the-command-primitive) object containing data expected by the tool. The format of this data can be customized based on our needs. Here, we just need a dict with a key `\"data\"`:" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "df6d81bb-e674-44ef-a46e-17b1a8d2381a", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "[{'text': \"Certainly! I'd be happy to request expert assistance for you regarding building an AI agent. To do this, I'll use the human_assistance function to relay your request. Let me do that for you now.\", 'type': 'text'}, {'id': 'toolu_01ABUqneqnuHNuo1vhfDFQCW', 'input': {'query': 'A user is requesting expert guidance for building an AI agent. Could you please provide some expert advice or resources on this topic?'}, 'name': 'human_assistance', 'type': 'tool_use'}]\n", - "Tool Calls:\n", - " human_assistance (toolu_01ABUqneqnuHNuo1vhfDFQCW)\n", - " Call ID: toolu_01ABUqneqnuHNuo1vhfDFQCW\n", - " Args:\n", - " query: A user is requesting expert guidance for building an AI agent. Could you please provide some expert advice or resources on this topic?\n", - "=================================\u001b[1m Tool Message \u001b[0m=================================\n", - "Name: human_assistance\n", - "\n", - "We, the experts are here to help! We'd recommend you check out LangGraph to build your agent. It's much more reliable and extensible than simple autonomous agents.\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "Thank you for your patience. I've received some expert advice regarding your request for guidance on building an AI agent. Here's what the experts have suggested:\n", - "\n", - "The experts recommend that you look into LangGraph for building your AI agent. They mention that LangGraph is a more reliable and extensible option compared to simple autonomous agents.\n", - "\n", - "LangGraph is likely a framework or library designed specifically for creating AI agents with advanced capabilities. Here are a few points to consider based on this recommendation:\n", - "\n", - "1. Reliability: The experts emphasize that LangGraph is more reliable than simpler autonomous agent approaches. This could mean it has better stability, error handling, or consistent performance.\n", - "\n", - "2. Extensibility: LangGraph is described as more extensible, which suggests that it probably offers a flexible architecture that allows you to easily add new features or modify existing ones as your agent's requirements evolve.\n", - "\n", - "3. Advanced capabilities: Given that it's recommended over \"simple autonomous agents,\" LangGraph likely provides more sophisticated tools and techniques for building complex AI agents.\n", - "\n", - "To get started with LangGraph, you might want to:\n", - "\n", - "1. Search for the official LangGraph documentation or website to learn more about its features and how to use it.\n", - "2. Look for tutorials or guides specifically focused on building AI agents with LangGraph.\n", - "3. Check if there are any community forums or discussion groups where you can ask questions and get support from other developers using LangGraph.\n", - "\n", - "If you'd like more specific information about LangGraph or have any questions about this recommendation, please feel free to ask, and I can request further assistance from the experts.\n" - ] - } - ], - "source": [ - "human_response = (\n", - " \"We, the experts are here to help! We'd recommend you check out LangGraph to build your agent.\"\n", - " \" It's much more reliable and extensible than simple autonomous agents.\"\n", - ")\n", - "\n", - "human_command = Command(resume={\"data\": human_response})\n", - "\n", - "events = graph.stream(human_command, config, stream_mode=\"values\")\n", - "for event in events:\n", - " if \"messages\" in event:\n", - " event[\"messages\"][-1].pretty_print()" - ] - }, - { - "cell_type": "markdown", - "id": "21e78a97-474f-4709-b51d-9d5e8323e14c", - "metadata": {}, - "source": [ - "Our input has been received and processed as a tool message. Review this call's [LangSmith trace](https://smith.langchain.com/public/9f0f87e3-56a7-4dde-9c76-b71675624e91/r) to see the exact work that was done in the above call. Notice that the state is loaded in the first step so that our chatbot can continue where it left off.\n", - "\n", - "**Congrats!** You've used an `interrupt` to add human-in-the-loop execution to your chatbot, allowing for human oversight and intervention when needed. This opens up the potential UIs you can create with your AI systems. Since we have already added a **checkpointer**, as long as the underlying persistence layer is running, the graph can be paused **indefinitely** and resumed at any time as if nothing had happened.\n", - "\n", - "Human-in-the-loop workflows enable a variety of new workflows and user experiences. Check out [this section](../../how-tos/#human-in-the-loop) of the How-to Guides for more examples of Human-in-the-loop workflows, including how to [review and edit tool calls](../../how-tos/human_in_the_loop/review-tool-calls/) before they are executed.\n", - "\n", - "\n", - "
    \n", - "Full Code\n", - "
    \n",
    -    "\n",
    -    "```python\n",
    -    "from typing import Annotated\n",
    -    "\n",
    -    "from langchain.chat_models import init_chat_model\n",
    -    "from langchain_tavily import TavilySearch\n",
    -    "from langchain_core.tools import tool\n",
    -    "from typing_extensions import TypedDict\n",
    -    "\n",
    -    "from langgraph.checkpoint.memory import MemorySaver\n",
    -    "from langgraph.graph import StateGraph, START, END\n",
    -    "from langgraph.graph.message import add_messages\n",
    -    "from langgraph.prebuilt import ToolNode, tools_condition\n",
    -    "from langgraph.types import Command, interrupt\n",
    -    "\n",
    -    "\n",
    -    "class State(TypedDict):\n",
    -    "    messages: Annotated[list, add_messages]\n",
    -    "\n",
    -    "\n",
    -    "graph_builder = StateGraph(State)\n",
    -    "\n",
    -    "\n",
    -    "@tool\n",
    -    "def human_assistance(query: str) -> str:\n",
    -    "    \"\"\"Request assistance from a human.\"\"\"\n",
    -    "    human_response = interrupt({\"query\": query})\n",
    -    "    return human_response[\"data\"]\n",
    -    "\n",
    -    "\n",
    -    "tool = TavilySearch(max_results=2)\n",
    -    "tools = [tool, human_assistance]\n",
    -    "llm = init_chat_model(\"anthropic:claude-3-5-sonnet-latest\")\n",
    -    "llm_with_tools = llm.bind_tools(tools)\n",
    -    "\n",
    -    "\n",
    -    "def chatbot(state: State):\n",
    -    "    message = llm_with_tools.invoke(state[\"messages\"])\n",
    -    "    assert(len(message.tool_calls) <= 1)\n",
    -    "    return {\"messages\": [message]}\n",
    -    "\n",
    -    "\n",
    -    "graph_builder.add_node(\"chatbot\", chatbot)\n",
    -    "\n",
    -    "tool_node = ToolNode(tools=tools)\n",
    -    "graph_builder.add_node(\"tools\", tool_node)\n",
    -    "\n",
    -    "graph_builder.add_conditional_edges(\n",
    -    "    \"chatbot\",\n",
    -    "    tools_condition,\n",
    -    ")\n",
    -    "graph_builder.add_edge(\"tools\", \"chatbot\")\n",
    -    "graph_builder.add_edge(START, \"chatbot\")\n",
    -    "\n",
    -    "memory = MemorySaver()\n",
    -    "graph = graph_builder.compile(checkpointer=memory)\n",
    -    "```\n",
    -    "
    \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "id": "0d12578b-ff19-48b5-b1ad-67d9bf7f710e", - "metadata": {}, - "source": [ - "## Part 5: Customizing State\n", - "\n", - "So far, we've relied on a simple state with one entry-- a list of messages. You can go far with this simple state, but if you want to define complex behavior without relying on the message list, you can add additional fields to the state. Here we will demonstrate a new scenario, in which the chatbot is using its search tool to find specific information, and forwarding them to a human for review. Let's have the chatbot research the birthday of an entity. We will add `name` and `birthday` keys to the state:" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "84627103-bcc8-4645-bd37-b93209fa09dd", - "metadata": {}, - "outputs": [], - "source": [ - "from typing import Annotated\n", - "\n", - "from typing_extensions import TypedDict\n", - "\n", - "from langgraph.graph.message import add_messages\n", - "\n", - "\n", - "class State(TypedDict):\n", - " messages: Annotated[list, add_messages]\n", - " # highlight-next-line\n", - " name: str\n", - " # highlight-next-line\n", - " birthday: str" - ] - }, - { - "cell_type": "markdown", - "id": "c0057133-3dfd-4208-a11f-9cf7c0b82587", - "metadata": {}, - "source": [ - "Adding this information to the state makes it easily accessible by other graph nodes (e.g., a downstream node that stores or processes the information), as well as the graph's persistence layer.\n", - "\n", - "Here, we will populate the state keys inside of our `human_assistance` tool. This allows a human to review the information before it is stored in the state. We will again use `Command`, this time to issue a state update from inside our tool. Read more about use cases for `Command` [here](../../concepts/low_level/#using-inside-tools)." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "c4b65504-92c7-4c82-a6ee-824885d1a8a4", - "metadata": {}, - "outputs": [], - "source": [ - "from langchain_core.messages import ToolMessage\n", - "from langchain_core.tools import InjectedToolCallId, tool\n", - "\n", - "from langgraph.types import Command, interrupt\n", - "\n", - "\n", - "@tool\n", - "# Note that because we are generating a ToolMessage for a state update, we\n", - "# generally require the ID of the corresponding tool call. We can use\n", - "# LangChain's InjectedToolCallId to signal that this argument should not\n", - "# be revealed to the model in the tool's schema.\n", - "def human_assistance(\n", - " name: str, birthday: str, tool_call_id: Annotated[str, InjectedToolCallId]\n", - ") -> str:\n", - " \"\"\"Request assistance from a human.\"\"\"\n", - " human_response = interrupt(\n", - " {\n", - " \"question\": \"Is this correct?\",\n", - " \"name\": name,\n", - " \"birthday\": birthday,\n", - " },\n", - " )\n", - " # If the information is correct, update the state as-is.\n", - " if human_response.get(\"correct\", \"\").lower().startswith(\"y\"):\n", - " verified_name = name\n", - " verified_birthday = birthday\n", - " response = \"Correct\"\n", - " # Otherwise, receive information from the human reviewer.\n", - " else:\n", - " verified_name = human_response.get(\"name\", name)\n", - " verified_birthday = human_response.get(\"birthday\", birthday)\n", - " response = f\"Made a correction: {human_response}\"\n", - "\n", - " # This time we explicitly update the state with a ToolMessage inside\n", - " # the tool.\n", - " state_update = {\n", - " \"name\": verified_name,\n", - " \"birthday\": verified_birthday,\n", - " \"messages\": [ToolMessage(response, tool_call_id=tool_call_id)],\n", - " }\n", - " # We return a Command object in the tool to update our state.\n", - " return Command(update=state_update)" - ] - }, - { - "cell_type": "markdown", - "id": "268757ca-4b72-4fc1-a482-d878dd1bc0d9", - "metadata": {}, - "source": [ - "Otherwise, the rest of our graph is the same:" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "e256fa2e-6c13-42dd-a0a5-d206ee4139bf", - "metadata": {}, - "outputs": [], - "source": [ - "from langchain.chat_models import init_chat_model\n", - "from langchain_tavily import TavilySearch\n", - "\n", - "from langgraph.checkpoint.memory import MemorySaver\n", - "from langgraph.graph import StateGraph, START, END\n", - "from langgraph.prebuilt import ToolNode, tools_condition\n", - "\n", - "\n", - "tool = TavilySearch(max_results=2)\n", - "tools = [tool, human_assistance]\n", - "llm = init_chat_model(\"anthropic:claude-3-5-sonnet-latest\")\n", - "llm_with_tools = llm.bind_tools(tools)\n", - "\n", - "\n", - "def chatbot(state: State):\n", - " message = llm_with_tools.invoke(state[\"messages\"])\n", - " assert len(message.tool_calls) <= 1\n", - " return {\"messages\": [message]}\n", - "\n", - "\n", - "graph_builder = StateGraph(State)\n", - "graph_builder.add_node(\"chatbot\", chatbot)\n", - "\n", - "tool_node = ToolNode(tools=tools)\n", - "graph_builder.add_node(\"tools\", tool_node)\n", - "\n", - "graph_builder.add_conditional_edges(\n", - " \"chatbot\",\n", - " tools_condition,\n", - ")\n", - "graph_builder.add_edge(\"tools\", \"chatbot\")\n", - "graph_builder.add_edge(START, \"chatbot\")\n", - "\n", - "memory = MemorySaver()\n", - "graph = graph_builder.compile(checkpointer=memory)" - ] - }, - { - "cell_type": "markdown", - "id": "e9f77638-f957-4e1b-abcf-e9132c039be5", - "metadata": {}, - "source": [ - "Let's prompt our application to look up the \"birthday\" of the LangGraph library. We will direct the chatbot to reach out to the `human_assistance` tool once it has the required information. Note that setting `name` and `birthday` in the arguments for the tool, we force the chatbot to generate proposals for these fields." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "10701e49-d4b4-46db-bb30-f895fdf4411d", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "================================\u001b[1m Human Message \u001b[0m=================================\n", - "\n", - "Can you look up when LangGraph was released? When you have the answer, use the human_assistance tool for review.\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "[{'text': \"Certainly! I'll start by searching for information about LangGraph's release date using the Tavily search function. Then, I'll use the human_assistance tool for review.\", 'type': 'text'}, {'id': 'toolu_01JoXQPgTVJXiuma8xMVwqAi', 'input': {'query': 'LangGraph release date'}, 'name': 'tavily_search_results_json', 'type': 'tool_use'}]\n", - "Tool Calls:\n", - " tavily_search_results_json (toolu_01JoXQPgTVJXiuma8xMVwqAi)\n", - " Call ID: toolu_01JoXQPgTVJXiuma8xMVwqAi\n", - " Args:\n", - " query: LangGraph release date\n", - "=================================\u001b[1m Tool Message \u001b[0m=================================\n", - "Name: tavily_search_results_json\n", - "\n", - "[{\"url\": \"https://blog.langchain.dev/langgraph-cloud/\", \"content\": \"We also have a new stable release of LangGraph. By LangChain 6 min read Jun 27, 2024 (Oct '24) Edit: Since the launch of LangGraph Cloud, we now have multiple deployment options alongside LangGraph Studio - which now fall under LangGraph Platform. LangGraph Cloud is synonymous with our Cloud SaaS deployment option.\"}, {\"url\": \"https://changelog.langchain.com/announcements/langgraph-cloud-deploy-at-scale-monitor-carefully-iterate-boldly\", \"content\": \"LangChain - Changelog | ☁ 🚀 LangGraph Cloud: Deploy at scale, monitor LangChain LangSmith LangGraph LangChain LangSmith LangGraph LangChain LangSmith LangGraph LangChain Changelog Sign up for our newsletter to stay up to date DATE: The LangChain Team LangGraph LangGraph Cloud ☁ 🚀 LangGraph Cloud: Deploy at scale, monitor carefully, iterate boldly DATE: June 27, 2024 AUTHOR: The LangChain Team LangGraph Cloud is now in closed beta, offering scalable, fault-tolerant deployment for LangGraph agents. LangGraph Cloud also includes a new playground-like studio for debugging agent failure modes and quick iteration: Join the waitlist today for LangGraph Cloud. And to learn more, read our blog post announcement or check out our docs. Subscribe By clicking subscribe, you accept our privacy policy and terms and conditions.\"}]\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "[{'text': \"Based on the search results, it appears that LangGraph was already in existence before June 27, 2024, when LangGraph Cloud was announced. However, the search results don't provide a specific release date for the original LangGraph. \\n\\nGiven this information, I'll use the human_assistance tool to review and potentially provide more accurate information about LangGraph's initial release date.\", 'type': 'text'}, {'id': 'toolu_01JDQAV7nPqMkHHhNs3j3XoN', 'input': {'name': 'Assistant', 'birthday': '2023-01-01'}, 'name': 'human_assistance', 'type': 'tool_use'}]\n", - "Tool Calls:\n", - " human_assistance (toolu_01JDQAV7nPqMkHHhNs3j3XoN)\n", - " Call ID: toolu_01JDQAV7nPqMkHHhNs3j3XoN\n", - " Args:\n", - " name: Assistant\n", - " birthday: 2023-01-01\n" - ] - } - ], - "source": [ - "user_input = (\n", - " \"Can you look up when LangGraph was released? \"\n", - " \"When you have the answer, use the human_assistance tool for review.\"\n", - ")\n", - "config = {\"configurable\": {\"thread_id\": \"1\"}}\n", - "\n", - "events = graph.stream(\n", - " {\"messages\": [{\"role\": \"user\", \"content\": user_input}]},\n", - " config,\n", - " stream_mode=\"values\",\n", - ")\n", - "for event in events:\n", - " if \"messages\" in event:\n", - " event[\"messages\"][-1].pretty_print()" - ] - }, - { - "cell_type": "markdown", - "id": "99dcaf45-e4d1-4597-b669-13a5330740ac", - "metadata": {}, - "source": [ - "We've hit the `interrupt` in the `human_assistance` tool again. In this case, the chatbot failed to identify the correct date, so we can supply it:" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "7df33d9e-cc76-4a0f-8307-01e619483b3e", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "[{'text': \"Based on the search results, it appears that LangGraph was already in existence before June 27, 2024, when LangGraph Cloud was announced. However, the search results don't provide a specific release date for the original LangGraph. \\n\\nGiven this information, I'll use the human_assistance tool to review and potentially provide more accurate information about LangGraph's initial release date.\", 'type': 'text'}, {'id': 'toolu_01JDQAV7nPqMkHHhNs3j3XoN', 'input': {'name': 'Assistant', 'birthday': '2023-01-01'}, 'name': 'human_assistance', 'type': 'tool_use'}]\n", - "Tool Calls:\n", - " human_assistance (toolu_01JDQAV7nPqMkHHhNs3j3XoN)\n", - " Call ID: toolu_01JDQAV7nPqMkHHhNs3j3XoN\n", - " Args:\n", - " name: Assistant\n", - " birthday: 2023-01-01\n", - "=================================\u001b[1m Tool Message \u001b[0m=================================\n", - "Name: human_assistance\n", - "\n", - "Made a correction: {'name': 'LangGraph', 'birthday': 'Jan 17, 2024'}\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "Thank you for the human assistance. I can now provide you with the correct information about LangGraph's release date.\n", - "\n", - "LangGraph was initially released on January 17, 2024. This information comes from the human assistance correction, which is more accurate than the search results I initially found.\n", - "\n", - "To summarize:\n", - "1. LangGraph's original release date: January 17, 2024\n", - "2. LangGraph Cloud announcement: June 27, 2024\n", - "\n", - "It's worth noting that LangGraph had been in development and use for some time before the LangGraph Cloud announcement, but the official initial release of LangGraph itself was on January 17, 2024.\n" - ] - } - ], - "source": [ - "human_command = Command(\n", - " resume={\n", - " \"name\": \"LangGraph\",\n", - " \"birthday\": \"Jan 17, 2024\",\n", - " },\n", - ")\n", - "\n", - "events = graph.stream(human_command, config, stream_mode=\"values\")\n", - "for event in events:\n", - " if \"messages\" in event:\n", - " event[\"messages\"][-1].pretty_print()" - ] - }, - { - "cell_type": "markdown", - "id": "31581965-8d7d-4378-82b2-f5c2a84a54b1", - "metadata": {}, - "source": [ - "Note that these fields are now reflected in the state:" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "b9fe6275-489d-4a6f-b19f-f1000d4133a0", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'name': 'LangGraph', 'birthday': 'Jan 17, 2024'}" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "snapshot = graph.get_state(config)\n", - "\n", - "{k: v for k, v in snapshot.values.items() if k in (\"name\", \"birthday\")}" - ] - }, - { - "cell_type": "markdown", - "id": "14593643-aa81-4b40-9c2d-9408bcaf88cb", - "metadata": {}, - "source": [ - "This makes them easily accessible to downstream nodes (e.g., a node that further processes or stores the information)." - ] - }, - { - "cell_type": "markdown", - "id": "238c359a-24ca-4fbf-8f6c-28a347fee2f2", - "metadata": {}, - "source": [ - "### Manually updating state\n", - "\n", - "LangGraph gives a high degree of control over the application state. For instance, at any point (including when interrupted), we can manually override a key using `graph.update_state`:" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "b206e600-91f0-4f46-9587-ab00c05899de", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'configurable': {'thread_id': '1',\n", - " 'checkpoint_ns': '',\n", - " 'checkpoint_id': '1efd4ec5-cf69-6352-8006-9278f1730162'}}" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "graph.update_state(config, {\"name\": \"LangGraph (library)\"})" - ] - }, - { - "cell_type": "markdown", - "id": "3dfb8268-8c5a-4022-9189-6edd231436ae", - "metadata": {}, - "source": [ - "If we call `graph.get_state`, we can see the new value is reflected:" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "10adcb89-55ab-4076-bc81-4488eff9e6b3", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'name': 'LangGraph (library)', 'birthday': 'Jan 17, 2024'}" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "snapshot = graph.get_state(config)\n", - "\n", - "{k: v for k, v in snapshot.values.items() if k in (\"name\", \"birthday\")}" - ] - }, - { - "cell_type": "markdown", - "id": "ab34ef46-a836-4dbd-b1ae-56c5e8dc75af", - "metadata": {}, - "source": [ - "Manual state updates will even [generate a trace](https://smith.langchain.com/public/7ebb7827-378d-49fe-9f6c-5df0e90086c8/r) in LangSmith. If desired, they can also be used to control human-in-the-loop workflows, as described in [this guide](../../how-tos/human_in_the_loop/edit-graph-state/). Use of the `interrupt` function is generally recommended instead, as it allows data to be transmitted in a human-in-the-loop interaction independently of state updates.\n", - "\n", - "**Congratulations!** You've added custom keys to the state to facilitate a more complex workflow, and learned how to generate state updates from inside tools.\n", - "\n", - "We're almost done with the tutorial, but there is one more concept we'd like to review before finishing that connects `checkpointing` and `state updates`. \n", - "\n", - "This section's code is reproduced below for your reference.\n", - "\n", - "\n", - "
    \n", - "Full Code\n", - "
    \n",
    -    "\n",
    -    "```python\n",
    -    "from typing import Annotated\n",
    -    "\n",
    -    "from langchain.chat_models import init_chat_model\n",
    -    "from langchain_tavily import TavilySearch\n",
    -    "from langchain_core.messages import ToolMessage\n",
    -    "from langchain_core.tools import InjectedToolCallId, tool\n",
    -    "from typing_extensions import TypedDict\n",
    -    "\n",
    -    "from langgraph.checkpoint.memory import MemorySaver\n",
    -    "from langgraph.graph import StateGraph, START, END\n",
    -    "from langgraph.graph.message import add_messages\n",
    -    "from langgraph.prebuilt import ToolNode, tools_condition\n",
    -    "from langgraph.types import Command, interrupt\n",
    -    "\n",
    -    "\n",
    -    "\n",
    -    "class State(TypedDict):\n",
    -    "    messages: Annotated[list, add_messages]\n",
    -    "    name: str\n",
    -    "    birthday: str\n",
    -    "\n",
    -    "\n",
    -    "@tool\n",
    -    "def human_assistance(\n",
    -    "    name: str, birthday: str, tool_call_id: Annotated[str, InjectedToolCallId]\n",
    -    ") -> str:\n",
    -    "    \"\"\"Request assistance from a human.\"\"\"\n",
    -    "    human_response = interrupt(\n",
    -    "        {\n",
    -    "            \"question\": \"Is this correct?\",\n",
    -    "            \"name\": name,\n",
    -    "            \"birthday\": birthday,\n",
    -    "        },\n",
    -    "    )\n",
    -    "    if human_response.get(\"correct\", \"\").lower().startswith(\"y\"):\n",
    -    "        verified_name = name\n",
    -    "        verified_birthday = birthday\n",
    -    "        response = \"Correct\"\n",
    -    "    else:\n",
    -    "        verified_name = human_response.get(\"name\", name)\n",
    -    "        verified_birthday = human_response.get(\"birthday\", birthday)\n",
    -    "        response = f\"Made a correction: {human_response}\"\n",
    -    "\n",
    -    "    state_update = {\n",
    -    "        \"name\": verified_name,\n",
    -    "        \"birthday\": verified_birthday,\n",
    -    "        \"messages\": [ToolMessage(response, tool_call_id=tool_call_id)],\n",
    -    "    }\n",
    -    "    return Command(update=state_update)\n",
    -    "\n",
    -    "\n",
    -    "tool = TavilySearch(max_results=2)\n",
    -    "tools = [tool, human_assistance]\n",
    -    "llm = init_chat_model(\"anthropic:claude-3-5-sonnet-latest\")\n",
    -    "llm_with_tools = llm.bind_tools(tools)\n",
    -    "\n",
    -    "\n",
    -    "def chatbot(state: State):\n",
    -    "    message = llm_with_tools.invoke(state[\"messages\"])\n",
    -    "    assert(len(message.tool_calls) <= 1)\n",
    -    "    return {\"messages\": [message]}\n",
    -    "\n",
    -    "\n",
    -    "graph_builder = StateGraph(State)\n",
    -    "graph_builder.add_node(\"chatbot\", chatbot)\n",
    -    "\n",
    -    "tool_node = ToolNode(tools=tools)\n",
    -    "graph_builder.add_node(\"tools\", tool_node)\n",
    -    "\n",
    -    "graph_builder.add_conditional_edges(\n",
    -    "    \"chatbot\",\n",
    -    "    tools_condition,\n",
    -    ")\n",
    -    "graph_builder.add_edge(\"tools\", \"chatbot\")\n",
    -    "graph_builder.add_edge(START, \"chatbot\")\n",
    -    "\n",
    -    "memory = MemorySaver()\n",
    -    "graph = graph_builder.compile(checkpointer=memory)\n",
    -    "```\n",
    -    "
    \n", - "
    " - ] - }, - { - "cell_type": "markdown", - "id": "05283db2-2f26-4800-8eda-78a4468a3d8f", - "metadata": {}, - "source": [ - "## Part 6: Time Travel\n", - "\n", - "In a typical chat bot workflow, the user interacts with the bot 1 or more times to accomplish a task. In the previous sections, we saw how to add memory and a human-in-the-loop to be able to checkpoint our graph state and control future responses.\n", - "\n", - "But what if you want to let your user start from a previous response and \"branch off\" to explore a separate outcome? Or what if you want users to be able to \"rewind\" your assistant's work to fix some mistakes or try a different strategy (common in applications like autonomous software engineers)?\n", - "\n", - "You can create both of these experiences and more using LangGraph's built-in \"time travel\" functionality. \n", - "\n", - "In this section, you will \"rewind\" your graph by fetching a checkpoint using the graph's `get_state_history` method. You can then resume execution at this previous point in time.\n", - "\n", - "For this, let's use the simple chatbot with tools from [Part 3](#part-3-adding-memory-to-the-chatbot):" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "bb8a02de-a21b-4ef6-a714-7d6e44435e3a", - "metadata": {}, - "outputs": [], - "source": [ - "from typing import Annotated\n", - "\n", - "from langchain.chat_models import init_chat_model\n", - "from langchain_tavily import TavilySearch\n", - "from langchain_core.messages import BaseMessage\n", - "from typing_extensions import TypedDict\n", - "\n", - "from langgraph.checkpoint.memory import MemorySaver\n", - "from langgraph.graph import StateGraph, START, END\n", - "from langgraph.graph.message import add_messages\n", - "from langgraph.prebuilt import ToolNode, tools_condition\n", - "\n", - "\n", - "class State(TypedDict):\n", - " messages: Annotated[list, add_messages]\n", - "\n", - "\n", - "graph_builder = StateGraph(State)\n", - "\n", - "\n", - "tool = TavilySearch(max_results=2)\n", - "tools = [tool]\n", - "llm = init_chat_model(\"anthropic:claude-3-5-sonnet-latest\")\n", - "llm_with_tools = llm.bind_tools(tools)\n", - "\n", - "\n", - "def chatbot(state: State):\n", - " return {\"messages\": [llm_with_tools.invoke(state[\"messages\"])]}\n", - "\n", - "\n", - "graph_builder.add_node(\"chatbot\", chatbot)\n", - "\n", - "tool_node = ToolNode(tools=[tool])\n", - "graph_builder.add_node(\"tools\", tool_node)\n", - "\n", - "graph_builder.add_conditional_edges(\n", - " \"chatbot\",\n", - " tools_condition,\n", - ")\n", - "graph_builder.add_edge(\"tools\", \"chatbot\")\n", - "graph_builder.add_edge(START, \"chatbot\")\n", - "\n", - "memory = MemorySaver()\n", - "graph = graph_builder.compile(checkpointer=memory)" - ] - }, - { - "cell_type": "markdown", - "id": "5414c482-215e-4cc0-9eef-4a8722d2f468", - "metadata": {}, - "source": [ - "Let's have our graph take a couple steps. Every step will be checkpointed in its state history:" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "69071b02-c011-4b7f-90b1-8e89e032322d", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "================================\u001b[1m Human Message \u001b[0m=================================\n", - "\n", - "I'm learning LangGraph. Could you do some research on it for me?\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "[{'text': \"Certainly! I'd be happy to research LangGraph for you. To get the most up-to-date and accurate information, I'll use the Tavily search engine to look this up. Let me do that for you now.\", 'type': 'text'}, {'id': 'toolu_01BscbfJJB9EWJFqGrN6E54e', 'input': {'query': 'LangGraph latest information and features'}, 'name': 'tavily_search_results_json', 'type': 'tool_use'}]\n", - "Tool Calls:\n", - " tavily_search_results_json (toolu_01BscbfJJB9EWJFqGrN6E54e)\n", - " Call ID: toolu_01BscbfJJB9EWJFqGrN6E54e\n", - " Args:\n", - " query: LangGraph latest information and features\n", - "=================================\u001b[1m Tool Message \u001b[0m=================================\n", - "Name: tavily_search_results_json\n", - "\n", - "[{\"url\": \"https://blockchain.news/news/langchain-new-features-upcoming-events-update\", \"content\": \"LangChain, a leading platform in the AI development space, has released its latest updates, showcasing new use cases and enhancements across its ecosystem. According to the LangChain Blog, the updates cover advancements in LangGraph Cloud, LangSmith's self-improving evaluators, and revamped documentation for LangGraph.\"}, {\"url\": \"https://blog.langchain.dev/langgraph-platform-announce/\", \"content\": \"With these learnings under our belt, we decided to couple some of our latest offerings under LangGraph Platform. LangGraph Platform today includes LangGraph Server, LangGraph Studio, plus the CLI and SDK. ... we added features in LangGraph Server to deliver on a few key value areas. Below, we'll focus on these aspects of LangGraph Platform.\"}]\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "Thank you for your patience. I've found some recent information about LangGraph for you. Let me summarize the key points:\n", - "\n", - "1. LangGraph is part of the LangChain ecosystem, which is a leading platform in AI development.\n", - "\n", - "2. Recent updates and features of LangGraph include:\n", - "\n", - " a. LangGraph Cloud: This seems to be a cloud-based version of LangGraph, though specific details weren't provided in the search results.\n", - "\n", - " b. LangGraph Platform: This is a newly introduced concept that combines several offerings:\n", - " - LangGraph Server\n", - " - LangGraph Studio\n", - " - CLI (Command Line Interface)\n", - " - SDK (Software Development Kit)\n", - "\n", - "3. LangGraph Server: This component has received new features to enhance its value proposition, though the specific features weren't detailed in the search results.\n", - "\n", - "4. LangGraph Studio: This appears to be a new tool in the LangGraph ecosystem, likely providing a graphical interface for working with LangGraph.\n", - "\n", - "5. Documentation: The LangGraph documentation has been revamped, which should make it easier for learners like yourself to understand and use the tool.\n", - "\n", - "6. Integration with LangSmith: While not directly part of LangGraph, LangSmith (another tool in the LangChain ecosystem) now features self-improving evaluators, which might be relevant if you're using LangGraph as part of a larger LangChain project.\n", - "\n", - "As you're learning LangGraph, it would be beneficial to:\n", - "\n", - "1. Check out the official LangChain documentation, especially the newly revamped LangGraph sections.\n", - "2. Explore the different components of the LangGraph Platform (Server, Studio, CLI, and SDK) to see which best fits your learning needs.\n", - "3. Keep an eye on LangGraph Cloud developments, as cloud-based solutions often provide an easier starting point for learners.\n", - "4. Consider how LangGraph fits into the broader LangChain ecosystem, especially its interaction with tools like LangSmith.\n", - "\n", - "Is there any specific aspect of LangGraph you'd like to know more about? I'd be happy to do a more focused search on particular features or use cases.\n" - ] - } - ], - "source": [ - "config = {\"configurable\": {\"thread_id\": \"1\"}}\n", - "events = graph.stream(\n", - " {\n", - " \"messages\": [\n", - " {\n", - " \"role\": \"user\",\n", - " \"content\": (\n", - " \"I'm learning LangGraph. \"\n", - " \"Could you do some research on it for me?\"\n", - " ),\n", - " },\n", - " ],\n", - " },\n", - " config,\n", - " stream_mode=\"values\",\n", - ")\n", - "for event in events:\n", - " if \"messages\" in event:\n", - " event[\"messages\"][-1].pretty_print()" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "acbec099-e5d2-497f-929e-c548d7bcbf77", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "================================\u001b[1m Human Message \u001b[0m=================================\n", - "\n", - "Ya that's helpful. Maybe I'll build an autonomous agent with it!\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "[{'text': \"That's an exciting idea! Building an autonomous agent with LangGraph is indeed a great application of this technology. LangGraph is particularly well-suited for creating complex, multi-step AI workflows, which is perfect for autonomous agents. Let me gather some more specific information about using LangGraph for building autonomous agents.\", 'type': 'text'}, {'id': 'toolu_01QWNHhUaeeWcGXvA4eHT7Zo', 'input': {'query': 'Building autonomous agents with LangGraph examples and tutorials'}, 'name': 'tavily_search_results_json', 'type': 'tool_use'}]\n", - "Tool Calls:\n", - " tavily_search_results_json (toolu_01QWNHhUaeeWcGXvA4eHT7Zo)\n", - " Call ID: toolu_01QWNHhUaeeWcGXvA4eHT7Zo\n", - " Args:\n", - " query: Building autonomous agents with LangGraph examples and tutorials\n", - "=================================\u001b[1m Tool Message \u001b[0m=================================\n", - "Name: tavily_search_results_json\n", - "\n", - "[{\"url\": \"https://towardsdatascience.com/building-autonomous-multi-tool-agents-with-gemini-2-0-and-langgraph-ad3d7bd5e79d\", \"content\": \"Building Autonomous Multi-Tool Agents with Gemini 2.0 and LangGraph | by Youness Mansar | Jan, 2025 | Towards Data Science Building Autonomous Multi-Tool Agents with Gemini 2.0 and LangGraph A practical tutorial with full code examples for building and running multi-tool agents Towards Data Science LLMs are remarkable — they can memorize vast amounts of information, answer general knowledge questions, write code, generate stories, and even fix your grammar. In this tutorial, we are going to build a simple LLM agent that is equipped with four tools that it can use to answer a user’s question. This Agent will have the following specifications: Follow Published in Towards Data Science --------------------------------- Your home for data science and AI. Follow Follow Follow\"}, {\"url\": \"https://github.com/anmolaman20/Tools_and_Agents\", \"content\": \"GitHub - anmolaman20/Tools_and_Agents: This repository provides resources for building AI agents using Langchain and Langgraph. This repository provides resources for building AI agents using Langchain and Langgraph. This repository provides resources for building AI agents using Langchain and Langgraph. This repository serves as a comprehensive guide for building AI-powered agents using Langchain and Langgraph. It provides hands-on examples, practical tutorials, and resources for developers and AI enthusiasts to master building intelligent systems and workflows. AI Agent Development: Gain insights into creating intelligent systems that think, reason, and adapt in real time. This repository is ideal for AI practitioners, developers exploring language models, or anyone interested in building intelligent systems. This repository provides resources for building AI agents using Langchain and Langgraph.\"}]\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "Great idea! Building an autonomous agent with LangGraph is definitely an exciting project. Based on the latest information I've found, here are some insights and tips for building autonomous agents with LangGraph:\n", - "\n", - "1. Multi-Tool Agents: LangGraph is particularly well-suited for creating autonomous agents that can use multiple tools. This allows your agent to have a diverse set of capabilities and choose the right tool for each task.\n", - "\n", - "2. Integration with Large Language Models (LLMs): You can combine LangGraph with powerful LLMs like Gemini 2.0 to create more intelligent and capable agents. The LLM can serve as the \"brain\" of your agent, making decisions and generating responses.\n", - "\n", - "3. Workflow Management: LangGraph excels at managing complex, multi-step AI workflows. This is crucial for autonomous agents that need to break down tasks into smaller steps and execute them in the right order.\n", - "\n", - "4. Practical Tutorials Available: There are tutorials available that provide full code examples for building and running multi-tool agents. These can be incredibly helpful as you start your project.\n", - "\n", - "5. Langchain Integration: LangGraph is often used in conjunction with Langchain. This combination provides a powerful framework for building AI agents, offering features like memory management, tool integration, and prompt management.\n", - "\n", - "6. GitHub Resources: There are repositories available (like the one by anmolaman20) that provide comprehensive resources for building AI agents using Langchain and LangGraph. These can be valuable references as you develop your agent.\n", - "\n", - "7. Real-time Adaptation: LangGraph allows you to create agents that can think, reason, and adapt in real-time, which is crucial for truly autonomous behavior.\n", - "\n", - "8. Customization: You can equip your agent with specific tools tailored to your use case. For example, you might include tools for web searching, data analysis, or interacting with specific APIs.\n", - "\n", - "To get started with your autonomous agent project:\n", - "\n", - "1. Familiarize yourself with LangGraph's documentation and basic concepts.\n", - "2. Look into tutorials that specifically deal with building autonomous agents, like the one mentioned from Towards Data Science.\n", - "3. Decide on the specific capabilities you want your agent to have and identify the tools it will need.\n", - "4. Start with a simple agent and gradually add complexity as you become more comfortable with the framework.\n", - "5. Experiment with different LLMs to find the one that works best for your use case.\n", - "6. Pay attention to how you structure the agent's decision-making process and workflow.\n", - "7. Don't forget to implement proper error handling and safety measures, especially if your agent will be interacting with external systems or making important decisions.\n", - "\n", - "Building an autonomous agent is an iterative process, so be prepared to refine and improve your agent over time. Good luck with your project! If you need any more specific information as you progress, feel free to ask.\n" - ] - } - ], - "source": [ - "events = graph.stream(\n", - " {\n", - " \"messages\": [\n", - " {\n", - " \"role\": \"user\",\n", - " \"content\": (\n", - " \"Ya that's helpful. Maybe I'll \"\n", - " \"build an autonomous agent with it!\"\n", - " ),\n", - " },\n", - " ],\n", - " },\n", - " config,\n", - " stream_mode=\"values\",\n", - ")\n", - "for event in events:\n", - " if \"messages\" in event:\n", - " event[\"messages\"][-1].pretty_print()" - ] - }, - { - "cell_type": "markdown", - "id": "b2e48c77-65f3-4075-8030-ebf943a281f1", - "metadata": {}, - "source": [ - "Now that we've had the agent take a couple steps, we can `replay` the full state history to see everything that occurred." - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "40953570-66bd-45b9-9469-1d018230d88a", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Num Messages: 8 Next: ()\n", - "--------------------------------------------------------------------------------\n", - "Num Messages: 7 Next: ('chatbot',)\n", - "--------------------------------------------------------------------------------\n", - "Num Messages: 6 Next: ('tools',)\n", - "--------------------------------------------------------------------------------\n", - "Num Messages: 5 Next: ('chatbot',)\n", - "--------------------------------------------------------------------------------\n", - "Num Messages: 4 Next: ('__start__',)\n", - "--------------------------------------------------------------------------------\n", - "Num Messages: 4 Next: ()\n", - "--------------------------------------------------------------------------------\n", - "Num Messages: 3 Next: ('chatbot',)\n", - "--------------------------------------------------------------------------------\n", - "Num Messages: 2 Next: ('tools',)\n", - "--------------------------------------------------------------------------------\n", - "Num Messages: 1 Next: ('chatbot',)\n", - "--------------------------------------------------------------------------------\n", - "Num Messages: 0 Next: ('__start__',)\n", - "--------------------------------------------------------------------------------\n" - ] - } - ], - "source": [ - "to_replay = None\n", - "for state in graph.get_state_history(config):\n", - " print(\"Num Messages: \", len(state.values[\"messages\"]), \"Next: \", state.next)\n", - " print(\"-\" * 80)\n", - " if len(state.values[\"messages\"]) == 6:\n", - " # We are somewhat arbitrarily selecting a specific state based on the number of chat messages in the state.\n", - " to_replay = state" - ] - }, - { - "cell_type": "markdown", - "id": "b182019e-bae3-4616-ba1b-f845c0ab6636", - "metadata": {}, - "source": [ - "**Notice** that checkpoints are saved for every step of the graph. This __spans invocations__ so you can rewind across a full thread's history. We've picked out `to_replay` as a state to resume from. This is the state after the `chatbot` node in the second graph invocation above.\n", - "\n", - "Resuming from this point should call the **action** node next." - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "fdcf00af-8459-4132-85cc-742199391d4f", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "('tools',)\n", - "{'configurable': {'thread_id': '1', 'checkpoint_ns': '', 'checkpoint_id': '1efd43e3-0c1f-6c4e-8006-891877d65740'}}\n" - ] - } - ], - "source": [ - "print(to_replay.next)\n", - "print(to_replay.config)" - ] - }, - { - "cell_type": "markdown", - "id": "7e8c61f5-3a4a-4cce-b81b-43fe1dcc971f", - "metadata": {}, - "source": [ - "**Notice** that the checkpoint's config (`to_replay.config`) contains a `checkpoint_id` **timestamp**. Providing this `checkpoint_id` value tells LangGraph's checkpointer to **load** the state from that moment in time. Let's try it below:" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "c5382e81-bfcd-4508-b02a-099e3d9627fd", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "[{'text': \"That's an exciting idea! Building an autonomous agent with LangGraph is indeed a great application of this technology. LangGraph is particularly well-suited for creating complex, multi-step AI workflows, which is perfect for autonomous agents. Let me gather some more specific information about using LangGraph for building autonomous agents.\", 'type': 'text'}, {'id': 'toolu_01QWNHhUaeeWcGXvA4eHT7Zo', 'input': {'query': 'Building autonomous agents with LangGraph examples and tutorials'}, 'name': 'tavily_search_results_json', 'type': 'tool_use'}]\n", - "Tool Calls:\n", - " tavily_search_results_json (toolu_01QWNHhUaeeWcGXvA4eHT7Zo)\n", - " Call ID: toolu_01QWNHhUaeeWcGXvA4eHT7Zo\n", - " Args:\n", - " query: Building autonomous agents with LangGraph examples and tutorials\n", - "=================================\u001b[1m Tool Message \u001b[0m=================================\n", - "Name: tavily_search_results_json\n", - "\n", - "[{\"url\": \"https://towardsdatascience.com/building-autonomous-multi-tool-agents-with-gemini-2-0-and-langgraph-ad3d7bd5e79d\", \"content\": \"Building Autonomous Multi-Tool Agents with Gemini 2.0 and LangGraph | by Youness Mansar | Jan, 2025 | Towards Data Science Building Autonomous Multi-Tool Agents with Gemini 2.0 and LangGraph A practical tutorial with full code examples for building and running multi-tool agents Towards Data Science LLMs are remarkable — they can memorize vast amounts of information, answer general knowledge questions, write code, generate stories, and even fix your grammar. In this tutorial, we are going to build a simple LLM agent that is equipped with four tools that it can use to answer a user’s question. This Agent will have the following specifications: Follow Published in Towards Data Science --------------------------------- Your home for data science and AI. Follow Follow Follow\"}, {\"url\": \"https://github.com/anmolaman20/Tools_and_Agents\", \"content\": \"GitHub - anmolaman20/Tools_and_Agents: This repository provides resources for building AI agents using Langchain and Langgraph. This repository provides resources for building AI agents using Langchain and Langgraph. This repository provides resources for building AI agents using Langchain and Langgraph. This repository serves as a comprehensive guide for building AI-powered agents using Langchain and Langgraph. It provides hands-on examples, practical tutorials, and resources for developers and AI enthusiasts to master building intelligent systems and workflows. AI Agent Development: Gain insights into creating intelligent systems that think, reason, and adapt in real time. This repository is ideal for AI practitioners, developers exploring language models, or anyone interested in building intelligent systems. This repository provides resources for building AI agents using Langchain and Langgraph.\"}]\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "Great idea! Building an autonomous agent with LangGraph is indeed an excellent way to apply and deepen your understanding of the technology. Based on the search results, I can provide you with some insights and resources to help you get started:\n", - "\n", - "1. Multi-Tool Agents:\n", - " LangGraph is well-suited for building autonomous agents that can use multiple tools. This allows your agent to have a variety of capabilities and choose the appropriate tool based on the task at hand.\n", - "\n", - "2. Integration with Large Language Models (LLMs):\n", - " There's a tutorial that specifically mentions using Gemini 2.0 (Google's LLM) with LangGraph to build autonomous agents. This suggests that LangGraph can be integrated with various LLMs, giving you flexibility in choosing the language model that best fits your needs.\n", - "\n", - "3. Practical Tutorials:\n", - " There are tutorials available that provide full code examples for building and running multi-tool agents. These can be invaluable as you start your project, giving you a concrete starting point and demonstrating best practices.\n", - "\n", - "4. GitHub Resources:\n", - " There's a GitHub repository (github.com/anmolaman20/Tools_and_Agents) that provides resources for building AI agents using both Langchain and Langgraph. This could be a great resource for code examples, tutorials, and understanding how LangGraph fits into the broader LangChain ecosystem.\n", - "\n", - "5. Real-Time Adaptation:\n", - " The resources mention creating intelligent systems that can think, reason, and adapt in real-time. This is a key feature of advanced autonomous agents and something you can aim for in your project.\n", - "\n", - "6. Diverse Applications:\n", - " The materials suggest that these techniques can be applied to various tasks, from answering questions to potentially more complex decision-making processes.\n", - "\n", - "To get started with your autonomous agent project using LangGraph, you might want to:\n", - "\n", - "1. Review the tutorials mentioned, especially those with full code examples.\n", - "2. Explore the GitHub repository for hands-on examples and resources.\n", - "3. Decide on the specific tasks or capabilities you want your agent to have.\n", - "4. Choose an LLM to integrate with LangGraph (like GPT, Gemini, or others).\n", - "5. Start with a simple agent that uses one or two tools, then gradually expand its capabilities.\n", - "6. Implement decision-making logic to help your agent choose between different tools or actions.\n", - "7. Test your agent thoroughly with various inputs and scenarios to ensure robust performance.\n", - "\n", - "Remember, building an autonomous agent is an iterative process. Start simple and gradually increase complexity as you become more comfortable with LangGraph and its capabilities.\n", - "\n", - "Would you like more information on any specific aspect of building your autonomous agent with LangGraph?\n" - ] - } - ], - "source": [ - "# The `checkpoint_id` in the `to_replay.config` corresponds to a state we've persisted to our checkpointer.\n", - "for event in graph.stream(None, to_replay.config, stream_mode=\"values\"):\n", - " if \"messages\" in event:\n", - " event[\"messages\"][-1].pretty_print()" - ] - }, - { - "cell_type": "markdown", - "id": "c2501fed-2591-420d-98e0-4a3836fb99a8", - "metadata": {}, - "source": [ - "Notice that the graph resumed execution from the `**action**` node. You can tell this is the case since the first value printed above is the response from our search engine tool.\n", - "\n", - "**Congratulations!** You've now used time-travel checkpoint traversal in LangGraph. Being able to rewind and explore alternative paths opens up a world of possibilities for debugging, experimentation, and interactive applications." - ] - }, - { - "cell_type": "markdown", - "id": "e584d57f-5aad-4507-815f-0b2e4b64b791", - "metadata": {}, - "source": [ - "## Next Steps\n", - "\n", - "Take your journey further by exploring deployment and advanced features:\n", - "\n", - "### Server Quickstart\n", - "\n", - "- **[LangGraph Server Quickstart](../langgraph-platform/local-server)**: Launch a LangGraph server locally and interact with it using the REST API and LangGraph Studio Web UI.\n", - "\n", - "### LangGraph Cloud\n", - "\n", - "- **[LangGraph Cloud QuickStart](../../cloud/quick_start)**: Deploy your LangGraph app using LangGraph Cloud.\n", - "\n", - "### LangGraph Framework\n", - "\n", - "- **[LangGraph Concepts](../../concepts)**: Learn the foundational concepts of LangGraph. \n", - "- **[LangGraph How-to Guides](../../how-tos)**: Guides for common tasks with LangGraph.\n", - "\n", - "### LangGraph Platform\n", - "\n", - "Expand your knowledge with these resources:\n", - "\n", - "- **[LangGraph Platform Concepts](../../concepts#langgraph-platform)**: Understand the foundational concepts of the LangGraph Platform. \n", - "- **[LangGraph Platform How-to Guides](../../how-tos#langgraph-platform)**: Guides for common tasks with LangGraph Platform. " - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.4" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/docs/docs/tutorials/langgraph-platform/local-server.md b/docs/docs/tutorials/langgraph-platform/local-server.md index 402ee77f7..b8eefd9a8 100644 --- a/docs/docs/tutorials/langgraph-platform/local-server.md +++ b/docs/docs/tutorials/langgraph-platform/local-server.md @@ -1,19 +1,28 @@ -# Quickstart: Launch Local LangGraph Server +# LangGraph Platform quickstart -This is a quick start guide to help you get a LangGraph app up and running locally. +This guide shows you how to run a LangGraph application locally. -!!! info "Requirements" +## Prerequisites - - Python >= 3.11 - - [LangGraph CLI](https://langchain-ai.github.io/langgraph/cloud/reference/cli/): Requires langchain-cli[inmem] >= 0.1.58 +Before you begin, ensure you have the following: -## Install the LangGraph CLI +- An API key for [LangSmith](https://smith.langchain.com/settings) - free to sign up + +This quickstart uses the `react-agent` template and requires the following: + +- An API key for [Anthropic](https://console.anthropic.com/) +- An API key for [OpenAI](https://openai.com/) +- An API key [Tavily](https://app.tavily.com/) + +## 1. Install the LangGraph CLI ```bash +# Python >= 3.11 is required. + pip install --upgrade "langgraph-cli[inmem]" ``` -## 🌱 Create a LangGraph App +## 2. Create a LangGraph app 🌱 Create a new app from the `react-agent` template. This template is a simple agent that can be flexibly extended to many tools. @@ -29,22 +38,31 @@ Create a new app from the `react-agent` template. This template is a simple agen langgraph new path/to/your/app --template react-agent-js ``` -!!! tip "Additional Templates" +!!! tip "Additional templates" If you use `langgraph new` without specifying a template, you will be presented with an interactive menu that will allow you to choose from a list of available templates. -## Install Dependencies +## 3. Install dependencies In the root of your new LangGraph app, install the dependencies in `edit` mode so your local changes are used by the server: -```shell -pip install -e . -``` +=== "Python server" -## Create a `.env` file + ```shell + cd path/to/your/app + pip install -e . + ``` -You will find a `.env.example` in the root of your new LangGraph app. Create -a `.env` file in the root of your new LangGraph app and copy the contents of the `.env.example` file into it, filling in the necessary API keys: +=== "Node server" + + ```shell + cd path/to/your/app + yarn install + ``` + +## 4. Create a `.env` file + +You will find a `.env.example` in the root of your new LangGraph app. Create a `.env` file in the root of your new LangGraph app and copy the contents of the `.env.example` file into it, filling in the necessary API keys: ```bash LANGSMITH_API_KEY=lsv2... @@ -53,21 +71,25 @@ ANTHROPIC_API_KEY=sk- OPENAI_API_KEY=sk-... ``` -??? note "Get API Keys" +## 5. Launch LangGraph Server 🚀 - - **LANGSMITH_API_KEY**: Go to the [LangSmith Settings page](https://smith.langchain.com/settings). Then clck **Create API Key**. - - **ANTHROPIC_API_KEY**: Get an API key from [Anthropic](https://console.anthropic.com/). - - **OPENAI_API_KEY**: Get an API key from [OpenAI](https://openai.com/). - - **TAVILY_API_KEY**: Get an API key on the [Tavily website](https://app.tavily.com/). +Start the LangGraph API server locally: -## 🚀 Launch LangGraph Server +=== "Python Server" + + ```shell + langgraph dev + ``` + +=== "Node Server" + + ```shell + npx @langchain/langgraph-cli dev + ``` + +Sample output: -```shell -langgraph dev ``` - -This will start up the LangGraph API server locally. If this runs successfully, you should see something like: - > Ready! > > - API: [http://localhost:2024](http://localhost:2024/) @@ -75,133 +97,130 @@ This will start up the LangGraph API server locally. If this runs successfully, > - Docs: http://localhost:2024/docs > > - LangGraph Studio Web UI: https://smith.langchain.com/studio/?baseUrl=http://127.0.0.1:2024 +``` +The `langgraph dev` command starts LangGraph Server in an in-memory mode. This mode is suitable for development and testing purposes. For production use, deploy LangGraph Server with access to a persistent storage backend. For more information, see [Deployment options](../../concepts/deployment_options.md). -!!! note "In-Memory Mode" +## 6. Test your application in LangGraph Studio - The `langgraph dev` command starts LangGraph Server in an in-memory mode. This mode is suitable for development and testing purposes. For production use, you should deploy LangGraph Server with access to a persistent storage backend. - - If you want to test your application with a persistent storage backend, you can use the `langgraph up` command instead of `langgraph dev`. You will - need to have `docker` installed on your machine to use this command. - -## LangGraph Studio Web UI - -LangGraph Studio Web is a specialized UI that you can connect to LangGraph API server to enable visualization, interaction, and debugging of your application locally. Test your graph in the LangGraph Studio Web UI by visiting the URL provided in the output of the `langgraph dev` command. +[LangGraph Studio](../../concepts/langgraph_studio.md) is a specialized UI that you can connect to LangGraph API server to visualize, interact with, and debug your application locally. Test your graph in LangGraph Studio by visiting the URL provided in the output of the `langgraph dev` command: +``` > - LangGraph Studio Web UI: https://smith.langchain.com/studio/?baseUrl=http://127.0.0.1:2024 +``` -!!! info "Connecting to a server with a custom host/port" +For a LangGraph Server running on a custom host/port, update the baseURL parameter. - If you are running the LangGraph API server with a custom host / port, you can point the Studio Web UI at it by changing the `baseUrl` URL param. For example, if you are running your server on port 8000, you can change the above URL to the following: - - ``` - https://smith.langchain.com/studio/baseUrl=http://127.0.0.1:8000 - ``` - - -!!! warning "Safari Compatibility" +??? info "Safari compatibility" + + Use the `--tunnel` flag with your command to create a secure tunnel, as Safari has limitations when connecting to localhost servers: - Currently, LangGraph Studio Web does not support Safari when running a server locally. - -## Test the API - -=== "Python SDK (Async)" - - **Install the LangGraph Python SDK** - ```shell - pip install langgraph-sdk + langgraph dev --tunnel ``` - **Send a message to the assistant (threadless run)** +## 7. Test the API - ```python - from langgraph_sdk import get_client +=== "Python SDK (async)" - client = get_client(url="http://localhost:2024") + 1. Install the LangGraph Python SDK: - async for chunk in client.runs.stream( - None, # Threadless run - "agent", # Name of assistant. Defined in langgraph.json. - input={ - "messages": [{ - "role": "human", - "content": "What is LangGraph?", - }], - }, - stream_mode="updates", - ): - print(f"Receiving new event of type: {chunk.event}...") - print(chunk.data) - print("\n\n") - ``` + ```shell + pip install langgraph-sdk + ``` -=== "Python SDK (Sync)" + 1. Send a message to the assistant (threadless run): - **Install the LangGraph Python SDK** + ```python + from langgraph_sdk import get_client + import asyncio - ```shell - pip install langgraph-sdk - ``` + client = get_client(url="http://localhost:2024") - **Send a message to the assistant (threadless run)** + async def main(): + async for chunk in client.runs.stream( + None, # Threadless run + "agent", # Name of assistant. Defined in langgraph.json. + input={ + "messages": [{ + "role": "human", + "content": "What is LangGraph?", + }], + }, + ): + print(f"Receiving new event of type: {chunk.event}...") + print(chunk.data) + print("\n\n") - ```python - from langgraph_sdk import get_sync_client + asyncio.run(main()) + ``` - client = get_sync_client(url="http://localhost:2024") +=== "Python SDK (sync)" - for chunk in client.runs.stream( - None, # Threadless run - "agent", # Name of assistant. Defined in langgraph.json. - input={ - "messages": [{ - "role": "human", - "content": "What is LangGraph?", - }], - }, - stream_mode="updates", - ): - print(f"Receiving new event of type: {chunk.event}...") - print(chunk.data) - print("\n\n") - ``` + 1. Install the LangGraph Python SDK: + + ```shell + pip install langgraph-sdk + ``` + + 1. Send a message to the assistant (threadless run): + + ```python + from langgraph_sdk import get_sync_client + + client = get_sync_client(url="http://localhost:2024") + + for chunk in client.runs.stream( + None, # Threadless run + "agent", # Name of assistant. Defined in langgraph.json. + input={ + "messages": [{ + "role": "human", + "content": "What is LangGraph?", + }], + }, + stream_mode="messages-tuple", + ): + print(f"Receiving new event of type: {chunk.event}...") + print(chunk.data) + print("\n\n") + ``` === "Javascript SDK" - **Install the LangGraph JS SDK** + 1. Install the LangGraph JS SDK: - ```shell - npm install @langchain/langgraph-sdk - ``` + ```shell + npm install @langchain/langgraph-sdk + ``` - **Send a message to the assistant (threadless run)** + 1. Send a message to the assistant (threadless run): - ```js - const { Client } = await import("@langchain/langgraph-sdk"); + ```js + const { Client } = await import("@langchain/langgraph-sdk"); - // only set the apiUrl if you changed the default port when calling langgraph dev - const client = new Client({ apiUrl: "http://localhost:2024"}); + // only set the apiUrl if you changed the default port when calling langgraph dev + const client = new Client({ apiUrl: "http://localhost:2024"}); - const streamResponse = client.runs.stream( - null, // Threadless run - "agent", // Assistant ID - { - input: { - "messages": [ - { "role": "user", "content": "What is LangGraph?"} - ] - }, - streamMode: "messages", + const streamResponse = client.runs.stream( + null, // Threadless run + "agent", // Assistant ID + { + input: { + "messages": [ + { "role": "user", "content": "What is LangGraph?"} + ] + }, + streamMode: "messages-tuple", + } + ); + + for await (const chunk of streamResponse) { + console.log(`Receiving new event of type: ${chunk.event}...`); + console.log(JSON.stringify(chunk.data)); + console.log("\n\n"); } - ); - - for await (const chunk of streamResponse) { - console.log(`Receiving new event of type: ${chunk.event}...`); - console.log(JSON.stringify(chunk.data)); - console.log("\n\n"); - } - ``` + ``` === "Rest API" @@ -219,35 +238,16 @@ LangGraph Studio Web is a specialized UI that you can connect to LangGraph API s } ] }, - \"stream_mode\": \"updates\" + \"stream_mode\": \"messages-tuple\" }" ``` -!!! tip "Auth" - - If you're connecting to a remote server, you will need to provide a LangSmith - API Key for authorization. Please see the API Reference for the clients - for more information. - ## Next Steps Now that you have a LangGraph app running locally, take your journey further by exploring deployment and advanced features: -### 🌐 Deploy to LangGraph Cloud - -- **[LangGraph Cloud Quickstart](../../cloud/quick_start.md)**: Deploy your LangGraph app using LangGraph Cloud. - -### 📚 Learn More about LangGraph Platform - -Expand your knowledge with these resources: - -- **[LangGraph Platform Concepts](../../concepts/index.md#langgraph-platform)**: Understand the foundational concepts of the LangGraph Platform. -- **[LangGraph Platform How-to Guides](../../how-tos/index.md#langgraph-platform)**: Discover step-by-step guides to build and deploy applications. - -### 🛠️ Developer References - -Access detailed documentation for development and API usage: - -- **[LangGraph Server API Reference](../../cloud/reference/api/api_ref.html)**: Explore the LangGraph Server API documentation. -- **[Python SDK Reference](../../cloud/reference/sdk/python_sdk_ref.md)**: Explore the Python SDK API Reference. -- **[JS/TS SDK Reference](../../cloud/reference/sdk/js_ts_sdk_ref.md)**: Explore the JS/TS SDK API Reference. +- [Deployment quickstart](../../cloud/quick_start.md): Deploy your LangGraph app using LangGraph Platform. +- [LangGraph Platform overview](../../concepts/langgraph_platform.md): Learn about foundational LangGraph Platform concepts. +- [LangGraph Server API Reference](../../cloud/reference/api/api_ref.html): Explore the LangGraph Server API documentation. +- [Python SDK Reference](../../cloud/reference/sdk/python_sdk_ref.md): Explore the Python SDK API Reference. +- [JS/TS SDK Reference](../../cloud/reference/sdk/js_ts_sdk_ref.md): Explore the JS/TS SDK API Reference. diff --git a/docs/docs/tutorials/workflows/index.md b/docs/docs/tutorials/workflows.md similarity index 98% rename from docs/docs/tutorials/workflows/index.md rename to docs/docs/tutorials/workflows.md index 0ae1012c7..a96c6d431 100644 --- a/docs/docs/tutorials/workflows/index.md +++ b/docs/docs/tutorials/workflows.md @@ -11,7 +11,7 @@ This guide reviews common patterns for agentic systems. In describing these syst Here is a simple way to visualize these differences: -![Agent Workflow](../../concepts/img/agent_workflow.png) +![Agent Workflow](../concepts/img/agent_workflow.png) When building agents and workflows, LangGraph offers a number of benefits including persistence, streaming, and support for debugging as well as deployment. @@ -47,7 +47,7 @@ llm = ChatAnthropic(model="claude-3-5-sonnet-latest") LLM have augmentations that support building workflows and agents. These include [structured outputs](https://python.langchain.com/docs/concepts/structured_outputs/) and [tool calling](https://python.langchain.com/docs/concepts/tool_calling/), as shown in this image from the Anthropic blog on `Building Effective Agents`: -![augmented_llm.png](./img/augmented_llm.png) +![augmented_llm.png](./workflows/img/augmented_llm.png) ```python @@ -91,7 +91,7 @@ As noted in the Anthropic blog on `Building Effective Agents`: > When to use this workflow: This workflow is ideal for situations where the task can be easily and cleanly decomposed into fixed subtasks. The main goal is to trade off latency for higher accuracy, by making each LLM call an easier task. -![prompt_chain.png](./img/prompt_chain.png) +![prompt_chain.png](./workflows/img/prompt_chain.png) === "Graph API" @@ -252,7 +252,7 @@ With parallelization, LLMs work simultaneously on a task: > When to use this workflow: Parallelization is effective when the divided subtasks can be parallelized for speed, or when multiple perspectives or attempts are needed for higher confidence results. For complex tasks with multiple considerations, LLMs generally perform better when each consideration is handled by a separate LLM call, allowing focused attention on each specific aspect. -![parallelization.png](./img/parallelization.png) +![parallelization.png](./workflows/img/parallelization.png) === "Graph API" @@ -402,7 +402,7 @@ Routing classifies an input and directs it to a followup task. As noted in the A > When to use this workflow: Routing works well for complex tasks where there are distinct categories that are better handled separately, and where classification can be handled accurately, either by an LLM or a more traditional classification model/algorithm. -![routing.png](./img/routing.png) +![routing.png](./workflows/img/routing.png) === "Graph API" @@ -613,7 +613,7 @@ With orchestrator-worker, an orchestrator breaks down a task and delegates each > When to use this workflow: This workflow is well-suited for complex tasks where you can’t predict the subtasks needed (in coding, for example, the number of files that need to be changed and the nature of the change in each file likely depend on the task). Whereas it’s topographically similar, the key difference from parallelization is its flexibility—subtasks aren't pre-defined, but determined by the orchestrator based on the specific input. -![worker.png](./img/worker.png) +![worker.png](./workflows/img/worker.png) === "Graph API" @@ -857,7 +857,7 @@ In the evaluator-optimizer workflow, one LLM call generates a response while ano > When to use this workflow: This workflow is particularly effective when we have clear evaluation criteria, and when iterative refinement provides measurable value. The two signs of good fit are, first, that LLM responses can be demonstrably improved when a human articulates their feedback; and second, that the LLM can provide such feedback. This is analogous to the iterative writing process a human writer might go through when producing a polished document. -![evaluator_optimizer.png](./img/evaluator_optimizer.png) +![evaluator_optimizer.png](./workflows/img/evaluator_optimizer.png) === "Graph API" @@ -1022,7 +1022,7 @@ Agents are typically implemented as an LLM performing actions (via tool-calling) > When to use agents: Agents can be used for open-ended problems where it’s difficult or impossible to predict the required number of steps, and where you can’t hardcode a fixed path. The LLM will potentially operate for many turns, and you must have some level of trust in its decision-making. Agents' autonomy makes them ideal for scaling tasks in trusted environments. -![agent.png](./img/agent.png) +![agent.png](./workflows/img/agent.png) ```python diff --git a/docs/mkdocs.yml b/docs/mkdocs.yml index 5bc53e8ee..167be2d46 100644 --- a/docs/mkdocs.yml +++ b/docs/mkdocs.yml @@ -21,21 +21,20 @@ theme: - content.tooltips - header.autohide - navigation.indexes - - navigation.expand - navigation.footer - navigation.instant - navigation.sections - navigation.instant.prefetch - navigation.instant.progress - navigation.path - - navigation.prune - navigation.tabs + - navigation.tabs.sticky - navigation.top + - navigation.prune - navigation.tracking - search.highlight - search.share - search.suggest - - toc.follow palette: - scheme: default primary: white @@ -92,279 +91,21 @@ plugins: - "!^_" nav: - - LangGraph: + - Guides: - index.md - Get started: - - Learn the basics: tutorials/introduction.ipynb - - Deployment: - - tutorials/deployment.md - - Local Deploy: tutorials/langgraph-platform/local-server.md - - Template Applications: concepts/template_applications.md # TODO: make tutorial - - Cloud Deploy: cloud/quick_start.md - - Guides: - - How-to Guides: - - how-tos/index.md - - LangGraph: - - Graph API Basics: - - how-tos/state-reducers.ipynb - - how-tos/sequence.ipynb - - how-tos/branching.ipynb - - how-tos/recursion-limit.ipynb - - how-tos/visualization.ipynb - - Controllability: - - how-tos/map-reduce.ipynb - - how-tos/command.ipynb - - how-tos/configuration.ipynb - - how-tos/node-retries.ipynb - - how-tos/return-when-recursion-limit-hits.ipynb - - Persistence: - - how-tos/persistence.ipynb - - how-tos/subgraph-persistence.ipynb - - how-tos/cross-thread-persistence.ipynb - - how-tos/persistence_postgres.ipynb - - how-tos/persistence_mongodb.ipynb - - how-tos/persistence_redis.ipynb - - how-tos/persistence-functional.ipynb - - how-tos/cross-thread-persistence-functional.ipynb - - Memory: - - how-tos/memory/manage-conversation-history.ipynb - - how-tos/memory/delete-messages.ipynb - - how-tos/memory/add-summary-conversation-history.ipynb - - how-tos/memory/semantic-search.ipynb - - Human-in-the-loop: - - how-tos/human_in_the_loop/breakpoints.ipynb - - how-tos/human_in_the_loop/dynamic_breakpoints.ipynb - - how-tos/human_in_the_loop/edit-graph-state.ipynb - - how-tos/human_in_the_loop/wait-user-input.ipynb - - how-tos/human_in_the_loop/time-travel.ipynb - - how-tos/human_in_the_loop/review-tool-calls.ipynb - - how-tos/wait-user-input-functional.ipynb - - how-tos/review-tool-calls-functional.ipynb - - Streaming: - - how-tos/streaming.ipynb - - how-tos/streaming-tokens.ipynb - - how-tos/streaming-specific-nodes.ipynb - - how-tos/streaming-events-from-within-tools.ipynb - - how-tos/streaming-subgraphs.ipynb - - how-tos/disable-streaming.ipynb - - Tool calling: - - how-tos/tool-calling.ipynb - - how-tos/tool-calling-errors.ipynb - - how-tos/pass-run-time-values-to-tools.ipynb - - how-tos/update-state-from-tools.ipynb - - how-tos/pass-config-to-tools.ipynb - - how-tos/many-tools.ipynb - - Subgraphs: - - how-tos/subgraph.ipynb - - how-tos/subgraphs-manage-state.ipynb - - how-tos/subgraph-transform-state.ipynb - - Multi-agent: - - how-tos/agent-handoffs.ipynb - - how-tos/multi-agent-network.ipynb - - how-tos/multi-agent-multi-turn-convo.ipynb - - how-tos/multi-agent-network-functional.ipynb - - how-tos/multi-agent-multi-turn-convo-functional.ipynb - - State Management: - - how-tos/state-model.ipynb - - how-tos/input_output_schema.ipynb - - how-tos/pass_private_state.ipynb - - Other: - - how-tos/async.ipynb - - how-tos/react-agent-structured-output.ipynb - - how-tos/run-id-langsmith.ipynb - - how-tos/autogen-integration.ipynb - - how-tos/autogen-integration-functional.ipynb - - Prebuilt ReAct Agent: - - how-tos/create-react-agent-manage-message-history.ipynb - - how-tos/react-agent-from-scratch.ipynb - - how-tos/react-agent-from-scratch-functional.ipynb - - LangGraph Platform: - - Application Structure: - - cloud/deployment/setup.md - - cloud/deployment/setup_pyproject.md - - cloud/deployment/setup_javascript.md - - cloud/deployment/semantic_search.md - - cloud/deployment/custom_docker.md - - cloud/deployment/test_locally.md - - cloud/deployment/graph_rebuild.md - - how-tos/autogen-langgraph-platform.ipynb - - Deployment: - - cloud/deployment/cloud.md - - cloud/deployment/self_hosted_data_plane.md - - cloud/deployment/self_hosted_control_plane.md - - cloud/deployment/standalone_container.md - - how-tos/deploy-self-hosted.md - - how-tos/use-remote-graph.md - - how-tos/ttl/configure_ttl.md - - Data Management: - - how-tos/ttl/configure_ttl.md - - Authentication & Access Control: - - how-tos/auth/custom_auth.md - - how-tos/auth/openapi_security.md - - Assistants: - - cloud/how-tos/configuration_cloud.md - - cloud/how-tos/assistant_versioning.md - - Threads: - - cloud/how-tos/copy_threads.md - - cloud/how-tos/check_thread_status.md - - Runs: - - cloud/how-tos/background_run.md - - cloud/how-tos/same-thread.md - - cloud/how-tos/cron_jobs.md - - cloud/how-tos/stateless_runs.md - - cloud/how-tos/configurable_headers.md - - Streaming: - - cloud/how-tos/stream_values.md - - cloud/how-tos/stream_updates.md - - cloud/how-tos/stream_messages.md - - cloud/how-tos/stream_events.md - - cloud/how-tos/stream_debug.md - - cloud/how-tos/stream_multiple.md - - cloud/how-tos/use_stream_react.md - - cloud/how-tos/generative_ui_react.md - - Human-in-the-loop: - - cloud/how-tos/human_in_the_loop_breakpoint.md - - cloud/how-tos/human_in_the_loop_user_input.md - - cloud/how-tos/human_in_the_loop_edit_state.md - - cloud/how-tos/human_in_the_loop_time_travel.md - - cloud/how-tos/human_in_the_loop_review_tool_calls.md - - Double-texting: - - cloud/how-tos/interrupt_concurrent.md - - cloud/how-tos/rollback_concurrent.md - - cloud/how-tos/reject_concurrent.md - - cloud/how-tos/enqueue_concurrent.md - - Webhooks: - - cloud/how-tos/webhooks.md - - Cron Jobs: - - cloud/how-tos/cron_jobs.md - - Modifying the API: - - how-tos/http/custom_lifespan.md - - how-tos/http/custom_middleware.md - - how-tos/http/custom_routes.md - - LangGraph Studio: - - cloud/how-tos/test_deployment.md - - cloud/how-tos/test_local_deployment.md - - cloud/how-tos/invoke_studio.md - - cloud/how-tos/threads_studio.md - - cloud/how-tos/datasets_studio.md - - cloud/how-tos/iterate_graph_studio.md - - cloud/how-tos/clone_traces_studio.md - - how-tos/local-studio.md - - Concepts: - - concepts/index.md - - LangGraph: - - concepts/high_level.md - - concepts/low_level.md - - concepts/agentic_concepts.md - - concepts/multi_agent.md - - concepts/breakpoints.md - - concepts/human_in_the_loop.md - - concepts/v0-human-in-the-loop.md - - concepts/time-travel.md - - concepts/persistence.md - - concepts/memory.md - - concepts/streaming.md - - concepts/functional_api.md - - concepts/durable_execution.md - - concepts/pregel.md - - LangGraph Platform: - - High Level: - - concepts/langgraph_platform.md - - concepts/platform_architecture.md - - concepts/scalability_and_resilience.md - - concepts/deployment_options.md - - concepts/bring_your_own_cloud.md - - concepts/plans.md - - concepts/template_applications.md - - Components: - - concepts/langgraph_control_plane.md - - concepts/langgraph_data_plane.md - - concepts/langgraph_server.md - - concepts/langgraph_studio.md - - concepts/langgraph_cli.md - - concepts/sdk.md - - how-tos/use-remote-graph.md - - LangGraph Server: - - concepts/application_structure.md - - concepts/assistants.md - - concepts/double_texting.md - - concepts/auth.md - - concepts/server-mcp.md - - Deployment Options: - - concepts/langgraph_cloud.md - - concepts/langgraph_self_hosted_data_plane.md - - concepts/langgraph_self_hosted_control_plane.md - - concepts/langgraph_standalone_container.md - - concepts/self_hosted.md - - Tutorials: - - tutorials/index.md - - Quick Start: - - tutorials/introduction.ipynb - - tutorials/workflows/index.md - - tutorials/langgraph-platform/local-server.md - - cloud/quick_start.md - - Chatbots: - - tutorials/customer-support/customer-support.ipynb - - tutorials/chatbots/information-gather-prompting.ipynb - - tutorials/code_assistant/langgraph_code_assistant.ipynb - - RAG: - - tutorials/rag/langgraph_adaptive_rag.ipynb - - tutorials/rag/langgraph_adaptive_rag_local.ipynb - - tutorials/rag/langgraph_agentic_rag.ipynb - - tutorials/rag/langgraph_crag.ipynb - - tutorials/rag/langgraph_crag_local.ipynb - - tutorials/rag/langgraph_self_rag.ipynb - - tutorials/rag/langgraph_self_rag_local.ipynb - - tutorials/sql-agent.ipynb - - Agent Architectures: - - Multi-Agent Systems: - - tutorials/multi_agent/multi-agent-collaboration.ipynb - - tutorials/multi_agent/agent_supervisor.ipynb - - tutorials/multi_agent/hierarchical_agent_teams.ipynb - - Planning Agents: - - tutorials/plan-and-execute/plan-and-execute.ipynb - - tutorials/rewoo/rewoo.ipynb - - tutorials/llm-compiler/LLMCompiler.ipynb - - Reflection & Critique: - - tutorials/reflection/reflection.ipynb - - tutorials/reflexion/reflexion.ipynb - - tutorials/tot/tot.ipynb - - tutorials/lats/lats.ipynb - - tutorials/self-discover/self-discover.ipynb - - Evaluation & Analysis: - - tutorials/chatbot-simulation-evaluation/agent-simulation-evaluation.ipynb - - tutorials/chatbot-simulation-evaluation/langsmith-agent-simulation-evaluation.ipynb - - Experimental: - - tutorials/storm/storm.ipynb - - tutorials/tnt-llm/tnt-llm.ipynb - - tutorials/web-navigation/web_voyager.ipynb - - tutorials/usaco/usaco.ipynb - - tutorials/extraction/retries.ipynb - - LangGraph Platform: - - tutorials/auth/getting_started.md - - tutorials/auth/resource_auth.md - - tutorials/auth/add_auth_server.md - - Resources: - - Companies using LangGraph: adopters.md - - LLMS-txt: llms-txt-overview.md - - FAQ: concepts/faq.md - - Troubleshooting: - - Troubleshooting: troubleshooting/errors/index.md - - troubleshooting/errors/index.md - - troubleshooting/errors/GRAPH_RECURSION_LIMIT.md - - troubleshooting/errors/INVALID_CONCURRENT_GRAPH_UPDATE.md - - troubleshooting/errors/INVALID_GRAPH_NODE_RETURN_VALUE.md - - troubleshooting/errors/MULTIPLE_SUBGRAPHS.md - - troubleshooting/errors/INVALID_CHAT_HISTORY.md - - troubleshooting/errors/INVALID_LICENSE.md - - troubleshooting/studio.md - - LangGraph Academy Course: https://academy.langchain.com/courses/intro-to-langgraph - - - Agents: - - agents/overview.md - - Get started: - - agents/agents.md - - Documentation: + - Quickstart: agents/agents.md + - LangGraph basics: + - concepts/why-langgraph.md + - Build a basic chatbot: tutorials/get-started/1-build-basic-chatbot.md + - tutorials/get-started/2-add-tools.md + - tutorials/get-started/3-add-memory.md + - Add human-in-the-loop: tutorials/get-started/4-human-in-the-loop.md + - tutorials/get-started/5-customize-state.md + - tutorials/get-started/6-time-travel.md + - Deployment: tutorials/deployment.md + - Prebuilt agents: + - Overview: agents/overview.md - agents/run_agents.md - agents/streaming.md - agents/models.md @@ -377,21 +118,158 @@ nav: - agents/evals.md - agents/deployment.md - agents/ui.md - - Resources: - # NOTE: prebuilt.md is auto-generated by `make build-prebuilt` - - agents/prebuilt.md + - LangGraph framework: + - Agent architectures: + - Overview: concepts/agentic_concepts.md + - Workflows & agents: tutorials/workflows.md + - Graphs: + - Overview: concepts/low_level.md + - Use the Graph API: how-tos/graph-api.ipynb + - Persistence: + - Overview: concepts/persistence.md + - concepts/durable_execution.md + - how-tos/persistence.ipynb + - Memory: + - Overview: concepts/memory.md + - Manage memory: how-tos/memory.ipynb + - Human-in-the-loop: + - Overview: concepts/human_in_the_loop.md + - how-tos/human_in_the_loop/add-human-in-the-loop.md + - Streaming: + - Overview: concepts/streaming.md + - "Stream outputs": how-tos/streaming.md + - Breakpoints: + - Overview: concepts/breakpoints.md + - how-tos/human_in_the_loop/breakpoints.ipynb + - Time travel: + - Overview: concepts/time-travel.md + - how-tos/human_in_the_loop/time-travel.ipynb + - Tools: + - Overview: concepts/tools.md + - how-tos/tool-calling.ipynb + - Subgraphs: + - Overview: concepts/subgraphs.md + - how-tos/subgraph.ipynb + - Multi-agent: + - Overview: concepts/multi_agent.md + - how-tos/multi_agent.ipynb + - Functional API: + - Overview: concepts/functional_api.md + - how-tos/use-functional-api.md + - concepts/pregel.md + - Other: + # We want to push async higher (need to check the content inside it) + # and convert it into a concept rather than a how-to page. + - how-tos/async.ipynb + - how-tos/run-id-langsmith.ipynb + - how-tos/autogen-integration.ipynb + + - LangGraph Platform: + - Overview: concepts/langgraph_platform.md + - Get started: + - Quickstart: tutorials/langgraph-platform/local-server.md + - Deployment quickstart: cloud/quick_start.md + - Components: + - Overview: concepts/langgraph_components.md + - LangGraph Server: + - Overview: concepts/langgraph_server.md + - Application structure: + - Overview: concepts/application_structure.md + - cloud/deployment/setup.md + - cloud/deployment/setup_pyproject.md + - cloud/deployment/setup_javascript.md + - cloud/deployment/custom_docker.md + - LangGraph CLI: concepts/langgraph_cli.md + - LangGraph Studio: + - Overview: concepts/langgraph_studio.md + - Quickstart: cloud/how-tos/studio/quick_start.md + - cloud/how-tos/invoke_studio.md + - cloud/how-tos/threads_studio.md + - cloud/how-tos/datasets_studio.md + - cloud/how-tos/iterate_graph_studio.md + - cloud/how-tos/clone_traces_studio.md + - LangGraph SDK: concepts/sdk.md + - Data management: + - cloud/deployment/semantic_search.md + - how-tos/ttl/configure_ttl.md + - Authentication & access control: + - Overview: concepts/auth.md + - how-tos/auth/custom_auth.md + - how-tos/auth/openapi_security.md + - Assistants: + - Overview: concepts/assistants.md + - cloud/how-tos/configuration_cloud.md + - cloud/how-tos/assistant_versioning.md + - Threads: + - Overview: cloud/concepts/threads.md + - cloud/how-tos/copy_threads.md + - cloud/how-tos/check_thread_status.md + - Runs: + - Overview: cloud/concepts/runs.md + - cloud/how-tos/background_run.md + - cloud/how-tos/same-thread.md + - cloud/how-tos/cron_jobs.md + - cloud/how-tos/stateless_runs.md + - cloud/how-tos/configurable_headers.md + - Streaming: + - Overview: cloud/concepts/streaming.md + - cloud/how-tos/streaming.md + - Human-in-the-loop: + - cloud/how-tos/human_in_the_loop_breakpoint.md + - cloud/how-tos/human_in_the_loop_user_input.md + - cloud/how-tos/human_in_the_loop_edit_state.md + - cloud/how-tos/human_in_the_loop_time_travel.md + - cloud/how-tos/human_in_the_loop_review_tool_calls.md + - MCP: + - Overview: concepts/server-mcp.md + - Double-texting: + - Overview: concepts/double_texting.md + - cloud/how-tos/interrupt_concurrent.md + - cloud/how-tos/rollback_concurrent.md + - cloud/how-tos/reject_concurrent.md + - cloud/how-tos/enqueue_concurrent.md + - Webhooks: + - Overview: cloud/concepts/webhooks.md + - cloud/how-tos/webhooks.md + - Cron Jobs: + - Overview: cloud/concepts/cron_jobs.md + - cloud/how-tos/cron_jobs.md + - Server Customization: + - how-tos/http/custom_lifespan.md + - how-tos/http/custom_middleware.md + - how-tos/http/custom_routes.md + - Deployment: + - Overview: concepts/deployment_options.md + - Data Plane: concepts/langgraph_data_plane.md + - Control Plane: concepts/langgraph_control_plane.md + - Deployment options: + - Cloud SaaS: + - Overview: concepts/langgraph_cloud.md + - Deploy Cloud SaaS: cloud/deployment/cloud.md + - Self-Hosted Data Plane: + - Overview: concepts/langgraph_self_hosted_data_plane.md + - Deploy Self-Hosted Data Plane: cloud/deployment/self_hosted_data_plane.md + - Self-Hosted Control Plane: + - Overview: concepts/langgraph_self_hosted_control_plane.md + - Deploy Self-Hosted Control Plane: cloud/deployment/self_hosted_control_plane.md + - Standalone Container: + - Overview: concepts/langgraph_standalone_container.md + - Deploy Standalone Container: cloud/deployment/standalone_container.md + - Scalability and resilience: concepts/scalability_and_resilience.md + - Plans and pricing: concepts/plans.md + - Reference: - reference/index.md - LangGraph: - Graphs: reference/graphs.md + - Functional API: reference/func.md + - Pregel: reference/pregel.md - Checkpointing: reference/checkpoints.md - Storage: reference/store.md - Types: reference/types.md - Config: reference/config.md - - Functional API: reference/func.md - Errors: reference/errors.md - Constants: reference/constants.md - - Pregel: reference/pregel.md - Channels: reference/channels.md - Prebuilt: - Agents: reference/agents.md @@ -399,12 +277,48 @@ nav: - Swarm: reference/swarm.md - MCP Adapters: reference/mcp.md - LangGraph Platform: - - Server API: "cloud/reference/api/api_ref.md" - - CLI: "cloud/reference/cli.md" - - SDK (Python): "cloud/reference/sdk/python_sdk_ref.md" - - SDK (JS/TS): "cloud/reference/sdk/js_ts_sdk_ref.md" + - Server API: cloud/reference/api/api_ref.md + - CLI: cloud/reference/cli.md + - SDK (Python): cloud/reference/sdk/python_sdk_ref.md + - SDK (JS/TS): cloud/reference/sdk/js_ts_sdk_ref.md - RemoteGraph: reference/remote_graph.md - - Environment variables: "cloud/reference/env_var.md" + - Environment variables: cloud/reference/env_var.md + + - Examples: + - Agentic RAG: tutorials/rag/langgraph_agentic_rag.ipynb + - Agent Supervisor: tutorials/multi_agent/agent_supervisor.ipynb + - Customer Support: tutorials/customer-support/customer-support.ipynb + - SQL agent: tutorials/sql-agent.ipynb + - LangGraph Platform: + - Authentication: + - tutorials/auth/getting_started.md + - tutorials/auth/resource_auth.md + - tutorials/auth/add_auth_server.md + - Rebuild graph at runtime: cloud/deployment/graph_rebuild.md + - how-tos/use-remote-graph.md + - how-tos/autogen-langgraph-platform.ipynb + - Front-end and generative UI: + - Integrate LangGraph into a React app: cloud/how-tos/use_stream_react.md + - Implement generative UI with LangGraph: cloud/how-tos/generative_ui_react.md + + - Resources: + - concepts/faq.md + - agents/prebuilt.md # NOTE: prebuilt.md is auto-generated by `make build-prebuilt` + - Template applications: concepts/template_applications.md # TODO: make tutorial + - llms.txt: llms-txt-overview.md + - Troubleshooting: + - Errors: + - troubleshooting/errors/index.md + - troubleshooting/errors/GRAPH_RECURSION_LIMIT.md + - troubleshooting/errors/INVALID_CONCURRENT_GRAPH_UPDATE.md + - troubleshooting/errors/INVALID_GRAPH_NODE_RETURN_VALUE.md + - troubleshooting/errors/MULTIPLE_SUBGRAPHS.md + - troubleshooting/errors/INVALID_CHAT_HISTORY.md + - troubleshooting/errors/INVALID_LICENSE.md + - LangGraph Studio: troubleshooting/studio.md + - Learn: + - LangGraph Academy course: https://academy.langchain.com/courses/intro-to-langgraph + - Case studies: adopters.md markdown_extensions: - abbr @@ -500,7 +414,7 @@ extra: validation: # https://www.mkdocs.org/user-guide/configuration/ # We are still raising for omitted files because they determine the breadcrumbs for pages. - omitted_files: warn + omitted_files: info absolute_links: warn unrecognized_links: warn # TODO: figure out how to enable 'warn' for this @@ -513,5 +427,7 @@ validation: copyright: > Copyright © 2025 LangChain, Inc | Consent Preferences extra_css: + - stylesheets/navigation_title_ovverides.css - stylesheets/version_admonitions.css - stylesheets/logos.css + - stylesheets/sticky_navigation.css \ No newline at end of file diff --git a/docs/overrides/main.html b/docs/overrides/main.html index 9fb05670c..c2e7fe9e4 100644 --- a/docs/overrides/main.html +++ b/docs/overrides/main.html @@ -169,6 +169,10 @@ color: #000000; } + .md-header__title { + visibility: hidden; + } + /* Dark mode banner links */ [data-md-color-scheme="slate"] .md-banner a { color: #000000; @@ -178,15 +182,6 @@ color: #000000; } - /* control the navbar depth */ - [data-md-level="2"] .md-nav { - display: none; - } - - /* disable the collapse/expand icon in the navar */ - .md-nav__icon { - display: none; - } {% endblock %} diff --git a/docs/snippets/chat_model_tabs.md b/docs/snippets/chat_model_tabs.md new file mode 100644 index 000000000..107b493fc --- /dev/null +++ b/docs/snippets/chat_model_tabs.md @@ -0,0 +1,79 @@ +=== "OpenAI" + + ``` + pip install -U "langchain[openai]" + ``` + ```python + import os + from langchain.chat_models import init_chat_model + + os.environ["OPENAI_API_KEY"] = "sk-..." + + llm = init_chat_model("openai:gpt-4.1") + ``` + +=== "Anthropic" + + ``` + pip install -U "langchain[anthropic]" + ``` + ```python + import os + from langchain.chat_models import init_chat_model + + os.environ["ANTHROPIC_API_KEY"] = "sk-..." + + llm = init_chat_model("anthropic:claude-3-5-sonnet-latest") + ``` + +=== "Azure" + + ``` + pip install -U "langchain[openai]" + ``` + ```python + import os + from langchain.chat_models import init_chat_model + + os.environ["AZURE_OPENAI_API_KEY"] = "..." + os.environ["AZURE_OPENAI_ENDPOINT"] = "..." + os.environ["OPENAI_API_VERSION"] = "2025-03-01-preview" + + llm = init_chat_model( + "azure_openai:gpt-4.1", + azure_deployment=os.environ["AZURE_OPENAI_DEPLOYMENT_NAME"], + ) + ``` + + +=== "Google Gemini" + + ``` + pip install -U "langchain[google-genai]" + ``` + ```python + import os + from langchain.chat_models import init_chat_model + + os.environ["GOOGLE_API_KEY"] = "..." + + llm = init_chat_model("google_genai:gemini-2.0-flash") + ``` + +=== "AWS Bedrock" + + ``` + pip install -U "langchain[aws]" + ``` + ```python + import os + from langchain.chat_models import init_chat_model + + # Follow the steps here to configure your credentials: + # https://docs.aws.amazon.com/bedrock/latest/userguide/getting-started.html + + llm = init_chat_model( + "anthropic.claude-3-5-sonnet-20240620-v1:0", + model_provider="bedrock_converse", + ) + ``` diff --git a/docs/stats.yml b/docs/stats.yml new file mode 100644 index 000000000..1e8abb034 --- /dev/null +++ b/docs/stats.yml @@ -0,0 +1,58 @@ +# This file is auto-generated. Do not edit. +- description: Tenacious tool calling built on LangGraph. + name: trustcall + repo: hinthornw/trustcall + weekly_downloads: -12345 +- description: A streamlined research system built inspired on STORM and built on + LangGraph. + name: breeze-agent + repo: andrestorres123/breeze-agent + weekly_downloads: -12345 +- description: Build supervisor multi-agent systems with LangGraph. + name: langgraph-supervisor + repo: langchain-ai/langgraph-supervisor-py + weekly_downloads: -12345 +- description: Build agents that learn and adapt from interactions over time. + name: langmem + repo: langchain-ai/langmem + weekly_downloads: -12345 +- description: Make Anthropic Model Context Protocol (MCP) tools compatible with LangGraph + agents. + name: langchain-mcp-adapters + repo: langchain-ai/langchain-mcp-adapters + weekly_downloads: -12345 +- description: Open source assistant for iterative web research and report writing. + name: open-deep-research + repo: langchain-ai/open_deep_research + weekly_downloads: -12345 +- description: Build swarm-style multi-agent systems using LangGraph. + name: langgraph-swarm + repo: langchain-ai/langgraph-swarm-py + weekly_downloads: -12345 +- description: A taxonomy generator for unstructured data + name: delve-taxonomy-generator + repo: andrestorres123/delve + weekly_downloads: -12345 +- description: Enable researcher to build scientific workflows easily with simplified + interface. + name: nodeology + repo: xyin-anl/Nodeology + weekly_downloads: -12345 +- description: Build LangGraph agents with large numbers of tools. + name: langgraph-bigtool + repo: langchain-ai/langgraph-bigtool + weekly_downloads: -12345 +- description: An AI-powered data science team of agents to help you perform common + data science tasks 10X faster. + name: ai-data-science-team + repo: business-science/ai-data-science-team + weekly_downloads: -12345 +- description: LangGraph agent that runs a reflection step. + name: langgraph-reflection + repo: langchain-ai/langgraph-reflection + weekly_downloads: -12345 +- description: LangGraph implementation of CodeAct agent that generates and executes + code instead of tool calling. + name: langgraph-codeact + repo: langchain-ai/langgraph-codeact + weekly_downloads: -12345 diff --git a/examples/introduction.ipynb b/examples/introduction.ipynb deleted file mode 100644 index ef8da7c11..000000000 --- a/examples/introduction.ipynb +++ /dev/null @@ -1,39 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "08c0351b", - "metadata": {}, - "source": [ - "This file has been moved to https://github.com/langchain-ai/langgraph/blob/main/docs/docs/tutorials/introduction.ipynb" - ] - }, - { - "cell_type": "markdown", - "id": "e8363fbc", - "metadata": {}, - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "env", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.9" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/libs/langgraph/README.md b/libs/langgraph/README.md index 799ab4b9a..ae8f0084f 100644 --- a/libs/langgraph/README.md +++ b/libs/langgraph/README.md @@ -16,48 +16,41 @@ > [!NOTE] > Looking for the JS version? See the [JS repo](https://github.com/langchain-ai/langgraphjs) and the [JS docs](https://langchain-ai.github.io/langgraphjs/). -LangGraph — used by Replit, Uber, LinkedIn, GitLab and more — is a low-level orchestration framework for building controllable agents. While langchain provides integrations and composable components to streamline LLM application development, the LangGraph library enables agent orchestration — offering customizable architectures, long-term memory, and human-in-the-loop to reliably handle complex tasks. +LangGraph is a low-level orchestration framework for building controllable agents. While [LangChain](https://python.langchain.com/docs/introduction/) provides integrations and composable components to streamline LLM application development, the LangGraph library enables agent orchestration — offering customizable architectures, long-term memory, and human-in-the-loop to reliably handle complex tasks. -```bash +## Get started + +First, install LangGraph: + +``` pip install -U langgraph ``` -To learn more about how to use LangGraph, check out [the docs](https://langchain-ai.github.io/langgraph/). We show a simple example below of how to create a ReAct agent. +There are two ways to get started with LangGraph: -```python -# This code depends on pip install langchain[anthropic] -from langgraph.prebuilt import create_react_agent +- [Use prebuilt components](https://langchain-ai.github.io/langgraph/agents/agents/): Construct agentic systems quickly and reliably without the need to implement orchestration, memory, or human feedback handling from scratch. +- [Use LangGraph](https://langchain-ai.github.io/langgraph/tutorials/introduction/): Customize your architectures, use long-term memory, and implement human-in-the-loop to reliably handle complex tasks. -def search(query: str): - """Call to surf the web.""" - if "sf" in query.lower() or "san francisco" in query.lower(): - return "It's 60 degrees and foggy." - return "It's 90 degrees and sunny." +Once you have a LangGraph application and are ready to move into production, use [LangGraph Platform](https://langchain-ai.github.io/langgraph/cloud/quick_start/) to test, debug, and deploy your application. -agent = create_react_agent("anthropic:claude-3-7-sonnet-latest", tools=[search]) -agent.invoke( - {"messages": [{"role": "user", "content": "what is the weather in sf"}]} -) -``` +## What LangGraph provides -> [!TIP] -> Check out [this guide](https://langchain-ai.github.io/langgraph/tutorials/workflows/) that walks through implementing common patterns (workflows and agents) in LangGraph. +LangGraph provides low-level supporting infrastructure that sits underneath *any* workflow or agent. It does not abstract prompts or architecture, and provides three central benefits: -## Why use LangGraph? +### Persistence -LangGraph is built for developers who want to build powerful, adaptable AI agents. Developers choose LangGraph for: +LangGraph has a [persistence layer](https://langchain-ai.github.io/langgraph/concepts/persistence/), which offers a number of benefits: -- **Reliability and controllability.** Steer agent actions with moderation checks and human-in-the-loop approvals. LangGraph persists context for long-running workflows, keeping your agents on course. -- **Low-level and extensible.** Build custom agents with fully descriptive, low-level primitives – free from rigid abstractions that limit customization. Design scalable multi-agent systems, with each agent serving a specific role tailored to your use case. -- **First-class streaming support.** With token-by-token streaming and streaming of intermediate steps, LangGraph gives users clear visibility into agent reasoning and actions as they unfold in real time. +- [Memory](https://langchain-ai.github.io/langgraph/concepts/memory/): LangGraph persists arbitrary aspects of your application's state, supporting memory of conversations and other updates within and across user interactions; +- [Human-in-the-loop](https://langchain-ai.github.io/langgraph/concepts/human_in_the_loop/): Because state is checkpointed, execution can be interrupted and resumed, allowing for decisions, validation, and corrections via human input. -LangGraph is trusted in production and powering agents for companies like: +### Streaming -- [Klarna](https://blog.langchain.dev/customers-klarna/): Customer support bot for 85 million active users -- [Elastic](https://www.elastic.co/blog/elastic-security-generative-ai-features): Security AI assistant for threat detection -- [Uber](https://dpe.org/sessions/ty-smith-adam-huda/this-year-in-ubers-ai-driven-developer-productivity-revolution/): Automated unit test generation -- [Replit](https://www.langchain.com/breakoutagents/replit): Code generation -- And many more ([see list here](https://www.langchain.com/built-with-langgraph)) +LangGraph provides support for [streaming](https://langchain-ai.github.io/langgraph/concepts/streaming/) workflow / agent state to the user (or developer) over the course of execution. LangGraph supports streaming of both events ([such as feedback from a tool call](https://langchain-ai.github.io/langgraph/how-tos/streaming.ipynb#updates)) and [tokens from LLM calls](https://langchain-ai.github.io/langgraph/how-tos/streaming-tokens.ipynb) embedded in an application. + +### Debugging and deployment + +LangGraph provides an easy onramp for testing, debugging, and deploying applications via [LangGraph Platform](https://langchain-ai.github.io/langgraph/concepts/langgraph_platform/). This includes [Studio](https://langchain-ai.github.io/langgraph/concepts/langgraph_studio/), an IDE that enables visualization, interaction, and debugging of workflows or agents. This also includes numerous [options](https://langchain-ai.github.io/langgraph/tutorials/deployment/) for deployment. ## LangGraph’s ecosystem @@ -66,24 +59,14 @@ While LangGraph can be used standalone, it also integrates seamlessly with any L - [LangSmith](http://www.langchain.com/langsmith) — Helpful for agent evals and observability. Debug poor-performing LLM app runs, evaluate agent trajectories, gain visibility in production, and improve performance over time. - [LangGraph Platform](https://langchain-ai.github.io/langgraph/concepts/#langgraph-platform) — Deploy and scale agents effortlessly with a purpose-built deployment platform for long running, stateful workflows. Discover, reuse, configure, and share agents across teams — and iterate quickly with visual prototyping in [LangGraph Studio](https://langchain-ai.github.io/langgraph/concepts/langgraph_studio/). -## Pairing with LangGraph Platform - -While LangGraph is our open-source agent orchestration framework, enterprises that need scalable agent deployment can benefit from [LangGraph Platform](https://langchain-ai.github.io/langgraph/concepts/langgraph_platform/). - -LangGraph Platform can help engineering teams: - -- **Accelerate agent development**: Quickly create agent UXs with configurable templates and [LangGraph Studio](https://langchain-ai.github.io/langgraph/concepts/langgraph_studio/) for visualizing and debugging agent interactions. -- **Deploy seamlessly**: We handle the complexity of deploying your agent. LangGraph Platform includes robust APIs for memory, threads, and cron jobs plus auto-scaling task queues & servers. -- **Centralize agent management & reusability**: Discover, reuse, and manage agents across the organization. Business users can also modify agents without coding. - ## Additional resources +- [Guides](https://langchain-ai.github.io/langgraph/how-tos/): Quick, actionable code snippets for topics such as streaming, adding memory & persistence, and design patterns (e.g. branching, subgraphs, etc.). +- [Reference](https://langchain-ai.github.io/langgraph/reference/graphs/): Detailed reference on core classes, methods, how to use the graph and checkpointing APIs, and higher-level prebuilt components. +- [Examples](https://langchain-ai.github.io/langgraph/tutorials/): Guided examples on getting started with LangGraph. - [LangChain Academy](https://academy.langchain.com/courses/intro-to-langgraph): Learn the basics of LangGraph in our free, structured course. -- [Tutorials](https://langchain-ai.github.io/langgraph/tutorials/): Simple walkthroughs with guided examples on getting started with LangGraph. - [Templates](https://langchain-ai.github.io/langgraph/concepts/template_applications/): Pre-built reference apps for common agentic workflows (e.g. ReAct agent, memory, retrieval etc.) that can be cloned and adapted. -- [How-to Guides](https://langchain-ai.github.io/langgraph/how-tos/): Quick, actionable code snippets for topics such as streaming, adding memory & persistence, and design patterns (e.g. branching, subgraphs, etc.). -- [API Reference](https://langchain-ai.github.io/langgraph/reference/graphs/): Detailed reference on core classes, methods, how to use the graph and checkpointing APIs, and higher-level prebuilt components. -- [Built with LangGraph](https://www.langchain.com/built-with-langgraph): Hear how industry leaders use LangGraph to ship powerful, production-ready AI applications. +- [Case studies](https://www.langchain.com/built-with-langgraph): Hear how industry leaders use LangGraph to ship powerful, production-ready AI applications. ## Acknowledgements