diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 4a8c340292a..b2fba4a8ea3 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,13 +1,21 @@ { - "extensions": ["ms-python.python", "visualstudioexptteam.vscodeintellicode"], - "dockerFile": "Dockerfile", - "settings": { - "terminal.integrated.profiles.linux": { - "bash": { - "path": "/bin/bash" + "customizations": { + "vscode": { + "extensions": [ + "ms-python.python", + "ms-toolsai.jupyter", + "visualstudioexptteam.vscodeintellicode" + ], + "settings": { + "terminal.integrated.profiles.linux": { + "bash": { + "path": "/bin/bash" + } + }, + "terminal.integrated.defaultProfile.linux": "bash" } - }, - "terminal.integrated.defaultProfile.linux": "bash" + } }, + "dockerFile": "Dockerfile", "updateContentCommand": "pip install -e . pre-commit && pre-commit install" } diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 63ca0a25460..3cdb6293b27 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -40,8 +40,12 @@ jobs: python -m pip install --upgrade pip wheel pip install -e . python -c "import autogen" - pip install -e.[mathchat,retrievechat] datasets pytest + pip install -e. pytest pip uninstall -y openai + - name: Install unstructured if not windows + if: matrix.os != 'windows-2019' + run: | + pip install "unstructured[all-docs]" - name: Test with pytest if: matrix.python-version != '3.10' run: | @@ -49,8 +53,9 @@ jobs: - name: Coverage if: matrix.python-version == '3.10' run: | - pip install coverage - coverage run -a -m pytest test + pip install -e .[mathchat,test] + pip uninstall -y openai + coverage run -a -m pytest test --ignore=test/agentchat/contrib coverage xml - name: Upload coverage to Codecov if: matrix.python-version == '3.10' diff --git a/.github/workflows/contrib-lmm.yml b/.github/workflows/contrib-lmm.yml new file mode 100644 index 00000000000..c032d5ea47b --- /dev/null +++ b/.github/workflows/contrib-lmm.yml @@ -0,0 +1,60 @@ +# This workflow will install Python dependencies, run tests and lint with a variety of Python versions +# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions + +name: ContribTests + +on: + pull_request: + branches: ['main', 'dev/v0.2'] + paths: + - 'autogen/img_utils.py' + - 'autogen/agentchat/contrib/multimodal_conversable_agent.py' + - 'autogen/agentchat/contrib/llava_agent.py' + - 'test/test_img_utils.py' + - 'test/agentchat/contrib/test_lmm.py' + - 'test/agentchat/contrib/test_llava.py' + - '.github/workflows/lmm-test.yml' + - 'setup.py' + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }}-${{ github.head_ref }} + cancel-in-progress: ${{ github.ref != 'refs/heads/main' }} + +jobs: + LMMTest: + + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, macos-latest, windows-2019] + python-version: ["3.8", "3.9", "3.10", "3.11"] + steps: + - uses: actions/checkout@v3 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + - name: Install packages and dependencies for all tests + run: | + python -m pip install --upgrade pip wheel + pip install pytest + - name: Install packages and dependencies for LMM + run: | + pip install -e .[lmm] + pip uninstall -y openai + - name: Test LMM and LLaVA + run: | + pytest test/test_img_utils.py test/agentchat/contrib/test_lmm.py test/agentchat/contrib/test_llava.py + - name: Coverage + if: matrix.python-version == '3.10' + run: | + pip install coverage>=5.3 + coverage run -a -m pytest test/test_img_utils.py test/agentchat/contrib/test_lmm.py test/agentchat/contrib/test_llava.py + coverage xml + - name: Upload coverage to Codecov + if: matrix.python-version == '3.10' + uses: codecov/codecov-action@v3 + with: + file: ./coverage.xml + flags: unittests diff --git a/.github/workflows/contrib-openai.yml b/.github/workflows/contrib-openai.yml new file mode 100644 index 00000000000..483f43c4872 --- /dev/null +++ b/.github/workflows/contrib-openai.yml @@ -0,0 +1,140 @@ +# This workflow will install Python dependencies and run tests +# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions + +name: OpenAI4ContribTests + +on: + pull_request_target: + branches: ['main'] + paths: + - 'autogen/**' + - 'test/agentchat/contrib/**' + - '.github/workflows/contrib-openai.yml' + - 'setup.py' + +jobs: + RetrieveChatTest: + strategy: + matrix: + os: [ubuntu-latest] + python-version: ["3.10"] + runs-on: ${{ matrix.os }} + environment: openai1 + steps: + # checkout to pr branch + - name: Checkout + uses: actions/checkout@v3 + with: + ref: ${{ github.event.pull_request.head.sha }} + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + - name: Install packages and dependencies + run: | + docker --version + python -m pip install --upgrade pip wheel + pip install -e . + python -c "import autogen" + pip install coverage pytest-asyncio + - name: Install packages for test when needed + run: | + pip install docker + pip install qdrant_client[fastembed] + pip install -e .[retrievechat] + - name: Coverage + env: + OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} + AZURE_OPENAI_API_KEY: ${{ secrets.AZURE_OPENAI_API_KEY }} + AZURE_OPENAI_API_BASE: ${{ secrets.AZURE_OPENAI_API_BASE }} + OAI_CONFIG_LIST: ${{ secrets.OAI_CONFIG_LIST }} + run: | + coverage run -a -m pytest test/agentchat/contrib/test_retrievechat.py test/agentchat/contrib/test_qdrant_retrievechat.py + coverage xml + - name: Upload coverage to Codecov + uses: codecov/codecov-action@v3 + with: + file: ./coverage.xml + flags: unittests + CompressionTest: + strategy: + matrix: + os: [ubuntu-latest] + python-version: ["3.9"] + runs-on: ${{ matrix.os }} + environment: openai1 + steps: + # checkout to pr branch + - name: Checkout + uses: actions/checkout@v3 + with: + ref: ${{ github.event.pull_request.head.sha }} + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + - name: Install packages and dependencies + run: | + docker --version + python -m pip install --upgrade pip wheel + pip install -e . + python -c "import autogen" + pip install coverage pytest-asyncio + - name: Install packages for test when needed + run: | + pip install docker + - name: Coverage + env: + OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} + AZURE_OPENAI_API_KEY: ${{ secrets.AZURE_OPENAI_API_KEY }} + AZURE_OPENAI_API_BASE: ${{ secrets.AZURE_OPENAI_API_BASE }} + OAI_CONFIG_LIST: ${{ secrets.OAI_CONFIG_LIST }} + run: | + coverage run -a -m pytest test/agentchat/contrib/test_compressible_agent.py + coverage xml + - name: Upload coverage to Codecov + uses: codecov/codecov-action@v3 + with: + file: ./coverage.xml + flags: unittests + GPTAssistantAgent: + strategy: + matrix: + os: [ubuntu-latest] + python-version: ["3.11"] + runs-on: ${{ matrix.os }} + environment: openai1 + steps: + # checkout to pr branch + - name: Checkout + uses: actions/checkout@v3 + with: + ref: ${{ github.event.pull_request.head.sha }} + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + - name: Install packages and dependencies + run: | + docker --version + python -m pip install --upgrade pip wheel + pip install -e . + python -c "import autogen" + pip install coverage pytest-asyncio + - name: Install packages for test when needed + run: | + pip install docker + - name: Coverage + env: + OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} + AZURE_OPENAI_API_KEY: ${{ secrets.AZURE_OPENAI_API_KEY }} + AZURE_OPENAI_API_BASE: ${{ secrets.AZURE_OPENAI_API_BASE }} + OAI_CONFIG_LIST: ${{ secrets.OAI_CONFIG_LIST }} + run: | + coverage run -a -m pytest test/agentchat/contrib/test_gpt_assistant.py + coverage xml + - name: Upload coverage to Codecov + uses: codecov/codecov-action@v3 + with: + file: ./coverage.xml + flags: unittests diff --git a/.github/workflows/contrib-tests.yml b/.github/workflows/contrib-tests.yml new file mode 100644 index 00000000000..17b43181efa --- /dev/null +++ b/.github/workflows/contrib-tests.yml @@ -0,0 +1,110 @@ +# This workflow will install Python dependencies, run tests and lint with a variety of Python versions +# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions + +name: ContribTests + +on: + pull_request: + branches: ['main', 'dev/v0.2'] + paths: + - 'autogen/**' + - 'test/agentchat/contrib/**' + - '.github/workflows/contrib-tests.yml' + - 'setup.py' + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }}-${{ github.head_ref }} + cancel-in-progress: ${{ github.ref != 'refs/heads/main' }} + +jobs: + RetrieveChatTest: + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, macos-latest, windows-2019] + python-version: ["3.8", "3.9", "3.10", "3.11"] + steps: + - uses: actions/checkout@v3 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + - name: Install packages and dependencies for all tests + run: | + python -m pip install --upgrade pip wheel + pip install pytest + - name: Install qdrant_client when python-version is 3.10 + if: matrix.python-version == '3.10' || matrix.python-version == '3.8' + run: | + pip install qdrant_client[fastembed] + - name: Install packages and dependencies for RetrieveChat + run: | + pip install -e .[retrievechat] + pip uninstall -y openai + - name: Test RetrieveChat + run: | + pytest test/test_retrieve_utils.py test/agentchat/contrib/test_retrievechat.py test/agentchat/contrib/test_qdrant_retrievechat.py + - name: Coverage + if: matrix.python-version == '3.10' + run: | + pip install coverage>=5.3 + coverage run -a -m pytest test/test_retrieve_utils.py test/agentchat/contrib + coverage xml + - name: Upload coverage to Codecov + if: matrix.python-version == '3.10' + uses: codecov/codecov-action@v3 + with: + file: ./coverage.xml + flags: unittests + CompressionTest: + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, macos-latest, windows-2019] + python-version: ["3.8", "3.9", "3.10", "3.11"] + steps: + - uses: actions/checkout@v3 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + - name: Install packages and dependencies for all tests + run: | + python -m pip install --upgrade pip wheel + pip install pytest + - name: Install packages and dependencies for Compression + run: | + pip install -e . + pip uninstall -y openai + - name: Test Compression + if: matrix.python-version != '3.10' + run: | + pytest test/agentchat/contrib/test_compressible_agent.py + + GPTAssistantAgent: + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, macos-latest, windows-2019] + python-version: ["3.8", "3.9", "3.10", "3.11"] + steps: + - uses: actions/checkout@v3 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + - name: Install packages and dependencies for all tests + run: | + python -m pip install --upgrade pip wheel + pip install pytest + - name: Install packages and dependencies for GPTAssistantAgent + run: | + pip install -e . + pip uninstall -y openai + - name: Test GPTAssistantAgent + if: matrix.python-version != '3.10' + run: | + pytest test/agentchat/contrib/test_gpt_assistant.py diff --git a/.github/workflows/openai.yml b/.github/workflows/openai.yml index eef8e4ce6fb..b9184fd5268 100644 --- a/.github/workflows/openai.yml +++ b/.github/workflows/openai.yml @@ -1,19 +1,16 @@ -# This workflow will install Python dependencies, run tests and lint with a variety of Python versions +# This workflow will install Python dependencies and run tests with a variety of Python versions # For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions name: OpenAI on: - pull_request: + pull_request_target: branches: ['main'] paths: - 'autogen/**' - 'test/**' - 'notebook/agentchat_auto_feedback_from_code_execution.ipynb' - 'notebook/agentchat_function_call.ipynb' - - 'notebook/agentchat_MathChat.ipynb' - - 'notebook/oai_completion.ipynb' - - 'notebook/oai_chatgpt_gpt4.ipynb' - '.github/workflows/openai.yml' jobs: @@ -23,9 +20,13 @@ jobs: os: [ubuntu-latest] python-version: ["3.9", "3.10", "3.11"] runs-on: ${{ matrix.os }} - environment: openai + environment: openai1 steps: - - uses: actions/checkout@v3 + # checkout to pr branch + - name: Checkout + uses: actions/checkout@v3 + with: + ref: ${{ github.event.pull_request.head.sha }} - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v4 with: @@ -34,21 +35,17 @@ jobs: run: | docker --version python -m pip install --upgrade pip wheel - pip install -e.[blendsearch] + pip install -e. python -c "import autogen" - pip install coverage pytest-asyncio datasets + pip install coverage pytest-asyncio - name: Install packages for test when needed if: matrix.python-version == '3.9' run: | pip install docker - - name: Install packages for MathChat when needed - if: matrix.python-version != '3.11' - run: | - pip install -e .[mathchat] - - name: Install packages for RetrieveChat when needed - if: matrix.python-version == '3.9' + - name: Install dependencies for test when needed + if: matrix.python-version == '3.10' # test_agentchat_function_call run: | - pip install -e .[retrievechat] + pip install -e.[mathchat] - name: Coverage if: matrix.python-version == '3.9' env: @@ -57,7 +54,7 @@ jobs: AZURE_OPENAI_API_BASE: ${{ secrets.AZURE_OPENAI_API_BASE }} OAI_CONFIG_LIST: ${{ secrets.OAI_CONFIG_LIST }} run: | - coverage run -a -m pytest test + coverage run -a -m pytest test --ignore=test/agentchat/contrib coverage xml - name: Coverage and check notebook outputs if: matrix.python-version != '3.9' @@ -69,6 +66,7 @@ jobs: OAI_CONFIG_LIST: ${{ secrets.OAI_CONFIG_LIST }} run: | pip install nbconvert nbformat ipykernel + coverage run -a -m pytest test/agentchat/test_function_call_groupchat.py coverage run -a -m pytest test/test_notebook.py coverage xml cat "$(pwd)/test/executed_openai_notebook_output.txt" diff --git a/.gitignore b/.gitignore index 8e2ec4719c1..47917823422 100644 --- a/.gitignore +++ b/.gitignore @@ -165,5 +165,5 @@ key_aoai.txt base_aoai.txt wolfram.txt -# Key Files -youtube.txt +# DB on disk for TeachableAgent +tmp/ diff --git a/OAI_CONFIG_LIST_sample b/OAI_CONFIG_LIST_sample index 01608aeeef8..c3071921118 100644 --- a/OAI_CONFIG_LIST_sample +++ b/OAI_CONFIG_LIST_sample @@ -7,14 +7,14 @@ { "model": "gpt-4", "api_key": "", - "api_base": "", + "base_url": "", "api_type": "azure", "api_version": "2023-07-01-preview" }, { "model": "gpt-3.5-turbo", "api_key": "", - "api_base": "", + "base_url": "", "api_type": "azure", "api_version": "2023-07-01-preview" } diff --git a/README.md b/README.md index 5d175e726e4..012aaed71e9 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,10 @@ - [![PyPI version](https://badge.fury.io/py/pyautogen.svg)](https://badge.fury.io/py/pyautogen) [![Build](https://github.com/microsoft/autogen/actions/workflows/python-package.yml/badge.svg)](https://github.com/microsoft/autogen/actions/workflows/python-package.yml) ![Python Version](https://img.shields.io/badge/3.8%20%7C%203.9%20%7C%203.10%20%7C%203.11-blue) +[![Downloads](https://static.pepy.tech/badge/pyautogen/week)](https://pepy.tech/project/pyautogen) [![](https://img.shields.io/discord/1153072414184452236?logo=discord&style=flat)](https://discord.gg/pAbnFJrkgZ) +[![Twitter](https://img.shields.io/twitter/url/https/twitter.com/cloudposse.svg?style=social&label=Follow%20%40pyautogen)](https://twitter.com/pyautogen) -This project is a spinoff from [FLAML](https://github.com/microsoft/FLAML). # AutoGen @@ -12,61 +12,95 @@ This project is a spinoff from [FLAML](https://github.com/microsoft/FLAML).

--> +:fire: Nov 11: AutoGen experimentally supports OpenAI's Assistants! Checkout the [GPT Assistant Agent](autogen/agentchat/contrib/gpt_assistant_agent.py). + +:fire: Nov 8: AutoGen is selected into [Open100: Top 100 Open Source achievements](https://www.benchcouncil.org/evaluation/opencs/annual.html) 35 days after spinoff. + +:fire: Nov 6: AutoGen is mentioned by Satya Nadella in a [fireside chat](https://youtu.be/0pLBvgYtv6U) around 13:20. -:fire: autogen has graduated from [FLAML](https://github.com/microsoft/FLAML) into a new project. +:fire: Nov 1: AutoGen is the top trending repo on GitHub in October 2023. - - ## What is AutoGen -AutoGen is a framework that enables development of LLM applications using multiple agents that can converse with each other to solve task. AutoGen agents are customizable, conversable, and seamlessly allow human participation. They can operate in various modes that employ combinations of LLMs, human inputs, and tools. +AutoGen is a framework that enables the development of LLM applications using multiple agents that can converse with each other to solve tasks. AutoGen agents are customizable, conversable, and seamlessly allow human participation. They can operate in various modes that employ combinations of LLMs, human inputs, and tools. ![AutoGen Overview](https://github.com/microsoft/autogen/blob/main/website/static/img/autogen_agentchat.png) -* AutoGen enables building next-gen LLM applications based on **multi-agent conversations** with minimal effort. It simplifies the orchestration, automation and optimization of a complex LLM workflow. It maximizes the performance of LLM models and overcome their weaknesses. -* It supports **diverse conversation patterns** for complex workflows. With customizable and conversable agents, developers can use AutoGen to build a wide range of conversation patterns concerning conversation autonomy, -the number of agents, and agent conversation topology. -* It provides a collection of working systems with different complexities. These systems span a **wide range of applications** from various domains and complexities. They demonstrate how AutoGen can easily support different conversation patterns. -* AutoGen provides a drop-in replacement of `openai.Completion` or `openai.ChatCompletion` as an **enhanced inference API**. It allows easy performance tuning, utilities like API unification & caching, and advanced usage patterns, such as error handling, multi-config inference, context programming etc. +- AutoGen enables building next-gen LLM applications based on [multi-agent conversations](https://microsoft.github.io/autogen/docs/Use-Cases/agent_chat) with minimal effort. It simplifies the orchestration, automation, and optimization of a complex LLM workflow. It maximizes the performance of LLM models and overcomes their weaknesses. +- It supports [diverse conversation patterns](https://microsoft.github.io/autogen/docs/Use-Cases/agent_chat#supporting-diverse-conversation-patterns) for complex workflows. With customizable and conversable agents, developers can use AutoGen to build a wide range of conversation patterns concerning conversation autonomy, + the number of agents, and agent conversation topology. +- It provides a collection of working systems with different complexities. These systems span a [wide range of applications](https://microsoft.github.io/autogen/docs/Use-Cases/agent_chat#diverse-applications-implemented-with-autogen) from various domains and complexities. This demonstrates how AutoGen can easily support diverse conversation patterns. +- AutoGen provides [enhanced LLM inference](https://microsoft.github.io/autogen/docs/Use-Cases/enhanced_inference#api-unification). It offers utilities like API unification and caching, and advanced usage patterns, such as error handling, multi-config inference, context programming, etc. + +AutoGen is powered by collaborative [research studies](https://microsoft.github.io/autogen/docs/Research) from Microsoft, Penn State University, and the University of Washington. + +## Quickstart +The easiest way to start playing is +1. Click below to use the GitHub Codespace + + [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/microsoft/autogen?quickstart=1) + + 2. Copy OAI_CONFIG_LIST_sample to ./notebook folder, name to OAI_CONFIG_LIST, and set the correct configuration. + 3. Start playing with the notebooks! + -AutoGen is powered by collaborative [research studies](https://microsoft.github.io/autogen/docs/Research) from Microsoft, Penn State University, and University of Washington. ## Installation -AutoGen requires **Python version >= 3.8**. It can be installed from pip: +AutoGen requires **Python version >= 3.8, < 3.12**. It can be installed from pip: ```bash pip install pyautogen ``` Minimal dependencies are installed without extra options. You can install extra options based on the feature you need. -For example, use the following to install the dependencies needed by the [`blendsearch`](https://microsoft.github.io/FLAML/docs/Use-Cases/Tune-User-Defined-Function#blendsearch-economical-hyperparameter-optimization-with-blended-search-strategy) option. + + Find more options in [Installation](https://microsoft.github.io/autogen/docs/Installation). + -For LLM inference configurations, check the [FAQ](https://microsoft.github.io/autogen/docs/FAQ#set-your-api-endpoints). +For [code execution](https://microsoft.github.io/autogen/docs/FAQ/#code-execution), we strongly recommend installing the Python docker package and using docker. -## Quickstart +For LLM inference configurations, check the [FAQs](https://microsoft.github.io/autogen/docs/FAQ#set-your-api-endpoints). + +## Multi-Agent Conversation Framework + +Autogen enables the next-gen LLM applications with a generic [multi-agent conversation](https://microsoft.github.io/autogen/docs/Use-Cases/agent_chat) framework. It offers customizable and conversable agents that integrate LLMs, tools, and humans. +By automating chat among multiple capable agents, one can easily make them collectively perform tasks autonomously or with human feedback, including tasks that require using tools via code. + +Features of this use case include: + +- **Multi-agent conversations**: AutoGen agents can communicate with each other to solve tasks. This allows for more complex and sophisticated applications than would be possible with a single LLM. +- **Customization**: AutoGen agents can be customized to meet the specific needs of an application. This includes the ability to choose the LLMs to use, the types of human input to allow, and the tools to employ. +- **Human participation**: AutoGen seamlessly allows human participation. This means that humans can provide input and feedback to the agents as needed. + +For [example](https://github.com/microsoft/autogen/blob/main/test/twoagent.py), -* Autogen enables the next-gen LLM applications with a generic multi-agent conversation framework. It offers customizable and conversable agents which integrate LLMs, tools and human. -By automating chat among multiple capable agents, one can easily make them collectively perform tasks autonomously or with human feedback, including tasks that require using tools via code. For [example](https://github.com/microsoft/autogen/blob/main/test/twoagent.py), ```python from autogen import AssistantAgent, UserProxyAgent, config_list_from_json # Load LLM inference endpoints from an env variable or a file # See https://microsoft.github.io/autogen/docs/FAQ#set-your-api-endpoints -# and OAI_CONFIG_LIST_sample.json +# and OAI_CONFIG_LIST_sample config_list = config_list_from_json(env_or_file="OAI_CONFIG_LIST") +# You can also set config_list directly as a list, for example, config_list = [{'model': 'gpt-4', 'api_key': ''},] assistant = AssistantAgent("assistant", llm_config={"config_list": config_list}) user_proxy = UserProxyAgent("user_proxy", code_execution_config={"work_dir": "coding"}) user_proxy.initiate_chat(assistant, message="Plot a chart of NVDA and TESLA stock price change YTD.") @@ -74,18 +108,25 @@ user_proxy.initiate_chat(assistant, message="Plot a chart of NVDA and TESLA stoc ``` This example can be run with + ```python python test/twoagent.py ``` + After the repo is cloned. The figure below shows an example conversation flow with AutoGen. ![Agent Chat Example](https://github.com/microsoft/autogen/blob/main/website/static/img/chat_example.png) -Please find more [code examples](https://microsoft.github.io/autogen/docs/Examples/AutoGen-AgentChat) for this feature. +Please find more [code examples](https://microsoft.github.io/autogen/docs/Examples/AgentChat) for this feature. + +## Enhanced LLM Inferences + +Autogen also helps maximize the utility out of the expensive LLMs such as ChatGPT and GPT-4. It offers [enhanced LLM inference](https://microsoft.github.io/autogen/docs/Use-Cases/enhanced_inference#api-unification) with powerful functionalities like caching, error handling, multi-config inference and templating. + + ## Documentation -You can find a detailed documentation about AutoGen [here](https://microsoft.github.io/autogen/). +You can find detailed documentation about AutoGen [here](https://microsoft.github.io/autogen/). In addition, you can find: -- [Research](https://microsoft.github.io/autogen/docs/Research) and [blogposts](https://microsoft.github.io/autogen/blog) around AutoGen. +- [Research](https://microsoft.github.io/autogen/docs/Research), [blogposts](https://microsoft.github.io/autogen/blog) around AutoGen, and [Transparency FAQs](https://github.com/microsoft/autogen/blob/main/TRANSPARENCY_FAQS.md) + +- [Discord](https://discord.gg/pAbnFJrkgZ) + +- [Contributing guide](https://microsoft.github.io/autogen/docs/Contribute) + +- [Roadmap](https://github.com/orgs/microsoft/projects/989/views/3) + +## Citation + +[AutoGen](https://arxiv.org/abs/2308.08155) -- [Discord](https://discord.gg/pAbnFJrkgZ). +``` +@inproceedings{wu2023autogen, + title={AutoGen: Enabling Next-Gen LLM Applications via Multi-Agent Conversation Framework}, + author={Qingyun Wu and Gagan Bansal and Jieyu Zhang and Yiran Wu and Shaokun Zhang and Erkang Zhu and Beibin Li and Li Jiang and Xiaoyun Zhang and Chi Wang}, + year={2023}, + eprint={2308.08155}, + archivePrefix={arXiv}, + primaryClass={cs.AI} +} +``` + +[EcoOptiGen](https://arxiv.org/abs/2303.04673) + +``` +@inproceedings{wang2023EcoOptiGen, + title={Cost-Effective Hyperparameter Optimization for Large Language Model Generation Inference}, + author={Chi Wang and Susan Xueqing Liu and Ahmed H. Awadallah}, + year={2023}, + booktitle={AutoML'23}, +} +``` -- [Contributing guide](https://microsoft.github.io/autogen/docs/Contribute). +[MathChat](https://arxiv.org/abs/2306.01337) + +``` +@inproceedings{wu2023empirical, + title={An Empirical Study on Challenging Math Problem Solving with GPT-4}, + author={Yiran Wu and Feiran Jia and Shaokun Zhang and Hangyu Li and Erkang Zhu and Yue Wang and Yin Tat Lee and Richard Peng and Qingyun Wu and Chi Wang}, + year={2023}, + booktitle={ArXiv preprint arXiv:2306.01337}, +} +``` ## Contributing @@ -126,9 +206,14 @@ a CLA and decorate the PR appropriately (e.g., status check, comment). Simply fo provided by the bot. You will only need to do this once across all repos using our CLA. This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). -For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or +For more information, see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. +## Contributors Wall + + + + # Legal Notices Microsoft and any contributors grant you a license to the Microsoft documentation and other content @@ -136,7 +221,7 @@ in this repository under the [Creative Commons Attribution 4.0 International Pub see the [LICENSE](LICENSE) file, and grant you a license to any code in the repository under the [MIT License](https://opensource.org/licenses/MIT), see the [LICENSE-CODE](LICENSE-CODE) file. -Microsoft, Windows, Microsoft Azure and/or other Microsoft products and services referenced in the documentation +Microsoft, Windows, Microsoft Azure, and/or other Microsoft products and services referenced in the documentation may be either trademarks or registered trademarks of Microsoft in the United States and/or other countries. The licenses for this project do not grant you rights to use any Microsoft names, logos, or trademarks. Microsoft's general trademark guidelines can be found at http://go.microsoft.com/fwlink/?LinkID=254653. @@ -144,4 +229,4 @@ Microsoft's general trademark guidelines can be found at http://go.microsoft.com Privacy information can be found at https://privacy.microsoft.com/en-us/ Microsoft and any contributors reserve all other rights, whether under their respective copyrights, patents, -or trademarks, whether by implication, estoppel or otherwise. +or trademarks, whether by implication, estoppel, or otherwise. diff --git a/TRANSPARENCY_FAQS.md b/TRANSPARENCY_FAQS.md new file mode 100644 index 00000000000..fee046c619a --- /dev/null +++ b/TRANSPARENCY_FAQS.md @@ -0,0 +1,56 @@ +# AutoGen: Responsible AI FAQs + +## What is AutoGen? +AutoGen is a framework for simplifying the orchestration, optimization, and automation of LLM workflows. It offers customizable and conversable agents that leverage the strongest capabilities of the most advanced LLMs, like GPT-4, while addressing their limitations by integrating with humans and tools and having conversations between multiple agents via automated chat. + +## What can AutoGen do? +AutoGen is an experimentational framework for building a complex multi-agent conversation system by: +- Defining a set of agents with specialized capabilities and roles. +- Defining the interaction behavior between agents, i.e., what to reply when an agent receives messages from another agent. + +The agent conversation-centric design has numerous benefits, including that it: +- Naturally handles ambiguity, feedback, progress, and collaboration. +- Enables effective coding-related tasks, like tool use with back-and-forth troubleshooting. +- Allows users to seamlessly opt in or opt out via an agent in the chat. +- Achieves a collective goal with the cooperation of multiple specialists. + +## What is/are AutoGen’s intended use(s)? +Please note that AutoGen is an open-source library under active development and intended for use for research purposes. It should not be used in any downstream applications without additional detailed evaluation of robustness, safety issues and assessment of any potential harm or bias in the proposed application. + +AutoGen is a generic infrastructure that can be used in multiple scenarios. The system’s intended uses include: + +- Building LLM workflows that solve more complex tasks: Users can create agents that interleave reasoning and tool use capabilities of the latest LLMs such as GPT-4. To solve complex tasks, multiple agents can converse to work together (e.g., by partitioning a complex problem into simpler steps or by providing different viewpoints or perspectives). +- Application-specific agent topologies: Users can create application specific agent topologies and patterns for agents to interact. The exact topology may depend on the domain’s complexity and semantic capabilities of the LLM available. +- Code generation and execution: Users can implement agents that can assume the roles of writing code and other agents that can execute code. Agents can do this with varying levels of human involvement. Users can add more agents and program the conversations to enforce constraints on code and output. +- Question answering: Users can create agents that can help answer questions using retrieval augmented generation. +- End user and multi-agent chat and debate: Users can build chat applications where they converse with multiple agents at the same time. + +While AutoGen automates LLM workflows, decisions about how to use specific LLM outputs should always have a human in the loop. For example, you should not use AutoGen to automatically post LLM generated content to social media. + +## How was AutoGen evaluated? What metrics are used to measure performance? +- Current version of AutoGen was evaluated on six applications to illustrate its potential in simplifying the development of high-performance multi-agent applications. These applications are selected based on their real-world relevance, problem difficulty and problem solving capabilities enabled by AutoGen, and innovative potential. +- These applications involve using AutoGen to solve math problems, question answering, decision making in text world environments, supply chain optimization, etc. For each of these domains AutoGen was evaluated on various success based metrics (i.e., how often the AutoGen based implementation solved the task). And, in some cases, AutoGen based approach was also evaluated on implementation efficiency (e.g., to track reductions in developer effort to build). More details can be found at: https://aka.ms/AutoGen/TechReport + +## What are the limitations of AutoGen? How can users minimize the impact of AutoGen’s limitations when using the system? +AutoGen relies on existing LLMs. Experimenting with AutoGen would retain common limitations of large language models; including: + +- Data Biases: Large language models, trained on extensive data, can inadvertently carry biases present in the source data. Consequently, the models may generate outputs that could be potentially biased or unfair. +- Lack of Contextual Understanding: Despite their impressive capabilities in language understanding and generation, these models exhibit limited real-world understanding, resulting in potential inaccuracies or nonsensical responses. +- Lack of Transparency: Due to the complexity and size, large language models can act as `black boxes,' making it difficult to comprehend the rationale behind specific outputs or decisions. +- Content Harms: There are various types of content harms that large language models can cause. It is important to be aware of them when using these models, and to take actions to prevent them. It is recommended to leverage various content moderation services provided by different companies and institutions. +- Inaccurate or ungrounded content: It is important to be aware and cautious not to entirely rely on a given language model for critical decisions or information that might have deep impact as it is not obvious how to prevent these models to fabricate content without high authority input sources. +- Potential for Misuse: Without suitable safeguards, there is a risk that these models could be maliciously used for generating disinformation or harmful content. + + +Additionally, AutoGen’s multi-agent framework may amplify or introduce additional risks, such as: +- Privacy and Data Protection: The framework allows for human participation in conversations between agents. It is important to ensure that user data and conversations are protected and that developers use appropriate measures to safeguard privacy. +- Accountability and Transparency: The framework involves multiple agents conversing and collaborating, it is important to establish clear accountability and transparency mechanisms. Users should be able to understand and trace the decision-making process of the agents involved in order to ensure accountability and address any potential issues or biases. +- Trust and reliance: The framework leverages human understanding and intelligence while providing automation through conversations between agents. It is important to consider the impact of this interaction on user experience, trust, and reliance on AI systems. Clear communication and user education about the capabilities and limitations of the system will be essential. +- Security & unintended consequences: The use of multi-agent conversations and automation in complex tasks may have unintended consequences. Especially, allowing LLM agents to make changes in external environments through code execution or function calls, such as install packages, could pose significant risks. Developers should carefully consider the potential risks and ensure that appropriate safeguards are in place to prevent harm or negative outcomes, including keeping a human in the loop for decision making. + +## What operational factors and settings allow for effective and responsible use of AutoGen? +- Code execution: AutoGen recommends using docker containers so that code execution can happen in a safer manner. Users can use function call instead of free-form code to execute pre-defined functions only. That helps increase the reliability and safety. Users can customize the code execution environment to tailor to their requirements. +- Human involvement: AutoGen prioritizes human involvement in multi agent conversation. The overseers can step in to give feedback to agents and steer them in the correct direction. By default, users get chance to confirm before code is executed. +- Agent modularity: Modularity allows agents to have different levels of information access. Additional agents can assume roles that help keep other agents in check. For example, one can easily add a dedicated agent to play the role of safeguard. +- LLMs: Users can choose the LLM that is optimized for responsible use. The default LLM is GPT-4 which inherits the existing RAI mechanisms and filters from the LLM provider. Caching is enabled by default to increase reliability and control cost. We encourage developers to review [OpenAI’s Usage policies](https://openai.com/policies/usage-policies) and [Azure OpenAI’s Code of Conduct](https://learn.microsoft.com/en-us/legal/cognitive-services/openai/code-of-conduct) when using GPT-4. +- Multi-agent setup: When using auto replies, the users can limit the number of auto replies, termination conditions etc. in the settings to increase reliability. diff --git a/autogen/agentchat/__init__.py b/autogen/agentchat/__init__.py index 6ce32edb7cb..3db1db73a55 100644 --- a/autogen/agentchat/__init__.py +++ b/autogen/agentchat/__init__.py @@ -1,8 +1,8 @@ from .agent import Agent -from .conversable_agent import ConversableAgent from .assistant_agent import AssistantAgent -from .user_proxy_agent import UserProxyAgent +from .conversable_agent import ConversableAgent from .groupchat import GroupChat, GroupChatManager +from .user_proxy_agent import UserProxyAgent __all__ = [ "Agent", diff --git a/autogen/agentchat/agent.py b/autogen/agentchat/agent.py index 93021249985..b83709dc30b 100644 --- a/autogen/agentchat/agent.py +++ b/autogen/agentchat/agent.py @@ -25,10 +25,10 @@ def name(self): return self._name def send(self, message: Union[Dict, str], recipient: "Agent", request_reply: Optional[bool] = None): - """(Aabstract method) Send a message to another agent.""" + """(Abstract method) Send a message to another agent.""" async def a_send(self, message: Union[Dict, str], recipient: "Agent", request_reply: Optional[bool] = None): - """(Aabstract async method) Send a message to another agent.""" + """(Abstract async method) Send a message to another agent.""" def receive(self, message: Union[Dict, str], sender: "Agent", request_reply: Optional[bool] = None): """(Abstract method) Receive a message from another agent.""" diff --git a/autogen/agentchat/assistant_agent.py b/autogen/agentchat/assistant_agent.py index cac322774ba..4a0200fb672 100644 --- a/autogen/agentchat/assistant_agent.py +++ b/autogen/agentchat/assistant_agent.py @@ -43,7 +43,7 @@ def __init__( system_message (str): system message for the ChatCompletion inference. Please override this attribute if you want to reprogram the agent. llm_config (dict): llm inference configuration. - Please refer to [Completion.create](/docs/reference/oai/completion#create) + Please refer to [OpenAIWrapper.create](/docs/reference/oai/client#create) for available options. is_termination_msg (function): a function that takes a message in the form of a dictionary and returns a boolean value indicating if this received message is a termination message. diff --git a/autogen/agentchat/contrib/compressible_agent.py b/autogen/agentchat/contrib/compressible_agent.py new file mode 100644 index 00000000000..f1de41512e9 --- /dev/null +++ b/autogen/agentchat/contrib/compressible_agent.py @@ -0,0 +1,426 @@ +from typing import Callable, Dict, Optional, Union, Tuple, List, Any +from autogen import OpenAIWrapper +from autogen import Agent, ConversableAgent +import copy +import asyncio +import logging +from autogen.token_count_utils import count_token, get_max_token_limit, num_tokens_from_functions + +try: + from termcolor import colored +except ImportError: + + def colored(x, *args, **kwargs): + return x + + +logger = logging.getLogger(__name__) + + +class CompressibleAgent(ConversableAgent): + """(Experimental) CompressibleAgent agent. While this agent retains all the default functionalities of the `AssistantAgent`, + it also provides the added feature of compression when activated through the `compress_config` setting. + + `compress_config` is set to False by default, making this agent equivalent to the `AssistantAgent`. + This agent does not work well in a GroupChat: The compressed messages will not be sent to all the agents in the group. + The default system message is the same as AssistantAgent. + `human_input_mode` is default to "NEVER" + and `code_execution_config` is default to False. + This agent doesn't execute code or function call by default. + """ + + DEFAULT_SYSTEM_MESSAGE = """You are a helpful AI assistant. +Solve tasks using your coding and language skills. +In the following cases, suggest python code (in a python coding block) or shell script (in a sh coding block) for the user to execute. + 1. When you need to collect info, use the code to output the info you need, for example, browse or search the web, download/read a file, print the content of a webpage or a file, get the current date/time, check the operating system. After sufficient info is printed and the task is ready to be solved based on your language skill, you can solve the task by yourself. + 2. When you need to perform some task with code, use the code to perform the task and output the result. Finish the task smartly. +Solve the task step by step if you need to. If a plan is not provided, explain your plan first. Be clear which step uses code, and which step uses your language skill. +When using code, you must indicate the script type in the code block. The user cannot provide any other feedback or perform any other action beyond executing the code you suggest. The user can't modify your code. So do not suggest incomplete code which requires users to modify. Don't use a code block if it's not intended to be executed by the user. +If you want the user to save the code in a file before executing it, put # filename: inside the code block as the first line. Don't include multiple code blocks in one response. Do not ask users to copy and paste the result. Instead, use 'print' function for the output when relevant. Check the execution result returned by the user. +If the result indicates there is an error, fix the error and output the code again. Suggest the full code instead of partial code or code changes. If the error can't be fixed or if the task is not solved even after the code is executed successfully, analyze the problem, revisit your assumption, collect additional info you need, and think of a different approach to try. +When you find an answer, verify the answer carefully. Include verifiable evidence in your response if possible. +Reply "TERMINATE" in the end when everything is done. + """ + DEFAULT_COMPRESS_CONFIG = { + "mode": "TERMINATE", + "compress_function": None, + "trigger_count": 0.7, + "async": False, + "broadcast": True, + "verbose": False, + "leave_last_n": 2, + } + + def __init__( + self, + name: str, + system_message: Optional[str] = DEFAULT_SYSTEM_MESSAGE, + is_termination_msg: Optional[Callable[[Dict], bool]] = None, + max_consecutive_auto_reply: Optional[int] = None, + human_input_mode: Optional[str] = "NEVER", + function_map: Optional[Dict[str, Callable]] = None, + code_execution_config: Optional[Union[Dict, bool]] = False, + llm_config: Optional[Union[Dict, bool]] = None, + default_auto_reply: Optional[Union[str, Dict, None]] = "", + compress_config: Optional[Dict] = False, + ): + """ + Args: + name (str): agent name. + system_message (str): system message for the ChatCompletion inference. + Please override this attribute if you want to reprogram the agent. + llm_config (dict): llm inference configuration. + Please refer to [OpenAIWrapper.create](/docs/reference/oai/client#create) + for available options. + is_termination_msg (function): a function that takes a message in the form of a dictionary + and returns a boolean value indicating if this received message is a termination message. + The dict can contain the following keys: "content", "role", "name", "function_call". + max_consecutive_auto_reply (int): the maximum number of consecutive auto replies. + default to None (no limit provided, class attribute MAX_CONSECUTIVE_AUTO_REPLY will be used as the limit in this case). + The limit only plays a role when human_input_mode is not "ALWAYS". + compress_config (dict or True/False): config for compression before oai_reply. Default to False. + You should contain the following keys: + - "mode" (Optional, str, default to "TERMINATE"): Choose from ["COMPRESS", "TERMINATE", "CUSTOMIZED"]. + "TERMINATE": terminate the conversation ONLY when token count exceeds the max limit of current model. + `trigger_count` is NOT used in this mode. + "COMPRESS": compress the messages when the token count exceeds the limit. + "CUSTOMIZED": pass in a customized function to compress the messages. + - "compress_function" (Optional, callable, default to None): Must be provided when mode is "CUSTOMIZED". + The function should takes a list of messages and returns a tuple of (is_compress_success: bool, compressed_messages: List[Dict]). + - "trigger_count" (Optional, float, int, default to 0.7): the threshold to trigger compression. + If a float between (0, 1], it is the percentage of token used. if a int, it is the number of tokens used. + - "async" (Optional, bool, default to False): whether to compress asynchronously. + - "broadcast" (Optional, bool, default to True): whether to update the compressed message history to sender. + - "verbose" (Optional, bool, default to False): Whether to print the content before and after compression. Used when mode="COMPRESS". + - "leave_last_n" (Optional, int, default to 0): If provided, the last n messages will not be compressed. Used when mode="COMPRESS". + **kwargs (dict): Please refer to other kwargs in + [ConversableAgent](../conversable_agent#__init__). + """ + super().__init__( + name=name, + system_message=system_message, + is_termination_msg=is_termination_msg, + max_consecutive_auto_reply=max_consecutive_auto_reply, + human_input_mode=human_input_mode, + function_map=function_map, + code_execution_config=code_execution_config, + llm_config=llm_config, + default_auto_reply=default_auto_reply, + ) + + self._set_compress_config(compress_config) + + # create a separate client for compression. + if llm_config is False: + self.llm_compress_config = False + self.compress_client = None + else: + self.llm_compress_config = self.llm_config.copy() + # remove functions + if "functions" in self.llm_compress_config: + del self.llm_compress_config["functions"] + self.compress_client = OpenAIWrapper(**self.llm_compress_config) + + self._reply_func_list.clear() + self.register_reply([Agent, None], ConversableAgent.generate_oai_reply) + self.register_reply([Agent], CompressibleAgent.on_oai_token_limit) # check token limit + self.register_reply([Agent, None], ConversableAgent.generate_code_execution_reply) + self.register_reply([Agent, None], ConversableAgent.generate_function_call_reply) + self.register_reply([Agent, None], ConversableAgent.check_termination_and_human_reply) + + def _set_compress_config(self, compress_config: Optional[Dict] = False): + if compress_config: + if compress_config is True: + compress_config = {} + if not isinstance(compress_config, dict): + raise ValueError("compress_config must be a dict or True/False.") + + allowed_modes = ["COMPRESS", "TERMINATE", "CUSTOMIZED"] + if compress_config.get("mode", "TERMINATE") not in allowed_modes: + raise ValueError(f"Invalid compression mode. Allowed values are: {', '.join(allowed_modes)}") + + self.compress_config = self.DEFAULT_COMPRESS_CONFIG.copy() + self.compress_config.update(compress_config) + + if not isinstance(self.compress_config["leave_last_n"], int) or self.compress_config["leave_last_n"] < 0: + raise ValueError("leave_last_n must be a non-negative integer.") + + # convert trigger_count to int, default to 0.7 + trigger_count = self.compress_config["trigger_count"] + if not (isinstance(trigger_count, int) or isinstance(trigger_count, float)) or trigger_count <= 0: + raise ValueError("trigger_count must be a positive number.") + if isinstance(trigger_count, float) and 0 < trigger_count <= 1: + self.compress_config["trigger_count"] = int( + trigger_count * get_max_token_limit(self.llm_config["model"]) + ) + trigger_count = self.compress_config["trigger_count"] + init_count = self._compute_init_token_count() + if trigger_count < init_count: + print( + f"Warning: trigger_count {trigger_count} is less than the initial token count {init_count} (system message + function description if passed), compression will be disabled. Please increase trigger_count if you want to enable compression." + ) + self.compress_config = False + + if self.compress_config["mode"] == "CUSTOMIZED" and self.compress_config["compress_function"] is None: + raise ValueError("compress_function must be provided when mode is CUSTOMIZED.") + if self.compress_config["mode"] != "CUSTOMIZED" and self.compress_config["compress_function"] is not None: + print("Warning: compress_function is provided but mode is not 'CUSTOMIZED'.") + + else: + self.compress_config = False + + def generate_reply( + self, + messages: Optional[List[Dict]] = None, + sender: Optional[Agent] = None, + exclude: Optional[List[Callable]] = None, + ) -> Union[str, Dict, None]: + """ + + Adding to line 202: + ``` + if messages is not None and messages != self._oai_messages[sender]: + messages = self._oai_messages[sender] + ``` + """ + if all((messages is None, sender is None)): + error_msg = f"Either {messages=} or {sender=} must be provided." + logger.error(error_msg) + raise AssertionError(error_msg) + + if messages is None: + messages = self._oai_messages[sender] + + for reply_func_tuple in self._reply_func_list: + reply_func = reply_func_tuple["reply_func"] + if exclude and reply_func in exclude: + continue + if asyncio.coroutines.iscoroutinefunction(reply_func): + continue + if self._match_trigger(reply_func_tuple["trigger"], sender): + final, reply = reply_func(self, messages=messages, sender=sender, config=reply_func_tuple["config"]) + if messages is not None and sender is not None and messages != self._oai_messages[sender]: + messages = self._oai_messages[sender] + if final: + return reply + return self._default_auto_reply + + def _compute_init_token_count(self): + """Check if the agent is LLM-based and compute the initial token count.""" + if self.llm_config is False: + return 0 + + func_count = 0 + if "functions" in self.llm_config: + func_count = num_tokens_from_functions(self.llm_config["functions"], self.llm_config["model"]) + + return func_count + count_token(self._oai_system_message, self.llm_config["model"]) + + def _manage_history_on_token_limit(self, messages, token_used, max_token_allowed, model): + """Manage the message history with different modes when token limit is reached. + Return: + final (bool): whether to terminate the agent. + compressed_messages (List[Dict]): the compressed messages. None if no compression or compression failed. + """ + # 1. mode = "TERMINATE", terminate the agent if no token left. + if self.compress_config["mode"] == "TERMINATE": + if max_token_allowed - token_used <= 0: + # Teminate if no token left. + print( + colored( + f'Warning: Terminate Agent "{self.name}" due to no token left for oai reply. max token for {model}: {max_token_allowed}, existing token count: {token_used}', + "yellow", + ), + flush=True, + ) + return True, None + return False, None + + # if token_used is less than trigger_count, no compression will be used. + if token_used < self.compress_config["trigger_count"]: + return False, None + + # 2. mode = "COMPRESS" or mode = "CUSTOMIZED", compress the messages + copied_messages = copy.deepcopy(messages) + if self.compress_config["mode"] == "COMPRESS": + _, compress_messages = self.compress_messages(copied_messages) + elif self.compress_config["mode"] == "CUSTOMIZED": + _, compress_messages = self.compress_config["compress_function"](copied_messages) + else: + raise ValueError(f"Unknown compression mode: {self.compress_config['mode']}") + + if compress_messages is not None: + for i in range(len(compress_messages)): + compress_messages[i] = self._get_valid_oai_message(compress_messages[i]) + return False, compress_messages + + def _get_valid_oai_message(self, message): + """Convert a message into a valid OpenAI ChatCompletion message.""" + oai_message = {k: message[k] for k in ("content", "function_call", "name", "context", "role") if k in message} + if "content" not in oai_message: + if "function_call" in oai_message: + oai_message["content"] = None # if only function_call is provided, content will be set to None. + else: + raise ValueError( + "Message can't be converted into a valid ChatCompletion message. Either content or function_call must be provided." + ) + if "function_call" in oai_message: + oai_message["role"] = "assistant" # only messages with role 'assistant' can have a function call. + oai_message["function_call"] = dict(oai_message["function_call"]) + return oai_message + + def _print_compress_info(self, init_token_count, token_used, token_after_compression): + to_print = "Token Count (including {} tokens from system msg and function descriptions). Before compression : {} | After: {}".format( + init_token_count, + token_used, + token_after_compression, + ) + print(colored(to_print, "magenta"), flush=True) + print("-" * 80, flush=True) + + def on_oai_token_limit( + self, + messages: Optional[List[Dict]] = None, + sender: Optional[Agent] = None, + config: Optional[Any] = None, + ) -> Tuple[bool, Union[str, Dict, None]]: + """(Experimental) Compress previous messages when a threshold of tokens is reached. + + TODO: async compress + TODO: maintain a list for old oai messages (messages before compression) + """ + llm_config = self.llm_config if config is None else config + if self.compress_config is False: + return False, None + if messages is None: + messages = self._oai_messages[sender] + + model = llm_config["model"] + init_token_count = self._compute_init_token_count() + token_used = init_token_count + count_token(messages, model) + final, compressed_messages = self._manage_history_on_token_limit( + messages, token_used, get_max_token_limit(model), model + ) + + # update message history with compressed messages + if compressed_messages is not None: + self._print_compress_info( + init_token_count, token_used, count_token(compressed_messages, model) + init_token_count + ) + self._oai_messages[sender] = compressed_messages + if self.compress_config["broadcast"]: + # update the compressed message history to sender + sender._oai_messages[self] = copy.deepcopy(compressed_messages) + # switching the role of the messages for the sender + for i in range(len(sender._oai_messages[self])): + cmsg = sender._oai_messages[self][i] + if "function_call" in cmsg or cmsg["role"] == "user": + cmsg["role"] = "assistant" + elif cmsg["role"] == "assistant": + cmsg["role"] = "user" + sender._oai_messages[self][i] = cmsg + + # sucessfully compressed, return False, None for generate_oai_reply to be called with the updated messages + return False, None + return final, None + + def compress_messages( + self, + messages: Optional[List[Dict]] = None, + config: Optional[Any] = None, + ) -> Tuple[bool, Union[str, Dict, None, List]]: + """Compress a list of messages into one message. + + The first message (the initial prompt) will not be compressed. + The rest of the messages will be compressed into one message, the model is asked to distinuish the role of each message: USER, ASSISTANT, FUNCTION_CALL, FUNCTION_RETURN. + Check out the compress_sys_msg. + + TODO: model used in compression agent is different from assistant agent: For example, if original model used by is gpt-4; we start compressing at 70% of usage, 70% of 8092 = 5664; and we use gpt 3.5 here max_toke = 4096, it will raise error. choosinng model automatically? + """ + # 1. use the compression client + client = self.compress_client if config is None else config + + # 2. stop if there is only one message in the list + leave_last_n = self.compress_config.get("leave_last_n", 0) + if leave_last_n + 1 >= len(messages): + logger.warning( + f"Warning: Compression skipped at trigger count threshold. The first msg and last {leave_last_n} msgs will not be compressed. current msg count: {len(messages)}. Consider raising trigger_count." + ) + return False, None + + # 3. put all history into one, except the first one + if self.compress_config["verbose"]: + print(colored("*" * 30 + "Start compressing the following content:" + "*" * 30, "magenta"), flush=True) + + compressed_prompt = "Below is the compressed content from the previous conversation, evaluate the process and continue if necessary:\n" + chat_to_compress = "To be compressed:\n" + + for m in messages[1 : len(messages) - leave_last_n]: # 0, 1, 2, 3, 4 + # Handle function role + if m.get("role") == "function": + chat_to_compress += f"##FUNCTION_RETURN## (from function \"{m['name']}\"): \n{m['content']}\n" + + # If name exists in the message + elif "name" in m: + chat_to_compress += f"##{m['name']}({m['role'].upper()})## {m['content']}\n" + + # Handle case where content is not None and name is absent + elif m.get("content"): # This condition will also handle None and empty string + if compressed_prompt in m["content"]: + chat_to_compress += m["content"].replace(compressed_prompt, "") + "\n" + else: + chat_to_compress += f"##{m['role'].upper()}## {m['content']}\n" + + # Handle function_call in the message + if "function_call" in m: + function_name = m["function_call"].get("name") + function_args = m["function_call"].get("arguments") + + if not function_name or not function_args: + chat_to_compress += f"##FUNCTION_CALL## {m['function_call']}\n" + else: + chat_to_compress += f"##FUNCTION_CALL## \nName: {function_name}\nArgs: {function_args}\n" + + chat_to_compress = [{"role": "user", "content": chat_to_compress}] + + if self.compress_config["verbose"]: + print(chat_to_compress[0]["content"]) + + # 4. use LLM to compress + compress_sys_msg = """You are a helpful assistant that will summarize and compress conversation history. +Rules: +1. Please summarize each of the message and reserve the exact titles: ##USER##, ##ASSISTANT##, ##FUNCTION_CALL##, ##FUNCTION_RETURN##, ##SYSTEM##, ##()## (e.g. ##Bob(ASSISTANT)##). +2. Try to compress the content but reserve important information (a link, a specific number, etc.). +3. Use words to summarize the code blocks or functions calls (##FUNCTION_CALL##) and their goals. For code blocks, please use ##CODE## to mark it. +4. For returns from functions (##FUNCTION_RETURN##) or returns from code execution: summarize the content and indicate the status of the return (e.g. success, error, etc.). +""" + try: + response = client.create( + context=None, + messages=[{"role": "system", "content": compress_sys_msg}] + chat_to_compress, + ) + except Exception as e: + print(colored(f"Failed to compress the content due to {e}", "red"), flush=True) + return False, None + + compressed_message = self.client.extract_text_or_function_call(response)[0] + assert isinstance(compressed_message, str), f"compressed_message should be a string: {compressed_message}" + if self.compress_config["verbose"]: + print( + colored("*" * 30 + "Content after compressing:" + "*" * 30, "magenta"), + flush=True, + ) + print(compressed_message, colored("\n" + "*" * 80, "magenta")) + + # 5. add compressed message to the first message and return + return ( + True, + [ + messages[0], + { + "content": compressed_prompt + compressed_message, + "role": "system", + }, + ] + + messages[len(messages) - leave_last_n :], + ) diff --git a/autogen/agentchat/contrib/gpt_assistant_agent.py b/autogen/agentchat/contrib/gpt_assistant_agent.py new file mode 100644 index 00000000000..d226e8ed01d --- /dev/null +++ b/autogen/agentchat/contrib/gpt_assistant_agent.py @@ -0,0 +1,349 @@ +from collections import defaultdict +import openai +import json +import time +import logging + +from autogen import OpenAIWrapper +from autogen.agentchat.agent import Agent +from autogen.agentchat.assistant_agent import ConversableAgent +from autogen.agentchat.assistant_agent import AssistantAgent +from typing import Dict, Optional, Union, List, Tuple, Any + +logger = logging.getLogger(__name__) + + +class GPTAssistantAgent(ConversableAgent): + """ + An experimental AutoGen agent class that leverages the OpenAI Assistant API for conversational capabilities. + This agent is unique in its reliance on the OpenAI Assistant for state management, differing from other agents like ConversableAgent. + """ + + def __init__( + self, + name="GPT Assistant", + instructions: Optional[str] = None, + llm_config: Optional[Union[Dict, bool]] = None, + overwrite_instructions: bool = False, + ): + """ + Args: + name (str): name of the agent. + instructions (str): instructions for the OpenAI assistant configuration. + When instructions is not None, the system message of the agent will be + set to the provided instructions and used in the assistant run, irrespective + of the overwrite_instructions flag. But when instructions is None, + and the assistant does not exist, the system message will be set to + AssistantAgent.DEFAULT_SYSTEM_MESSAGE. If the assistant exists, the + system message will be set to the existing assistant instructions. + llm_config (dict or False): llm inference configuration. + - assistant_id: ID of the assistant to use. If None, a new assistant will be created. + - model: Model to use for the assistant (gpt-4-1106-preview, gpt-3.5-turbo-1106). + - check_every_ms: check thread run status interval + - tools: Give Assistants access to OpenAI-hosted tools like Code Interpreter and Knowledge Retrieval, + or build your own tools using Function calling. ref https://platform.openai.com/docs/assistants/tools + - file_ids: files used by retrieval in run + overwrite_instructions (bool): whether to overwrite the instructions of an existing assistant. + """ + # Use AutoGen OpenAIWrapper to create a client + oai_wrapper = OpenAIWrapper(**llm_config) + if len(oai_wrapper._clients) > 1: + logger.warning("GPT Assistant only supports one OpenAI client. Using the first client in the list.") + self._openai_client = oai_wrapper._clients[0] + openai_assistant_id = llm_config.get("assistant_id", None) + if openai_assistant_id is None: + # create a new assistant + if instructions is None: + logger.warning( + "No instructions were provided for new assistant. Using default instructions from AssistantAgent.DEFAULT_SYSTEM_MESSAGE." + ) + instructions = AssistantAgent.DEFAULT_SYSTEM_MESSAGE + self._openai_assistant = self._openai_client.beta.assistants.create( + name=name, + instructions=instructions, + tools=llm_config.get("tools", []), + model=llm_config.get("model", "gpt-4-1106-preview"), + ) + else: + # retrieve an existing assistant + self._openai_assistant = self._openai_client.beta.assistants.retrieve(openai_assistant_id) + # if no instructions are provided, set the instructions to the existing instructions + if instructions is None: + logger.warning( + "No instructions were provided for given assistant. Using existing instructions from assistant API." + ) + instructions = self.get_assistant_instructions() + elif overwrite_instructions is True: + logger.warning( + "overwrite_instructions is True. Provided instructions will be used and will modify the assistant in the API" + ) + self._openai_assistant = self._openai_client.beta.assistants.update( + assistant_id=openai_assistant_id, + instructions=instructions, + ) + else: + logger.warning( + "overwrite_instructions is False. Provided instructions will be used without permanently modifying the assistant in the API." + ) + + super().__init__( + name=name, + system_message=instructions, + human_input_mode="NEVER", + llm_config=llm_config, + ) + + # lazly create thread + self._openai_threads = {} + self._unread_index = defaultdict(int) + self.register_reply(Agent, GPTAssistantAgent._invoke_assistant) + + def _invoke_assistant( + self, + messages: Optional[List[Dict]] = None, + sender: Optional[Agent] = None, + config: Optional[Any] = None, + ) -> Tuple[bool, Union[str, Dict, None]]: + """ + Invokes the OpenAI assistant to generate a reply based on the given messages. + + Args: + messages: A list of messages in the conversation history with the sender. + sender: The agent instance that sent the message. + config: Optional configuration for message processing. + + Returns: + A tuple containing a boolean indicating success and the assistant's reply. + """ + + if messages is None: + messages = self._oai_messages[sender] + unread_index = self._unread_index[sender] or 0 + pending_messages = messages[unread_index:] + + # Check and initiate a new thread if necessary + if self._openai_threads.get(sender, None) is None: + self._openai_threads[sender] = self._openai_client.beta.threads.create( + messages=[], + ) + assistant_thread = self._openai_threads[sender] + # Process each unread message + for message in pending_messages: + self._openai_client.beta.threads.messages.create( + thread_id=assistant_thread.id, + content=message["content"], + role=message["role"], + ) + + # Create a new run to get responses from the assistant + run = self._openai_client.beta.threads.runs.create( + thread_id=assistant_thread.id, + assistant_id=self._openai_assistant.id, + # pass the latest system message as instructions + instructions=self.system_message, + ) + + run_response_messages = self._get_run_response(assistant_thread, run) + assert len(run_response_messages) > 0, "No response from the assistant." + + response = { + "role": run_response_messages[-1]["role"], + "content": "", + } + for message in run_response_messages: + # just logging or do something with the intermediate messages? + # if current response is not empty and there is more, append new lines + if len(response["content"]) > 0: + response["content"] += "\n\n" + response["content"] += message["content"] + + self._unread_index[sender] = len(self._oai_messages[sender]) + 1 + return True, response + + def _get_run_response(self, thread, run): + """ + Waits for and processes the response of a run from the OpenAI assistant. + + Args: + run: The run object initiated with the OpenAI assistant. + + Returns: + Updated run object, status of the run, and response messages. + """ + while True: + run = self._wait_for_run(run.id, thread.id) + if run.status == "completed": + response_messages = self._openai_client.beta.threads.messages.list(thread.id, order="asc") + + new_messages = [] + for msg in response_messages: + if msg.run_id == run.id: + for content in msg.content: + if content.type == "text": + new_messages.append( + {"role": msg.role, "content": self._format_assistant_message(content.text)} + ) + elif content.type == "image_file": + new_messages.append( + { + "role": msg.role, + "content": f"Recieved file id={content.image_file.file_id}", + } + ) + return new_messages + elif run.status == "requires_action": + actions = [] + for tool_call in run.required_action.submit_tool_outputs.tool_calls: + function = tool_call.function + is_exec_success, tool_response = self.execute_function(function.dict()) + tool_response["metadata"] = { + "tool_call_id": tool_call.id, + "run_id": run.id, + "thread_id": thread.id, + } + + logger.info( + "Intermediate executing(%s, Sucess: %s) : %s", + tool_response["name"], + is_exec_success, + tool_response["content"], + ) + actions.append(tool_response) + + submit_tool_outputs = { + "tool_outputs": [ + {"output": action["content"], "tool_call_id": action["metadata"]["tool_call_id"]} + for action in actions + ], + "run_id": run.id, + "thread_id": thread.id, + } + + run = self._openai_client.beta.threads.runs.submit_tool_outputs(**submit_tool_outputs) + else: + run_info = json.dumps(run.dict(), indent=2) + raise ValueError(f"Unexpected run status: {run.status}. Full run info:\n\n{run_info})") + + def _wait_for_run(self, run_id: str, thread_id: str) -> Any: + """ + Waits for a run to complete or reach a final state. + + Args: + run_id: The ID of the run. + thread_id: The ID of the thread associated with the run. + + Returns: + The updated run object after completion or reaching a final state. + """ + in_progress = True + while in_progress: + run = self._openai_client.beta.threads.runs.retrieve(run_id, thread_id=thread_id) + in_progress = run.status in ("in_progress", "queued") + if in_progress: + time.sleep(self.llm_config.get("check_every_ms", 1000) / 1000) + return run + + def _format_assistant_message(self, message_content): + """ + Formats the assistant's message to include annotations and citations. + """ + + annotations = message_content.annotations + citations = [] + + # Iterate over the annotations and add footnotes + for index, annotation in enumerate(annotations): + # Replace the text with a footnote + message_content.value = message_content.value.replace(annotation.text, f" [{index}]") + + # Gather citations based on annotation attributes + if file_citation := getattr(annotation, "file_citation", None): + try: + cited_file = self._openai_client.files.retrieve(file_citation.file_id) + citations.append(f"[{index}] {cited_file.filename}: {file_citation.quote}") + except Exception as e: + logger.error(f"Error retrieving file citation: {e}") + elif file_path := getattr(annotation, "file_path", None): + try: + cited_file = self._openai_client.files.retrieve(file_path.file_id) + citations.append(f"[{index}] Click <here> to download {cited_file.filename}") + except Exception as e: + logger.error(f"Error retrieving file citation: {e}") + # Note: File download functionality not implemented above for brevity + + # Add footnotes to the end of the message before displaying to user + message_content.value += "\n" + "\n".join(citations) + return message_content.value + + def can_execute_function(self, name: str) -> bool: + """Whether the agent can execute the function.""" + return False + + def reset(self): + """ + Resets the agent, clearing any existing conversation thread and unread message indices. + """ + super().reset() + for thread in self._openai_threads.values(): + # Delete the existing thread to start fresh in the next conversation + self._openai_client.beta.threads.delete(thread.id) + self._openai_threads = {} + # Clear the record of unread messages + self._unread_index.clear() + + def clear_history(self, agent: Optional[Agent] = None): + """Clear the chat history of the agent. + + Args: + agent: the agent with whom the chat history to clear. If None, clear the chat history with all agents. + """ + super().clear_history(agent) + if self._openai_threads.get(agent, None) is not None: + # Delete the existing thread to start fresh in the next conversation + thread = self._openai_threads[agent] + logger.info("Clearing thread %s", thread.id) + self._openai_client.beta.threads.delete(thread.id) + self._openai_threads.pop(agent) + self._unread_index[agent] = 0 + + def pretty_print_thread(self, thread): + """Pretty print the thread.""" + if thread is None: + print("No thread to print") + return + # NOTE: that list may not be in order, sorting by created_at is important + messages = self._openai_client.beta.threads.messages.list( + thread_id=thread.id, + ) + messages = sorted(messages.data, key=lambda x: x.created_at) + print("~~~~~~~THREAD CONTENTS~~~~~~~") + for message in messages: + content_types = [content.type for content in message.content] + print(f"[{message.created_at}]", message.role, ": [", ", ".join(content_types), "]") + for content in message.content: + content_type = content.type + if content_type == "text": + print(content.type, ": ", content.text.value) + elif content_type == "image_file": + print(content.type, ": ", content.image_file.file_id) + else: + print(content.type, ": ", content) + print("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~") + + @property + def oai_threads(self) -> Dict[Agent, Any]: + """Return the threads of the agent.""" + return self._openai_threads + + @property + def assistant_id(self): + """Return the assistant id""" + return self._openai_assistant.id + + def get_assistant_instructions(self): + """Return the assistant instructions from OAI assistant API""" + return self._openai_assistant.instructions + + def delete_assistant(self): + """Delete the assistant from OAI assistant API""" + self._openai_client.beta.assistants.delete(self.assistant_id) diff --git a/autogen/agentchat/contrib/llava_agent.py b/autogen/agentchat/contrib/llava_agent.py new file mode 100644 index 00000000000..39c4b2987c8 --- /dev/null +++ b/autogen/agentchat/contrib/llava_agent.py @@ -0,0 +1,178 @@ +import json +import logging +import os +import pdb +import re +from typing import Any, Dict, List, Optional, Tuple, Union + +import replicate +import requests +from regex import R + +from autogen.agentchat.agent import Agent +from autogen.agentchat.contrib.multimodal_conversable_agent import MultimodalConversableAgent +from autogen.code_utils import content_str +from autogen.img_utils import get_image_data, llava_formater + +try: + from termcolor import colored +except ImportError: + + def colored(x, *args, **kwargs): + return x + + +logger = logging.getLogger(__name__) + +# we will override the following variables later. +SEP = "###" + +DEFAULT_LLAVA_SYS_MSG = "You are an AI agent and you can view images." + + +class LLaVAAgent(MultimodalConversableAgent): + def __init__( + self, + name: str, + system_message: Optional[Tuple[str, List]] = DEFAULT_LLAVA_SYS_MSG, + *args, + **kwargs, + ): + """ + Args: + name (str): agent name. + system_message (str): system message for the ChatCompletion inference. + Please override this attribute if you want to reprogram the agent. + **kwargs (dict): Please refer to other kwargs in + [ConversableAgent](../conversable_agent#__init__). + """ + super().__init__( + name, + system_message=system_message, + *args, + **kwargs, + ) + + assert self.llm_config is not None, "llm_config must be provided." + self.register_reply([Agent, None], reply_func=LLaVAAgent._image_reply, position=1) + + def _image_reply(self, messages=None, sender=None, config=None): + # Note: we did not use "llm_config" yet. + + if all((messages is None, sender is None)): + error_msg = f"Either {messages=} or {sender=} must be provided." + logger.error(error_msg) + raise AssertionError(error_msg) + + if messages is None: + messages = self._oai_messages[sender] + + # The formats for LLaVA and GPT are different. So, we manually handle them here. + images = [] + prompt = content_str(self.system_message) + "\n" + for msg in messages: + role = "Human" if msg["role"] == "user" else "Assistant" + # pdb.set_trace() + images += [d["image_url"]["url"] for d in msg["content"] if d["type"] == "image_url"] + content_prompt = content_str(msg["content"]) + prompt += f"{SEP}{role}: {content_prompt}\n" + prompt += "\n" + SEP + "Assistant: " + images = [re.sub("data:image/.+;base64,", "", im, count=1) for im in images] + print(colored(prompt, "blue")) + + out = "" + retry = 10 + while len(out) == 0 and retry > 0: + # image names will be inferred automatically from llava_call + out = llava_call_binary( + prompt=prompt, + images=images, + config_list=self.llm_config["config_list"], + temperature=self.llm_config.get("temperature", 0.5), + max_new_tokens=self.llm_config.get("max_new_tokens", 2000), + ) + retry -= 1 + + assert out != "", "Empty response from LLaVA." + + return True, out + + +def _llava_call_binary_with_config( + prompt: str, images: list, config: dict, max_new_tokens: int = 1000, temperature: float = 0.5, seed: int = 1 +): + if config["base_url"].find("0.0.0.0") >= 0 or config["base_url"].find("localhost") >= 0: + llava_mode = "local" + else: + llava_mode = "remote" + + if llava_mode == "local": + headers = {"User-Agent": "LLaVA Client"} + pload = { + "model": config["model"], + "prompt": prompt, + "max_new_tokens": max_new_tokens, + "temperature": temperature, + "stop": SEP, + "images": images, + } + + response = requests.post( + config["base_url"].rstrip("/") + "/worker_generate_stream", headers=headers, json=pload, stream=False + ) + + for chunk in response.iter_lines(chunk_size=8192, decode_unicode=False, delimiter=b"\0"): + if chunk: + data = json.loads(chunk.decode("utf-8")) + output = data["text"].split(SEP)[-1] + elif llava_mode == "remote": + # The Replicate version of the model only support 1 image for now. + img = "data:image/jpeg;base64," + images[0] + response = replicate.run( + config["base_url"], input={"image": img, "prompt": prompt.replace("<image>", " "), "seed": seed} + ) + # The yorickvp/llava-13b model can stream output as it's running. + # The predict method returns an iterator, and you can iterate over that output. + output = "" + for item in response: + # https://replicate.com/yorickvp/llava-13b/versions/2facb4a474a0462c15041b78b1ad70952ea46b5ec6ad29583c0b29dbd4249591/api#output-schema + output += item + + # Remove the prompt and the space. + output = output.replace(prompt, "").strip().rstrip() + return output + + +def llava_call_binary( + prompt: str, images: list, config_list: list, max_new_tokens: int = 1000, temperature: float = 0.5, seed: int = 1 +): + # TODO 1: add caching around the LLaVA call to save compute and cost + # TODO 2: add `seed` to ensure reproducibility. The seed is not working now. + + for config in config_list: + try: + return _llava_call_binary_with_config(prompt, images, config, max_new_tokens, temperature, seed) + except Exception as e: + print(f"Error: {e}") + continue + + +def llava_call(prompt: str, llm_config: dict) -> str: + """ + Makes a call to the LLaVA service to generate text based on a given prompt + """ + + prompt, images = llava_formater(prompt, order_image_tokens=False) + + for im in images: + if len(im) == 0: + raise RuntimeError("An image is empty!") + + return llava_call_binary( + prompt, + images, + config_list=llm_config["config_list"], + max_new_tokens=llm_config.get("max_new_tokens", 2000), + temperature=llm_config.get("temperature", 0.5), + seed=llm_config.get("seed", None), + ) diff --git a/autogen/agentchat/contrib/math_user_proxy_agent.py b/autogen/agentchat/contrib/math_user_proxy_agent.py index 7a15e80ec74..edf13e650dc 100644 --- a/autogen/agentchat/contrib/math_user_proxy_agent.py +++ b/autogen/agentchat/contrib/math_user_proxy_agent.py @@ -1,7 +1,7 @@ import re import os from pydantic import BaseModel, Extra, root_validator -from typing import Any, Callable, Dict, List, Optional, Union +from typing import Any, Callable, Dict, List, Optional, Union, Tuple from time import sleep from autogen.agentchat import Agent, UserProxyAgent @@ -177,7 +177,7 @@ def __init__( self.last_reply = None def generate_init_message(self, problem, prompt_type="default", customized_prompt=None): - """Generate a prompt for the assitant agent with the given problem and prompt. + """Generate a prompt for the assistant agent with the given problem and prompt. Args: problem (str): the problem to be solved. @@ -402,7 +402,7 @@ def validate_environment(cls, values: Dict) -> Dict: return values - def run(self, query: str) -> str: + def run(self, query: str) -> Tuple[str, bool]: """Run query through WolframAlpha and parse result.""" from urllib.error import HTTPError diff --git a/autogen/agentchat/contrib/multimodal_conversable_agent.py b/autogen/agentchat/contrib/multimodal_conversable_agent.py new file mode 100644 index 00000000000..088861bb6d8 --- /dev/null +++ b/autogen/agentchat/contrib/multimodal_conversable_agent.py @@ -0,0 +1,107 @@ +from typing import Any, Callable, Dict, List, Optional, Tuple, Union + +from autogen import OpenAIWrapper +from autogen.agentchat import Agent, ConversableAgent +from autogen.img_utils import gpt4v_formatter + +try: + from termcolor import colored +except ImportError: + + def colored(x, *args, **kwargs): + return x + + +from autogen.code_utils import content_str + +DEFAULT_LMM_SYS_MSG = """You are a helpful AI assistant.""" + + +class MultimodalConversableAgent(ConversableAgent): + def __init__( + self, + name: str, + system_message: Optional[Union[str, List]] = DEFAULT_LMM_SYS_MSG, + is_termination_msg: str = None, + *args, + **kwargs, + ): + """ + Args: + name (str): agent name. + system_message (str): system message for the OpenAIWrapper inference. + Please override this attribute if you want to reprogram the agent. + **kwargs (dict): Please refer to other kwargs in + [ConversableAgent](../conversable_agent#__init__). + """ + super().__init__( + name, + system_message, + is_termination_msg=is_termination_msg, + *args, + **kwargs, + ) + + self.update_system_message(system_message) + self._is_termination_msg = ( + is_termination_msg + if is_termination_msg is not None + else (lambda x: any([item["text"] == "TERMINATE" for item in x.get("content") if item["type"] == "text"])) + ) + + @property + def system_message(self) -> List: + """Return the system message.""" + return self._oai_system_message[0]["content"] + + def update_system_message(self, system_message: Union[Dict, List, str]): + """Update the system message. + + Args: + system_message (str): system message for the OpenAIWrapper inference. + """ + self._oai_system_message[0]["content"] = self._message_to_dict(system_message)["content"] + self._oai_system_message[0]["role"] = "system" + + @staticmethod + def _message_to_dict(message: Union[Dict, List, str]): + """Convert a message to a dictionary. + + The message can be a string or a dictionary. The string will be put in the "content" field of the new dictionary. + """ + if isinstance(message, str): + return {"content": gpt4v_formatter(message)} + if isinstance(message, list): + return {"content": message} + else: + return message + + def _print_received_message(self, message: Union[Dict, str], sender: Agent): + # print the message received + print(colored(sender.name, "yellow"), "(to", f"{self.name}):\n", flush=True) + if message.get("role") == "function": + func_print = f"***** Response from calling function \"{message['name']}\" *****" + print(colored(func_print, "green"), flush=True) + print(content_str(message["content"]), flush=True) + print(colored("*" * len(func_print), "green"), flush=True) + else: + content = message.get("content") + if content is not None: + if "context" in message: + content = OpenAIWrapper.instantiate( + content, + message["context"], + self.llm_config and self.llm_config.get("allow_format_str_template", False), + ) + print(content_str(content), flush=True) + if "function_call" in message: + func_print = f"***** Suggested function Call: {message['function_call'].get('name', '(No function name found)')} *****" + print(colored(func_print, "green"), flush=True) + print( + "Arguments: \n", + message["function_call"].get("arguments", "(No arguments found)"), + flush=True, + sep="", + ) + print(colored("*" * len(func_print), "green"), flush=True) + print("\n", "-" * 80, flush=True, sep="") diff --git a/autogen/agentchat/contrib/qdrant_retrieve_user_proxy_agent.py b/autogen/agentchat/contrib/qdrant_retrieve_user_proxy_agent.py new file mode 100644 index 00000000000..e0bb8d8216f --- /dev/null +++ b/autogen/agentchat/contrib/qdrant_retrieve_user_proxy_agent.py @@ -0,0 +1,266 @@ +from typing import Callable, Dict, List, Optional + +from autogen.agentchat.contrib.retrieve_user_proxy_agent import RetrieveUserProxyAgent +from autogen.retrieve_utils import get_files_from_dir, split_files_to_chunks +import logging + +logger = logging.getLogger(__name__) + +try: + from qdrant_client import QdrantClient, models + from qdrant_client.fastembed_common import QueryResponse + import fastembed +except ImportError as e: + logging.fatal("Failed to import qdrant_client with fastembed. Try running 'pip install qdrant_client[fastembed]'") + raise e + + +class QdrantRetrieveUserProxyAgent(RetrieveUserProxyAgent): + def __init__( + self, + name="RetrieveChatAgent", # default set to RetrieveChatAgent + human_input_mode: Optional[str] = "ALWAYS", + is_termination_msg: Optional[Callable[[Dict], bool]] = None, + retrieve_config: Optional[Dict] = None, # config for the retrieve agent + **kwargs, + ): + """ + Args: + name (str): name of the agent. + human_input_mode (str): whether to ask for human inputs every time a message is received. + Possible values are "ALWAYS", "TERMINATE", "NEVER". + (1) When "ALWAYS", the agent prompts for human input every time a message is received. + Under this mode, the conversation stops when the human input is "exit", + or when is_termination_msg is True and there is no human input. + (2) When "TERMINATE", the agent only prompts for human input only when a termination message is received or + the number of auto reply reaches the max_consecutive_auto_reply. + (3) When "NEVER", the agent will never prompt for human input. Under this mode, the conversation stops + when the number of auto reply reaches the max_consecutive_auto_reply or when is_termination_msg is True. + is_termination_msg (function): a function that takes a message in the form of a dictionary + and returns a boolean value indicating if this received message is a termination message. + The dict can contain the following keys: "content", "role", "name", "function_call". + retrieve_config (dict or None): config for the retrieve agent. + To use default config, set to None. Otherwise, set to a dictionary with the following keys: + - task (Optional, str): the task of the retrieve chat. Possible values are "code", "qa" and "default". System + prompt will be different for different tasks. The default value is `default`, which supports both code and qa. + - client (Optional, qdrant_client.QdrantClient(":memory:")): A QdrantClient instance. If not provided, an in-memory instance will be assigned. Not recommended for production. + will be used. If you want to use other vector db, extend this class and override the `retrieve_docs` function. + - docs_path (Optional, str): the path to the docs directory. It can also be the path to a single file, + or the url to a single file. Default is None, which works only if the collection is already created. + - collection_name (Optional, str): the name of the collection. + If key not provided, a default name `autogen-docs` will be used. + - model (Optional, str): the model to use for the retrieve chat. + If key not provided, a default model `gpt-4` will be used. + - chunk_token_size (Optional, int): the chunk token size for the retrieve chat. + If key not provided, a default size `max_tokens * 0.4` will be used. + - context_max_tokens (Optional, int): the context max token size for the retrieve chat. + If key not provided, a default size `max_tokens * 0.8` will be used. + - chunk_mode (Optional, str): the chunk mode for the retrieve chat. Possible values are + "multi_lines" and "one_line". If key not provided, a default mode `multi_lines` will be used. + - must_break_at_empty_line (Optional, bool): chunk will only break at empty line if True. Default is True. + If chunk_mode is "one_line", this parameter will be ignored. + - embedding_model (Optional, str): the embedding model to use for the retrieve chat. + If key not provided, a default model `BAAI/bge-small-en-v1.5` will be used. All available models + can be found at `https://qdrant.github.io/fastembed/examples/Supported_Models/`. + - customized_prompt (Optional, str): the customized prompt for the retrieve chat. Default is None. + - customized_answer_prefix (Optional, str): the customized answer prefix for the retrieve chat. Default is "". + If not "" and the customized_answer_prefix is not in the answer, `Update Context` will be triggered. + - update_context (Optional, bool): if False, will not apply `Update Context` for interactive retrieval. Default is True. + - custom_token_count_function(Optional, Callable): a custom function to count the number of tokens in a string. + The function should take a string as input and return three integers (token_count, tokens_per_message, tokens_per_name). + Default is None, tiktoken will be used and may not be accurate for non-OpenAI models. + - custom_text_split_function(Optional, Callable): a custom function to split a string into a list of strings. + Default is None, will use the default function in `autogen.retrieve_utils.split_text_to_chunks`. + - parallel (Optional, int): How many parallel workers to use for embedding. Defaults to the number of CPU cores. + - on_disk (Optional, bool): Whether to store the collection on disk. Default is False. + - quantization_config: Quantization configuration. If None, quantization will be disabled. + - hnsw_config: HNSW configuration. If None, default configuration will be used. + You can find more info about the hnsw configuration options at https://qdrant.tech/documentation/concepts/indexing/#vector-index. + API Reference: https://qdrant.github.io/qdrant/redoc/index.html#tag/collections/operation/create_collection + - payload_indexing: Whether to create a payload index for the document field. Default is False. + You can find more info about the payload indexing options at https://qdrant.tech/documentation/concepts/indexing/#payload-index + API Reference: https://qdrant.github.io/qdrant/redoc/index.html#tag/collections/operation/create_field_index + **kwargs (dict): other kwargs in [UserProxyAgent](../user_proxy_agent#__init__). + + """ + super().__init__(name, human_input_mode, is_termination_msg, retrieve_config, **kwargs) + self._client = self._retrieve_config.get("client", QdrantClient(":memory:")) + self._embedding_model = self._retrieve_config.get("embedding_model", "BAAI/bge-small-en-v1.5") + # Uses all available CPU cores to encode data when set to 0 + self._parallel = self._retrieve_config.get("parallel", 0) + self._on_disk = self._retrieve_config.get("on_disk", False) + self._quantization_config = self._retrieve_config.get("quantization_config", None) + self._hnsw_config = self._retrieve_config.get("hnsw_config", None) + self._payload_indexing = self._retrieve_config.get("payload_indexing", False) + + def retrieve_docs(self, problem: str, n_results: int = 20, search_string: str = ""): + """ + Args: + problem (str): the problem to be solved. + n_results (int): the number of results to be retrieved. + search_string (str): only docs containing this string will be retrieved. + """ + if not self._collection: + print("Trying to create collection.") + create_qdrant_from_dir( + dir_path=self._docs_path, + max_tokens=self._chunk_token_size, + client=self._client, + collection_name=self._collection_name, + chunk_mode=self._chunk_mode, + must_break_at_empty_line=self._must_break_at_empty_line, + embedding_model=self._embedding_model, + custom_text_split_function=self.custom_text_split_function, + parallel=self._parallel, + on_disk=self._on_disk, + quantization_config=self._quantization_config, + hnsw_config=self._hnsw_config, + payload_indexing=self._payload_indexing, + ) + self._collection = True + + results = query_qdrant( + query_texts=problem, + n_results=n_results, + search_string=search_string, + client=self._client, + collection_name=self._collection_name, + embedding_model=self._embedding_model, + ) + self._results = results + + +def create_qdrant_from_dir( + dir_path: str, + max_tokens: int = 4000, + client: QdrantClient = None, + collection_name: str = "all-my-documents", + chunk_mode: str = "multi_lines", + must_break_at_empty_line: bool = True, + embedding_model: str = "BAAI/bge-small-en-v1.5", + custom_text_split_function: Callable = None, + parallel: int = 0, + on_disk: bool = False, + quantization_config: Optional[models.QuantizationConfig] = None, + hnsw_config: Optional[models.HnswConfigDiff] = None, + payload_indexing: bool = False, + qdrant_client_options: Optional[Dict] = {}, +): + """Create a Qdrant collection from all the files in a given directory, the directory can also be a single file or a url to + a single file. + + Args: + dir_path (str): the path to the directory, file or url. + max_tokens (Optional, int): the maximum number of tokens per chunk. Default is 4000. + client (Optional, QdrantClient): the QdrantClient instance. Default is None. + collection_name (Optional, str): the name of the collection. Default is "all-my-documents". + chunk_mode (Optional, str): the chunk mode. Default is "multi_lines". + must_break_at_empty_line (Optional, bool): Whether to break at empty line. Default is True. + embedding_model (Optional, str): the embedding model to use. Default is "BAAI/bge-small-en-v1.5". The list of all the available models can be at https://qdrant.github.io/fastembed/examples/Supported_Models/. + parallel (Optional, int): How many parallel workers to use for embedding. Defaults to the number of CPU cores + on_disk (Optional, bool): Whether to store the collection on disk. Default is False. + quantization_config: Quantization configuration. If None, quantization will be disabled. Ref: https://qdrant.github.io/qdrant/redoc/index.html#tag/collections/operation/create_collection + hnsw_config: HNSW configuration. If None, default configuration will be used. Ref: https://qdrant.github.io/qdrant/redoc/index.html#tag/collections/operation/create_collection + payload_indexing: Whether to create a payload index for the document field. Default is False. + qdrant_client_options: (Optional, dict): the options for instantiating the qdrant client. Reference: https://github.com/qdrant/qdrant-client/blob/master/qdrant_client/qdrant_client.py#L36-L58. + """ + if client is None: + client = QdrantClient(**qdrant_client_options) + client.set_model(embedding_model) + + if custom_text_split_function is not None: + chunks = split_files_to_chunks( + get_files_from_dir(dir_path), custom_text_split_function=custom_text_split_function + ) + else: + chunks = split_files_to_chunks(get_files_from_dir(dir_path), max_tokens, chunk_mode, must_break_at_empty_line) + logger.info(f"Found {len(chunks)} chunks.") + + # Check if collection by same name exists, if not, create it with custom options + try: + client.get_collection(collection_name=collection_name) + except Exception: + client.create_collection( + collection_name=collection_name, + vectors_config=client.get_fastembed_vector_params( + on_disk=on_disk, quantization_config=quantization_config, hnsw_config=hnsw_config + ), + ) + client.get_collection(collection_name=collection_name) + + # Upsert in batch of 100 or less if the total number of chunks is less than 100 + for i in range(0, len(chunks), min(100, len(chunks))): + end_idx = i + min(100, len(chunks) - i) + client.add(collection_name, documents=chunks[i:end_idx], ids=[j for j in range(i, end_idx)], parallel=parallel) + + # Create a payload index for the document field + # Enables highly efficient payload filtering. Reference: https://qdrant.tech/documentation/concepts/indexing/#indexing + # Creating an index requires additional computational resources and memory. + # If filtering performance is critical, we can consider creating an index. + if payload_indexing: + client.create_payload_index( + collection_name=collection_name, + field_name="document", + field_schema=models.TextIndexParams( + type="text", + tokenizer=models.TokenizerType.WORD, + min_token_len=2, + max_token_len=15, + ), + ) + + +def query_qdrant( + query_texts: List[str], + n_results: int = 10, + client: QdrantClient = None, + collection_name: str = "all-my-documents", + search_string: str = "", + embedding_model: str = "BAAI/bge-small-en-v1.5", + qdrant_client_options: Optional[Dict] = {}, +) -> List[List[QueryResponse]]: + """Perform a similarity search with filters on a Qdrant collection + + Args: + query_texts (List[str]): the query texts. + n_results (Optional, int): the number of results to return. Default is 10. + client (Optional, API): the QdrantClient instance. A default in-memory client will be instantiated if None. + collection_name (Optional, str): the name of the collection. Default is "all-my-documents". + search_string (Optional, str): the search string. Default is "". + embedding_model (Optional, str): the embedding model to use. Default is "all-MiniLM-L6-v2". Will be ignored if embedding_function is not None. + qdrant_client_options: (Optional, dict): the options for instantiating the qdrant client. Reference: https://github.com/qdrant/qdrant-client/blob/master/qdrant_client/qdrant_client.py#L36-L58. + + Returns: + List[List[QueryResponse]]: the query result. The format is: + class QueryResponse(BaseModel, extra="forbid"): # type: ignore + id: Union[str, int] + embedding: Optional[List[float]] + metadata: Dict[str, Any] + document: str + score: float + """ + if client is None: + client = QdrantClient(**qdrant_client_options) + client.set_model(embedding_model) + + results = client.query_batch( + collection_name, + query_texts, + limit=n_results, + query_filter=models.Filter( + must=[ + models.FieldCondition( + key="document", + match=models.MatchText(text=search_string), + ) + ] + ) + if search_string + else None, + ) + + data = { + "ids": [[result.id for result in sublist] for sublist in results], + "documents": [[result.document for result in sublist] for sublist in results], + } + return data diff --git a/autogen/agentchat/contrib/retrieve_user_proxy_agent.py b/autogen/agentchat/contrib/retrieve_user_proxy_agent.py index 62d9ffd93bb..2abc8a9ac94 100644 --- a/autogen/agentchat/contrib/retrieve_user_proxy_agent.py +++ b/autogen/agentchat/contrib/retrieve_user_proxy_agent.py @@ -1,8 +1,13 @@ import re -import chromadb + +try: + import chromadb +except ImportError: + raise ImportError("Please install dependencies first. `pip install pyautogen[retrievechat]`") from autogen.agentchat.agent import Agent from autogen.agentchat import UserProxyAgent -from autogen.retrieve_utils import create_vector_db_from_dir, query_vector_db, num_tokens_from_text +from autogen.retrieve_utils import create_vector_db_from_dir, query_vector_db +from autogen.token_count_utils import count_token from autogen.code_utils import extract_code from typing import Callable, Dict, Optional, Union, List, Tuple, Any @@ -62,27 +67,12 @@ def colored(x, *args, **kwargs): """ -def _is_termination_msg_retrievechat(message): - """Check if a message is a termination message.""" - if isinstance(message, dict): - message = message.get("content") - if message is None: - return False - cb = extract_code(message) - contain_code = False - for c in cb: - if c[0] == "python": - contain_code = True - break - return not contain_code - - class RetrieveUserProxyAgent(UserProxyAgent): def __init__( self, name="RetrieveChatAgent", # default set to RetrieveChatAgent - is_termination_msg: Optional[Callable[[Dict], bool]] = _is_termination_msg_retrievechat, human_input_mode: Optional[str] = "ALWAYS", + is_termination_msg: Optional[Callable[[Dict], bool]] = None, retrieve_config: Optional[Dict] = None, # config for the retrieve agent **kwargs, ): @@ -98,14 +88,17 @@ def __init__( the number of auto reply reaches the max_consecutive_auto_reply. (3) When "NEVER", the agent will never prompt for human input. Under this mode, the conversation stops when the number of auto reply reaches the max_consecutive_auto_reply or when is_termination_msg is True. + is_termination_msg (function): a function that takes a message in the form of a dictionary + and returns a boolean value indicating if this received message is a termination message. + The dict can contain the following keys: "content", "role", "name", "function_call". retrieve_config (dict or None): config for the retrieve agent. To use default config, set to None. Otherwise, set to a dictionary with the following keys: - task (Optional, str): the task of the retrieve chat. Possible values are "code", "qa" and "default". System prompt will be different for different tasks. The default value is `default`, which supports both code and qa. - - client (Optional, chromadb.Client): the chromadb client. - If key not provided, a default client `chromadb.Client()` will be used. + - client (Optional, chromadb.Client): the chromadb client. If key not provided, a default client `chromadb.Client()` + will be used. If you want to use other vector db, extend this class and override the `retrieve_docs` function. - docs_path (Optional, str): the path to the docs directory. It can also be the path to a single file, - or the url to a single file. If key not provided, a default path `./docs` will be used. + or the url to a single file. Default is None, which works only if the collection is already created. - collection_name (Optional, str): the name of the collection. If key not provided, a default name `autogen-docs` will be used. - model (Optional, str): the model to use for the retrieve chat. @@ -122,15 +115,50 @@ def __init__( If key not provided, a default model `all-MiniLM-L6-v2` will be used. All available models can be found at `https://www.sbert.net/docs/pretrained_models.html`. The default model is a fast model. If you want to use a high performance model, `all-mpnet-base-v2` is recommended. + - embedding_function (Optional, Callable): the embedding function for creating the vector db. Default is None, + SentenceTransformer with the given `embedding_model` will be used. If you want to use OpenAI, Cohere, HuggingFace or + other embedding functions, you can pass it here, follow the examples in `https://docs.trychroma.com/embeddings`. - customized_prompt (Optional, str): the customized prompt for the retrieve chat. Default is None. - customized_answer_prefix (Optional, str): the customized answer prefix for the retrieve chat. Default is "". If not "" and the customized_answer_prefix is not in the answer, `Update Context` will be triggered. - - no_update_context (Optional, bool): if True, will not apply `Update Context` for interactive retrieval. Default is False. + - update_context (Optional, bool): if False, will not apply `Update Context` for interactive retrieval. Default is True. + - get_or_create (Optional, bool): if True, will create/return a collection for the retrieve chat. This is the same as that used in chromadb. + Default is False. Will raise ValueError if the collection already exists and get_or_create is False. Will be set to True if docs_path is None. + - custom_token_count_function(Optional, Callable): a custom function to count the number of tokens in a string. + The function should take (text:str, model:str) as input and return the token_count(int). the retrieve_config["model"] will be passed in the function. + Default is autogen.token_count_utils.count_token that uses tiktoken, which may not be accurate for non-OpenAI models. + - custom_text_split_function(Optional, Callable): a custom function to split a string into a list of strings. + Default is None, will use the default function in `autogen.retrieve_utils.split_text_to_chunks`. **kwargs (dict): other kwargs in [UserProxyAgent](../user_proxy_agent#__init__). + + Example of overriding retrieve_docs: + If you have set up a customized vector db, and it's not compatible with chromadb, you can easily plug in it with below code. + ```python + class MyRetrieveUserProxyAgent(RetrieveUserProxyAgent): + def query_vector_db( + self, + query_texts: List[str], + n_results: int = 10, + search_string: str = "", + **kwargs, + ) -> Dict[str, Union[List[str], List[List[str]]]]: + # define your own query function here + pass + + def retrieve_docs(self, problem: str, n_results: int = 20, search_string: str = "", **kwargs): + results = self.query_vector_db( + query_texts=[problem], + n_results=n_results, + search_string=search_string, + **kwargs, + ) + + self._results = results + print("doc_ids: ", results["ids"]) + ``` """ super().__init__( name=name, - is_termination_msg=is_termination_msg, human_input_mode=human_input_mode, **kwargs, ) @@ -138,7 +166,7 @@ def __init__( self._retrieve_config = {} if retrieve_config is None else retrieve_config self._task = self._retrieve_config.get("task", "default") self._client = self._retrieve_config.get("client", chromadb.Client()) - self._docs_path = self._retrieve_config.get("docs_path", "./docs") + self._docs_path = self._retrieve_config.get("docs_path", None) self._collection_name = self._retrieve_config.get("collection_name", "autogen-docs") self._model = self._retrieve_config.get("model", "gpt-4") self._max_tokens = self.get_max_tokens(self._model) @@ -146,18 +174,45 @@ def __init__( self._chunk_mode = self._retrieve_config.get("chunk_mode", "multi_lines") self._must_break_at_empty_line = self._retrieve_config.get("must_break_at_empty_line", True) self._embedding_model = self._retrieve_config.get("embedding_model", "all-MiniLM-L6-v2") + self._embedding_function = self._retrieve_config.get("embedding_function", None) self.customized_prompt = self._retrieve_config.get("customized_prompt", None) self.customized_answer_prefix = self._retrieve_config.get("customized_answer_prefix", "").upper() - self.no_update_context = self._retrieve_config.get("no_update_context", False) + self.update_context = self._retrieve_config.get("update_context", True) + self._get_or_create = self._retrieve_config.get("get_or_create", False) if self._docs_path is not None else True + self.custom_token_count_function = self._retrieve_config.get("custom_token_count_function", count_token) + self.custom_text_split_function = self._retrieve_config.get("custom_text_split_function", None) self._context_max_tokens = self._max_tokens * 0.8 - self._collection = False # the collection is not created + self._collection = True if self._docs_path is None else False # whether the collection is created self._ipython = get_ipython() self._doc_idx = -1 # the index of the current used doc self._results = {} # the results of the current query self._intermediate_answers = set() # the intermediate answers self._doc_contents = [] # the contents of the current used doc self._doc_ids = [] # the ids of the current used doc - self.register_reply(Agent, RetrieveUserProxyAgent._generate_retrieve_user_reply) + # update the termination message function + self._is_termination_msg = ( + self._is_termination_msg_retrievechat if is_termination_msg is None else is_termination_msg + ) + self.register_reply(Agent, RetrieveUserProxyAgent._generate_retrieve_user_reply, position=1) + + def _is_termination_msg_retrievechat(self, message): + """Check if a message is a termination message. + For code generation, terminate when no code block is detected. Currently only detect python code blocks. + For question answering, terminate when don't update context, i.e., answer is given. + """ + if isinstance(message, dict): + message = message.get("content") + if message is None: + return False + cb = extract_code(message) + contain_code = False + for c in cb: + # todo: support more languages + if c[0] == "python": + contain_code = True + break + update_context_case1, update_context_case2 = self._check_update_context(message) + return not (contain_code or update_context_case1 or update_context_case2) @staticmethod def get_max_tokens(model="gpt-3.5-turbo"): @@ -178,7 +233,7 @@ def _reset(self, intermediate=False): self._doc_contents = [] # the contents of the current used doc self._doc_ids = [] # the ids of the current used doc - def _get_context(self, results): + def _get_context(self, results: Dict[str, Union[List[str], List[List[str]]]]): doc_contents = "" current_tokens = 0 _doc_idx = self._doc_idx @@ -188,7 +243,7 @@ def _get_context(self, results): continue if results["ids"][0][idx] in self._doc_ids: continue - _doc_tokens = num_tokens_from_text(doc) + _doc_tokens = self.custom_token_count_function(doc, self._model) if _doc_tokens > self._context_max_tokens: func_print = f"Skip doc_id {results['ids'][0][idx]} as it is too long to fit in the context." print(colored(func_print, "green"), flush=True) @@ -224,6 +279,13 @@ def _generate_message(self, doc_contents, task="default"): raise NotImplementedError(f"task {task} is not implemented.") return message + def _check_update_context(self, message): + if isinstance(message, dict): + message = message.get("content", "") + update_context_case1 = "UPDATE CONTEXT" in message[-20:].upper() or "UPDATE CONTEXT" in message[:20].upper() + update_context_case2 = self.customized_answer_prefix and self.customized_answer_prefix not in message.upper() + return update_context_case1, update_context_case2 + def _generate_retrieve_user_reply( self, messages: Optional[List[Dict]] = None, @@ -231,7 +293,7 @@ def _generate_retrieve_user_reply( config: Optional[Any] = None, ) -> Tuple[bool, Union[str, Dict, None]]: """In this function, we will update the context and reset the conversation based on different conditions. - We'll update the context and reset the conversation if no_update_context is False and either of the following: + We'll update the context and reset the conversation if update_context is True and either of the following: (1) the last message contains "UPDATE CONTEXT", (2) the last message doesn't contain "UPDATE CONTEXT" and the customized_answer_prefix is not in the message. """ @@ -240,14 +302,8 @@ def _generate_retrieve_user_reply( if messages is None: messages = self._oai_messages[sender] message = messages[-1] - update_context_case1 = ( - "UPDATE CONTEXT" in message.get("content", "")[-20:].upper() - or "UPDATE CONTEXT" in message.get("content", "")[:20].upper() - ) - update_context_case2 = ( - self.customized_answer_prefix and self.customized_answer_prefix not in message.get("content", "").upper() - ) - if (update_context_case1 or update_context_case2) and not self.no_update_context: + update_context_case1, update_context_case2 = self._check_update_context(message) + if (update_context_case1 or update_context_case2) and self.update_context: print(colored("Updating context and resetting conversation.", "green"), flush=True) # extract the first sentence in the response as the intermediate answer _message = message.get("content", "").split("\n")[0].strip() @@ -286,9 +342,25 @@ def _generate_retrieve_user_reply( return False, None def retrieve_docs(self, problem: str, n_results: int = 20, search_string: str = ""): - if not self._collection: + """Retrieve docs based on the given problem and assign the results to the class property `_results`. + In case you want to customize the retrieval process, such as using a different vector db whose APIs are not + compatible with chromadb or filter results with metadata, you can override this function. Just keep the current + parameters and add your own parameters with default values, and keep the results in below type. + + Type of the results: Dict[str, List[List[Any]]], should have keys "ids" and "documents", "ids" for the ids of + the retrieved docs and "documents" for the contents of the retrieved docs. Any other keys are optional. Refer + to `chromadb.api.types.QueryResult` as an example. + ids: List[string] + documents: List[List[string]] + + Args: + problem (str): the problem to be solved. + n_results (int): the number of results to be retrieved. + search_string (str): only docs containing this string will be retrieved. + """ + if not self._collection or not self._get_or_create: print("Trying to create collection.") - create_vector_db_from_dir( + self._client = create_vector_db_from_dir( dir_path=self._docs_path, max_tokens=self._chunk_token_size, client=self._client, @@ -296,8 +368,12 @@ def retrieve_docs(self, problem: str, n_results: int = 20, search_string: str = chunk_mode=self._chunk_mode, must_break_at_empty_line=self._must_break_at_empty_line, embedding_model=self._embedding_model, + get_or_create=self._get_or_create, + embedding_function=self._embedding_function, + custom_text_split_function=self.custom_text_split_function, ) self._collection = True + self._get_or_create = True results = query_vector_db( query_texts=[problem], @@ -306,6 +382,7 @@ def retrieve_docs(self, problem: str, n_results: int = 20, search_string: str = client=self._client, collection_name=self._collection_name, embedding_model=self._embedding_model, + embedding_function=self._embedding_function, ) self._results = results print("doc_ids: ", results["ids"]) diff --git a/autogen/agentchat/contrib/teachable_agent.py b/autogen/agentchat/contrib/teachable_agent.py new file mode 100644 index 00000000000..29d7f197ffc --- /dev/null +++ b/autogen/agentchat/contrib/teachable_agent.py @@ -0,0 +1,424 @@ +import os +from autogen import oai +from autogen.agentchat.agent import Agent +from autogen.agentchat.assistant_agent import ConversableAgent +from autogen.agentchat.contrib.text_analyzer_agent import TextAnalyzerAgent +from typing import Callable, Dict, Optional, Union, List, Tuple, Any +import chromadb +from chromadb.config import Settings +import pickle + + +try: + from termcolor import colored +except ImportError: + + def colored(x, *args, **kwargs): + return x + + +class TeachableAgent(ConversableAgent): + """(Experimental) Teachable Agent, a subclass of ConversableAgent using a vector database to remember user teachings. + In this class, the term 'user' refers to any caller (human or not) sending messages to this agent. + Not yet tested in the group-chat setting.""" + + def __init__( + self, + name="teachableagent", + system_message: Optional[ + str + ] = "You are a helpful AI assistant that remembers user teachings from prior chats.", + human_input_mode: Optional[str] = "NEVER", + llm_config: Optional[Union[Dict, bool]] = None, + analyzer_llm_config: Optional[Union[Dict, bool]] = None, + teach_config: Optional[Dict] = None, + **kwargs, + ): + """ + Args: + name (str): name of the agent. + system_message (str): system message for the ChatCompletion inference. + human_input_mode (str): This agent should NEVER prompt the human for input. + llm_config (dict or False): llm inference configuration. + Please refer to [OpenAIWrapper.create](/docs/reference/oai/client#create) + for available options. + To disable llm-based auto reply, set to False. + analyzer_llm_config (dict or False): llm inference configuration passed to TextAnalyzerAgent. + Given the default setting of None, TeachableAgent passes its own llm_config to TextAnalyzerAgent. + teach_config (dict or None): Additional parameters used by TeachableAgent. + To use default config, set to None. Otherwise, set to a dictionary with any of the following keys: + - verbosity (Optional, int): # 0 (default) for basic info, 1 to add memory operations, 2 for analyzer messages, 3 for memo lists. + - reset_db (Optional, bool): True to clear the DB before starting. Default False. + - path_to_db_dir (Optional, str): path to the directory where the DB is stored. Default "./tmp/teachable_agent_db" + - prepopulate (Optional, int): True (default) to prepopulate the DB with a set of input-output pairs. + - recall_threshold (Optional, float): The maximum distance for retrieved memos, where 0.0 is exact match. Default 1.5. Larger values allow more (but less relevant) memos to be recalled. + - max_num_retrievals (Optional, int): The maximum number of memos to retrieve from the DB. Default 10. + **kwargs (dict): other kwargs in [ConversableAgent](../conversable_agent#__init__). + """ + super().__init__( + name=name, + system_message=system_message, + human_input_mode=human_input_mode, + llm_config=llm_config, + **kwargs, + ) + # Register a custom reply function. + self.register_reply(Agent, TeachableAgent._generate_teachable_assistant_reply, 1) + + # Assemble the parameter settings. + self._teach_config = {} if teach_config is None else teach_config + self.verbosity = self._teach_config.get("verbosity", 0) + self.reset_db = self._teach_config.get("reset_db", False) + self.path_to_db_dir = self._teach_config.get("path_to_db_dir", "./tmp/teachable_agent_db") + self.prepopulate = self._teach_config.get("prepopulate", True) + self.recall_threshold = self._teach_config.get("recall_threshold", 1.5) + self.max_num_retrievals = self._teach_config.get("max_num_retrievals", 10) + + # Create the analyzer. + if analyzer_llm_config is None: + analyzer_llm_config = llm_config + self.analyzer = TextAnalyzerAgent(llm_config=analyzer_llm_config) + + # Create the memo store. + self.memo_store = MemoStore(self.verbosity, self.reset_db, self.path_to_db_dir) + self.user_comments = [] # Stores user comments until the end of each chat. + + def close_db(self): + """Cleanly closes the memo store.""" + self.memo_store.close() + + def prepopulate_db(self): + """Adds a few arbitrary memos to the DB.""" + self.memo_store.prepopulate() + + def _generate_teachable_assistant_reply( + self, + messages: Optional[List[Dict]] = None, + sender: Optional[Agent] = None, + config: Optional[Any] = None, # Persistent state. + ) -> Tuple[bool, Union[str, Dict, None]]: + """ + Generates a reply to the last user message, after querying the memo store for relevant information. + Uses TextAnalyzerAgent to make decisions about memo storage and retrieval. + """ + if self.llm_config is False: + raise ValueError("TeachableAgent requires self.llm_config to be set in its base class.") + if messages is None: + messages = self._oai_messages[sender] # In case of a direct call. + + # Get the last user turn. + last_message = messages[-1] + user_text = last_message["content"] + if (not isinstance(user_text, str)) or ("context" in last_message): + raise ValueError( + "TeachableAgent currently assumes that the message content is a simple string. This error serves to flag a test case for relaxing this assumption." + ) + + # Keep track of this user turn as a potential source of memos later. + self.user_comments.append(user_text) + + # Consider whether to retrieve something from the DB. + if self.memo_store.last_memo_id > 0: + new_user_text = self.consider_memo_retrieval(user_text) + if new_user_text != user_text: + # Make a copy of the message list, and replace the last user message with the new one. + messages = messages.copy() + messages[-1]["content"] = new_user_text + + # Generate a response by reusing existing generate_oai_reply + return self.generate_oai_reply(messages, sender, config) + + def learn_from_user_feedback(self): + """Reviews the user comments from the last chat, and decides what teachings to store as memos.""" + print(colored("\nREVIEWING CHAT FOR USER TEACHINGS TO REMEMBER", "light_yellow")) + # Look at each user turn. + if len(self.user_comments) > 0: + for comment in self.user_comments: + # Consider whether to store something from this user turn in the DB. + self.consider_memo_storage(comment) + self.user_comments = [] + + def consider_memo_storage(self, comment): + """Decides whether to store something from one user comment in the DB.""" + # Check for a problem-solution pair. + response = self.analyze( + comment, + "Does any part of the TEXT ask the agent to perform a task or solve a problem? Answer with just one word, yes or no.", + ) + if "yes" in response.lower(): + # Can we extract advice? + advice = self.analyze( + comment, + "Briefly copy any advice from the TEXT that may be useful for a similar but different task in the future. But if no advice is present, just respond with 'none'.", + ) + if "none" not in advice.lower(): + # Yes. Extract the task. + task = self.analyze( + comment, + "Briefly copy just the task from the TEXT, then stop. Don't solve it, and don't include any advice.", + ) + # Generalize the task. + general_task = self.analyze( + task, + "Summarize very briefly, in general terms, the type of task described in the TEXT. Leave out details that might not appear in a similar problem.", + ) + # Add the task-advice (problem-solution) pair to the vector DB. + if self.verbosity >= 1: + print(colored("\nREMEMBER THIS TASK-ADVICE PAIR", "light_yellow")) + self.memo_store.add_input_output_pair(general_task, advice) + + # Check for information to be learned. + response = self.analyze( + comment, + "Does the TEXT contain information that could be committed to memory? Answer with just one word, yes or no.", + ) + if "yes" in response.lower(): + # Yes. What question would this information answer? + question = self.analyze( + comment, + "Imagine that the user forgot this information in the TEXT. How would they ask you for this information? Include no other text in your response.", + ) + # Extract the information. + answer = self.analyze( + comment, "Copy the information from the TEXT that should be committed to memory. Add no explanation." + ) + # Add the question-answer pair to the vector DB. + if self.verbosity >= 1: + print(colored("\nREMEMBER THIS QUESTION-ANSWER PAIR", "light_yellow")) + self.memo_store.add_input_output_pair(question, answer) + + def consider_memo_retrieval(self, comment): + """Decides whether to retrieve memos from the DB, and add them to the chat context.""" + + # First, use the user comment directly as the lookup key. + if self.verbosity >= 1: + print(colored("\nLOOK FOR RELEVANT MEMOS, AS QUESTION-ANSWER PAIRS", "light_yellow")) + memo_list = self.retrieve_relevant_memos(comment) + + # Next, if the comment involves a task, then extract and generalize the task before using it as the lookup key. + response = self.analyze( + comment, + "Does any part of the TEXT ask the agent to perform a task or solve a problem? Answer with just one word, yes or no.", + ) + if "yes" in response.lower(): + if self.verbosity >= 1: + print(colored("\nLOOK FOR RELEVANT MEMOS, AS TASK-ADVICE PAIRS", "light_yellow")) + # Extract the task. + task = self.analyze( + comment, "Copy just the task from the TEXT, then stop. Don't solve it, and don't include any advice." + ) + # Generalize the task. + general_task = self.analyze( + task, + "Summarize very briefly, in general terms, the type of task described in the TEXT. Leave out details that might not appear in a similar problem.", + ) + # Append any relevant memos. + memo_list.extend(self.retrieve_relevant_memos(general_task)) + + # De-duplicate the memo list. + memo_list = list(set(memo_list)) + + # Append the memos to the last user message. + return comment + self.concatenate_memo_texts(memo_list) + + def retrieve_relevant_memos(self, input_text): + """Returns semantically related memos from the DB.""" + memo_list = self.memo_store.get_related_memos( + input_text, n_results=self.max_num_retrievals, threshold=self.recall_threshold + ) + + if self.verbosity >= 1: + # Was anything retrieved? + if len(memo_list) == 0: + # No. Look at the closest memo. + print(colored("\nTHE CLOSEST MEMO IS BEYOND THE THRESHOLD:", "light_yellow")) + self.memo_store.get_nearest_memo(input_text) + print() # Print a blank line. The memo details were printed by get_nearest_memo(). + + # Create a list of just the memo output_text strings. + memo_list = [memo[1] for memo in memo_list] + return memo_list + + def concatenate_memo_texts(self, memo_list): + """Concatenates the memo texts into a single string for inclusion in the chat context.""" + memo_texts = "" + if len(memo_list) > 0: + info = "\n# Memories that might help\n" + for memo in memo_list: + info = info + "- " + memo + "\n" + if self.verbosity >= 1: + print(colored("\nMEMOS APPENDED TO LAST USER MESSAGE...\n" + info + "\n", "light_yellow")) + memo_texts = memo_texts + "\n" + info + return memo_texts + + def analyze(self, text_to_analyze, analysis_instructions): + """Asks TextAnalyzerAgent to analyze the given text according to specific instructions.""" + if self.verbosity >= 2: + # Use the messaging mechanism so that the analyzer's messages are included in the printed chat. + self.analyzer.reset() # Clear the analyzer's list of messages. + self.send( + recipient=self.analyzer, message=text_to_analyze, request_reply=False + ) # Put the message in the analyzer's list. + self.send(recipient=self.analyzer, message=analysis_instructions, request_reply=True) # Request the reply. + return self.last_message(self.analyzer)["content"] + else: + # TODO: This is not an encouraged usage pattern. It breaks the conversation-centric design. + # consider using the arg "silent" + # Use the analyzer's method directly, to leave analyzer message out of the printed chat. + return self.analyzer.analyze_text(text_to_analyze, analysis_instructions) + + +class MemoStore: + """(Experimental) + Provides memory storage and retrieval for a TeachableAgent, using a vector database. + Each DB entry (called a memo) is a pair of strings: an input text and an output text. + The input text might be a question, or a task to perform. + The output text might be an answer to the question, or advice on how to perform the task. + Vector embeddings are currently supplied by Chroma's default Sentence Transformers. + """ + + def __init__(self, verbosity, reset, path_to_db_dir): + """ + Args: + - verbosity (Optional, int): 1 to print memory operations, 0 to omit them. 3+ to print memo lists. + - path_to_db_dir (Optional, str): path to the directory where the DB is stored. + """ + self.verbosity = verbosity + self.reset = reset + self.path_to_db_dir = path_to_db_dir + + # Load or create the vector DB on disk. + settings = Settings( + anonymized_telemetry=False, allow_reset=True, is_persistent=True, persist_directory=path_to_db_dir + ) + self.db_client = chromadb.Client(settings) + self.vec_db = self.db_client.create_collection("memos", get_or_create=True) # The collection is the DB. + if reset: + self.reset_db() + + # Load or create the associated memo dict on disk. + self.path_to_dict = os.path.join(path_to_db_dir, "uid_text_dict.pkl") + self.uid_text_dict = {} + self.last_memo_id = 0 + if (not reset) and os.path.exists(self.path_to_dict): + print(colored("\nLOADING MEMORY FROM DISK", "light_green")) + print(colored(" Location = {}".format(self.path_to_dict), "light_green")) + with open(self.path_to_dict, "rb") as f: + self.uid_text_dict = pickle.load(f) + self.last_memo_id = len(self.uid_text_dict) + if self.verbosity >= 3: + self.list_memos() + + def list_memos(self): + """Prints the contents of MemoStore.""" + print(colored("LIST OF MEMOS", "light_green")) + for uid, text in self.uid_text_dict.items(): + input_text, output_text = text + print( + colored( + " ID: {}\n INPUT TEXT: {}\n OUTPUT TEXT: {}".format(uid, input_text, output_text), + "light_green", + ) + ) + + def close(self): + """Saves self.uid_text_dict to disk.""" + print(colored("\nSAVING MEMORY TO DISK", "light_green")) + print(colored(" Location = {}".format(self.path_to_dict), "light_green")) + with open(self.path_to_dict, "wb") as file: + pickle.dump(self.uid_text_dict, file) + + def reset_db(self): + """Forces immediate deletion of the DB's contents, in memory and on disk.""" + print(colored("\nCLEARING MEMORY", "light_green")) + self.db_client.delete_collection("memos") + self.vec_db = self.db_client.create_collection("memos") + self.uid_text_dict = {} + + def add_input_output_pair(self, input_text, output_text): + """Adds an input-output pair to the vector DB.""" + self.last_memo_id += 1 + self.vec_db.add(documents=[input_text], ids=[str(self.last_memo_id)]) + self.uid_text_dict[str(self.last_memo_id)] = input_text, output_text + if self.verbosity >= 1: + print( + colored( + "\nINPUT-OUTPUT PAIR ADDED TO VECTOR DATABASE:\n ID\n {}\n INPUT\n {}\n OUTPUT\n {}".format( + self.last_memo_id, input_text, output_text + ), + "light_green", + ) + ) + if self.verbosity >= 3: + self.list_memos() + + def get_nearest_memo(self, query_text): + """Retrieves the nearest memo to the given query text.""" + results = self.vec_db.query(query_texts=[query_text], n_results=1) + uid, input_text, distance = results["ids"][0][0], results["documents"][0][0], results["distances"][0][0] + input_text_2, output_text = self.uid_text_dict[uid] + assert input_text == input_text_2 + if self.verbosity >= 1: + print( + colored( + "\nINPUT-OUTPUT PAIR RETRIEVED FROM VECTOR DATABASE:\n INPUT1\n {}\n OUTPUT\n {}\n DISTANCE\n {}".format( + input_text, output_text, distance + ), + "light_green", + ) + ) + return input_text, output_text, distance + + def get_related_memos(self, query_text, n_results, threshold): + """Retrieves memos that are related to the given query text within the specified distance threshold.""" + if n_results > len(self.uid_text_dict): + n_results = len(self.uid_text_dict) + results = self.vec_db.query(query_texts=[query_text], n_results=n_results) + memos = [] + num_results = len(results["ids"][0]) + for i in range(num_results): + uid, input_text, distance = results["ids"][0][i], results["documents"][0][i], results["distances"][0][i] + if distance < threshold: + input_text_2, output_text = self.uid_text_dict[uid] + assert input_text == input_text_2 + if self.verbosity >= 1: + print( + colored( + "\nINPUT-OUTPUT PAIR RETRIEVED FROM VECTOR DATABASE:\n INPUT1\n {}\n OUTPUT\n {}\n DISTANCE\n {}".format( + input_text, output_text, distance + ), + "light_green", + ) + ) + memos.append((input_text, output_text, distance)) + return memos + + def prepopulate(self): + """Adds a few arbitrary examples to the vector DB, just to make retrieval less trivial.""" + if self.verbosity >= 1: + print(colored("\nPREPOPULATING MEMORY", "light_green")) + examples = [] + examples.append({"text": "When I say papers I mean research papers, which are typically pdfs.", "label": "yes"}) + examples.append({"text": "Please verify that each paper you listed actually uses langchain.", "label": "no"}) + examples.append({"text": "Tell gpt the output should still be latex code.", "label": "no"}) + examples.append({"text": "Hint: convert pdfs to text and then answer questions based on them.", "label": "yes"}) + examples.append( + {"text": "To create a good PPT, include enough content to make it interesting.", "label": "yes"} + ) + examples.append( + { + "text": "No, for this case the columns should be aspects and the rows should be frameworks.", + "label": "no", + } + ) + examples.append({"text": "When writing code, remember to include any libraries that are used.", "label": "yes"}) + examples.append({"text": "Please summarize the papers by Eric Horvitz on bounded rationality.", "label": "no"}) + examples.append({"text": "Compare the h-index of Daniel Weld and Oren Etzioni.", "label": "no"}) + examples.append( + { + "text": "Double check to be sure that the columns in a table correspond to what was asked for.", + "label": "yes", + } + ) + for example in examples: + self.add_input_output_pair(example["text"], example["label"]) diff --git a/autogen/agentchat/contrib/text_analyzer_agent.py b/autogen/agentchat/contrib/text_analyzer_agent.py new file mode 100644 index 00000000000..cfc5bc174b3 --- /dev/null +++ b/autogen/agentchat/contrib/text_analyzer_agent.py @@ -0,0 +1,78 @@ +from autogen import oai +from autogen.agentchat.agent import Agent +from autogen.agentchat.assistant_agent import ConversableAgent +from typing import Callable, Dict, Optional, Union, List, Tuple, Any + +system_message = """You are an expert in text analysis. +The user will give you TEXT to analyze. +The user will give you analysis INSTRUCTIONS copied twice, at both the beginning and the end. +You will follow these INSTRUCTIONS in analyzing the TEXT, then give the results of your expert analysis in the format requested.""" + + +class TextAnalyzerAgent(ConversableAgent): + """(Experimental) Text Analysis agent, a subclass of ConversableAgent designed to analyze text as instructed.""" + + def __init__( + self, + name="analyzer", + system_message: Optional[str] = system_message, + human_input_mode: Optional[str] = "NEVER", + llm_config: Optional[Union[Dict, bool]] = None, + **kwargs, + ): + """ + Args: + name (str): name of the agent. + system_message (str): system message for the ChatCompletion inference. + human_input_mode (str): This agent should NEVER prompt the human for input. + llm_config (dict or False): llm inference configuration. + Please refer to [OpenAIWrapper.create](/docs/reference/oai/client#create) + for available options. + To disable llm-based auto reply, set to False. + teach_config (dict or None): Additional parameters used by TeachableAgent. + To use default config, set to None. Otherwise, set to a dictionary with any of the following keys: + - verbosity (Optional, int): # 0 (default) for basic info, 1 to add memory operations, 2 for analyzer messages, 3 for memo lists. + - reset_db (Optional, bool): True to clear the DB before starting. Default False. + - path_to_db_dir (Optional, str): path to the directory where the DB is stored. Default "./tmp/teachable_agent_db" + - prepopulate (Optional, int): True (default) to prepopulate the DB with a set of input-output pairs. + - recall_threshold (Optional, float): The maximum distance for retrieved memos, where 0.0 is exact match. Default 1.5. Larger values allow more (but less relevant) memos to be recalled. + - max_num_retrievals (Optional, int): The maximum number of memos to retrieve from the DB. Default 10. + **kwargs (dict): other kwargs in [ConversableAgent](../conversable_agent#__init__). + """ + super().__init__( + name=name, + system_message=system_message, + human_input_mode=human_input_mode, + llm_config=llm_config, + **kwargs, + ) + self.register_reply(Agent, TextAnalyzerAgent._analyze_in_reply, 1) + + def _analyze_in_reply( + self, + messages: Optional[List[Dict]] = None, + sender: Optional[Agent] = None, + config: Optional[Any] = None, + ) -> Tuple[bool, Union[str, Dict, None]]: + """Analyzes the given text as instructed, and returns the analysis as a message. + Assumes exactly two messages containing the text to analyze and the analysis instructions. + See TeachableAgent.analyze for an example of how to use this method.""" + if self.llm_config is False: + raise ValueError("TextAnalyzerAgent requires self.llm_config to be set in its base class.") + if messages is None: + messages = self._oai_messages[sender] # In case of a direct call. + assert len(messages) == 2 + + # Delegate to the analysis method. + return True, self.analyze_text(messages[0]["content"], messages[1]["content"]) + + def analyze_text(self, text_to_analyze, analysis_instructions): + """Analyzes the given text as instructed, and returns the analysis.""" + # Assemble the message. + text_to_analyze = "# TEXT\n" + text_to_analyze + "\n" + analysis_instructions = "# INSTRUCTIONS\n" + analysis_instructions + "\n" + msg_text = "\n".join( + [analysis_instructions, text_to_analyze, analysis_instructions] + ) # Repeat the instructions. + # Generate and return the analysis string. + return self.generate_oai_reply([{"role": "user", "content": msg_text}], None, None)[1] diff --git a/autogen/agentchat/conversable_agent.py b/autogen/agentchat/conversable_agent.py index fdf42f67b6a..3146403ac6b 100644 --- a/autogen/agentchat/conversable_agent.py +++ b/autogen/agentchat/conversable_agent.py @@ -2,8 +2,9 @@ from collections import defaultdict import copy import json +import logging from typing import Any, Callable, Dict, List, Optional, Tuple, Type, Union -from autogen import oai +from autogen import OpenAIWrapper from .agent import Agent from autogen.code_utils import ( DEFAULT_MODEL, @@ -21,6 +22,9 @@ def colored(x, *args, **kwargs): return x +logger = logging.getLogger(__name__) + + class ConversableAgent(Agent): """(In preview) A class for generic conversable agents which can be configured as assistant or user proxy. @@ -83,13 +87,13 @@ def __init__( If a list or a str of image name(s) is provided, the code will be executed in a docker container with the first image successfully pulled. If None, False or empty, the code will be executed in the current environment. - Default is True, which will be converted into a list. - If the code is executed in the current environment, - the code must be trusted. + Default is True when the docker python package is installed. + When set to True, a default list will be used. + We strongly recommend using docker for code execution. - timeout (Optional, int): The maximum execution time in seconds. - last_n_messages (Experimental, Optional, int): The number of messages to look back for code execution. Default to 1. llm_config (dict or False): llm inference configuration. - Please refer to [Completion.create](/docs/reference/oai/completion#create) + Please refer to [OpenAIWrapper.create](/docs/reference/oai/client#create) for available options. To disable llm-based auto reply, set to False. default_auto_reply (str or dict or None): default auto reply when no code execution or llm-based reply is generated. @@ -103,10 +107,12 @@ def __init__( ) if llm_config is False: self.llm_config = False + self.client = None else: self.llm_config = self.DEFAULT_CONFIG.copy() if isinstance(llm_config, dict): self.llm_config.update(llm_config) + self.client = OpenAIWrapper(**self.llm_config) self._code_execution_config = {} if code_execution_config is None else code_execution_config self.human_input_mode = human_input_mode @@ -122,6 +128,7 @@ def __init__( self.register_reply([Agent, None], ConversableAgent.generate_oai_reply) self.register_reply([Agent, None], ConversableAgent.generate_code_execution_reply) self.register_reply([Agent, None], ConversableAgent.generate_function_call_reply) + self.register_reply([Agent, None], ConversableAgent.generate_async_function_call_reply) self.register_reply([Agent, None], ConversableAgent.check_termination_and_human_reply) def register_reply( @@ -210,8 +217,8 @@ def max_consecutive_auto_reply(self, sender: Optional[Agent] = None) -> int: return self._max_consecutive_auto_reply if sender is None else self._max_consecutive_auto_reply_dict[sender] @property - def chat_messages(self) -> Dict[str, List[Dict]]: - """A dictionary of conversations from name to list of ChatCompletion messages.""" + def chat_messages(self) -> Dict[Agent, List[Dict]]: + """A dictionary of conversations from agent to list of messages.""" return self._oai_messages def last_message(self, agent: Optional[Agent] = None) -> Dict: @@ -233,6 +240,10 @@ def last_message(self, agent: Optional[Agent] = None) -> Dict: for conversation in self._oai_messages.values(): return conversation[-1] raise ValueError("More than one conversation is found. Please specify the sender to get the last message.") + if agent not in self._oai_messages.keys(): + raise KeyError( + f"The agent '{agent.name}' is not present in any conversation. No history available for this agent." + ) return self._oai_messages[agent][-1] @property @@ -250,8 +261,10 @@ def _message_to_dict(message: Union[Dict, str]): """ if isinstance(message, str): return {"content": message} - else: + elif isinstance(message, dict): return message + else: + return dict(message) def _append_oai_message(self, message: Union[Dict, str], role, conversation_id: Agent) -> bool: """Append a message to the ChatCompletion conversation. @@ -259,6 +272,7 @@ def _append_oai_message(self, message: Union[Dict, str], role, conversation_id: If the message received is a string, it will be put in the "content" field of the new dictionary. If the message received is a dictionary but does not have any of the two fields "content" or "function_call", this message is not a valid ChatCompletion message. + If only "function_call" is provided, "content" will be set to None if not provided, and the role of the message will be forced "assistant". Args: message (dict or str): message to be appended to the ChatCompletion conversation. @@ -271,10 +285,16 @@ def _append_oai_message(self, message: Union[Dict, str], role, conversation_id: message = self._message_to_dict(message) # create oai message to be appended to the oai conversation that can be passed to oai directly. oai_message = {k: message[k] for k in ("content", "function_call", "name", "context") if k in message} - if "content" not in oai_message and "function_call" not in oai_message: - return False + if "content" not in oai_message: + if "function_call" in oai_message: + oai_message["content"] = None # if only function_call is provided, content will be set to None. + else: + return False oai_message["role"] = "function" if message.get("role") == "function" else role + if "function_call" in oai_message: + oai_message["role"] = "assistant" # only messages with role 'assistant' can have a function call. + oai_message["function_call"] = dict(oai_message["function_call"]) self._oai_messages[conversation_id].append(oai_message) return True @@ -289,14 +309,14 @@ def send( Args: message (dict or str): message to be sent. - The message could contain the following fields (either content or function_call must be provided): - - content (str): the content of the message. + The message could contain the following fields: + - content (str): Required, the content of the message. (Can be None) - function_call (str): the name of the function to be called. - name (str): the name of the function to be called. - role (str): the role of the message, any role that is not "function" will be modified to "assistant". - context (dict): the context of the message, which will be passed to - [Completion.create](../oai/Completion#create). + [OpenAIWrapper.create](../oai/client#create). For example, one agent can send a message A as: ```python { @@ -338,14 +358,14 @@ async def a_send( Args: message (dict or str): message to be sent. - The message could contain the following fields (either content or function_call must be provided): - - content (str): the content of the message. + The message could contain the following fields: + - content (str): Required, the content of the message. (Can be None) - function_call (str): the name of the function to be called. - name (str): the name of the function to be called. - role (str): the role of the message, any role that is not "function" will be modified to "assistant". - context (dict): the context of the message, which will be passed to - [Completion.create](../oai/Completion#create). + [OpenAIWrapper.create](../oai/client#create). For example, one agent can send a message A as: ```python { @@ -388,18 +408,21 @@ def _print_received_message(self, message: Union[Dict, str], sender: Agent): content = message.get("content") if content is not None: if "context" in message: - content = oai.ChatCompletion.instantiate( + content = OpenAIWrapper.instantiate( content, message["context"], self.llm_config and self.llm_config.get("allow_format_str_template", False), ) print(content, flush=True) if "function_call" in message: - func_print = f"***** Suggested function Call: {message['function_call'].get('name', '(No function name found)')} *****" + function_call = dict(message["function_call"]) + func_print = ( + f"***** Suggested function Call: {function_call.get('name', '(No function name found)')} *****" + ) print(colored(func_print, "green"), flush=True) print( "Arguments: \n", - message["function_call"].get("arguments", "(No arguments found)"), + function_call.get("arguments", "(No arguments found)"), flush=True, sep="", ) @@ -437,7 +460,7 @@ def receive( This field is only needed to distinguish between "function" or "assistant"/"user". 4. "name": In most cases, this field is not needed. When the role is "function", this field is needed to indicate the function name. 5. "context" (dict): the context of the message, which will be passed to - [Completion.create](../oai/Completion#create). + [OpenAIWrapper.create](../oai/client#create). sender: sender of an Agent instance. request_reply (bool or None): whether a reply is requested from the sender. If None, the value is determined by `self.reply_at_receive[sender]`. @@ -473,7 +496,7 @@ async def a_receive( This field is only needed to distinguish between "function" or "assistant"/"user". 4. "name": In most cases, this field is not needed. When the role is "function", this field is needed to indicate the function name. 5. "context" (dict): the context of the message, which will be passed to - [Completion.create](../oai/Completion#create). + [OpenAIWrapper.create](../oai/client#create). sender: sender of an Agent instance. request_reply (bool or None): whether a reply is requested from the sender. If None, the value is determined by `self.reply_at_receive[sender]`. @@ -586,17 +609,17 @@ def generate_oai_reply( config: Optional[Any] = None, ) -> Tuple[bool, Union[str, Dict, None]]: """Generate a reply using autogen.oai.""" - llm_config = self.llm_config if config is None else config - if llm_config is False: + client = self.client if config is None else config + if client is None: return False, None if messages is None: messages = self._oai_messages[sender] # TODO: #1143 handle token limit exceeded error - response = oai.ChatCompletion.create( - context=messages[-1].pop("context", None), messages=self._oai_system_message + messages, **llm_config + response = client.create( + context=messages[-1].pop("context", None), messages=self._oai_system_message + messages ) - return True, oai.ChatCompletion.extract_text_or_function_call(response)[0] + return True, client.extract_text_or_function_call(response)[0] def generate_code_execution_reply( self, @@ -611,25 +634,28 @@ def generate_code_execution_reply( if messages is None: messages = self._oai_messages[sender] last_n_messages = code_execution_config.pop("last_n_messages", 1) + + # iterate through the last n messages reversly + # if code blocks are found, execute the code blocks and return the output + # if no code blocks are found, continue for i in range(min(len(messages), last_n_messages)): message = messages[-(i + 1)] + if not message["content"]: + continue code_blocks = extract_code(message["content"]) if len(code_blocks) == 1 and code_blocks[0][0] == UNKNOWN: - # no code block is found, lang should be `UNKNOWN` - - if i == last_n_messages - 1: - code_execution_config["last_n_messages"] = last_n_messages - return False, None continue - # code_blocks, _ = find_code(messages, sys_msg=self._oai_system_message, **self.llm_config) - # if len(code_blocks) == 1 and code_blocks[0][0] == UNKNOWN: - # return code_blocks[0][1] - # try to execute the code + + # found code blocks, execute code and push "last_n_messages" back exitcode, logs = self.execute_code_blocks(code_blocks) + code_execution_config["last_n_messages"] = last_n_messages exitcode2str = "execution succeeded" if exitcode == 0 else "execution failed" - break + return True, f"exitcode: {exitcode} ({exitcode2str})\nCode output: {logs}" + + # no code blocks are found, push last_n_messages back and return. code_execution_config["last_n_messages"] = last_n_messages - return True, f"exitcode: {exitcode} ({exitcode2str})\nCode output: {logs}" + + return False, None def generate_function_call_reply( self, @@ -648,6 +674,28 @@ def generate_function_call_reply( return True, func_return return False, None + async def generate_async_function_call_reply( + self, + messages: Optional[List[Dict]] = None, + sender: Optional[Agent] = None, + config: Optional[Any] = None, + ): + """Generate a reply using async function call.""" + if config is None: + config = self + if messages is None: + messages = self._oai_messages[sender] + message = messages[-1] + if "function_call" in message: + func_call = message["function_call"] + func_name = func_call.get("name", "") + func = self._function_map.get(func_name, None) + if func and asyncio.coroutines.iscoroutinefunction(func): + _, func_return = await self.a_execute_function(func_call) + return True, func_return + + return False, None + def check_termination_and_human_reply( self, messages: Optional[List[Dict]] = None, @@ -719,6 +767,77 @@ def check_termination_and_human_reply( return False, None + async def a_check_termination_and_human_reply( + self, + messages: Optional[List[Dict]] = None, + sender: Optional[Agent] = None, + config: Optional[Any] = None, + ) -> Tuple[bool, Union[str, Dict, None]]: + """(async) Check if the conversation should be terminated, and if human reply is provided.""" + if config is None: + config = self + if messages is None: + messages = self._oai_messages[sender] + message = messages[-1] + reply = "" + no_human_input_msg = "" + if self.human_input_mode == "ALWAYS": + reply = await self.a_get_human_input( + f"Provide feedback to {sender.name}. Press enter to skip and use auto-reply, or type 'exit' to end the conversation: " + ) + no_human_input_msg = "NO HUMAN INPUT RECEIVED." if not reply else "" + # if the human input is empty, and the message is a termination message, then we will terminate the conversation + reply = reply if reply or not self._is_termination_msg(message) else "exit" + else: + if self._consecutive_auto_reply_counter[sender] >= self._max_consecutive_auto_reply_dict[sender]: + if self.human_input_mode == "NEVER": + reply = "exit" + else: + # self.human_input_mode == "TERMINATE": + terminate = self._is_termination_msg(message) + reply = await self.a_get_human_input( + f"Please give feedback to {sender.name}. Press enter or type 'exit' to stop the conversation: " + if terminate + else f"Please give feedback to {sender.name}. Press enter to skip and use auto-reply, or type 'exit' to stop the conversation: " + ) + no_human_input_msg = "NO HUMAN INPUT RECEIVED." if not reply else "" + # if the human input is empty, and the message is a termination message, then we will terminate the conversation + reply = reply if reply or not terminate else "exit" + elif self._is_termination_msg(message): + if self.human_input_mode == "NEVER": + reply = "exit" + else: + # self.human_input_mode == "TERMINATE": + reply = await self.a_get_human_input( + f"Please give feedback to {sender.name}. Press enter or type 'exit' to stop the conversation: " + ) + no_human_input_msg = "NO HUMAN INPUT RECEIVED." if not reply else "" + # if the human input is empty, and the message is a termination message, then we will terminate the conversation + reply = reply or "exit" + + # print the no_human_input_msg + if no_human_input_msg: + print(colored(f"\n>>>>>>>> {no_human_input_msg}", "red"), flush=True) + + # stop the conversation + if reply == "exit": + # reset the consecutive_auto_reply_counter + self._consecutive_auto_reply_counter[sender] = 0 + return True, None + + # send the human reply + if reply or self._max_consecutive_auto_reply_dict[sender] == 0: + # reset the consecutive_auto_reply_counter + self._consecutive_auto_reply_counter[sender] = 0 + return True, reply + + # increment the consecutive_auto_reply_counter + self._consecutive_auto_reply_counter[sender] += 1 + if self.human_input_mode != "NEVER": + print(colored("\n>>>>>>>> USING AUTO REPLY...", "red"), flush=True) + + return False, None + def generate_reply( self, messages: Optional[List[Dict]] = None, @@ -750,7 +869,11 @@ def generate_reply( Returns: str or dict or None: reply. None if no reply is generated. """ - assert messages is not None or sender is not None, "Either messages or sender must be provided." + if all((messages is None, sender is None)): + error_msg = f"Either {messages=} or {sender=} must be provided." + logger.error(error_msg) + raise AssertionError(error_msg) + if messages is None: messages = self._oai_messages[sender] @@ -797,7 +920,11 @@ async def a_generate_reply( Returns: str or dict or None: reply. None if no reply is generated. """ - assert messages is not None or sender is not None, "Either messages or sender must be provided." + if all((messages is None, sender is None)): + error_msg = f"Either {messages=} or {sender=} must be provided." + logger.error(error_msg) + raise AssertionError(error_msg) + if messages is None: messages = self._oai_messages[sender] @@ -847,6 +974,20 @@ def get_human_input(self, prompt: str) -> str: reply = input(prompt) return reply + async def a_get_human_input(self, prompt: str) -> str: + """(Async) Get human input. + + Override this method to customize the way to get human input. + + Args: + prompt (str): prompt for the human input. + + Returns: + str: human input. + """ + reply = input(prompt) + return reply + def run_code(self, code, **kwargs): """Run the code and return the result. @@ -981,6 +1122,56 @@ def execute_function(self, func_call): "content": str(content), } + async def a_execute_function(self, func_call): + """Execute an async function call and return the result. + + Override this function to modify the way async functions are executed. + + Args: + func_call: a dictionary extracted from openai message at key "function_call" with keys "name" and "arguments". + + Returns: + A tuple of (is_exec_success, result_dict). + is_exec_success (boolean): whether the execution is successful. + result_dict: a dictionary with keys "name", "role", and "content". Value of "role" is "function". + """ + func_name = func_call.get("name", "") + func = self._function_map.get(func_name, None) + + is_exec_success = False + if func is not None: + # Extract arguments from a json-like string and put it into a dict. + input_string = self._format_json_str(func_call.get("arguments", "{}")) + try: + arguments = json.loads(input_string) + except json.JSONDecodeError as e: + arguments = None + content = f"Error: {e}\n You argument should follow json format." + + # Try to execute the function + if arguments is not None: + print( + colored(f"\n>>>>>>>> EXECUTING ASYNC FUNCTION {func_name}...", "magenta"), + flush=True, + ) + try: + if asyncio.coroutines.iscoroutinefunction(func): + content = await func(**arguments) + else: + # Fallback to sync function if the function is not async + content = func(**arguments) + is_exec_success = True + except Exception as e: + content = f"Error: {e}" + else: + content = f"Error: Function {func_name} not found." + + return is_exec_success, { + "name": func_name, + "role": "function", + "content": str(content), + } + def generate_init_message(self, **context) -> Union[str, Dict]: """Generate the initial message for the agent. @@ -996,3 +1187,12 @@ def register_function(self, function_map: Dict[str, Callable]): function_map: a dictionary mapping function names to functions. """ self._function_map.update(function_map) + + def can_execute_function(self, name: str) -> bool: + """Whether the agent can execute the function.""" + return name in self._function_map + + @property + def function_map(self) -> Dict[str, Callable]: + """Return the function map.""" + return self._function_map diff --git a/autogen/agentchat/groupchat.py b/autogen/agentchat/groupchat.py index fae72f26ac4..604eb5c209d 100644 --- a/autogen/agentchat/groupchat.py +++ b/autogen/agentchat/groupchat.py @@ -3,16 +3,30 @@ from typing import Dict, List, Optional, Union from .agent import Agent from .conversable_agent import ConversableAgent +import logging + +logger = logging.getLogger(__name__) @dataclass class GroupChat: - """A group chat class that contains a list of agents and the maximum number of rounds.""" + """(In preview) A group chat class that contains the following data fields: + - agents: a list of participating agents. + - messages: a list of messages in the group chat. + - max_round: the maximum number of rounds. + - admin_name: the name of the admin agent if there is one. Default is "Admin". + KeyBoardInterrupt will make the admin agent take over. + - func_call_filter: whether to enforce function call filter. Default is True. + When set to True and when a message is a function call suggestion, + the next speaker will be chosen from an agent which contains the corresponding function name + in its `function_map`. + """ agents: List[Agent] messages: List[Dict] max_round: int = 10 - admin_name: str = "Admin" # the name of the admin agent + admin_name: str = "Admin" + func_call_filter: bool = True @property def agent_names(self) -> List[str]: @@ -24,43 +38,85 @@ def reset(self): self.messages.clear() def agent_by_name(self, name: str) -> Agent: - """Find the next speaker based on the message.""" + """Returns the agent with a given name.""" return self.agents[self.agent_names.index(name)] - def next_agent(self, agent: Agent) -> Agent: + def next_agent(self, agent: Agent, agents: List[Agent]) -> Agent: """Return the next agent in the list.""" - return self.agents[(self.agent_names.index(agent.name) + 1) % len(self.agents)] + if agents == self.agents: + return agents[(self.agent_names.index(agent.name) + 1) % len(agents)] + else: + offset = self.agent_names.index(agent.name) + 1 + for i in range(len(self.agents)): + if self.agents[(offset + i) % len(self.agents)] in agents: + return self.agents[(offset + i) % len(self.agents)] - def select_speaker_msg(self): + def select_speaker_msg(self, agents: List[Agent]): """Return the message for selecting the next speaker.""" return f"""You are in a role play game. The following roles are available: {self._participant_roles()}. Read the following conversation. -Then select the next role from {self.agent_names} to play. Only return the role.""" +Then select the next role from {[agent.name for agent in agents]} to play. Only return the role.""" def select_speaker(self, last_speaker: Agent, selector: ConversableAgent): """Select the next speaker.""" - selector.update_system_message(self.select_speaker_msg()) + if self.func_call_filter and self.messages and "function_call" in self.messages[-1]: + # find agents with the right function_map which contains the function name + agents = [ + agent for agent in self.agents if agent.can_execute_function(self.messages[-1]["function_call"]["name"]) + ] + if len(agents) == 1: + # only one agent can execute the function + return agents[0] + elif not agents: + # find all the agents with function_map + agents = [agent for agent in self.agents if agent.function_map] + if len(agents) == 1: + return agents[0] + elif not agents: + raise ValueError( + f"No agent can execute the function {self.messages[-1]['name']}. " + "Please check the function_map of the agents." + ) + else: + agents = self.agents + # Warn if GroupChat is underpopulated + n_agents = len(agents) + if n_agents < 3: + logger.warning( + f"GroupChat is underpopulated with {n_agents} agents. Direct communication would be more efficient." + ) + selector.update_system_message(self.select_speaker_msg(agents)) final, name = selector.generate_oai_reply( self.messages + [ { "role": "system", - "content": f"Read the above conversation. Then select the next role from {self.agent_names} to play. Only return the role.", + "content": f"Read the above conversation. Then select the next role from {[agent.name for agent in agents]} to play. Only return the role.", } ] ) if not final: # i = self._random.randint(0, len(self._agent_names) - 1) # randomly pick an id - return self.next_agent(last_speaker) + return self.next_agent(last_speaker, agents) try: return self.agent_by_name(name) except ValueError: - return self.next_agent(last_speaker) + logger.warning( + f"GroupChat select_speaker failed to resolve the next speaker's name. Speaker selection will default to the next speaker in the list. This is because the speaker selection OAI call returned:\n{name}" + ) + return self.next_agent(last_speaker, agents) def _participant_roles(self): - return "\n".join([f"{agent.name}: {agent.system_message}" for agent in self.agents]) + roles = [] + for agent in self.agents: + if agent.system_message.strip() == "": + logger.warning( + f"The agent '{agent.name}' has an empty system_message, and may not work well with GroupChat." + ) + roles.append(f"{agent.name}: {agent.system_message}") + return "\n".join(roles) class GroupChatManager(ConversableAgent): @@ -74,7 +130,6 @@ def __init__( max_consecutive_auto_reply: Optional[int] = sys.maxsize, human_input_mode: Optional[str] = "NEVER", system_message: Optional[str] = "Group chat manager.", - # seed: Optional[int] = 4, **kwargs, ): super().__init__( @@ -84,8 +139,11 @@ def __init__( system_message=system_message, **kwargs, ) + # Order of register_reply is important. + # Allow sync chat if initiated using initiate_chat self.register_reply(Agent, GroupChatManager.run_chat, config=groupchat, reset_config=GroupChat.reset) - # self._random = random.Random(seed) + # Allow async chat if initiated using a_initiate_chat + self.register_reply(Agent, GroupChatManager.a_run_chat, config=groupchat, reset_config=GroupChat.reset) def run_chat( self, @@ -131,3 +189,48 @@ def run_chat( speaker.send(reply, self, request_reply=False) message = self.last_message(speaker) return True, None + + async def a_run_chat( + self, + messages: Optional[List[Dict]] = None, + sender: Optional[Agent] = None, + config: Optional[GroupChat] = None, + ): + """Run a group chat asynchronously.""" + if messages is None: + messages = self._oai_messages[sender] + message = messages[-1] + speaker = sender + groupchat = config + for i in range(groupchat.max_round): + # set the name to speaker's name if the role is not function + if message["role"] != "function": + message["name"] = speaker.name + groupchat.messages.append(message) + # broadcast the message to all agents except the speaker + for agent in groupchat.agents: + if agent != speaker: + await self.a_send(message, agent, request_reply=False, silent=True) + if i == groupchat.max_round - 1: + # the last round + break + try: + # select the next speaker + speaker = groupchat.select_speaker(speaker, self) + # let the speaker speak + reply = await speaker.a_generate_reply(sender=self) + except KeyboardInterrupt: + # let the admin agent speak if interrupted + if groupchat.admin_name in groupchat.agent_names: + # admin agent is one of the participants + speaker = groupchat.agent_by_name(groupchat.admin_name) + reply = await speaker.a_generate_reply(sender=self) + else: + # admin agent is not found in the participants + raise + if reply is None: + break + # The speaker sends the message without requesting a reply + await speaker.a_send(reply, self, request_reply=False) + message = self.last_message(speaker) + return True, None diff --git a/autogen/agentchat/user_proxy_agent.py b/autogen/agentchat/user_proxy_agent.py index ae5f908d8fe..d72c2bdceba 100644 --- a/autogen/agentchat/user_proxy_agent.py +++ b/autogen/agentchat/user_proxy_agent.py @@ -63,7 +63,7 @@ def __init__( - last_n_messages (Experimental, Optional, int): The number of messages to look back for code execution. Default to 1. default_auto_reply (str or dict or None): the default auto reply message when no code execution or llm based reply is generated. llm_config (dict or False): llm inference configuration. - Please refer to [Completion.create](/docs/reference/oai/completion#create) + Please refer to [OpenAIWrapper.create](/docs/reference/oai/client#create) for available options. Default to false, which disables llm-based auto reply. system_message (str): system message for ChatCompletion inference. diff --git a/autogen/code_utils.py b/autogen/code_utils.py index e5e0a7e3a6e..616bcf6da57 100644 --- a/autogen/code_utils.py +++ b/autogen/code_utils.py @@ -1,13 +1,14 @@ -import signal -import subprocess -import sys +import logging import os import pathlib -from typing import List, Dict, Tuple, Optional, Union, Callable import re +import subprocess +import sys import time +from concurrent.futures import ThreadPoolExecutor, TimeoutError from hashlib import md5 -import logging +from typing import Callable, Dict, List, Optional, Tuple, Union + from autogen import oai try: @@ -26,6 +27,21 @@ WIN32 = sys.platform == "win32" PATH_SEPARATOR = WIN32 and "\\" or "/" +logger = logging.getLogger(__name__) + + +def content_str(content: Union[str, List]) -> str: + if type(content) is str: + return content + rst = "" + for item in content: + if item["type"] == "text": + rst += item["text"] + else: + assert isinstance(item, dict) and item["type"] == "image_url", "Wrong content format." + rst += "<image>" + return rst + def infer_lang(code): """infer the language for the code. @@ -33,16 +49,24 @@ def infer_lang(code): """ if code.startswith("python ") or code.startswith("pip") or code.startswith("python3 "): return "sh" - return "python" + + # check if code is a valid python code + try: + compile(code, "test", "exec") + return "python" + except SyntaxError: + # not a valid python code + return UNKNOWN def extract_code( - text: str, pattern: str = CODE_BLOCK_PATTERN, detect_single_line_code: bool = False + text: Union[str, List], pattern: str = CODE_BLOCK_PATTERN, detect_single_line_code: bool = False ) -> List[Tuple[str, str]]: """Extract code from a text. Args: - text (str): The text to extract code from. + text (str or List): The content to extract code from. The content can be + a string or a list, as returned by standard GPT or multimodal GPT. pattern (str, optional): The regular expression pattern for finding the code block. Defaults to CODE_BLOCK_PATTERN. detect_single_line_code (bool, optional): Enable the new feature for @@ -53,6 +77,7 @@ def extract_code( If there is no code block in the input text, the language would be "unknown". If there is code block but the language is not specified, the language would be "". """ + text = content_str(text) if not detect_single_line_code: match = re.findall(pattern, text, flags=re.DOTALL) return match if match else [(UNKNOWN, text)] @@ -75,49 +100,8 @@ def extract_code( return extracted -# _FIND_CODE_SYS_MSG = [ -# { -# "role": "system", -# "content": """In the following conversation, an assistant suggests code and a user is expected to run it. -# Read the conversation, and then find all the right code blocks for the user to run next in the right order. -# Only return the code blocks that are expected to run. -# Don't include code blocks which have been executed unless the user is requested to run the same block again. -# When the user needs to run multiple blocks in sequence, make sure to output all the blocks to run in a right order. -# If the line beginning with "# filename" is put before a code block, move it into the code block as the first line. -# Make sure to add the right "python" or "sh" identifier if the language identifier is missing for a code block. -# Don't make other changes to the code blocks. -# Don't reply anything else if at least one code block is expected to run. -# If no code block is expeted to run, check whether the task has been successfully finished at full satisfaction. -# If not, reply with the reason why the task is not finished.""", -# }, -# ] -# _FIND_CODE_CONFIG = { -# "model": FAST_MODEL, -# } - - -# def find_code(messages: List[Dict], sys_msg=None, **config) -> Tuple[List[Tuple[str, str]], str]: -# """Find code from a list of messages. - -# Args: -# messages (str): The list of messages to find code from. -# sys_msg (Optional, str): The system message to prepend to the messages. -# config (Optional, dict): The configuration for the API call. - -# Returns: -# list: A list of tuples, each containing the language and the code. -# str: The generated text by llm. -# """ -# params = {**_FIND_CODE_CONFIG, **config} -# if sys_msg is None or not sys_msg[0]["content"]: -# sys_msg = _FIND_CODE_SYS_MSG -# response = oai.ChatCompletion.create(messages=sys_msg + messages, **params) -# content = oai.Completion.extract_text(response)[0] -# return extract_code(content), content - - def generate_code(pattern: str = CODE_BLOCK_PATTERN, **config) -> Tuple[str, float]: - """Generate code. + """(openai<1) Generate code. Args: pattern (Optional, str): The regular expression pattern for finding the code block. @@ -142,7 +126,7 @@ def generate_code(pattern: str = CODE_BLOCK_PATTERN, **config) -> Tuple[str, flo def improve_function(file_name, func_name, objective, **config): - """(work in progress) Improve the function to achieve the objective.""" + """(openai<1) Improve the function to achieve the objective.""" params = {**_IMPROVE_FUNCTION_CONFIG, **config} # read the entire file into a str with open(file_name, "r") as f: @@ -163,7 +147,7 @@ def improve_function(file_name, func_name, objective, **config): def improve_code(files, objective, suggest_only=True, **config): - """Improve the code to achieve a given objective. + """(openai<1) Improve the code to achieve a given objective. Args: files (list): A list of file names containing the source code. @@ -209,7 +193,7 @@ def execute_code( timeout: Optional[int] = None, filename: Optional[str] = None, work_dir: Optional[str] = None, - use_docker: Optional[Union[List[str], str, bool]] = docker is not None, + use_docker: Optional[Union[List[str], str, bool]] = None, lang: Optional[str] = "python", ) -> Tuple[int, str, str]: """Execute code in a docker container. @@ -233,7 +217,11 @@ def execute_code( If a list or a str of image name(s) is provided, the code will be executed in a docker container with the first image successfully pulled. If None, False or empty, the code will be executed in the current environment. - Default is True, which will be converted into a list. + Default is None, which will be converted into an empty list when docker package is available. + Expected behaviour: + - If `use_docker` is explicitly set to True and the docker package is available, the code will run in a Docker container. + - If `use_docker` is explicitly set to True but the Docker package is missing, an error will be raised. + - If `use_docker` is not set (i.e., left default to None) and the Docker package is not available, a warning will be displayed, but the code will run natively. If the code is executed in the current environment, the code must be trusted. lang (Optional, str): The language of the code. Default is "python". @@ -243,10 +231,27 @@ def execute_code( str: The error message if the code fails to execute; the stdout otherwise. image: The docker image name after container run when docker is used. """ - assert code is not None or filename is not None, "Either code or filename must be provided." + if all((code is None, filename is None)): + error_msg = f"Either {code=} or {filename=} must be provided." + logger.error(error_msg) + raise AssertionError(error_msg) + + # Warn if use_docker was unspecified (or None), and cannot be provided (the default). + # In this case the current behavior is to fall back to run natively, but this behavior + # is subject to change. + if use_docker is None: + if docker is None: + use_docker = False + logger.warning( + "execute_code was called without specifying a value for use_docker. Since the python docker package is not available, code will be run natively. Note: this fallback behavior is subject to change" + ) + else: + # Default to true + use_docker = True + timeout = timeout or DEFAULT_TIMEOUT original_filename = filename - if WIN32 and lang in ["sh", "shell"]: + if WIN32 and lang in ["sh", "shell"] and (not use_docker): lang = "ps1" if filename is None: code_hash = md5(code.encode()).hexdigest() @@ -258,7 +263,7 @@ def execute_code( file_dir = os.path.dirname(filepath) os.makedirs(file_dir, exist_ok=True) if code is not None: - with open(filepath, "w") as fout: + with open(filepath, "w", encoding="utf-8") as fout: fout.write(code) # check if already running in a docker container in_docker_container = os.path.exists("/.dockerenv") @@ -269,7 +274,7 @@ def execute_code( f".\\{filename}" if WIN32 else filename, ] if WIN32: - logging.warning("SIGALRM is not supported on Windows. No timeout will be enforced.") + logger.warning("SIGALRM is not supported on Windows. No timeout will be enforced.") result = subprocess.run( cmd, cwd=work_dir, @@ -277,21 +282,20 @@ def execute_code( text=True, ) else: - signal.signal(signal.SIGALRM, timeout_handler) - try: - signal.alarm(timeout) - # run the code in a subprocess in the current docker container in the working directory - result = subprocess.run( + with ThreadPoolExecutor(max_workers=1) as executor: + future = executor.submit( + subprocess.run, cmd, cwd=work_dir, capture_output=True, text=True, ) - signal.alarm(0) - except TimeoutError: - if original_filename is None: - os.remove(filepath) - return 1, TIMEOUT_MSG, None + try: + result = future.result(timeout=timeout) + except TimeoutError: + if original_filename is None: + os.remove(filepath) + return 1, TIMEOUT_MSG, None if original_filename is None: os.remove(filepath) if result.returncode: @@ -393,7 +397,7 @@ def execute_code( def generate_assertions(definition: str, **config) -> Tuple[str, float]: - """Generate assertions for a function. + """(openai<1) Generate assertions for a function. Args: definition (str): The function definition, including the signature and docstr. @@ -430,7 +434,7 @@ def eval_function_completions( timeout: Optional[float] = 3, use_docker: Optional[bool] = True, ) -> Dict: - """Select a response from a list of responses for the function completion task (using generated assertions), and/or evaluate if the task is successful using a gold test. + """(openai<1) Select a response from a list of responses for the function completion task (using generated assertions), and/or evaluate if the task is successful using a gold test. Args: responses (list): The list of responses. @@ -505,11 +509,11 @@ def eval_function_completions( _FUNC_COMPLETION_PROMPT = "# Python 3{definition}" _FUNC_COMPLETION_STOP = ["\nclass", "\ndef", "\nif", "\nprint"] _IMPLEMENT_CONFIGS = [ - {"model": FAST_MODEL, "prompt": _FUNC_COMPLETION_PROMPT, "temperature": 0, "seed": 0}, - {"model": FAST_MODEL, "prompt": _FUNC_COMPLETION_PROMPT, "stop": _FUNC_COMPLETION_STOP, "n": 7, "seed": 0}, - {"model": DEFAULT_MODEL, "prompt": _FUNC_COMPLETION_PROMPT, "temperature": 0, "seed": 1}, - {"model": DEFAULT_MODEL, "prompt": _FUNC_COMPLETION_PROMPT, "stop": _FUNC_COMPLETION_STOP, "n": 2, "seed": 2}, - {"model": DEFAULT_MODEL, "prompt": _FUNC_COMPLETION_PROMPT, "stop": _FUNC_COMPLETION_STOP, "n": 1, "seed": 2}, + {"model": FAST_MODEL, "prompt": _FUNC_COMPLETION_PROMPT, "temperature": 0, "cache_seed": 0}, + {"model": FAST_MODEL, "prompt": _FUNC_COMPLETION_PROMPT, "stop": _FUNC_COMPLETION_STOP, "n": 7, "cache_seed": 0}, + {"model": DEFAULT_MODEL, "prompt": _FUNC_COMPLETION_PROMPT, "temperature": 0, "cache_seed": 1}, + {"model": DEFAULT_MODEL, "prompt": _FUNC_COMPLETION_PROMPT, "stop": _FUNC_COMPLETION_STOP, "n": 2, "cache_seed": 2}, + {"model": DEFAULT_MODEL, "prompt": _FUNC_COMPLETION_PROMPT, "stop": _FUNC_COMPLETION_STOP, "n": 1, "cache_seed": 2}, ] @@ -520,7 +524,7 @@ def __init__(self, assertions): self.metrics = self.responses = None def pass_assertions(self, context, response, **_): - """Check if the response passes the assertions.""" + """(openai<1) Check if the response passes the assertions.""" responses = oai.Completion.extract_text(response) metrics = eval_function_completions(responses, context["definition"], assertions=self._assertions) self._assertions = metrics["assertions"] @@ -535,7 +539,7 @@ def implement( configs: Optional[List[Dict]] = None, assertions: Optional[Union[str, Callable[[str], Tuple[str, float]]]] = generate_assertions, ) -> Tuple[str, float]: - """Implement a function from a definition. + """(openai<1) Implement a function from a definition. Args: definition (str): The function definition, including the signature and docstr. diff --git a/autogen/img_utils.py b/autogen/img_utils.py new file mode 100644 index 00000000000..a8e1a96876a --- /dev/null +++ b/autogen/img_utils.py @@ -0,0 +1,170 @@ +import base64 +import mimetypes +import re +from io import BytesIO +from typing import Any, Dict, List, Optional, Tuple, Union + +import requests +from PIL import Image + + +def get_image_data(image_file: str, use_b64=True) -> bytes: + if image_file.startswith("http://") or image_file.startswith("https://"): + response = requests.get(image_file) + content = response.content + elif re.match(r"data:image/(?:png|jpeg);base64,", image_file): + return re.sub(r"data:image/(?:png|jpeg);base64,", "", image_file) + else: + image = Image.open(image_file).convert("RGB") + buffered = BytesIO() + image.save(buffered, format="PNG") + content = buffered.getvalue() + + if use_b64: + return base64.b64encode(content).decode("utf-8") + else: + return content + + +def llava_formater(prompt: str, order_image_tokens: bool = False) -> Tuple[str, List[str]]: + """ + Formats the input prompt by replacing image tags and returns the new prompt along with image locations. + + Parameters: + - prompt (str): The input string that may contain image tags like <img ...>. + - order_image_tokens (bool, optional): Whether to order the image tokens with numbers. + It will be useful for GPT-4V. Defaults to False. + + Returns: + - Tuple[str, List[str]]: A tuple containing the formatted string and a list of images (loaded in b64 format). + """ + + # Initialize variables + new_prompt = prompt + image_locations = [] + images = [] + image_count = 0 + + # Regular expression pattern for matching <img ...> tags + img_tag_pattern = re.compile(r"<img ([^>]+)>") + + # Find all image tags + for match in img_tag_pattern.finditer(prompt): + image_location = match.group(1) + + try: + img_data = get_image_data(image_location) + except Exception as e: + # Remove the token + print(f"Warning! Unable to load image from {image_location}, because of {e}") + new_prompt = new_prompt.replace(match.group(0), "", 1) + continue + + image_locations.append(image_location) + images.append(img_data) + + # Increment the image count and replace the tag in the prompt + new_token = f"<image {image_count}>" if order_image_tokens else "<image>" + + new_prompt = new_prompt.replace(match.group(0), new_token, 1) + image_count += 1 + + return new_prompt, images + + +def convert_base64_to_data_uri(base64_image): + def _get_mime_type_from_data_uri(base64_image): + # Decode the base64 string + image_data = base64.b64decode(base64_image) + # Check the first few bytes for known signatures + if image_data.startswith(b"\xff\xd8\xff"): + return "image/jpeg" + elif image_data.startswith(b"\x89PNG\r\n\x1a\n"): + return "image/png" + elif image_data.startswith(b"GIF87a") or image_data.startswith(b"GIF89a"): + return "image/gif" + elif image_data.startswith(b"RIFF") and image_data[8:12] == b"WEBP": + return "image/webp" + return "image/jpeg" # use jpeg for unknown formats, best guess. + + mime_type = _get_mime_type_from_data_uri(base64_image) + data_uri = f"data:{mime_type};base64,{base64_image}" + return data_uri + + +def gpt4v_formatter(prompt: str) -> List[Union[str, dict]]: + """ + Formats the input prompt by replacing image tags and returns a list of text and images. + + Parameters: + - prompt (str): The input string that may contain image tags like <img ...>. + + Returns: + - List[Union[str, dict]]: A list of alternating text and image dictionary items. + """ + output = [] + last_index = 0 + image_count = 0 + + # Regular expression pattern for matching <img ...> tags + img_tag_pattern = re.compile(r"<img ([^>]+)>") + + # Find all image tags + for match in img_tag_pattern.finditer(prompt): + image_location = match.group(1) + + try: + img_data = get_image_data(image_location) + except Exception as e: + # Warning and skip this token + print(f"Warning! Unable to load image from {image_location}, because {e}") + continue + + # Add text before this image tag to output list + output.append({"type": "text", "text": prompt[last_index : match.start()]}) + + # Add image data to output list + output.append({"type": "image_url", "image_url": {"url": convert_base64_to_data_uri(img_data)}}) + + last_index = match.end() + image_count += 1 + + # Add remaining text to output list + output.append({"type": "text", "text": prompt[last_index:]}) + return output + + +def extract_img_paths(paragraph: str) -> list: + """ + Extract image paths (URLs or local paths) from a text paragraph. + + Parameters: + paragraph (str): The input text paragraph. + + Returns: + list: A list of extracted image paths. + """ + # Regular expression to match image URLs and file paths + img_path_pattern = re.compile( + r"\b(?:http[s]?://\S+\.(?:jpg|jpeg|png|gif|bmp)|\S+\.(?:jpg|jpeg|png|gif|bmp))\b", re.IGNORECASE + ) + + # Find all matches in the paragraph + img_paths = re.findall(img_path_pattern, paragraph) + return img_paths + + +def _to_pil(data: str) -> Image.Image: + """ + Converts a base64 encoded image data string to a PIL Image object. + + This function first decodes the base64 encoded string to bytes, then creates a BytesIO object from the bytes, + and finally creates and returns a PIL Image object from the BytesIO object. + + Parameters: + data (str): The base64 encoded image data string. + + Returns: + Image.Image: The PIL Image object created from the input data. + """ + return Image.open(BytesIO(base64.b64decode(data))) diff --git a/autogen/math_utils.py b/autogen/math_utils.py index f664e765e5f..00fcae57ad2 100644 --- a/autogen/math_utils.py +++ b/autogen/math_utils.py @@ -9,7 +9,7 @@ def solve_problem(problem: str, **config) -> str: - """(Experimental) Solve the math problem. + """(openai<1) Solve the math problem. Args: problem (str): The problem statement. @@ -35,8 +35,9 @@ def remove_boxed(string: str) -> Optional[str]: """ left = "\\boxed{" try: - assert string[: len(left)] == left - assert string[-1] == "}" + if not all((string[: len(left)] == left, string[-1] == "}")): + raise AssertionError + return string[len(left) : -1] except Exception: return None @@ -94,7 +95,8 @@ def _fix_fracs(string: str) -> str: new_str += substr else: try: - assert len(substr) >= 2 + if not len(substr) >= 2: + raise AssertionError except Exception: return string a = substr[0] @@ -129,7 +131,8 @@ def _fix_a_slash_b(string: str) -> str: try: a = int(a_str) b = int(b_str) - assert string == "{}/{}".format(a, b) + if not string == "{}/{}".format(a, b): + raise AssertionError new_string = "\\frac{" + str(a) + "}{" + str(b) + "}" return new_string except Exception: @@ -143,7 +146,8 @@ def _remove_right_units(string: str) -> str: """ if "\\text{ " in string: splits = string.split("\\text{ ") - assert len(splits) == 2 + if not len(splits) == 2: + raise AssertionError return splits[0] else: return string diff --git a/autogen/oai/__init__.py b/autogen/oai/__init__.py index d2b9d2618fb..dbcd2f79607 100644 --- a/autogen/oai/__init__.py +++ b/autogen/oai/__init__.py @@ -1,3 +1,4 @@ +from autogen.oai.client import OpenAIWrapper from autogen.oai.completion import Completion, ChatCompletion from autogen.oai.openai_utils import ( get_config_list, @@ -5,9 +6,11 @@ config_list_openai_aoai, config_list_from_models, config_list_from_json, + config_list_from_dotenv, ) __all__ = [ + "OpenAIWrapper", "Completion", "ChatCompletion", "get_config_list", @@ -15,4 +18,5 @@ "config_list_openai_aoai", "config_list_from_models", "config_list_from_json", + "config_list_from_dotenv", ] diff --git a/autogen/oai/client.py b/autogen/oai/client.py new file mode 100644 index 00000000000..18240596e26 --- /dev/null +++ b/autogen/oai/client.py @@ -0,0 +1,335 @@ +from __future__ import annotations + +import os +import sys +from typing import List, Optional, Dict, Callable +import logging +import inspect +from flaml.automl.logger import logger_formatter + +from autogen.oai.openai_utils import get_key +from autogen.token_count_utils import count_token + +try: + from openai import OpenAI, APIError + from openai.types.chat import ChatCompletion + from openai.types.chat.chat_completion import ChatCompletionMessage, Choice + from openai.types.completion import Completion + from openai.types.completion_usage import CompletionUsage + import diskcache + + ERROR = None +except ImportError: + ERROR = ImportError("Please install openai>=1 and diskcache to use autogen.OpenAIWrapper.") + OpenAI = object +logger = logging.getLogger(__name__) +if not logger.handlers: + # Add the console handler. + _ch = logging.StreamHandler(stream=sys.stdout) + _ch.setFormatter(logger_formatter) + logger.addHandler(_ch) + + +class OpenAIWrapper: + """A wrapper class for openai client.""" + + cache_path_root: str = ".cache" + extra_kwargs = {"cache_seed", "filter_func", "allow_format_str_template", "context", "api_version"} + openai_kwargs = set(inspect.getfullargspec(OpenAI.__init__).kwonlyargs) + + def __init__(self, *, config_list: List[Dict] = None, **base_config): + """ + Args: + config_list: a list of config dicts to override the base_config. + They can contain additional kwargs as allowed in the [create](/docs/reference/oai/client#create) method. E.g., + + ```python + config_list=[ + { + "model": "gpt-4", + "api_key": os.environ.get("AZURE_OPENAI_API_KEY"), + "api_type": "azure", + "base_url": os.environ.get("AZURE_OPENAI_API_BASE"), + "api_version": "2023-03-15-preview", + }, + { + "model": "gpt-3.5-turbo", + "api_key": os.environ.get("OPENAI_API_KEY"), + "api_type": "open_ai", + "base_url": "https://api.openai.com/v1", + }, + { + "model": "llama-7B", + "base_url": "http://127.0.0.1:8080", + "api_type": "open_ai", + } + ] + ``` + + base_config: base config. It can contain both keyword arguments for openai client + and additional kwargs. + """ + openai_config, extra_kwargs = self._separate_openai_config(base_config) + if type(config_list) is list and len(config_list) == 0: + logger.warning("openai client was provided with an empty config_list, which may not be intended.") + if config_list: + config_list = [config.copy() for config in config_list] # make a copy before modifying + self._clients = [self._client(config, openai_config) for config in config_list] # could modify the config + self._config_list = [ + {**extra_kwargs, **{k: v for k, v in config.items() if k not in self.openai_kwargs}} + for config in config_list + ] + else: + self._clients = [self._client(extra_kwargs, openai_config)] + self._config_list = [extra_kwargs] + + def _process_for_azure(self, config: Dict, extra_kwargs: Dict, segment: str = "default"): + # deal with api_version + query_segment = f"{segment}_query" + headers_segment = f"{segment}_headers" + api_version = extra_kwargs.get("api_version") + if api_version is not None and query_segment not in config: + config[query_segment] = {"api-version": api_version} + if segment == "default": + # remove the api_version from extra_kwargs + extra_kwargs.pop("api_version") + if segment == "extra": + return + # deal with api_type + api_type = extra_kwargs.get("api_type") + if api_type is not None and api_type.startswith("azure") and headers_segment not in config: + api_key = config.get("api_key", os.environ.get("AZURE_OPENAI_API_KEY")) + config[headers_segment] = {"api-key": api_key} + # remove the api_type from extra_kwargs + extra_kwargs.pop("api_type") + # deal with model + model = extra_kwargs.get("model") + if model is None: + return + if "gpt-3.5" in model: + # hack for azure gpt-3.5 + extra_kwargs["model"] = model = model.replace("gpt-3.5", "gpt-35") + base_url = config.get("base_url") + if base_url is None: + raise ValueError("to use azure openai api, base_url must be specified.") + suffix = f"/openai/deployments/{model}" + if not base_url.endswith(suffix): + config["base_url"] += suffix[1:] if base_url.endswith("/") else suffix + + def _separate_openai_config(self, config): + """Separate the config into openai_config and extra_kwargs.""" + openai_config = {k: v for k, v in config.items() if k in self.openai_kwargs} + extra_kwargs = {k: v for k, v in config.items() if k not in self.openai_kwargs} + self._process_for_azure(openai_config, extra_kwargs) + return openai_config, extra_kwargs + + def _separate_create_config(self, config): + """Separate the config into create_config and extra_kwargs.""" + create_config = {k: v for k, v in config.items() if k not in self.extra_kwargs} + extra_kwargs = {k: v for k, v in config.items() if k in self.extra_kwargs} + return create_config, extra_kwargs + + def _client(self, config, openai_config): + """Create a client with the given config to overrdie openai_config, + after removing extra kwargs. + """ + openai_config = {**openai_config, **{k: v for k, v in config.items() if k in self.openai_kwargs}} + self._process_for_azure(openai_config, config) + client = OpenAI(**openai_config) + return client + + @classmethod + def instantiate( + cls, + template: str | Callable | None, + context: Optional[Dict] = None, + allow_format_str_template: Optional[bool] = False, + ): + if not context or template is None: + return template + if isinstance(template, str): + return template.format(**context) if allow_format_str_template else template + return template(context) + + def _construct_create_params(self, create_config: Dict, extra_kwargs: Dict) -> Dict: + """Prime the create_config with additional_kwargs.""" + # Validate the config + prompt = create_config.get("prompt") + messages = create_config.get("messages") + if (prompt is None) == (messages is None): + raise ValueError("Either prompt or messages should be in create config but not both.") + context = extra_kwargs.get("context") + if context is None: + # No need to instantiate if no context is provided. + return create_config + # Instantiate the prompt or messages + allow_format_str_template = extra_kwargs.get("allow_format_str_template", False) + # Make a copy of the config + params = create_config.copy() + if prompt is not None: + # Instantiate the prompt + params["prompt"] = self.instantiate(prompt, context, allow_format_str_template) + elif context: + # Instantiate the messages + params["messages"] = [ + { + **m, + "content": self.instantiate(m["content"], context, allow_format_str_template), + } + if m.get("content") + else m + for m in messages + ] + return params + + def create(self, **config): + """Make a completion for a given config using openai's clients. + Besides the kwargs allowed in openai's client, we allow the following additional kwargs. + The config in each client will be overriden by the config. + + Args: + - context (Dict | None): The context to instantiate the prompt or messages. Default to None. + It needs to contain keys that are used by the prompt template or the filter function. + E.g., `prompt="Complete the following sentence: {prefix}, context={"prefix": "Today I feel"}`. + The actual prompt will be: + "Complete the following sentence: Today I feel". + More examples can be found at [templating](/docs/Use-Cases/enhanced_inference#templating). + - `cache_seed` (int | None) for the cache. Default to 41. + An integer cache_seed is useful when implementing "controlled randomness" for the completion. + None for no caching. + - filter_func (Callable | None): A function that takes in the context and the response + and returns a boolean to indicate whether the response is valid. E.g., + + ```python + def yes_or_no_filter(context, response): + return context.get("yes_or_no_choice", False) is False or any( + text in ["Yes.", "No."] for text in client.extract_text_or_function_call(response) + ) + ``` + + - allow_format_str_template (bool | None): Whether to allow format string template in the config. Default to false. + - api_version (str | None): The api version. Default to None. E.g., "2023-08-01-preview". + """ + if ERROR: + raise ERROR + last = len(self._clients) - 1 + for i, client in enumerate(self._clients): + # merge the input config with the i-th config in the config list + full_config = {**config, **self._config_list[i]} + # separate the config into create_config and extra_kwargs + create_config, extra_kwargs = self._separate_create_config(full_config) + # process for azure + self._process_for_azure(create_config, extra_kwargs, "extra") + # construct the create params + params = self._construct_create_params(create_config, extra_kwargs) + # get the cache_seed, filter_func and context + cache_seed = extra_kwargs.get("cache_seed", 41) + filter_func = extra_kwargs.get("filter_func") + context = extra_kwargs.get("context") + with diskcache.Cache(f"{self.cache_path_root}/{cache_seed}") as cache: + if cache_seed is not None: + # Try to get the response from cache + key = get_key(params) + response = cache.get(key, None) + if response is not None: + # check the filter + pass_filter = filter_func is None or filter_func(context=context, response=response) + if pass_filter or i == last: + # Return the response if it passes the filter or it is the last client + response.config_id = i + response.pass_filter = pass_filter + # TODO: add response.cost + return response + try: + response = self._completions_create(client, params) + except APIError: + logger.debug(f"config {i} failed", exc_info=1) + if i == last: + raise + else: + if cache_seed is not None: + # Cache the response + cache.set(key, response) + return response + + def _completions_create(self, client, params): + completions = client.chat.completions if "messages" in params else client.completions + # If streaming is enabled, has messages, and does not have functions, then + # iterate over the chunks of the response + if params.get("stream", False) and "messages" in params and "functions" not in params: + response_contents = [""] * params.get("n", 1) + finish_reasons = [""] * params.get("n", 1) + completion_tokens = 0 + + # Set the terminal text color to green + print("\033[32m", end="") + + # Send the chat completion request to OpenAI's API and process the response in chunks + for chunk in completions.create(**params): + if chunk.choices: + for choice in chunk.choices: + content = choice.delta.content + finish_reasons[choice.index] = choice.finish_reason + # If content is present, print it to the terminal and update response variables + if content is not None: + print(content, end="", flush=True) + response_contents[choice.index] += content + completion_tokens += 1 + else: + print() + + # Reset the terminal text color + print("\033[0m\n") + + # Prepare the final ChatCompletion object based on the accumulated data + model = chunk.model.replace("gpt-35", "gpt-3.5") # hack for Azure API + prompt_tokens = count_token(params["messages"], model) + response = ChatCompletion( + id=chunk.id, + model=chunk.model, + created=chunk.created, + object="chat.completion", + choices=[], + usage=CompletionUsage( + prompt_tokens=prompt_tokens, + completion_tokens=completion_tokens, + total_tokens=prompt_tokens + completion_tokens, + ), + ) + for i in range(len(response_contents)): + response.choices.append( + Choice( + index=i, + finish_reason=finish_reasons[i], + message=ChatCompletionMessage( + role="assistant", content=response_contents[i], function_call=None + ), + ) + ) + else: + # If streaming is not enabled or using functions, send a regular chat completion request + # Functions are not supported, so ensure streaming is disabled + params = params.copy() + params["stream"] = False + response = completions.create(**params) + return response + + @classmethod + def extract_text_or_function_call(cls, response: ChatCompletion | Completion) -> List[str]: + """Extract the text or function calls from a completion or chat response. + + Args: + response (ChatCompletion | Completion): The response from openai. + + Returns: + A list of text or function calls in the responses. + """ + choices = response.choices + if isinstance(response, Completion): + return [choice.text for choice in choices] + return [ + choice.message if choice.message.function_call is not None else choice.message.content for choice in choices + ] + + +# TODO: logging diff --git a/autogen/oai/completion.py b/autogen/oai/completion.py index 229820efbb3..2fe95e8f60c 100644 --- a/autogen/oai/completion.py +++ b/autogen/oai/completion.py @@ -9,14 +9,14 @@ from flaml.tune.space import is_constant from flaml.automl.logger import logger_formatter from .openai_utils import get_key +from collections import defaultdict try: import openai - from openai.error import ( - ServiceUnavailableError, + from openai import ( RateLimitError, APIError, - InvalidRequestError, + BadRequestError, APIConnectionError, Timeout, AuthenticationError, @@ -26,7 +26,10 @@ ERROR = None except ImportError: - ERROR = ImportError("please install openai and diskcache to use the autogen.oai subpackage.") + ERROR = ImportError( + "(Deprecated) The autogen.Completion class requires openai<1 and diskcache. " + "Please switch to autogen.OpenAIWrapper for openai>=1." + ) openai_Completion = object logger = logging.getLogger(__name__) if not logger.handlers: @@ -37,7 +40,7 @@ class Completion(openai_Completion): - """A class for OpenAI completion API. + """(openai<1) A class for OpenAI completion API. It also supports: ChatCompletion, Azure OpenAI API. """ @@ -50,6 +53,7 @@ class Completion(openai_Completion): "gpt-3.5-turbo-16k", "gpt-3.5-turbo-16k-0613", "gpt-35-turbo", + "gpt-35-turbo-16k", "gpt-4", "gpt-4-32k", "gpt-4-32k-0314", # deprecate in Sep @@ -68,11 +72,14 @@ class Completion(openai_Completion): "text-davinci-002": 0.02, "text-davinci-003": 0.02, "gpt-3.5-turbo": (0.0015, 0.002), + "gpt-3.5-turbo-instruct": (0.0015, 0.002), "gpt-3.5-turbo-0301": (0.0015, 0.002), # deprecate in Sep "gpt-3.5-turbo-0613": (0.0015, 0.002), "gpt-3.5-turbo-16k": (0.003, 0.004), "gpt-3.5-turbo-16k-0613": (0.003, 0.004), - "gpt-35-turbo": 0.002, + "gpt-35-turbo": (0.0015, 0.002), + "gpt-35-turbo-16k": (0.003, 0.004), + "gpt-35-turbo-instruct": (0.0015, 0.002), "gpt-4": (0.03, 0.06), "gpt-4-32k": (0.06, 0.12), "gpt-4-0314": (0.03, 0.06), # deprecate in Sep @@ -102,12 +109,12 @@ class Completion(openai_Completion): "prompt": "{prompt}", } - seed = 41 - cache_path = f".cache/{seed}" + cache_seed = 41 + cache_path = f".cache/{cache_seed}" # retry after this many seconds - retry_time = 10 + retry_wait_time = 10 # fail a request after hitting RateLimitError for this many seconds - retry_timeout = 120 + max_retry_period = 120 # time out for request to openai server request_timeout = 60 @@ -127,7 +134,7 @@ def set_cache(cls, seed: Optional[int] = 41, cache_path_root: Optional[str] = ". cache_path (str, Optional): The root path for the cache. The complete cache path will be {cache_path}/{seed}. """ - cls.seed = seed + cls.cache_seed = seed cls.cache_path = f"{cache_path_root}/{seed}" @classmethod @@ -138,7 +145,7 @@ def clear_cache(cls, seed: Optional[int] = None, cache_path_root: Optional[str] seed (int, Optional): The integer identifier for the pseudo seed. If omitted, all caches under cache_path_root will be cleared. cache_path (str, Optional): The root path for the cache. - The complete cache path will be {cache_path}/{seed}. + The complete cache path will be {cache_path}/{cache_seed}. """ if seed is None: shutil.rmtree(cache_path_root, ignore_errors=True) @@ -157,6 +164,7 @@ def _book_keeping(cls, config: Dict, response): value = { "created_at": [], "cost": [], + "token_count": [], } if "messages" in config: messages = config["messages"] @@ -168,6 +176,14 @@ def _book_keeping(cls, config: Dict, response): key = get_key([config["prompt"]] + [choice.get("text") for choice in response["choices"]]) value["created_at"].append(cls._count_create) value["cost"].append(response["cost"]) + value["token_count"].append( + { + "model": response["model"], + "prompt_tokens": response["usage"]["prompt_tokens"], + "completion_tokens": response["usage"].get("completion_tokens", 0), + "total_tokens": response["usage"]["total_tokens"], + } + ) cls._history_dict[key] = value cls._count_create += 1 return @@ -181,10 +197,9 @@ def _book_keeping(cls, config: Dict, response): def _get_response(cls, config: Dict, raise_on_ratelimit_or_timeout=False, use_cache=True): """Get the response from the openai api call. - Try cache first. If not found, call the openai api. If the api call fails, retry after retry_time. + Try cache first. If not found, call the openai api. If the api call fails, retry after retry_wait_time. """ config = config.copy() - openai.api_key_path = config.pop("api_key_path", openai.api_key_path) key = get_key(config) if use_cache: response = cls._cache.get(key, None) @@ -194,35 +209,34 @@ def _get_response(cls, config: Dict, raise_on_ratelimit_or_timeout=False, use_ca return response openai_completion = ( openai.ChatCompletion - if config["model"] in cls.chat_models or issubclass(cls, ChatCompletion) + if config["model"].replace("gpt-35-turbo", "gpt-3.5-turbo") in cls.chat_models + or issubclass(cls, ChatCompletion) else openai.Completion ) start_time = time.time() request_timeout = cls.request_timeout - retry_timeout = config.pop("retry_timeout", cls.retry_timeout) + max_retry_period = config.pop("max_retry_period", cls.max_retry_period) + retry_wait_time = config.pop("retry_wait_time", cls.retry_wait_time) while True: try: if "request_timeout" in config: response = openai_completion.create(**config) else: response = openai_completion.create(request_timeout=request_timeout, **config) - except ( - ServiceUnavailableError, - APIConnectionError, - ): + except APIConnectionError: # transient error - logger.info(f"retrying in {cls.retry_time} seconds...", exc_info=1) - sleep(cls.retry_time) + logger.info(f"retrying in {retry_wait_time} seconds...", exc_info=1) + sleep(retry_wait_time) except APIError as err: error_code = err and err.json_body and isinstance(err.json_body, dict) and err.json_body.get("error") error_code = error_code and error_code.get("code") if error_code == "content_filter": raise # transient error - logger.info(f"retrying in {cls.retry_time} seconds...", exc_info=1) - sleep(cls.retry_time) + logger.info(f"retrying in {retry_wait_time} seconds...", exc_info=1) + sleep(retry_wait_time) except (RateLimitError, Timeout) as err: - time_left = retry_timeout - (time.time() - start_time + cls.retry_time) + time_left = max_retry_period - (time.time() - start_time + retry_wait_time) if ( time_left > 0 and isinstance(err, RateLimitError) @@ -233,8 +247,8 @@ def _get_response(cls, config: Dict, raise_on_ratelimit_or_timeout=False, use_ca if isinstance(err, Timeout): request_timeout <<= 1 request_timeout = min(request_timeout, time_left) - logger.info(f"retrying in {cls.retry_time} seconds...", exc_info=1) - sleep(cls.retry_time) + logger.info(f"retrying in {retry_wait_time} seconds...", exc_info=1) + sleep(retry_wait_time) elif raise_on_ratelimit_or_timeout: raise else: @@ -242,10 +256,10 @@ def _get_response(cls, config: Dict, raise_on_ratelimit_or_timeout=False, use_ca if use_cache and isinstance(err, Timeout): cls._cache.set(key, response) logger.warning( - f"Failed to get response from openai api due to getting RateLimitError or Timeout for {retry_timeout} seconds." + f"Failed to get response from openai api due to getting RateLimitError or Timeout for {max_retry_period} seconds." ) return response - except InvalidRequestError: + except BadRequestError: if "azure" in config.get("api_type", openai.api_type) and "model" in config: # azure api uses "engine" instead of "model" config["engine"] = config.pop("model").replace("gpt-3.5-turbo", "gpt-35-turbo") @@ -556,6 +570,10 @@ def eval_func(responses, **data): dict: The optimized hyperparameter setting. tune.ExperimentAnalysis: The tuning results. """ + logger.warning( + "tuning via Completion.tune is deprecated in pyautogen v0.2 and openai>=1. " + "flaml.tune supports tuning more generically." + ) if ERROR: raise ERROR space = cls.default_search_space.copy() @@ -581,23 +599,31 @@ def eval_func(responses, **data): cls._prompts = space.get("prompt") if cls._prompts is None: cls._messages = space.get("messages") - assert isinstance(cls._messages, list) and isinstance( - cls._messages[0], (dict, list) - ), "messages must be a list of dicts or a list of lists." + if not all((isinstance(cls._messages, list), isinstance(cls._messages[0], (dict, list)))): + error_msg = "messages must be a list of dicts or a list of lists." + logger.error(error_msg) + raise AssertionError(error_msg) if isinstance(cls._messages[0], dict): cls._messages = [cls._messages] space["messages"] = tune.choice(list(range(len(cls._messages)))) else: - assert space.get("messages") is None, "messages and prompt cannot be provided at the same time." - assert isinstance(cls._prompts, (str, list)), "prompt must be a string or a list of strings." + if space.get("messages") is not None: + error_msg = "messages and prompt cannot be provided at the same time." + logger.error(error_msg) + raise AssertionError(error_msg) + if not isinstance(cls._prompts, (str, list)): + error_msg = "prompt must be a string or a list of strings." + logger.error(error_msg) + raise AssertionError(error_msg) if isinstance(cls._prompts, str): cls._prompts = [cls._prompts] space["prompt"] = tune.choice(list(range(len(cls._prompts)))) cls._stops = space.get("stop") if cls._stops: - assert isinstance( - cls._stops, (str, list) - ), "stop must be a string, a list of strings, or a list of lists of strings." + if not isinstance(cls._stops, (str, list)): + error_msg = "stop must be a string, a list of strings, or a list of lists of strings." + logger.error(error_msg) + raise AssertionError(error_msg) if not (isinstance(cls._stops, list) and isinstance(cls._stops[0], list)): cls._stops = [cls._stops] space["stop"] = tune.choice(list(range(len(cls._stops)))) @@ -684,7 +710,7 @@ def create( context: Optional[Dict] = None, use_cache: Optional[bool] = True, config_list: Optional[List[Dict]] = None, - filter_func: Optional[Callable[[Dict, Dict, Dict], bool]] = None, + filter_func: Optional[Callable[[Dict, Dict], bool]] = None, raise_on_ratelimit_or_timeout: Optional[bool] = True, allow_format_str_template: Optional[bool] = False, **config, @@ -711,18 +737,18 @@ def create( "model": "gpt-4", "api_key": os.environ.get("AZURE_OPENAI_API_KEY"), "api_type": "azure", - "api_base": os.environ.get("AZURE_OPENAI_API_BASE"), + "base_url": os.environ.get("AZURE_OPENAI_API_BASE"), "api_version": "2023-03-15-preview", }, { "model": "gpt-3.5-turbo", "api_key": os.environ.get("OPENAI_API_KEY"), "api_type": "open_ai", - "api_base": "https://api.openai.com/v1", + "base_url": "https://api.openai.com/v1", }, { "model": "llama-7B", - "api_base": "http://127.0.0.1:8080", + "base_url": "http://127.0.0.1:8080", "api_type": "open_ai", } ], @@ -730,7 +756,7 @@ def create( ) ``` - filter_func (Callable, Optional): A function that takes in the context, the config and the response and returns a boolean to indicate whether the response is valid. E.g., + filter_func (Callable, Optional): A function that takes in the context and the response and returns a boolean to indicate whether the response is valid. E.g., ```python def yes_or_no_filter(context, config, response): @@ -743,9 +769,11 @@ def yes_or_no_filter(context, config, response): When set to False, -1 will be returned when all configs fail. allow_format_str_template (bool, Optional): Whether to allow format string template in the config. **config: Configuration for the openai API call. This is used as parameters for calling openai API. - Besides the parameters for the openai API call, it can also contain a seed (int) for the cache. - This is useful when implementing "controlled randomness" for the completion. - Also, the "prompt" or "messages" parameter can contain a template (str or Callable) which will be instantiated with the context. + The "prompt" or "messages" parameter can contain a template (str or Callable) which will be instantiated with the context. + Besides the parameters for the openai API call, it can also contain: + - `max_retry_period` (int): the total time (in seconds) allowed for retrying failed requests. + - `retry_wait_time` (int): the time interval to wait (in seconds) before retrying a failed request. + - `cache_seed` (int) for the cache. This is useful when implementing "controlled randomness" for the completion. Returns: Responses from OpenAI API, with additional fields. @@ -754,8 +782,20 @@ def yes_or_no_filter(context, config, response): - `config_id`: the index of the config in the config_list that is used to generate the response. - `pass_filter`: whether the response passes the filter function. None if no filter is provided. """ + logger.warning( + "Completion.create is deprecated in pyautogen v0.2 and openai>=1. " + "The new openai requires initiating a client for inference. " + "Please refer to https://microsoft.github.io/autogen/docs/Use-Cases/enhanced_inference#api-unification" + ) if ERROR: raise ERROR + + # Warn if a config list was provided but was empty + if type(config_list) is list and len(config_list) == 0: + logger.warning( + "Completion was provided with a config_list, but the list was empty. Adopting default OpenAI behavior, which reads from the 'model' parameter instead." + ) + if config_list: last = len(config_list) - 1 cost = 0 @@ -763,9 +803,9 @@ def yes_or_no_filter(context, config, response): base_config = config.copy() base_config["allow_format_str_template"] = allow_format_str_template base_config.update(each_config) - if i < last and filter_func is None and "retry_timeout" not in base_config: - # retry_timeout = 0 to avoid retrying when no filter is given - base_config["retry_timeout"] = 0 + if i < last and filter_func is None and "max_retry_period" not in base_config: + # max_retry_period = 0 to avoid retrying when no filter is given + base_config["max_retry_period"] = 0 try: response = cls.create( context, @@ -775,16 +815,14 @@ def yes_or_no_filter(context, config, response): ) if response == -1: return response - pass_filter = filter_func is None or filter_func( - context=context, base_config=config, response=response - ) + pass_filter = filter_func is None or filter_func(context=context, response=response) if pass_filter or i == last: response["cost"] = cost + response["cost"] response["config_id"] = i response["pass_filter"] = pass_filter return response cost += response["cost"] - except (AuthenticationError, RateLimitError, Timeout, InvalidRequestError): + except (AuthenticationError, RateLimitError, Timeout, BadRequestError): logger.debug(f"failed with config {i}", exc_info=1) if i == last: raise @@ -793,11 +831,11 @@ def yes_or_no_filter(context, config, response): return cls._get_response( params, raise_on_ratelimit_or_timeout=raise_on_ratelimit_or_timeout, use_cache=False ) - seed = cls.seed - if "seed" in params: - cls.set_cache(params.pop("seed")) + cache_seed = cls.cache_seed + if "cache_seed" in params: + cls.set_cache(params.pop("cache_seed")) with diskcache.Cache(cls.cache_path) as cls._cache: - cls.set_cache(seed) + cls.set_cache(cache_seed) return cls._get_response(params, raise_on_ratelimit_or_timeout=raise_on_ratelimit_or_timeout) @classmethod @@ -966,7 +1004,10 @@ def eval_func(responses, **data): elif isinstance(agg_method, dict): for key in metric_keys: metric_agg_method = agg_method[key] - assert callable(metric_agg_method), "please provide a callable for each metric" + if not callable(metric_agg_method): + error_msg = "please provide a callable for each metric" + logger.error(error_msg) + raise AssertionError(error_msg) result_agg[key] = metric_agg_method([r[key] for r in result_list]) else: raise ValueError( @@ -994,7 +1035,7 @@ def cost(cls, response: dict): Returns: The cost in USD. 0 if the model is not supported. """ - model = response["model"] + model = response.get("model") if model not in cls.price1K: return 0 # raise ValueError(f"Unknown model: {model}") @@ -1045,6 +1086,44 @@ def logged_history(cls) -> Dict: """Return the book keeping dictionary.""" return cls._history_dict + @classmethod + def print_usage_summary(cls) -> Dict: + """Return the usage summary.""" + if cls._history_dict is None: + print("No usage summary available.", flush=True) + + token_count_summary = defaultdict(lambda: {"prompt_tokens": 0, "completion_tokens": 0, "total_tokens": 0}) + + if not cls._history_compact: + source = cls._history_dict.values() + total_cost = sum(msg_pair["response"]["cost"] for msg_pair in source) + else: + # source = cls._history_dict["token_count"] + # total_cost = sum(cls._history_dict['cost']) + total_cost = sum(sum(value_list["cost"]) for value_list in cls._history_dict.values()) + source = ( + token_data for value_list in cls._history_dict.values() for token_data in value_list["token_count"] + ) + + for entry in source: + if not cls._history_compact: + model = entry["response"]["model"] + token_data = entry["response"]["usage"] + else: + model = entry["model"] + token_data = entry + + token_count_summary[model]["prompt_tokens"] += token_data["prompt_tokens"] + token_count_summary[model]["completion_tokens"] += token_data["completion_tokens"] + token_count_summary[model]["total_tokens"] += token_data["total_tokens"] + + print(f"Total cost: {total_cost}", flush=True) + for model, counts in token_count_summary.items(): + print( + f"Token count summary for model {model}: prompt_tokens: {counts['prompt_tokens']}, completion_tokens: {counts['completion_tokens']}, total_tokens: {counts['total_tokens']}", + flush=True, + ) + @classmethod def start_logging( cls, history_dict: Optional[Dict] = None, compact: Optional[bool] = True, reset_counter: Optional[bool] = True @@ -1092,6 +1171,12 @@ def start_logging( while the compact history dict has a linear size. reset_counter (bool): whether to reset the counter of the number of API calls. """ + logger.warning( + "logging via Completion.start_logging is deprecated in pyautogen v0.2. " + "logging via OpenAIWrapper will be added back in a future release." + ) + if ERROR: + raise ERROR cls._history_dict = {} if history_dict is None else history_dict cls._history_compact = compact cls._count_create = 0 if reset_counter or cls._count_create is None else cls._count_create @@ -1103,7 +1188,7 @@ def stop_logging(cls): class ChatCompletion(Completion): - """A class for OpenAI API ChatCompletion.""" + """(openai<1) A class for OpenAI API ChatCompletion. Share the same API as Completion.""" default_search_space = Completion.default_search_space.copy() default_search_space["model"] = tune.choice(["gpt-3.5-turbo", "gpt-4"]) diff --git a/autogen/oai/openai_utils.py b/autogen/oai/openai_utils.py index 5d2e039190b..1c42c5c3503 100644 --- a/autogen/oai/openai_utils.py +++ b/autogen/oai/openai_utils.py @@ -1,9 +1,13 @@ import os import json +import tempfile +from pathlib import Path from typing import List, Optional, Dict, Set, Union import logging +from dotenv import find_dotenv, load_dotenv -NON_CACHE_KEY = ["api_key", "api_base", "api_type", "api_version"] + +NON_CACHE_KEY = ["api_key", "base_url", "api_type", "api_version"] def get_key(config): @@ -29,13 +33,13 @@ def get_key(config): def get_config_list( - api_keys: List, api_bases: Optional[List] = None, api_type: Optional[str] = None, api_version: Optional[str] = None + api_keys: List, base_urls: Optional[List] = None, api_type: Optional[str] = None, api_version: Optional[str] = None ) -> List[Dict]: """Get a list of configs for openai api calls. Args: api_keys (list): The api keys for openai api calls. - api_bases (list, optional): The api bases for openai api calls. + base_urls (list, optional): The api bases for openai api calls. api_type (str, optional): The api type for openai api calls. api_version (str, optional): The api version for openai api calls. """ @@ -44,8 +48,8 @@ def get_config_list( if not api_key.strip(): continue config = {"api_key": api_key} - if api_bases: - config["api_base"] = api_bases[i] + if base_urls: + config["base_url"] = base_urls[i] if api_type: config["api_type"] = api_type if api_version: @@ -79,8 +83,8 @@ def config_list_openai_aoai( os.environ["OPENAI_API_KEY"] = key_file.read().strip() except FileNotFoundError: logging.info( - "To use OpenAI API, please set OPENAI_API_KEY in os.environ " - "or create key_openai.txt in the specified path, or specify the api_key in config_list." + "OPENAI_API_KEY is not found in os.environ " + "and key_openai.txt is not found in the specified path. You can specify the api_key in the config_list." ) if "AZURE_OPENAI_API_KEY" not in os.environ and exclude != "aoai": try: @@ -88,8 +92,8 @@ def config_list_openai_aoai( os.environ["AZURE_OPENAI_API_KEY"] = key_file.read().strip() except FileNotFoundError: logging.info( - "To use Azure OpenAI API, please set AZURE_OPENAI_API_KEY in os.environ " - "or create key_aoai.txt in the specified path, or specify the api_key in config_list." + "AZURE_OPENAI_API_KEY is not found in os.environ " + "and key_aoai.txt is not found in the specified path. You can specify the api_key in the config_list." ) if "AZURE_OPENAI_API_BASE" not in os.environ and exclude != "aoai": try: @@ -97,17 +101,17 @@ def config_list_openai_aoai( os.environ["AZURE_OPENAI_API_BASE"] = key_file.read().strip() except FileNotFoundError: logging.info( - "To use Azure OpenAI API, please set AZURE_OPENAI_API_BASE in os.environ " - "or create base_aoai.txt in the specified path, or specify the api_base in config_list." + "AZURE_OPENAI_API_BASE is not found in os.environ " + "and base_aoai.txt is not found in the specified path. You can specify the base_url in the config_list." ) aoai_config = ( get_config_list( # Assuming Azure OpenAI api keys in os.environ["AZURE_OPENAI_API_KEY"], in separated lines api_keys=os.environ.get("AZURE_OPENAI_API_KEY", "").split("\n"), # Assuming Azure OpenAI api bases in os.environ["AZURE_OPENAI_API_BASE"], in separated lines - api_bases=os.environ.get("AZURE_OPENAI_API_BASE", "").split("\n"), + base_urls=os.environ.get("AZURE_OPENAI_API_BASE", "").split("\n"), api_type="azure", - api_version="2023-07-01-preview", # change if necessary + api_version="2023-08-01-preview", # change if necessary ) if exclude != "aoai" else [] @@ -117,7 +121,7 @@ def config_list_openai_aoai( # Assuming OpenAI API_KEY in os.environ["OPENAI_API_KEY"] api_keys=os.environ.get("OPENAI_API_KEY", "").split("\n"), # "api_type": "open_ai", - # "api_base": "https://api.openai.com/v1", + # "base_url": "https://api.openai.com/v1", ) if exclude != "openai" else [] @@ -233,9 +237,147 @@ def config_list_from_json( if json_str: config_list = json.loads(json_str) else: + config_list_path = os.path.join(file_location, env_or_file) try: - with open(os.path.join(file_location, env_or_file)) as json_file: + with open(config_list_path) as json_file: config_list = json.load(json_file) except FileNotFoundError: + logging.warning(f"The specified config_list file '{config_list_path}' does not exist.") return [] return filter_config(config_list, filter_dict) + + +def get_config( + api_key: str, base_url: Optional[str] = None, api_type: Optional[str] = None, api_version: Optional[str] = None +) -> Dict: + """ + Construct a configuration dictionary with the provided API configurations. + Appending the additional configurations to the config only if they're set + + example: + >> model_api_key_map={ + "gpt-4": "OPENAI_API_KEY", + "gpt-3.5-turbo": { + "api_key_env_var": "ANOTHER_API_KEY", + "api_type": "aoai", + "api_version": "v2", + "base_url": "https://api.someotherapi.com" + } + } + Args: + api_key (str): The API key used for authenticating API requests. + base_url (str, optional): The base URL of the API. Defaults to None. + api_type (str, optional): The type or kind of API. Defaults to None. + api_version (str, optional): The API version. Defaults to None. + + Returns: + Dict: A dictionary containing the API configurations. + """ + config = {"api_key": api_key} + if base_url: + config["base_url"] = base_url + if api_type: + config["api_type"] = api_type + if api_version: + config["api_version"] = api_version + return config + + +def config_list_from_dotenv( + dotenv_file_path: Optional[str] = None, model_api_key_map: Optional[dict] = None, filter_dict: Optional[dict] = None +) -> List[Dict[str, Union[str, Set[str]]]]: + """ + Load API configurations from a specified .env file or environment variables and construct a list of configurations. + + This function will: + - Load API keys from a provided .env file or from existing environment variables. + - Create a configuration dictionary for each model using the API keys and additional configurations. + - Filter and return the configurations based on provided filters. + + model_api_key_map will default to `{"gpt-4": "OPENAI_API_KEY", "gpt-3.5-turbo": "OPENAI_API_KEY"}` if none + + Args: + dotenv_file_path (str, optional): The path to the .env file. Defaults to None. + model_api_key_map (str/dict, optional): A dictionary mapping models to their API key configurations. + If a string is provided as configuration, it is considered as an environment + variable name storing the API key. + If a dict is provided, it should contain at least 'api_key_env_var' key, + and optionally other API configurations like 'base_url', 'api_type', and 'api_version'. + Defaults to a basic map with 'gpt-4' and 'gpt-3.5-turbo' mapped to 'OPENAI_API_KEY'. + filter_dict (dict, optional): A dictionary containing the models to be loaded. + Containing a 'model' key mapped to a set of model names to be loaded. + Defaults to None, which loads all found configurations. + + Returns: + List[Dict[str, Union[str, Set[str]]]]: A list of configuration dictionaries for each model. + + Raises: + FileNotFoundError: If the specified .env file does not exist. + TypeError: If an unsupported type of configuration is provided in model_api_key_map. + """ + if dotenv_file_path: + dotenv_path = Path(dotenv_file_path) + if dotenv_path.exists(): + load_dotenv(dotenv_path) + else: + logging.warning(f"The specified .env file {dotenv_path} does not exist.") + else: + dotenv_path = find_dotenv() + if not dotenv_path: + logging.warning("No .env file found. Loading configurations from environment variables.") + load_dotenv(dotenv_path) + + # Ensure the model_api_key_map is not None to prevent TypeErrors during key assignment. + model_api_key_map = model_api_key_map or {} + + # Ensure default models are always considered + default_models = ["gpt-4", "gpt-3.5-turbo"] + + for model in default_models: + # Only assign default API key if the model is not present in the map. + # If model is present but set to invalid/empty, do not overwrite. + if model not in model_api_key_map: + model_api_key_map[model] = "OPENAI_API_KEY" + + env_var = [] + # Loop over the models and create configuration dictionaries + for model, config in model_api_key_map.items(): + if isinstance(config, str): + api_key_env_var = config + config_dict = get_config(api_key=os.getenv(api_key_env_var)) + elif isinstance(config, dict): + api_key = os.getenv(config.get("api_key_env_var", "OPENAI_API_KEY")) + config_without_key_var = {k: v for k, v in config.items() if k != "api_key_env_var"} + config_dict = get_config(api_key=api_key, **config_without_key_var) + else: + logging.warning(f"Unsupported type {type(config)} for model {model} configuration") + + if not config_dict["api_key"] or config_dict["api_key"].strip() == "": + logging.warning( + f"API key not found or empty for model {model}. Please ensure path to .env file is correct." + ) + continue # Skip this configuration and continue with the next + + # Add model to the configuration and append to the list + config_dict["model"] = model + env_var.append(config_dict) + + fd, temp_name = tempfile.mkstemp() + try: + with os.fdopen(fd, "w+") as temp: + env_var_str = json.dumps(env_var) + temp.write(env_var_str) + temp.flush() + + # Assuming config_list_from_json is a valid function from your code + config_list = config_list_from_json(env_or_file=temp_name, filter_dict=filter_dict) + finally: + # The file is deleted after using its name (to prevent windows build from breaking) + os.remove(temp_name) + + if len(config_list) == 0: + logging.error("No configurations loaded.") + return [] + + logging.info(f"Models available: {[config['model'] for config in config_list]}") + return config_list diff --git a/autogen/retrieve_utils.py b/autogen/retrieve_utils.py index 5bb26461248..607608f5c03 100644 --- a/autogen/retrieve_utils.py +++ b/autogen/retrieve_utils.py @@ -1,73 +1,50 @@ -from typing import List, Union, Dict, Tuple +from typing import List, Union, Callable import os import requests from urllib.parse import urlparse import glob -import tiktoken import chromadb -from chromadb.api import API + +if chromadb.__version__ < "0.4.15": + from chromadb.api import API +else: + from chromadb.api import ClientAPI as API +from chromadb.api.types import QueryResult import chromadb.utils.embedding_functions as ef import logging +import pypdf +from autogen.token_count_utils import count_token -logger = logging.getLogger(__name__) -TEXT_FORMATS = ["txt", "json", "csv", "tsv", "md", "html", "htm", "rtf", "rst", "jsonl", "log", "xml", "yaml", "yml"] +try: + from unstructured.partition.auto import partition + HAS_UNSTRUCTURED = True +except ImportError: + HAS_UNSTRUCTURED = False -def num_tokens_from_text( - text: str, model: str = "gpt-3.5-turbo-0613", return_tokens_per_name_and_message: bool = False -) -> Union[int, Tuple[int, int, int]]: - """Return the number of tokens used by a text.""" - # https://github.com/openai/openai-cookbook/blob/main/examples/How_to_count_tokens_with_tiktoken.ipynb - try: - encoding = tiktoken.encoding_for_model(model) - except KeyError: - logger.debug("Warning: model not found. Using cl100k_base encoding.") - encoding = tiktoken.get_encoding("cl100k_base") - if model in { - "gpt-3.5-turbo-0613", - "gpt-3.5-turbo-16k-0613", - "gpt-4-0314", - "gpt-4-32k-0314", - "gpt-4-0613", - "gpt-4-32k-0613", - }: - tokens_per_message = 3 - tokens_per_name = 1 - elif model == "gpt-3.5-turbo-0301": - tokens_per_message = 4 # every message follows <|start|>{role/name}\n{content}<|end|>\n - tokens_per_name = -1 # if there's a name, the role is omitted - elif "gpt-3.5-turbo" in model or "gpt-35-turbo" in model: - print("Warning: gpt-3.5-turbo may update over time. Returning num tokens assuming gpt-3.5-turbo-0613.") - return num_tokens_from_text(text, model="gpt-3.5-turbo-0613") - elif "gpt-4" in model: - print("Warning: gpt-4 may update over time. Returning num tokens assuming gpt-4-0613.") - return num_tokens_from_text(text, model="gpt-4-0613") - else: - raise NotImplementedError( - f"""num_tokens_from_text() is not implemented for model {model}. See """ - f"""https://github.com/openai/openai-python/blob/main/chatml.md for information on how messages are """ - f"""converted to tokens.""" - ) - if return_tokens_per_name_and_message: - return len(encoding.encode(text)), tokens_per_message, tokens_per_name - else: - return len(encoding.encode(text)) - - -def num_tokens_from_messages(messages: dict, model: str = "gpt-3.5-turbo-0613"): - """Return the number of tokens used by a list of messages.""" - num_tokens = 0 - for message in messages: - for key, value in message.items(): - _num_tokens, tokens_per_message, tokens_per_name = num_tokens_from_text( - value, model=model, return_tokens_per_name_and_message=True - ) - num_tokens += _num_tokens - if key == "name": - num_tokens += tokens_per_name - num_tokens += tokens_per_message - num_tokens += 3 # every reply is primed with <|start|>assistant<|message|> - return num_tokens +logger = logging.getLogger(__name__) +TEXT_FORMATS = [ + "txt", + "json", + "csv", + "tsv", + "md", + "html", + "htm", + "rtf", + "rst", + "jsonl", + "log", + "xml", + "yaml", + "yml", + "pdf", +] +UNSTRUCTURED_FORMATS = ["docx", "doc", "odt", "pptx", "ppt", "xlsx", "eml", "msg", "epub"] +if HAS_UNSTRUCTURED: + TEXT_FORMATS += UNSTRUCTURED_FORMATS + TEXT_FORMATS = list(set(TEXT_FORMATS)) +VALID_CHUNK_MODES = frozenset({"one_line", "multi_lines"}) def split_text_to_chunks( @@ -78,12 +55,13 @@ def split_text_to_chunks( overlap: int = 10, ): """Split a long text into chunks of max_tokens.""" - assert chunk_mode in {"one_line", "multi_lines"} + if chunk_mode not in VALID_CHUNK_MODES: + raise AssertionError if chunk_mode == "one_line": must_break_at_empty_line = False chunks = [] lines = text.split("\n") - lines_tokens = [num_tokens_from_text(line) for line in lines] + lines_tokens = [count_token(line) for line in lines] sum_tokens = sum(lines_tokens) while sum_tokens > max_tokens: if chunk_mode == "one_line": @@ -106,7 +84,7 @@ def split_text_to_chunks( split_len = int(max_tokens / lines_tokens[0] * 0.9 * len(lines[0])) prev = lines[0][:split_len] lines[0] = lines[0][split_len:] - lines_tokens[0] = num_tokens_from_text(lines[0]) + lines_tokens[0] = count_token(lines[0]) else: logger.warning("Failed to split docs with must_break_at_empty_line being True, set to False.") must_break_at_empty_line = False @@ -119,25 +97,83 @@ def split_text_to_chunks( return chunks +def extract_text_from_pdf(file: str) -> str: + """Extract text from PDF files""" + text = "" + with open(file, "rb") as f: + reader = pypdf.PdfReader(f) + if reader.is_encrypted: # Check if the PDF is encrypted + try: + reader.decrypt("") + except pypdf.errors.FileNotDecryptedError as e: + logger.warning(f"Could not decrypt PDF {file}, {e}") + return text # Return empty text if PDF could not be decrypted + + for page_num in range(len(reader.pages)): + page = reader.pages[page_num] + text += page.extract_text() + + if not text.strip(): # Debugging line to check if text is empty + logger.warning(f"Could not decrypt PDF {file}") + + return text + + def split_files_to_chunks( - files: list, max_tokens: int = 4000, chunk_mode: str = "multi_lines", must_break_at_empty_line: bool = True + files: list, + max_tokens: int = 4000, + chunk_mode: str = "multi_lines", + must_break_at_empty_line: bool = True, + custom_text_split_function: Callable = None, ): """Split a list of files into chunks of max_tokens.""" + chunks = [] + for file in files: - with open(file, "r") as f: - text = f.read() - chunks += split_text_to_chunks(text, max_tokens, chunk_mode, must_break_at_empty_line) + _, file_extension = os.path.splitext(file) + file_extension = file_extension.lower() + + if HAS_UNSTRUCTURED and file_extension[1:] in UNSTRUCTURED_FORMATS: + text = partition(file) + text = "\n".join([t.text for t in text]) if len(text) > 0 else "" + elif file_extension == ".pdf": + text = extract_text_from_pdf(file) + else: # For non-PDF text-based files + with open(file, "r", encoding="utf-8", errors="ignore") as f: + text = f.read() + + if not text.strip(): # Debugging line to check if text is empty after reading + logger.warning(f"No text available in file: {file}") + continue # Skip to the next file if no text is available + + if custom_text_split_function is not None: + chunks += custom_text_split_function(text) + else: + chunks += split_text_to_chunks(text, max_tokens, chunk_mode, must_break_at_empty_line) + return chunks -def get_files_from_dir(dir_path: str, types: list = TEXT_FORMATS, recursive: bool = True): +def get_files_from_dir(dir_path: Union[str, List[str]], types: list = TEXT_FORMATS, recursive: bool = True): """Return a list of all the files in a given directory.""" if len(types) == 0: raise ValueError("types cannot be empty.") types = [t[1:].lower() if t.startswith(".") else t.lower() for t in set(types)] types += [t.upper() for t in types] + files = [] + # If the path is a list of files or urls, process and return them + if isinstance(dir_path, list): + for item in dir_path: + if os.path.isfile(item): + files.append(item) + elif is_url(item): + files.append(get_file_from_url(item)) + else: + logger.warning(f"File {item} does not exist. Skipping.") + return files + # If the path is a file, return it if os.path.isfile(dir_path): return [dir_path] @@ -146,7 +182,6 @@ def get_files_from_dir(dir_path: str, types: list = TEXT_FORMATS, recursive: boo if is_url(dir_path): return [get_file_from_url(dir_path)] - files = [] if os.path.exists(dir_path): for type in types: if recursive: @@ -162,7 +197,10 @@ def get_files_from_dir(dir_path: str, types: list = TEXT_FORMATS, recursive: boo def get_file_from_url(url: str, save_path: str = None): """Download a file from a URL.""" if save_path is None: + os.makedirs("/tmp/chromadb", exist_ok=True) save_path = os.path.join("/tmp/chromadb", os.path.basename(url)) + else: + os.makedirs(os.path.dirname(save_path), exist_ok=True) with requests.get(url, stream=True) as r: r.raise_for_status() with open(save_path, "wb") as f: @@ -190,12 +228,40 @@ def create_vector_db_from_dir( chunk_mode: str = "multi_lines", must_break_at_empty_line: bool = True, embedding_model: str = "all-MiniLM-L6-v2", -): - """Create a vector db from all the files in a given directory.""" + embedding_function: Callable = None, + custom_text_split_function: Callable = None, +) -> API: + """Create a vector db from all the files in a given directory, the directory can also be a single file or a url to + a single file. We support chromadb compatible APIs to create the vector db, this function is not required if + you prepared your own vector db. + + Args: + dir_path (str): the path to the directory, file or url. + max_tokens (Optional, int): the maximum number of tokens per chunk. Default is 4000. + client (Optional, API): the chromadb client. Default is None. + db_path (Optional, str): the path to the chromadb. Default is "/tmp/chromadb.db". + collection_name (Optional, str): the name of the collection. Default is "all-my-documents". + get_or_create (Optional, bool): Whether to get or create the collection. Default is False. If True, the collection + will be returned if it already exists. Will raise ValueError if the collection already exists and get_or_create is False. + chunk_mode (Optional, str): the chunk mode. Default is "multi_lines". + must_break_at_empty_line (Optional, bool): Whether to break at empty line. Default is True. + embedding_model (Optional, str): the embedding model to use. Default is "all-MiniLM-L6-v2". Will be ignored if + embedding_function is not None. + embedding_function (Optional, Callable): the embedding function to use. Default is None, SentenceTransformer with + the given `embedding_model` will be used. If you want to use OpenAI, Cohere, HuggingFace or other embedding + functions, you can pass it here, follow the examples in `https://docs.trychroma.com/embeddings`. + + Returns: + API: the chromadb client. + """ if client is None: client = chromadb.PersistentClient(path=db_path) try: - embedding_function = ef.SentenceTransformerEmbeddingFunction(embedding_model) + embedding_function = ( + ef.SentenceTransformerEmbeddingFunction(embedding_model) + if embedding_function is None + else embedding_function + ) collection = client.create_collection( collection_name, get_or_create=get_or_create, @@ -206,22 +272,25 @@ def create_vector_db_from_dir( metadata={"hnsw:space": "ip", "hnsw:construction_ef": 30, "hnsw:M": 32}, # ip, l2, cosine ) - chunks = split_files_to_chunks(get_files_from_dir(dir_path), max_tokens, chunk_mode, must_break_at_empty_line) - print(f"Found {len(chunks)} chunks.") - # upsert in batch of 40000 - for i in range(0, len(chunks), 40000): + if custom_text_split_function is not None: + chunks = split_files_to_chunks( + get_files_from_dir(dir_path), custom_text_split_function=custom_text_split_function + ) + else: + chunks = split_files_to_chunks( + get_files_from_dir(dir_path), max_tokens, chunk_mode, must_break_at_empty_line + ) + logger.info(f"Found {len(chunks)} chunks.") + # Upsert in batch of 40000 or less if the total number of chunks is less than 40000 + for i in range(0, len(chunks), min(40000, len(chunks))): + end_idx = i + min(40000, len(chunks) - i) collection.upsert( - documents=chunks[ - i : i + 40000 - ], # we handle tokenization, embedding, and indexing automatically. You can skip that and add your own embeddings as well - ids=[f"doc_{i}" for i in range(i, i + 40000)], # unique for each doc + documents=chunks[i:end_idx], + ids=[f"doc_{j}" for j in range(i, end_idx)], # unique for each doc ) - collection.upsert( - documents=chunks[i : len(chunks)], - ids=[f"doc_{i}" for i in range(i, len(chunks))], # unique for each doc - ) except ValueError as e: logger.warning(f"{e}") + return client def query_vector_db( @@ -232,14 +301,41 @@ def query_vector_db( collection_name: str = "all-my-documents", search_string: str = "", embedding_model: str = "all-MiniLM-L6-v2", -) -> Dict[str, List[str]]: - """Query a vector db.""" + embedding_function: Callable = None, +) -> QueryResult: + """Query a vector db. We support chromadb compatible APIs, it's not required if you prepared your own vector db + and query function. + + Args: + query_texts (List[str]): the query texts. + n_results (Optional, int): the number of results to return. Default is 10. + client (Optional, API): the chromadb compatible client. Default is None, a chromadb client will be used. + db_path (Optional, str): the path to the vector db. Default is "/tmp/chromadb.db". + collection_name (Optional, str): the name of the collection. Default is "all-my-documents". + search_string (Optional, str): the search string. Default is "". + embedding_model (Optional, str): the embedding model to use. Default is "all-MiniLM-L6-v2". Will be ignored if + embedding_function is not None. + embedding_function (Optional, Callable): the embedding function to use. Default is None, SentenceTransformer with + the given `embedding_model` will be used. If you want to use OpenAI, Cohere, HuggingFace or other embedding + functions, you can pass it here, follow the examples in `https://docs.trychroma.com/embeddings`. + + Returns: + QueryResult: the query result. The format is: + class QueryResult(TypedDict): + ids: List[IDs] + embeddings: Optional[List[List[Embedding]]] + documents: Optional[List[List[Document]]] + metadatas: Optional[List[List[Metadata]]] + distances: Optional[List[List[float]]] + """ if client is None: client = chromadb.PersistentClient(path=db_path) # the collection's embedding function is always the default one, but we want to use the one we used to create the # collection. So we compute the embeddings ourselves and pass it to the query function. collection = client.get_collection(collection_name) - embedding_function = ef.SentenceTransformerEmbeddingFunction(embedding_model) + embedding_function = ( + ef.SentenceTransformerEmbeddingFunction(embedding_model) if embedding_function is None else embedding_function + ) query_embeddings = embedding_function(query_texts) # Query/search n most similar results. You can also .get by id results = collection.query( diff --git a/autogen/token_count_utils.py b/autogen/token_count_utils.py new file mode 100644 index 00000000000..9e254932faf --- /dev/null +++ b/autogen/token_count_utils.py @@ -0,0 +1,182 @@ +from typing import List, Union, Dict +import logging +import json +import tiktoken + + +logger = logging.getLogger(__name__) + + +def get_max_token_limit(model="gpt-3.5-turbo-0613"): + max_token_limit = { + "gpt-3.5-turbo": 4096, + "gpt-3.5-turbo-0301": 4096, + "gpt-3.5-turbo-0613": 4096, + "gpt-3.5-turbo-instruct": 4096, + "gpt-3.5-turbo-16k": 16384, + "gpt-35-turbo": 4096, + "gpt-35-turbo-16k": 16384, + "gpt-35-turbo-instruct": 4096, + "gpt-4": 8192, + "gpt-4-32k": 32768, + "gpt-4-32k-0314": 32768, # deprecate in Sep + "gpt-4-0314": 8192, # deprecate in Sep + "gpt-4-0613": 8192, + "gpt-4-32k-0613": 32768, + } + return max_token_limit[model] + + +def percentile_used(input, model="gpt-3.5-turbo-0613"): + return count_token(input) / get_max_token_limit(model) + + +def token_left(input: Union[str, List, Dict], model="gpt-3.5-turbo-0613") -> int: + """Count number of tokens left for an OpenAI model. + + Args: + input: (str, list, dict): Input to the model. + model: (str): Model name. + + Returns: + int: Number of tokens left that the model can use for completion. + """ + return get_max_token_limit(model) - count_token(input, model=model) + + +def count_token(input: Union[str, List, Dict], model: str = "gpt-3.5-turbo-0613") -> int: + """Count number of tokens used by an OpenAI model. + Args: + input: (str, list, dict): Input to the model. + model: (str): Model name. + + Returns: + int: Number of tokens from the input. + """ + if isinstance(input, str): + return _num_token_from_text(input, model=model) + elif isinstance(input, list) or isinstance(input, dict): + return _num_token_from_messages(input, model=model) + else: + raise ValueError("input must be str, list or dict") + + +def _num_token_from_text(text: str, model: str = "gpt-3.5-turbo-0613"): + """Return the number of tokens used by a string.""" + try: + encoding = tiktoken.encoding_for_model(model) + except KeyError: + logger.warning(f"Model {model} not found. Using cl100k_base encoding.") + encoding = tiktoken.get_encoding("cl100k_base") + return len(encoding.encode(text)) + + +def _num_token_from_messages(messages: Union[List, Dict], model="gpt-3.5-turbo-0613"): + """Return the number of tokens used by a list of messages. + + retrieved from https://github.com/openai/openai-cookbook/blob/main/examples/How_to_count_tokens_with_tiktoken.ipynb/ + """ + if isinstance(messages, dict): + messages = [messages] + + try: + encoding = tiktoken.encoding_for_model(model) + except KeyError: + print("Warning: model not found. Using cl100k_base encoding.") + encoding = tiktoken.get_encoding("cl100k_base") + if model in { + "gpt-3.5-turbo-0613", + "gpt-3.5-turbo-16k-0613", + "gpt-4-0314", + "gpt-4-32k-0314", + "gpt-4-0613", + "gpt-4-32k-0613", + }: + tokens_per_message = 3 + tokens_per_name = 1 + elif model == "gpt-3.5-turbo-0301": + tokens_per_message = 4 # every message follows <|start|>{role/name}\n{content}<|end|>\n + tokens_per_name = -1 # if there's a name, the role is omitted + elif "gpt-3.5-turbo" in model: + logger.info("gpt-3.5-turbo may update over time. Returning num tokens assuming gpt-3.5-turbo-0613.") + return _num_token_from_messages(messages, model="gpt-3.5-turbo-0613") + elif "gpt-4" in model: + logger.info("gpt-4 may update over time. Returning num tokens assuming gpt-4-0613.") + return _num_token_from_messages(messages, model="gpt-4-0613") + else: + raise NotImplementedError( + f"""_num_token_from_messages() is not implemented for model {model}. See https://github.com/openai/openai-python/blob/main/chatml.md for information on how messages are converted to tokens.""" + ) + num_tokens = 0 + for message in messages: + num_tokens += tokens_per_message + for key, value in message.items(): + if value is None: + continue + + # function calls + if not isinstance(value, str): + try: + value = json.dumps(value) + except TypeError: + logger.warning( + f"Value {value} is not a string and cannot be converted to json. It is a type: {type(value)} Skipping." + ) + continue + + num_tokens += len(encoding.encode(value)) + if key == "name": + num_tokens += tokens_per_name + num_tokens += 3 # every reply is primed with <|start|>assistant<|message|> + return num_tokens + + +def num_tokens_from_functions(functions, model="gpt-3.5-turbo-0613") -> int: + """Return the number of tokens used by a list of functions. + + Args: + functions: (list): List of function descriptions that will be passed in model. + model: (str): Model name. + + Returns: + int: Number of tokens from the function descriptions. + """ + try: + encoding = tiktoken.encoding_for_model(model) + except KeyError: + print("Warning: model not found. Using cl100k_base encoding.") + encoding = tiktoken.get_encoding("cl100k_base") + + num_tokens = 0 + for function in functions: + function_tokens = len(encoding.encode(function["name"])) + function_tokens += len(encoding.encode(function["description"])) + function_tokens -= 2 + if "parameters" in function: + parameters = function["parameters"] + if "properties" in parameters: + for propertiesKey in parameters["properties"]: + function_tokens += len(encoding.encode(propertiesKey)) + v = parameters["properties"][propertiesKey] + for field in v: + if field == "type": + function_tokens += 2 + function_tokens += len(encoding.encode(v["type"])) + elif field == "description": + function_tokens += 2 + function_tokens += len(encoding.encode(v["description"])) + elif field == "enum": + function_tokens -= 3 + for o in v["enum"]: + function_tokens += 3 + function_tokens += len(encoding.encode(o)) + else: + print(f"Warning: not supported field {field}") + function_tokens += 11 + if len(parameters["properties"]) == 0: + function_tokens -= 2 + + num_tokens += function_tokens + + num_tokens += 12 + return num_tokens diff --git a/autogen/version.py b/autogen/version.py index ae7362549b3..16bf2ffe042 100644 --- a/autogen/version.py +++ b/autogen/version.py @@ -1 +1 @@ -__version__ = "0.1.3" +__version__ = "0.2.0b4" diff --git a/notebook/agentchat_MathChat.ipynb b/notebook/agentchat_MathChat.ipynb index 226355c07d7..4159784bccf 100644 --- a/notebook/agentchat_MathChat.ipynb +++ b/notebook/agentchat_MathChat.ipynb @@ -15,9 +15,9 @@ "source": [ "# Auto Generated Agent Chat: Using MathChat to Solve Math Problems\n", "\n", - "AutoGen offers conversable agents powered by LLM, tool or human, which can be used to perform tasks collectively via automated chat. This framwork allows tool use and human participance through multi-agent conversation. Please find documentation about this feature [here](https://microsoft.github.io/autogen/docs/Use-Cases/agent_chat).\n", + "AutoGen offers conversable agents powered by LLM, tool or human, which can be used to perform tasks collectively via automated chat. This framework allows tool use and human participation through multi-agent conversation. Please find documentation about this feature [here](https://microsoft.github.io/autogen/docs/Use-Cases/agent_chat).\n", "\n", - "MathChat is an experimental convesational framework for math problem solving. In this notebook, we demonstrate how to use MathChat to solve math problems. MathChat uses the `AssistantAgent` and `MathUserProxyAgent`, which is similar to the usage of `AssistantAgent` and `UserProxyAgent` in other notebooks (e.g., [Automated Task Solving with Code Generation, Execution & Debugging](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_auto_feedback_from_code_execution.ipynb)). Essentially, `MathUserProxyAgent` implements a different auto reply mechanism corresponding to the MathChat prompts. You can find more details in the paper [An Empirical Study on Challenging Math Problem Solving with GPT-4](https://arxiv.org/abs/2306.01337) or the [blogpost](https://microsoft.github.io/autogen/blog/2023/06/28/MathChat).\n", + "MathChat is an experimental conversational framework for math problem solving. In this notebook, we demonstrate how to use MathChat to solve math problems. MathChat uses the `AssistantAgent` and `MathUserProxyAgent`, which is similar to the usage of `AssistantAgent` and `UserProxyAgent` in other notebooks (e.g., [Automated Task Solving with Code Generation, Execution & Debugging](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_auto_feedback_from_code_execution.ipynb)). Essentially, `MathUserProxyAgent` implements a different auto reply mechanism corresponding to the MathChat prompts. You can find more details in the paper [An Empirical Study on Challenging Math Problem Solving with GPT-4](https://arxiv.org/abs/2306.01337) or the [blogpost](https://microsoft.github.io/autogen/blog/2023/06/28/MathChat).\n", "\n", "## Requirements\n", "\n", @@ -91,14 +91,14 @@ " {\n", " 'model': 'gpt-4',\n", " 'api_key': '<your Azure OpenAI API key here>',\n", - " 'api_base': '<your Azure OpenAI API base here>',\n", + " 'base_url': '<your Azure OpenAI API base here>',\n", " 'api_type': 'azure',\n", " 'api_version': '2023-06-01-preview',\n", " },\n", " {\n", " 'model': 'gpt-3.5-turbo',\n", " 'api_key': '<your Azure OpenAI API key here>',\n", - " 'api_base': '<your Azure OpenAI API base here>',\n", + " 'base_url': '<your Azure OpenAI API base here>',\n", " 'api_type': 'azure',\n", " 'api_version': '2023-06-01-preview',\n", " },\n", @@ -128,14 +128,12 @@ "source": [ "from autogen.agentchat.contrib.math_user_proxy_agent import MathUserProxyAgent\n", "\n", - "autogen.ChatCompletion.start_logging()\n", - "\n", "# 1. create an AssistantAgent instance named \"assistant\"\n", "assistant = autogen.AssistantAgent(\n", " name=\"assistant\", \n", " system_message=\"You are a helpful assistant.\",\n", " llm_config={\n", - " \"request_timeout\": 600,\n", + " \"timeout\": 600,\n", " \"seed\": 42,\n", " \"config_list\": config_list,\n", " }\n", @@ -235,12 +233,12 @@ "------------------------------------\n", "### Using other prompts\n", "\n", - "MathChat allows different prompts that instruct assistant to solve the problem.\n", + "MathChat allows different prompts that instruct the assistant to solve the problem.\n", "\n", "Check out `MathUserProxyAgent.generate_init_message(problem, prompt_type='default', customized_prompt=None)`:\n", "- You may choose from `['default', 'python', 'two_tools']` for parameter `prompt_type`. We include two more prompts in the paper: \n", " 1. `'python'` is a simplified prompt from the default prompt that uses Python only. \n", - " 2. `'two_tools'` further allows the selection of Python or Wolfram Alpha based on this simplified `python` prompt. Note that this option requries a Wolfram Alpha API key and put it in `wolfram.txt`.\n", + " 2. `'two_tools'` further allows the selection of Python or Wolfram Alpha based on this simplified `python` prompt. Note that this option requires a Wolfram Alpha API key and put it in `wolfram.txt`.\n", "\n", "- You can also input your customized prompt if needed: `mathproxyagent.generate_init_message(problem, customized_prompt=\"Your customized prompt\")`. Since this mathproxyagent detects '\\boxed{}' as termination, you need to have a similar termination sentence in the prompt: \"If you get the answer, put the answer in \\\\boxed{}.\". If the customized is provided, the `prompt_type` will be ignored.\n", "\n", @@ -292,7 +290,7 @@ "metadata": {}, "outputs": [], "source": [ - "# The wolfram alpha appid is required for this example (the assistant may choose to query Wolfram Alpha).\n", + "# The wolfram alpha app id is required for this example (the assistant may choose to query Wolfram Alpha).\n", "import os\n", "if \"WOLFRAM_ALPHA_APPID\" not in os.environ:\n", " os.environ[\"WOLFRAM_ALPHA_APPID\"] = open(\"wolfram.txt\").read().strip()\n", diff --git a/notebook/agentchat_RetrieveChat.ipynb b/notebook/agentchat_RetrieveChat.ipynb index 035dd01d869..4aabc52b01e 100644 --- a/notebook/agentchat_RetrieveChat.ipynb +++ b/notebook/agentchat_RetrieveChat.ipynb @@ -16,10 +16,10 @@ "<a id=\"toc\"></a>\n", "# Auto Generated Agent Chat: Using RetrieveChat for Retrieve Augmented Code Generation and Question Answering\n", "\n", - "AutoGen offers conversable agents powered by LLM, tool or human, which can be used to perform tasks collectively via automated chat. This framwork allows tool use and human participance through multi-agent conversation.\n", + "AutoGen offers conversable agents powered by LLM, tool or human, which can be used to perform tasks collectively via automated chat. This framework allows tool use and human participation through multi-agent conversation.\n", "Please find documentation about this feature [here](https://microsoft.github.io/autogen/docs/Use-Cases/agent_chat).\n", "\n", - "RetrieveChat is a convesational system for retrieve augmented code generation and question answering. In this notebook, we demonstrate how to utilize RetrieveChat to generate code and answer questions based on customized documentations that are not present in the LLM's training dataset. RetrieveChat uses the `RetrieveAssistantAgent` and `RetrieveUserProxyAgent`, which is similar to the usage of `AssistantAgent` and `UserProxyAgent` in other notebooks (e.g., [Automated Task Solving with Code Generation, Execution & Debugging](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_auto_feedback_from_code_execution.ipynb)). Essentially, `RetrieveAssistantAgent` and `RetrieveUserProxyAgent` implement a different auto-reply mechanism corresponding to the RetrieveChat prompts.\n", + "RetrieveChat is a conversational system for retrieve augmented code generation and question answering. In this notebook, we demonstrate how to utilize RetrieveChat to generate code and answer questions based on customized documentations that are not present in the LLM's training dataset. RetrieveChat uses the `RetrieveAssistantAgent` and `RetrieveUserProxyAgent`, which is similar to the usage of `AssistantAgent` and `UserProxyAgent` in other notebooks (e.g., [Automated Task Solving with Code Generation, Execution & Debugging](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_auto_feedback_from_code_execution.ipynb)). Essentially, `RetrieveAssistantAgent` and `RetrieveUserProxyAgent` implement a different auto-reply mechanism corresponding to the RetrieveChat prompts.\n", "\n", "## Table of Contents\n", "We'll demonstrates six examples of using RetrieveChat for code generation and question answering:\n", @@ -117,14 +117,14 @@ " {\n", " 'model': 'gpt-4',\n", " 'api_key': '<your Azure OpenAI API key here>',\n", - " 'api_base': '<your Azure OpenAI API base here>',\n", + " 'base_url': '<your Azure OpenAI API base here>',\n", " 'api_type': 'azure',\n", " 'api_version': '2023-06-01-preview',\n", " },\n", " {\n", " 'model': 'gpt-3.5-turbo',\n", " 'api_key': '<your Azure OpenAI API key here>',\n", - " 'api_base': '<your Azure OpenAI API base here>',\n", + " 'base_url': '<your Azure OpenAI API base here>',\n", " 'api_type': 'azure',\n", " 'api_version': '2023-06-01-preview',\n", " },\n", @@ -148,7 +148,30 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Accepted file formats for `docs_path`:\n", + "['txt', 'json', 'csv', 'tsv', 'md', 'html', 'htm', 'rtf', 'rst', 'jsonl', 'log', 'xml', 'yaml', 'yml', 'pdf']\n" + ] + } + ], + "source": [ + "# Accepted file formats for that can be stored in \n", + "# a vector database instance\n", + "from autogen.retrieve_utils import TEXT_FORMATS\n", + "\n", + "print(\"Accepted file formats for `docs_path`:\")\n", + "print(TEXT_FORMATS)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, "metadata": {}, "outputs": [], "source": [ @@ -156,23 +179,26 @@ "from autogen.agentchat.contrib.retrieve_user_proxy_agent import RetrieveUserProxyAgent\n", "import chromadb\n", "\n", - "autogen.ChatCompletion.start_logging()\n", - "\n", "# 1. create an RetrieveAssistantAgent instance named \"assistant\"\n", "assistant = RetrieveAssistantAgent(\n", " name=\"assistant\", \n", " system_message=\"You are a helpful assistant.\",\n", " llm_config={\n", - " \"request_timeout\": 600,\n", - " \"seed\": 42,\n", + " \"timeout\": 600,\n", + " \"cache_seed\": 42,\n", " \"config_list\": config_list,\n", " },\n", ")\n", "\n", "# 2. create the RetrieveUserProxyAgent instance named \"ragproxyagent\"\n", "# By default, the human_input_mode is \"ALWAYS\", which means the agent will ask for human input at every step. We set it to \"NEVER\" here.\n", - "# `docs_path` is the path to the docs directory. By default, it is set to \"./docs\". Here we generated the documentations from FLAML's docstrings.\n", - "# Navigate to the website folder and run `pydoc-markdown` and it will generate folder `reference` under `website/docs`.\n", + "# `docs_path` is the path to the docs directory. It can also be the path to a single file, or the url to a single file. By default, \n", + "# it is set to None, which works only if the collection is already created.\n", + "# \n", + "# Here we generated the documentations from FLAML's docstrings. Not needed if you just want to try this notebook but not to reproduce the\n", + "# outputs. Clone the FLAML (https://github.com/microsoft/FLAML) repo and navigate to its website folder. Pip install and run `pydoc-markdown`\n", + "# and it will generate folder `reference` under `website/docs`.\n", + "#\n", "# `task` indicates the kind of task we're working on. In this example, it's a `code` task.\n", "# `chunk_token_size` is the chunk token size for the retrieve chat. By default, it is set to `max_tokens * 0.6`, here we set it to 2000.\n", "ragproxyagent = RetrieveUserProxyAgent(\n", @@ -181,11 +207,12 @@ " max_consecutive_auto_reply=10,\n", " retrieve_config={\n", " \"task\": \"code\",\n", - " \"docs_path\": \"../website/docs/reference\",\n", + " \"docs_path\": \"~/code/FLAML/website/docs/reference\", # change this to your own path, such as https://raw.githubusercontent.com/microsoft/autogen/main/README.md\n", " \"chunk_token_size\": 2000,\n", " \"model\": config_list[0][\"model\"],\n", " \"client\": chromadb.PersistentClient(path=\"/tmp/chromadb\"),\n", " \"embedding_model\": \"all-mpnet-base-v2\",\n", + " \"get_or_create\": True, # set to False if you don't want to reuse an existing collection, but you'll need to remove the collection manually\n", " },\n", ")" ] @@ -4145,7 +4172,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.12" + "version": "3.10.13" } }, "nbformat": 4, diff --git a/notebook/agentchat_auto_feedback_from_code_execution.ipynb b/notebook/agentchat_auto_feedback_from_code_execution.ipynb index 595790b992b..1f29c6d0aa5 100644 --- a/notebook/agentchat_auto_feedback_from_code_execution.ipynb +++ b/notebook/agentchat_auto_feedback_from_code_execution.ipynb @@ -45,7 +45,7 @@ }, "outputs": [], "source": [ - "# %pip install pyautogen~=0.1.0" + "# %pip install pyautogen~=0.2.0b4" ] }, { @@ -60,18 +60,9 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 2, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/usr/local/anaconda3/envs/autogen/lib/python3.11/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n", - " from .autonotebook import tqdm as notebook_tqdm\n" - ] - } - ], + "outputs": [], "source": [ "import autogen\n", "\n", @@ -100,23 +91,21 @@ " {\n", " 'model': 'gpt-4',\n", " 'api_key': '<your Azure OpenAI API key here>',\n", - " 'api_base': '<your Azure OpenAI API base here>',\n", + " 'base_url': '<your Azure OpenAI API base here>',\n", " 'api_type': 'azure',\n", " 'api_version': '2023-06-01-preview',\n", " },\n", " {\n", " 'model': 'gpt-4-32k',\n", " 'api_key': '<your Azure OpenAI API key here>',\n", - " 'api_base': '<your Azure OpenAI API base here>',\n", + " 'base_url': '<your Azure OpenAI API base here>',\n", " 'api_type': 'azure',\n", " 'api_version': '2023-06-01-preview',\n", " },\n", "]\n", "```\n", "\n", - "If you open this notebook in colab, you can upload your files by clicking the file icon on the left panel and then choose \"upload file\" icon.\n", - "\n", - "You can set the value of config_list in other ways you prefer, e.g., loading from a YAML file." + "You can set the value of config_list in any way you prefer. Please refer to this [notebook](https://github.com/microsoft/autogen/blob/main/notebook/oai_openai_utils.ipynb) for full code examples of the different methods." ] }, { @@ -131,7 +120,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 3, "metadata": {}, "outputs": [ { @@ -145,113 +134,190 @@ "--------------------------------------------------------------------------------\n", "\u001b[33massistant\u001b[0m (to user_proxy):\n", "\n", - "First, let's get the current date. We can do this using Python's built-in datetime module. Here is the Python code to get the current date:\n", + "First, let's find out today's date. Then, we will fetch the stock prices for META (Facebook) and TESLA and calculate the year-to-date gain for both.\n", "\n", + "Step 1: Get today's date\n", "```python\n", - "import datetime\n", - "\n", - "# Get the current date\n", - "current_date = datetime.date.today()\n", - "\n", - "print(\"Today's date is:\", current_date)\n", + "from datetime import date\n", + "today = date.today()\n", + "print(\"Today's date:\", today)\n", "```\n", "\n", - "Next, we need to get the year-to-date (YTD) gain for META (Facebook) and TESLA. We can do this by using a financial data API such as Yahoo Finance. We will need to get the stock price at the start of the year and the current stock price, then calculate the percentage change.\n", + "Step 2: Fetch stock prices for META and TESLA\n", + "We will use the `yfinance` library to fetch the stock prices. If you don't have it installed, please install it using the following command:\n", "\n", - "However, as an AI, I'm unable to execute real-time web requests or access financial data APIs. I recommend using the `yfinance` library in Python to download the stock data. Here is an example of how you can do it:\n", + "```sh\n", + "pip install yfinance\n", + "```\n", "\n", + "Step 3: Calculate the year-to-date gain for META and TESLA\n", "```python\n", "import yfinance as yf\n", + "from datetime import datetime\n", "\n", - "# Download stock data\n", - "meta_data = yf.download('META', start='2022-01-01', end=current_date)\n", - "tesla_data = yf.download('TSLA', start='2022-01-01', end=current_date)\n", - "\n", - "# Calculate YTD gain\n", - "meta_ytd_gain = ((meta_data['Close'][-1] - meta_data['Close'][0]) / meta_data['Close'][0]) * 100\n", - "tesla_ytd_gain = ((tesla_data['Close'][-1] - tesla_data['Close'][0]) / tesla_data['Close'][0]) * 100\n", - "\n", - "print(\"META YTD gain:\", meta_ytd_gain)\n", - "print(\"TESLA YTD gain:\", tesla_ytd_gain)\n", - "```\n", + "def get_ytd_gain(ticker):\n", + " stock = yf.Ticker(ticker)\n", + " start_date = datetime(today.year, 1, 1)\n", + " end_date = today\n", + " historical_data = stock.history(start=start_date, end=end_date)\n", + " start_price = historical_data.iloc[0]['Close']\n", + " end_price = historical_data.iloc[-1]['Close']\n", + " ytd_gain = (end_price - start_price) / start_price * 100\n", + " return ytd_gain\n", "\n", - "Please note that you need to install the `yfinance` library before running the above code. You can install it using pip:\n", + "meta_ytd_gain = get_ytd_gain(\"FB\")\n", + "tesla_ytd_gain = get_ytd_gain(\"TSLA\")\n", "\n", - "```shell\n", - "pip install yfinance\n", + "print(f\"Year-to-date gain for META (Facebook): {meta_ytd_gain:.2f}%\")\n", + "print(f\"Year-to-date gain for TESLA: {tesla_ytd_gain:.2f}%\")\n", "```\n", "\n", - "Please replace `current_date` in the second Python code block with the actual date you got from the first Python code block.\n", + "Please execute the code blocks in the order mentioned above.\n", "\n", "--------------------------------------------------------------------------------\n", "\u001b[31m\n", ">>>>>>>> EXECUTING CODE BLOCK 0 (inferred language is python)...\u001b[0m\n", "\u001b[31m\n", - ">>>>>>>> EXECUTING CODE BLOCK 1 (inferred language is python)...\u001b[0m\n", + ">>>>>>>> EXECUTING CODE BLOCK 1 (inferred language is sh)...\u001b[0m\n", + "\u001b[31m\n", + ">>>>>>>> EXECUTING CODE BLOCK 2 (inferred language is python)...\u001b[0m\n", "\u001b[33muser_proxy\u001b[0m (to assistant):\n", "\n", "exitcode: 1 (execution failed)\n", "Code output: \n", - "Today's date is: 2023-09-29\n", + "Today's date: 2023-08-29\n", + "\n", + "Defaulting to user installation because normal site-packages is not writeable\n", + "Requirement already satisfied: yfinance in /home/vscode/.local/lib/python3.9/site-packages (0.2.26)\n", + "Requirement already satisfied: numpy>=1.16.5 in /home/vscode/.local/lib/python3.9/site-packages (from yfinance) (1.25.1)\n", + "Requirement already satisfied: requests>=2.31 in /usr/local/lib/python3.9/site-packages (from yfinance) (2.31.0)\n", + "Requirement already satisfied: lxml>=4.9.1 in /home/vscode/.local/lib/python3.9/site-packages (from yfinance) (4.9.3)\n", + "Requirement already satisfied: pytz>=2022.5 in /home/vscode/.local/lib/python3.9/site-packages (from yfinance) (2023.3)\n", + "Requirement already satisfied: frozendict>=2.3.4 in /home/vscode/.local/lib/python3.9/site-packages (from yfinance) (2.3.8)\n", + "Requirement already satisfied: multitasking>=0.0.7 in /home/vscode/.local/lib/python3.9/site-packages (from yfinance) (0.0.11)\n", + "Requirement already satisfied: beautifulsoup4>=4.11.1 in /home/vscode/.local/lib/python3.9/site-packages (from yfinance) (4.12.2)\n", + "Requirement already satisfied: pandas>=1.3.0 in /home/vscode/.local/lib/python3.9/site-packages (from yfinance) (1.3.3)\n", + "Requirement already satisfied: html5lib>=1.1 in /home/vscode/.local/lib/python3.9/site-packages (from yfinance) (1.1)\n", + "Requirement already satisfied: appdirs>=1.4.4 in /home/vscode/.local/lib/python3.9/site-packages (from yfinance) (1.4.4)\n", + "Requirement already satisfied: soupsieve>1.2 in /home/vscode/.local/lib/python3.9/site-packages (from beautifulsoup4>=4.11.1->yfinance) (2.4.1)\n", + "Requirement already satisfied: six>=1.9 in /usr/local/lib/python3.9/site-packages (from html5lib>=1.1->yfinance) (1.16.0)\n", + "Requirement already satisfied: webencodings in /home/vscode/.local/lib/python3.9/site-packages (from html5lib>=1.1->yfinance) (0.5.1)\n", + "Requirement already satisfied: python-dateutil>=2.7.3 in /home/vscode/.local/lib/python3.9/site-packages (from pandas>=1.3.0->yfinance) (2.8.2)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.9/site-packages (from requests>=2.31->yfinance) (2023.5.7)\n", + "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.9/site-packages (from requests>=2.31->yfinance) (3.2.0)\n", + "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.9/site-packages (from requests>=2.31->yfinance) (2.0.3)\n", + "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.9/site-packages (from requests>=2.31->yfinance) (3.4)\n", "\n", "Traceback (most recent call last):\n", - " File \"\", line 4, in <module>\n", - " meta_data = yf.download('META', start='2022-01-01', end=current_date)\n", - " ^^^^^^^^^^^^\n", - "NameError: name 'current_date' is not defined\n", + " File \"\", line 14, in <module>\n", + " meta_ytd_gain = get_ytd_gain(\"FB\")\n", + " File \"\", line 6, in get_ytd_gain\n", + " start_date = datetime(today.year, 1, 1)\n", + "NameError: name 'today' is not defined\n", "\n", "\n", "--------------------------------------------------------------------------------\n", "\u001b[33massistant\u001b[0m (to user_proxy):\n", "\n", - "I apologize for the confusion. The `current_date` variable was defined in the first Python script and it's not available in the second script. Let's combine the two scripts into one so that the `current_date` variable can be used in the second part of the script. Here is the combined Python script:\n", + "Apologies for the error. It seems I forgot to include the `today` variable in the last code block. Here's the corrected code:\n", "\n", "```python\n", - "import datetime\n", "import yfinance as yf\n", + "from datetime import datetime, date\n", "\n", - "# Get the current date\n", - "current_date = datetime.date.today()\n", - "print(\"Today's date is:\", current_date)\n", + "today = date.today()\n", "\n", - "# Download stock data\n", - "meta_data = yf.download('META', start='2022-01-01', end=current_date)\n", - "tesla_data = yf.download('TSLA', start='2022-01-01', end=current_date)\n", + "def get_ytd_gain(ticker):\n", + " stock = yf.Ticker(ticker)\n", + " start_date = datetime(today.year, 1, 1)\n", + " end_date = today\n", + " historical_data = stock.history(start=start_date, end=end_date)\n", + " start_price = historical_data.iloc[0]['Close']\n", + " end_price = historical_data.iloc[-1]['Close']\n", + " ytd_gain = (end_price - start_price) / start_price * 100\n", + " return ytd_gain\n", "\n", - "# Calculate YTD gain\n", - "meta_ytd_gain = ((meta_data['Close'][-1] - meta_data['Close'][0]) / meta_data['Close'][0]) * 100\n", - "tesla_ytd_gain = ((tesla_data['Close'][-1] - tesla_data['Close'][0]) / tesla_data['Close'][0]) * 100\n", + "meta_ytd_gain = get_ytd_gain(\"FB\")\n", + "tesla_ytd_gain = get_ytd_gain(\"TSLA\")\n", "\n", - "print(\"META YTD gain:\", meta_ytd_gain)\n", - "print(\"TESLA YTD gain:\", tesla_ytd_gain)\n", + "print(f\"Year-to-date gain for META (Facebook): {meta_ytd_gain:.2f}%\")\n", + "print(f\"Year-to-date gain for TESLA: {tesla_ytd_gain:.2f}%\")\n", "```\n", "\n", - "Please run this script to get the current date and the year-to-date gain for META and TESLA.\n", + "Please execute this code block to get the year-to-date gain for META and TESLA.\n", "\n", "--------------------------------------------------------------------------------\n", "\u001b[31m\n", ">>>>>>>> EXECUTING CODE BLOCK 0 (inferred language is python)...\u001b[0m\n", "\u001b[33muser_proxy\u001b[0m (to assistant):\n", "\n", - "exitcode: 0 (execution succeeded)\n", + "exitcode: 1 (execution failed)\n", "Code output: \n", - "Today's date is: 2023-09-29\n", + "FB: No timezone found, symbol may be delisted\n", + "Traceback (most recent call last):\n", + " File \"\", line 16, in <module>\n", + " meta_ytd_gain = get_ytd_gain(\"FB\")\n", + " File \"\", line 11, in get_ytd_gain\n", + " start_price = historical_data.iloc[0]['Close']\n", + " File \"/home/vscode/.local/lib/python3.9/site-packages/pandas/core/indexing.py\", line 931, in __getitem__\n", + " return self._getitem_axis(maybe_callable, axis=axis)\n", + " File \"/home/vscode/.local/lib/python3.9/site-packages/pandas/core/indexing.py\", line 1566, in _getitem_axis\n", + " self._validate_integer(key, axis)\n", + " File \"/home/vscode/.local/lib/python3.9/site-packages/pandas/core/indexing.py\", line 1500, in _validate_integer\n", + " raise IndexError(\"single positional indexer is out-of-bounds\")\n", + "IndexError: single positional indexer is out-of-bounds\n", + "\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33massistant\u001b[0m (to user_proxy):\n", + "\n", + "I apologize for the error. It seems that the \"FB\" ticker symbol is not working as expected. Facebook has changed its parent company name to Meta Platforms, Inc., and its ticker symbol has been changed to \"META\". Let's update the code to use the new ticker symbol:\n", "\n", - "[*********************100%%**********************] 1 of 1 completed\n", + "```python\n", + "import yfinance as yf\n", + "from datetime import datetime, date\n", + "\n", + "today = date.today()\n", + "\n", + "def get_ytd_gain(ticker):\n", + " stock = yf.Ticker(ticker)\n", + " start_date = datetime(today.year, 1, 1)\n", + " end_date = today\n", + " historical_data = stock.history(start=start_date, end=end_date)\n", + " start_price = historical_data.iloc[0]['Close']\n", + " end_price = historical_data.iloc[-1]['Close']\n", + " ytd_gain = (end_price - start_price) / start_price * 100\n", + " return ytd_gain\n", + "\n", + "meta_ytd_gain = get_ytd_gain(\"META\")\n", + "tesla_ytd_gain = get_ytd_gain(\"TSLA\")\n", + "\n", + "print(f\"Year-to-date gain for META (Facebook): {meta_ytd_gain:.2f}%\")\n", + "print(f\"Year-to-date gain for TESLA: {tesla_ytd_gain:.2f}%\")\n", + "```\n", + "\n", + "Please execute this updated code block to get the year-to-date gain for META and TESLA.\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[31m\n", + ">>>>>>>> EXECUTING CODE BLOCK 0 (inferred language is python)...\u001b[0m\n", + "\u001b[33muser_proxy\u001b[0m (to assistant):\n", "\n", - "[*********************100%%**********************] 1 of 1 completed\n", - "META YTD gain: -10.214455076808218\n", - "TESLA YTD gain: -38.393704229069705\n", + "exitcode: 0 (execution succeeded)\n", + "Code output: \n", + "Year-to-date gain for META (Facebook): 132.69%\n", + "Year-to-date gain for TESLA: 120.93%\n", "\n", "\n", "--------------------------------------------------------------------------------\n", "\u001b[33massistant\u001b[0m (to user_proxy):\n", "\n", - "Great! The script has successfully executed. \n", + "Great! The code executed successfully. Here are the year-to-date gains for META (Facebook) and TESLA:\n", "\n", - "As of today, which is September 29, 2023, the year-to-date (YTD) gain for META (Facebook) is approximately -10.21%, indicating a decrease in value. On the other hand, the YTD gain for TESLA is approximately -38.39%, which also indicates a decrease in value.\n", + "- Year-to-date gain for META (Facebook): 132.69%\n", + "- Year-to-date gain for TESLA: 120.93%\n", "\n", - "Please note that these values are subject to change as the stock market fluctuates. \n", + "Please note that these values are based on the stock market data at the time of execution and may change as the market fluctuates.\n", "\n", "TERMINATE\n", "\n", @@ -264,7 +330,7 @@ "assistant = autogen.AssistantAgent(\n", " name=\"assistant\",\n", " llm_config={\n", - " \"seed\": 42, # seed for caching and reproducibility\n", + " \"cache_seed\": 42, # seed for caching and reproducibility\n", " \"config_list\": config_list, # a list of OpenAI API configurations\n", " \"temperature\": 0, # temperature for sampling\n", " }, # configuration for autogen's enhanced inference API which is compatible with OpenAI API\n", @@ -294,7 +360,7 @@ "source": [ "The example above involves code execution. In AutoGen, code execution is triggered automatically by the `UserProxyAgent` when it detects an executable code block in a received message and no human user input is provided. This process occurs in a designated working directory, using a Docker container by default. Unless a specific directory is specified, AutoGen defaults to the `autogen/extensions` directory. Users have the option to specify a different working directory by setting the `work_dir` argument when constructing a new instance of the `UserProxyAgent`.\n", "\n", - "The whole chat is auto generated." + "The whole chat is auto-generated." ] }, { @@ -462,7 +528,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 6, "metadata": {}, "outputs": [], "source": [ @@ -504,12 +570,12 @@ "* `generate_init_message`. We generate a modified initial message to send to the assistant agent, by adding the info that the execution will be performed in IPython.\n", "* `run_code`. We execute the code with the ipython instance.\n", "\n", - "With the new `IPythonUserProxyAgent`, we are able to run the code within the current notebook environment and display plot directly." + "With the new `IPythonUserProxyAgent`, we are able to run the code within the current notebook environment and display the plot directly." ] }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -524,44 +590,152 @@ "--------------------------------------------------------------------------------\n", "\u001b[33massistant\u001b[0m (to ipython_user_proxy):\n", "\n", - "To plot a chart of META (Facebook) and TESLA stock price gain year-to-date (YTD), we can use the `yfinance` library in Python, which allows us to download stock data from Yahoo Finance. We will also use `matplotlib` to plot the data.\n", + "First, we need to install the necessary libraries to fetch stock data and plot the chart. Please execute the following code to install the required libraries:\n", + "\n", + "```python\n", + "!pip install yfinance matplotlib\n", + "```\n", "\n", - "Here is the Python code to do this:\n", + "After installing the libraries, execute the following code to fetch the stock data and plot the chart:\n", "\n", "```python\n", - "# Python code block\n", + "import yfinance as yf\n", + "import matplotlib.pyplot as plt\n", + "import datetime\n", + "\n", + "# Get the current date\n", + "today = datetime.date.today()\n", + "\n", + "# Calculate the start date for YTD\n", + "start_date = datetime.date(today.year, 1, 1)\n", + "\n", + "# Fetch stock data for META (Facebook) and TESLA\n", + "meta = yf.download('FB', start=start_date, end=today)\n", + "tesla = yf.download('TSLA', start=start_date, end=today)\n", + "\n", + "# Calculate the percentage gain for each stock\n", + "meta['Gain'] = (meta['Close'] / meta['Close'][0]) * 100\n", + "tesla['Gain'] = (tesla['Close'] / tesla['Close'][0]) * 100\n", + "\n", + "# Plot the chart\n", + "plt.figure(figsize=(12, 6))\n", + "plt.plot(meta.index, meta['Gain'], label='META (Facebook)')\n", + "plt.plot(tesla.index, tesla['Gain'], label='TESLA')\n", + "plt.xlabel('Date')\n", + "plt.ylabel('Percentage Gain YTD')\n", + "plt.title('META (Facebook) vs TESLA Stock Price Gain YTD')\n", + "plt.legend()\n", + "plt.grid()\n", + "plt.show()\n", + "```\n", + "\n", + "This code will fetch the stock data for META (Facebook) and TESLA from the start of the year to the current date, calculate the percentage gain, and plot the chart.\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[31m\n", + ">>>>>>>> EXECUTING CODE BLOCK 0 (inferred language is python)...\u001b[0m\n", + "\u001b[31m\n", + ">>>>>>>> EXECUTING CODE BLOCK 1 (inferred language is python)...\u001b[0m\n" + ] + }, + { + "ename": "IndexError", + "evalue": "index 0 is out of bounds for axis 0 with size 0", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mIndexError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[7], line 16\u001b[0m\n\u001b[1;32m 13\u001b[0m tesla \u001b[39m=\u001b[39m yf\u001b[39m.\u001b[39mdownload(\u001b[39m'\u001b[39m\u001b[39mTSLA\u001b[39m\u001b[39m'\u001b[39m, start\u001b[39m=\u001b[39mstart_date, end\u001b[39m=\u001b[39mtoday)\n\u001b[1;32m 15\u001b[0m \u001b[39m# Calculate the percentage gain for each stock\u001b[39;00m\n\u001b[0;32m---> 16\u001b[0m meta[\u001b[39m'\u001b[39m\u001b[39mGain\u001b[39m\u001b[39m'\u001b[39m] \u001b[39m=\u001b[39m (meta[\u001b[39m'\u001b[39m\u001b[39mClose\u001b[39m\u001b[39m'\u001b[39m] \u001b[39m/\u001b[39m meta[\u001b[39m'\u001b[39;49m\u001b[39mClose\u001b[39;49m\u001b[39m'\u001b[39;49m][\u001b[39m0\u001b[39;49m]) \u001b[39m*\u001b[39m \u001b[39m100\u001b[39m\n\u001b[1;32m 17\u001b[0m tesla[\u001b[39m'\u001b[39m\u001b[39mGain\u001b[39m\u001b[39m'\u001b[39m] \u001b[39m=\u001b[39m (tesla[\u001b[39m'\u001b[39m\u001b[39mClose\u001b[39m\u001b[39m'\u001b[39m] \u001b[39m/\u001b[39m tesla[\u001b[39m'\u001b[39m\u001b[39mClose\u001b[39m\u001b[39m'\u001b[39m][\u001b[39m0\u001b[39m]) \u001b[39m*\u001b[39m \u001b[39m100\u001b[39m\n\u001b[1;32m 19\u001b[0m \u001b[39m# Plot the chart\u001b[39;00m\n", + "File \u001b[0;32m~/.local/lib/python3.9/site-packages/pandas/core/series.py:939\u001b[0m, in \u001b[0;36mSeries.__getitem__\u001b[0;34m(self, key)\u001b[0m\n\u001b[1;32m 936\u001b[0m key \u001b[39m=\u001b[39m unpack_1tuple(key)\n\u001b[1;32m 938\u001b[0m \u001b[39mif\u001b[39;00m is_integer(key) \u001b[39mand\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mindex\u001b[39m.\u001b[39m_should_fallback_to_positional():\n\u001b[0;32m--> 939\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m_values[key]\n\u001b[1;32m 941\u001b[0m \u001b[39melif\u001b[39;00m key_is_scalar:\n\u001b[1;32m 942\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_get_value(key)\n", + "\u001b[0;31mIndexError\u001b[0m: index 0 is out of bounds for axis 0 with size 0" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[33mipython_user_proxy\u001b[0m (to assistant):\n", + "\n", + "exitcode: 0 (execution succeeded)\n", + "Code output: \n", + "Defaulting to user installation because normal site-packages is not writeable\n", + "Requirement already satisfied: yfinance in /home/vscode/.local/lib/python3.9/site-packages (0.2.26)\n", + "Requirement already satisfied: matplotlib in /home/vscode/.local/lib/python3.9/site-packages (3.7.2)\n", + "Requirement already satisfied: html5lib>=1.1 in /home/vscode/.local/lib/python3.9/site-packages (from yfinance) (1.1)\n", + "Requirement already satisfied: pytz>=2022.5 in /home/vscode/.local/lib/python3.9/site-packages (from yfinance) (2023.3)\n", + "Requirement already satisfied: frozendict>=2.3.4 in /home/vscode/.local/lib/python3.9/site-packages (from yfinance) (2.3.8)\n", + "Requirement already satisfied: pandas>=1.3.0 in /home/vscode/.local/lib/python3.9/site-packages (from yfinance) (1.3.3)\n", + "Requirement already satisfied: lxml>=4.9.1 in /home/vscode/.local/lib/python3.9/site-packages (from yfinance) (4.9.3)\n", + "Requirement already satisfied: numpy>=1.16.5 in /home/vscode/.local/lib/python3.9/site-packages (from yfinance) (1.25.1)\n", + "Requirement already satisfied: appdirs>=1.4.4 in /home/vscode/.local/lib/python3.9/site-packages (from yfinance) (1.4.4)\n", + "Requirement already satisfied: beautifulsoup4>=4.11.1 in /home/vscode/.local/lib/python3.9/site-packages (from yfinance) (4.12.2)\n", + "Requirement already satisfied: requests>=2.31 in /usr/local/lib/python3.9/site-packages (from yfinance) (2.31.0)\n", + "Requirement already satisfied: multitasking>=0.0.7 in /home/vscode/.local/lib/python3.9/site-packages (from yfinance) (0.0.11)\n", + "Requirement already satisfied: kiwisolver>=1.0.1 in /home/vscode/.local/lib/python3.9/site-packages (from matplotlib) (1.4.4)\n", + "Requirement already satisfied: importlib-resources>=3.2.0 in /home/vscode/.local/lib/python3.9/site-packages (from matplotlib) (6.0.0)\n", + "Requirement already satisfied: pillow>=6.2.0 in /home/vscode/.local/lib/python3.9/site-packages (from matplotlib) (10.0.0)\n", + "Requirement already satisfied: python-dateutil>=2.7 in /home/vscode/.local/lib/python3.9/site-packages (from matplotlib) (2.8.2)\n", + "Requirement already satisfied: fonttools>=4.22.0 in /home/vscode/.local/lib/python3.9/site-packages (from matplotlib) (4.41.1)\n", + "Requirement already satisfied: pyparsing<3.1,>=2.3.1 in /home/vscode/.local/lib/python3.9/site-packages (from matplotlib) (3.0.9)\n", + "Requirement already satisfied: packaging>=20.0 in /home/vscode/.local/lib/python3.9/site-packages (from matplotlib) (23.1)\n", + "Requirement already satisfied: contourpy>=1.0.1 in /home/vscode/.local/lib/python3.9/site-packages (from matplotlib) (1.1.0)\n", + "Requirement already satisfied: cycler>=0.10 in /home/vscode/.local/lib/python3.9/site-packages (from matplotlib) (0.11.0)\n", + "Requirement already satisfied: soupsieve>1.2 in /home/vscode/.local/lib/python3.9/site-packages (from beautifulsoup4>=4.11.1->yfinance) (2.4.1)\n", + "Requirement already satisfied: six>=1.9 in /usr/local/lib/python3.9/site-packages (from html5lib>=1.1->yfinance) (1.16.0)\n", + "Requirement already satisfied: webencodings in /home/vscode/.local/lib/python3.9/site-packages (from html5lib>=1.1->yfinance) (0.5.1)\n", + "Requirement already satisfied: zipp>=3.1.0 in /home/vscode/.local/lib/python3.9/site-packages (from importlib-resources>=3.2.0->matplotlib) (3.16.2)\n", + "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.9/site-packages (from requests>=2.31->yfinance) (3.4)\n", + "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.9/site-packages (from requests>=2.31->yfinance) (2.0.3)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.9/site-packages (from requests>=2.31->yfinance) (2023.5.7)\n", + "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.9/site-packages (from requests>=2.31->yfinance) (3.2.0)\n", + "\n", + "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m A new release of pip is available: \u001b[0m\u001b[31;49m23.0.1\u001b[0m\u001b[39;49m -> \u001b[0m\u001b[32;49m23.2.1\u001b[0m\n", + "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m To update, run: \u001b[0m\u001b[32;49mpip install --upgrade pip\u001b[0m\n", + "\n", + "[*********************100%***********************] 1 of 1 completed\n", + "[*********************100%***********************] 1 of 1 completed\n", "\n", - "# Import necessary libraries\n", + "1 Failed download:\n", + "['FB']: Exception('%ticker%: No timezone found, symbol may be delisted')\n", + "\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33massistant\u001b[0m (to ipython_user_proxy):\n", + "\n", + "It seems that there was an issue with fetching the stock data for META (Facebook) using the ticker symbol 'FB'. The stock symbol for META has been changed to 'META' recently. Let's update the code to use the new symbol and try again:\n", + "\n", + "```python\n", "import yfinance as yf\n", "import matplotlib.pyplot as plt\n", - "from datetime import datetime\n", + "import datetime\n", "\n", - "# Define the tickers\n", - "tickers = ['META', 'TSLA']\n", + "# Get the current date\n", + "today = datetime.date.today()\n", "\n", - "# Get the current year\n", - "current_year = datetime.now().year\n", + "# Calculate the start date for YTD\n", + "start_date = datetime.date(today.year, 1, 1)\n", "\n", - "# Download the stock data\n", - "data = yf.download(tickers, start=f'{current_year}-01-01', end=datetime.now().strftime('%Y-%m-%d'))\n", + "# Fetch stock data for META (Facebook) and TESLA\n", + "meta = yf.download('META', start=start_date, end=today)\n", + "tesla = yf.download('TSLA', start=start_date, end=today)\n", "\n", - "# Calculate the YTD return\n", - "data['META YTD Return'] = data['Adj Close']['META'].pct_change().cumsum()\n", - "data['TSLA YTD Return'] = data['Adj Close']['TSLA'].pct_change().cumsum()\n", + "# Calculate the percentage gain for each stock\n", + "meta['Gain'] = (meta['Close'] / meta['Close'][0]) * 100\n", + "tesla['Gain'] = (tesla['Close'] / tesla['Close'][0]) * 100\n", "\n", - "# Plot the data\n", - "plt.figure(figsize=(14,7))\n", - "plt.plot(data['META YTD Return'], label='META YTD Return')\n", - "plt.plot(data['TSLA YTD Return'], label='TSLA YTD Return')\n", - "plt.title('META vs TSLA YTD Return')\n", + "# Plot the chart\n", + "plt.figure(figsize=(12, 6))\n", + "plt.plot(meta.index, meta['Gain'], label='META (Facebook)')\n", + "plt.plot(tesla.index, tesla['Gain'], label='TESLA')\n", "plt.xlabel('Date')\n", - "plt.ylabel('Return')\n", + "plt.ylabel('Percentage Gain YTD')\n", + "plt.title('META (Facebook) vs TESLA Stock Price Gain YTD')\n", "plt.legend()\n", - "plt.grid(True)\n", + "plt.grid()\n", "plt.show()\n", "```\n", "\n", - "This code will download the adjusted close prices for META and TSLA from the start of the current year to the current date. It then calculates the cumulative sum of the daily percentage change in price, which gives the YTD return. Finally, it plots the YTD return for both stocks on the same chart.\n", + "Please execute the updated code to fetch the stock data and plot the chart.\n", "\n", "--------------------------------------------------------------------------------\n", "\u001b[31m\n", @@ -570,9 +744,9 @@ }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAABIQAAAJwCAYAAAD4AboDAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzddXyV9fvH8dc56x4xtgFjo7u7BQkFQUIlFLBbf3bn18BubBAVUFQQlZLu7u7BqLHBWPfO/fvjXjA3Vqx5Px+PPe57d17n3Nv0XHyu62MxDMNARERERERERESuGtayDkBEREREREREREqXEkIiIiIiIiIiIlcZJYRERERERERERK4ySgiJiIiIiIiIiFxllBASEREREREREbnKKCEkIiIiIiIiInKVUUJIREREREREROQqo4SQiIiIiIiIiMhVRgkhEREREREREZGrjBJCIiIiIiIiIiJXGSWEREREKqipU6disViwWCysWbMmx37DMAgICMBisXDDDTdk25dxXm5f999/PytWrMjzmEu/LnXLLbdgsVh49tlnS/S1F9Q111xToNfw2muvAZCcnMynn35K27Zt8fT0xNvbm+bNm3Pvvfdy4MCBzOtmvPdbtmwpcCydOnXCYrHw1VdfFej4d955B4vFwr///pvr/kGDBuHl5cWAAQMK9Bpvv/32HO+J1WrF09OTxo0bM27cOBYvXlzg13P77bdnu76TkxONGjXilVdeITExscDXudT8+fMzn4WIiIiULPuyDkBERESujLOzMzNmzKBHjx7Ztq9cuZJTp07h5OSU63n9+/dn/PjxObY3atSIwMBAfv7552zbn3/+edzd3XnxxRdzvV50dDT//PMPQUFB/PLLL5kJjbL04osvcvfdd2d+v3nzZj777DNeeOEFmjZtmrm9VatWAIwcOZIFCxYwZswY7rnnHlJSUjhw4ABz586lW7duNGnSpEhxHD58mM2bNxMUFMT06dN54IEH8j3nySefZMaMGTz44IPs2bMHFxeXzH2///47CxYsYNKkSbRt2zbbcwwODuaVV17h3nvvpWfPnpnb69evn7leu3ZtJk6cCEBcXBxHjhxh9uzZTJs2jVtuuYVp06bh4OCQb4xOTk58//33AERFRfHXX3/xxhtvcPToUaZPn57/G/Mf8+fPZ9KkSUoKiYiIlAZDREREKqQffvjBAIwR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RpMmTWjdunXmMU2bNuXgwYPMnTuXhQsXMmvWLL788kteeeUVXn/99eJ9UYC/vz+jR49m5MiRNG/enN9++42pU6dib1/w/33KGAV0yy235Lp/5cqVRRqRVZL27NkDQIMGDfI91s7OLltSceDAgTRp0oT77ruPv//+GwCbzQaYfYH8/PxyXKMg72fGaKP/SktLy3W7k5PTZRNtdnZ2uW43DCPfOERERCoTJYREREQqieHDh3PfffexYcOGbOVXJckwDGbMmEGfPn148MEHc+x/4403mD59er4JoV69euHv78/MmTPp0aMHy5Yt48UXX8xxnJubG6NGjWLUqFEkJyczYsQI3nrrLZ5//nmcnZ2L7XVdysHBgVatWnH48GHOnz+fa1IjN3Fxcfz111+MGjUq19Fajz76KNOnTy9XCaG0tDRmzJiBq6srPXr0KPT5/v7+PP7447z++uts2LCBLl26ZJZn1ahRI98RaZdL/GQ0qP5v2d6JEycKHaOIiIiYlBASERGpJNzd3fnqq684fvw4Q4YMKZV7rl27luPHj/O///0v16THoUOHePnllzlz5kyeDa6tVis33XQTU6ZMoVOnTqSmpmYrFwO4cOFCtqnfHR0dadasGQsWLCAlJeWKE0KHDx/GyckpR0lRZGQk69evp0qVKvj4+BT4en/++SdxcXE89NBD9OzZM8f+RYsW8fvvvzNp0iScnJyuKPbikJaWxqOPPsr+/ft57rnnilzK9cgjj/D+++/zzjvvMGfOHAYOHIinpydvv/02ffr0wcHBIdvx4eHhme+rm5sbYL7nl45wCwwMxM7OjlWrVmVrUv7ll18WKUYRERFRQkhERKRSmTBhQoGPPXToUK49cXx9fTOn/87P9OnTsbOzY/DgwbnuHzp0KC+++CK//vorTzzxRJ7XGjVqFJ9//jmvvvoqLVu2pGnTptn2DxgwAD8/P7p3746vry/79+/niy++yNbM+krs3LmTsWPHcv3119OzZ0+qVq3K6dOn+fHHHzlz5gyffPJJjnKjKVOmsHDhwhzX+r//+z+mT59OtWrV6NatW673Gzp0KN999x3z5s1jxIgRVxx/YURFRWU++/j4eI4cOcLs2bM5evQoo0eP5o033ijytatVq8Ydd9zBl19+yf79+2natClfffUV48aNo127dowePRofHx9CQkKYN28e3bt354svvgCgffv2gDl6auDAgdjZ2TF69Gi8vLy4+eab+fzzz7FYLNSvX5+5c+cSFhZ25W+GiIjIVUoJIRERkatUxqxi/9W7d+8CJYRSUlL4/fff6datG1WrVs31mBYtWlC3bl2mTZuWb0KoW7duBAQEcPLkyRyjgwDuu+8+pk+fzkcffURsbCy1a9fm0Ucf5aWXXso31oLo1asXb7zxBgsWLOCjjz4iPDwcDw8P2rZty7vvvsvIkSNznPPVV1/leq3x48ezZMkSxowZc9meNddeey2urq5Mmzat1BNCp06dYty4cYA5sszf35+uXbvy1VdfFTgZmJcnnniCr7/+mnfffZepU6cyduxYatasyTvvvMP7779PUlIStWrVomfPntnKCUeMGMEjjzzCr7/+yrRp0zAMg9GjRwPw+eefk5KSwtdff42TkxO33HIL77//Pi1atLjieEVERK5GFkMd9ERERERERERErioFm+dUREREREREREQqDSWERERERERERESuMkoIiYiIiIiIiIhcZZQQEhERERERERG5yighJCIiIiIiIiJylVFCSERERERERETkKmNf1gGUNpvNxpkzZ/Dw8MBisZR1OCIiIiIiIiIixcIwDGJiYqhZsyZWa95jgK66hNCZM2cICAgo6zBERERERERERErEyZMnqV27dp7HXHUJIQ8PD8B8czw9Pcs4muxSUlJYtGgRAwYMwMHBoazDkSLScyy/9GwqDz3LikvPrnLQc6y49OwqDz3LykHPseIqr88uOjqagICAzNxHXq66hFBGmZinp2e5TAi5urri6elZrn6gpHD0HMsvPZvKQ8+y4tKzqxz0HCsuPbvKQ8+yctBzrLjK+7MrSIscNZUWEREREREREbnKKCEkIiIiIiIiInKVUUJIREREREREROQqc9X1ECoIwzBITU0lLS2tVO+bkpKCvb09iYmJpX5vKT4l+Rzt7Oywt7cvUD2oiIiIiIiIyOUoIfQfycnJnD17lvj4+FK/t2EY+Pn5cfLkSX3gr8BK+jm6urri7++Po6NjsV9bRERERERErg5KCF3CZrMRHByMnZ0dNWvWxNHRsVQTMzabjdjYWNzd3bFaVc1XUZXUczQMg+TkZMLDwwkODqZhw4b6OREREREREZEiUULoEsnJydhsNgICAnB1dS31+9tsNpKTk3F2dtYH/QqsJJ+ji4sLDg4O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bdsEgKxbt04sFovdz3U11edMbAjVAMADX4mJieVj/vnnH5kwYYL4+vqKyWSSIUOG2AUaExPzwDkqdg8XLVok7dq1E5PJJN7e3hIWFibffPNNjW8Lstls8vnnn0tgYKB4eHhIjx49JCsry27M22+//cDr6+nOBdVzTExMrHINWqB6PhkZGdKtWzfx8/MTDw8PCQkJkaioKMnNzXXaHqlA9Rzvp6eGkOrZpaWlSadOncTHx0fq168vbdu2la+++kpXDdl7VM9S5N87gqZOnSpms1m8vLykZ8+eYrVanbI/rkoLuYmIjBgxQsLDwx95P1SmhSwPHz4svXv3Fj8/P/Hy8pLOnTvL9u3bnbI/qtBCjqNGjRI/Pz+pV6+edOjQQVauXOmUvXF1rp5dVT/XxcTEOFyfMxlEdPrEUyIiIiIiIiIindLPI8aJiIiIiIiIiAgAG0JERERERERERLrDhhARERERERERkc6wIUREREREREREpDNsCBERERERERER6QwbQkREREREREREOsOGEBERERERERGRzrAhRERERERERESkM2wIERERERERERHpDBtCRERERDUYPXo0DAYDDAYD3N3dERgYiF69euGHH36AzWZzeJ7ly5ejYcOG/7tCiYiIiBzEhhARERGRA/r27Yu8vDzk5ORgx44d6NatGyZNmoQBAwagtLS0rssjIiIieihsCBERERE5wMPDA40aNULTpk3x7LPP4tNPP0VSUhJ27NiB5cuXAwDi4+Px9NNP4/HHH0dQUBAmTJiAoqIiAEBKSgrGjBmDmzdvlt9tNH36dABAcXExpk2bhqZNm+Lxxx9Hp06dkJKSUjcLJSIiIl1gQ4iIiIiolrp3746OHTti8+bNAACj0YhFixbhxIkTWLFiBfbs2YMPP/wQABAeHo4FCxbA29sbeXl5yMvLw7Rp0wAA7733Hg4ePIh169YhIyMDw4YNQ9++fXHq1Kk6WxsRERFpm0FEpK6LICIiInJlo0ePxo0bN7Bly5ZK54YPH46MjAz88ccflc5t2rQJUVFR+OuvvwD8+wyhyZMn48aNG+Vjzp8/jyeffBLnz59HkyZNyo/37NkTL774Ir766iunr4eIiIjosbougIiIiEhlIgKDwQAA2L17N2JjY5GZmYmCggKUlpbizp07uH37Nkwm0wO//vjx4ygrK0OrVq3sjhcXF8Pf3/9/Xj8RERHpExtCRERERI/g5MmTCA0NRU5ODgYMGIB3330Xs2bNgp+fH/bv34+xY8eipKSkyoZQUVER3NzckJaWBjc3N7tzDRo0+C+WQERERDrEhhARERFRLe3ZswfHjx/H+++/j7S0NNhsNsTFxcFo/PcxjRs2bLAbX69ePZSVldkdCwsLQ1lZGa5cuYJXXnnlP6udiIiI9I0NISIiIiIHFBcXIz8/H2VlZbh8+TJ27tyJ2NhYDBgwAJGRkbBarbh79y4SEhIwcOBAHDhwAN99953dHCEhISgqKkJycjI6duwIk8mEVq1a4a233kJkZCTi4uIQFhaGq1evIjk5GR06dMDrr79eRysmIiIiLeOnjBERERE5YOfOnWjcuDFCQkLQt29f7N27F4sWLUJSUhLc3NzQsWNHxMfH4+uvv0b79u2xZs0axMbG2s0RHh6OqKgovPnmmwgICMCcOXMAAImJiYiMjMTUqVPRunVrRERE4PDhwwgODq6LpRIREZEO8FPGiIiIiIiIiIh0hncIERERERERERHpDBtCREREREREREQ6w4YQEREREREREZHOsCFERERERERERKQzbAgREREREREREekMG0JERERERERERDrDhhARERERERERkc6wIUREREREREREpDNsCBERERERERER6QwbQkREREREREREOsOGEBERERERERGRzvwffphYqmMm31wAAAAASUVORK5CYII=", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA+4AAAIjCAYAAACd5UFgAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdd3hTZfvA8W+S7t3SlkI3e8reW9m8KCrTgaCistz+XK+4xb19nQgoS0FwICggey8ZZY8uRksH3Sttzu+P04SGtjQtadLS+3NdvXJy5p2epHDneZ770SiKoiCEEEIIIYQQQogaSWvvAIQQQgghhBBCCFE+SdyFEEIIIYQQQogaTBJ3IYQQQgghhBCiBpPEXQghhBBCCCGEqMEkcRdCCCGEEEIIIWowSdyFEEIIIYQQQogaTBJ3IYQQQgghhBCiBpPEXQghhBBCCCGEqMEkcRdCCCGEEEIIIWowSdyFEKIOio+Px8XFhW3bttk7lGvauHEjGo2GZcuW2fzar7zyChqNhuTk5GvuN378eMaOHWujqERNZOl7pbpMmjSJiIgIu1y7OsybNw+NRkNMTIy9QxFCiBpDEnchhLCA8T+SGo2GrVu3ltquKAqhoaFoNBr+85//mG0zHlfWzyOPPGJKTi35KWns2LFoNBqeffbZSr+e1157jW7dutGrVy/TukmTJpV73b/++qvS16grnn32WX755RcOHjxo1ziudf9K/kyaNAmA/v37l7tPixYtzM59+PBhRo8eTXh4OC4uLgQHBzNo0CA+++wzs/0iIiJKvf+vZdWqVWg0Gho2bIjBYKjU6/3jjz/o168fgYGBuLm50ahRI8aOHWv2Xr1w4QKvvPIKBw4cqNS5bank3xaNRoOLiwvNmjVjxowZJCYm2ju8CkVHRzNjxgyaNWuGm5sbbm5utGrViunTp3Po0CF7h8eSJUvQaDR8/fXXZW6fOnUqjo6O3H777RZ9fvr37w+U/rx5eHjQqFEjRo8ezS+//FLp97MQQlTEwd4BCCFEbeLi4sKiRYvo3bu32fpNmzZx7tw5nJ2dyzxu0KBBTJw4sdT6Zs2aER4ezo8//mi2/vnnn8fDw4MXX3yxzPNlZGTwxx9/EBERweLFi3n77bdLJfblSUpKYv78+cyfP7/UNmdnZ7777rtS69u1a2fRueuiDh060LlzZz744AN++OEHu8Xx8MMPM3DgQNPz6OhoZs2axUMPPUSfPn1M6xs3bmxaDgkJYfbs2aXO5e3tbVrevn07AwYMICwsjClTphAUFER8fDw7d+7kk08+YebMmVWOeeHChURERBATE8P69evN4r+W999/n2eeeYZ+/frx/PPP4+bmxunTp1m3bh1Llixh6NChgJq4v/rqq0RERNC+ffsqx2kLr732GpGRkeTl5bF161a+/PJLVq1aRVRUFG5ubtc89ttvv7VLorhy5UrGjRuHg4MDd999N+3atUOr1XL8+HGWL1/Ol19+SXR0NOHh4ZU677333sv48ePL/XtaGePHj2f+/Pk899xzjBo1ivr165u27d69m2+++YannnqKe+65hzvvvNO0LSsri6lTp3L77bdzxx13mNaXPL7k38vc3FxiY2P5448/GD16NP379+e3337Dy8vrul+DEEIAoAghhKjQ3LlzFUC54447FH9/f0Wv15ttnzJlitKpUyclPDxcGTFihNk2QJk+fXqlrte6dWulX79+5W7//vvvFUdHR2X9+vUKoGzcuNHic3/44YeKq6urkpmZabb+vvvuU9zd3SsVZ3XbsGGDAihLly61+bVffvllBVCSkpIq3Pf9999X3N3dS/1O7WnPnj0KoMydO7fM7f369VNat25d4XmGDx+uBAQEKJcvXy61LTEx0ex5We//8mRlZSnu7u7Kp59+qnTo0EGZNGmSRcfp9XrFy8tLGTRoUJnbS8ZU0e/AWirzXrma8W/Lnj17zNY/+eSTCqAsWrSo3GOzsrIqfT1rOX36tOLu7q60bNlSuXDhQqnter1e+eSTT5S4uDg7RGcuOjpacXNzUyZMmGBaV1hYqLRv316JiIhQsrOzSx2TlJSkAMrLL79c5jmv9fdy9uzZCqCMHTvWKvELIYSiKIp0lRdCiEqYMGECKSkprF271rSuoKCAZcuWcdddd9ksjoULFzJo0CAGDBhAy5YtWbhwocXH/vrrr3Tr1g0PD49KXXPLli2MGTOGsLAwnJ2dCQ0N5YknniA3N7fUvsePH2fs2LEEBATg6upK8+bNS/UeOH/+PPfffz/169fH2dmZ1q1b8/3335d57aKiIl544QWCgoJwd3fn1ltvJT4+vtR+S5cupVOnTri6uuLv788999zD+fPnS+23fv16+vTpg7u7Oz4+Ptx2220cO3aswt9BbGwsTZo0oU2bNmbdmAcNGkR2drbZ+6Isbdq0YcCAAaXWGwwGgoODGT16tGndkiVL6NSpE56ennh5edG2bVs++eSTCmO0tjNnztC6dWt8fHxKbQsMDKzyeVesWEFubi5jxoxh/PjxLF++nLy8vAqPS05OJiMjw2yYR1kxbdy4kS5dugAwefJkU5fmefPmmfa19P1iyfv5auW9Vyx18803A2rPCVC7Znt4eHDmzBmGDx+Op6cnd999t2nb1WPcDQYDn3zyCW3btsXFxYWAgACGDh3K3r17zfZbsGCB6Xfg5+fH+PHjy/xsXe3dd98lOzubuXPn0qBBg1LbHRwcePTRRwkNDTWtO3ToEJMmTaJRo0a4uLgQFBTE/fffT0pKitmxZY1xNw7D2Lp1K127dsXFxYVGjRpZ1MslIiKCV155hcWLF5s+o59++ikHDhzgyy+/rLBHQ2U999xzDB48mKVLl3Ly5EmrnlsIUXdJ4i6EEJUQERFBjx49WLx4sWnd6tWrSU9PZ/z48eUel5eXR3JycqmfgoKCSsdw4cIFNmzYwIQJEwD1y4Rly5ZZdC69Xs+ePXvo2LFjuftcHWN6ejqgJjk5OTlMnTqVzz77jCFDhvDZZ5+VGgJw6NAhunXrxvr165kyZQqffPIJo0aN4o8//jDtk5iYSPfu3Vm3bh0zZszgk08+oUmTJjzwwAN8/PHHpWJ68803+fPPP3n22Wd59NFHWbt2LQMHDjT70mDevHmMHTsWnU7H7NmzmTJlCsuXL6d3796kpaWZ9lu3bh1Dhgzh0qVLvPLKKzz55JNs376dXr16XbMY1pkzZ+jbty+enp5s3LjRrMtsq1atcHV1rbDY37hx49i8eTMJCQlm67du3cqFCxdM76G1a9cyYcIEfH19eeedd3j77bfp37+/1YsJFhUVlfm+zM7ONu0THh7Ovn37iIqKsuq1Fy5cyIABAwgKCmL8+PFkZmaavUfKExgYiKurK3/88Qepqanl7teyZUtee+01AB566CF+/PFHfvzxR/r27QtY/n6x5P18tWu9Vyx15swZAOrVq2daV1hYyJAhQwgMDOT9998369p9tQceeIDHH3+c0NBQ3nnnHZ577jlcXFzYuXOnaZ8333yTiRMn0rRpUz788EMef/xx/vnnH/r27Wv2OyjLypUradKkCd26dbP4Na1du5azZ88yefJkPvvsM8aPH8+SJUsYPnw4iqJUePzp06cZPXo0gwYN4oMPPsDX15dJkyZx5MiRCo994oknaNeuHVOnTuX06dPMmjWL8ePHm4ZVWNu9996LoigVfpknhBAWs3eTvxBC1AYlu7N+/vnniqenp5KTk6MoiqKMGTNGGTBggKIoZXcVBsr9Wbx4cZnXu1ZX+ffff19xdXVVMjIyFEVRlJMnTyqAsmLFigpfx+nTpxVA+eyzz0ptu++++8qM0RiH8fWWNHv2bEWj0SixsbGmdX379lU8PT3N1imKohgMBtPyAw88oDRo0EBJTk4222f8+PGKt7e36VrGrvLBwcGm16soivLzzz8rgPLJJ58oiqIoBQUFSmBgoNKmTRslNzfXtN/KlSsVQJk1a5ZpXfv27ZXAwEAlJSXFtO7gwYOKVqtVJk6caFpXsvvzsWPHlIYNGypdunRRUlNTy/jNKkqzZs2UYcOGlbnN6MSJE2X+/qdNm6Z4eHiYXvdjjz2meHl5KYWFhdc837VY0lW+vPflww8/bNpvzZo1ik6nU3Q6ndKjRw/l//7v/5S///5bKSgoKHVOS7vKJyYmKg4ODsq3335rWtezZ0/ltttus+i1zZo1SwEUd3d3ZdiwYcqbb76p7Nu3r9R+5f0OKvN+seT9XNn3SknGvy3r1q1TkpKSlPj4eGXJkiVKvXr1FFdXV+XcuXOKolz5fD733HOlznHfffcp4eHhpufGITSPPvpoqX2NccfExCg6nU558803zbYfPnxYcXBwKLW+pPT0dAVQRo0aVWrb5cuXlaSkJNNPyb8bZf0NWbx4sQIomzdvLvU7iY6ONq0LDw8vtd+lS5cUZ2dn5amnnio31pJ27dqlaLVaxc/PT/Hx8VESEhLK3fd6usoriqL8+++/CqA88cQTFsUmhBAVkRZ3IYSopLFjx5Kbm8vKlSvJzMxk5cqVFXaTv+2221i7dm2pn7K6TVdk4cKFjBgxAk9PTwCaNm1Kp06dLOoub+yS6uvrW+Z2FxeXUjF+8MEHALi6upr2y87OJjk5mZ49e6IoCv/++y+gFr7bvHkz999/P2FhYWbnNhbPUxSFX375hZEjR6IoillL75AhQ0hPT2f//v1mx06cONH0egFGjx5NgwYNWLVqFQB79+7l0qVLTJs2DRcXF9N+I0aMoEWLFvz5558AXLx4kQMHDjBp0iT8/PxM+910000MGjTIdL6SoqKi6NevHxEREaxbt67c352vr2+F04E1a9aM9u3b89NPP5nWFRUVsWzZMkaOHGn6Hfv4+FjU9f56RURElPm+fPzxx037DBo0iB07dnDrrbdy8OBB3n33XYYMGUJwcDC///57la67ZMkStFqtWYvxhAkTWL16NZcvX67w+FdffZVFixbRoUMH/v77b1588UU6depEx44dLRryYOn7xZL3c0mWvlfKMnDgQAICAggNDWX8+PF4eHiwYsUKgoODzfabOnVqhef65Zdf0Gg0vPzyy6W2GeNevnw5BoOBsWPHmn0Gg4KCaNq0KRs2bCj3/BkZGQBlDrfp378/AQEBpp8vvvjCtK3k3xBjL6Tu3bsDlPrMl6VVq1ZmhRYDAgJo3rw5Z8+erfBYgK5du/LII4+QmprK7Nmzq9QTwlLG301mZma1XUMIUbdIVXkhhKikgIAABg4cyKJFi8jJyaGoqMhsbHJZQkJCLK6YfS3Hjh3j33//ZeLEiZw+fdq0vn///nzxxRdkZGRYVMVYKadbqk6nKzfOuLg4Zs2axe+//14quTJ2pzf+B7pNmzblXjspKYm0tDS++eYbvvnmmzL3uXTpktnzpk2bmj3XaDQ0adLE1LU9NjYWgObNm5c6V4sWLUxT+F1rv5YtW/L333+TnZ2Nu7u7af3IkSOpX78+f//99zXrAiiKYlFl/3HjxvHCCy9w/vx5goOD2bhxI5cuXWLcuHGmfaZNm8bPP//MsGHDCA4OZvDgwYwdO9bq3Xrd3d0tel926dKF5cuXU1BQwMGDB1mxYgUfffQRo0eP5sCBA7Rq1apS112wYAFdu3YlJSXF9GVShw4dKCgoYOnSpTz00EMVnmPChAlMmDCBjIwMdu3axbx581i0aBEjR44kKirKLCG/mqXvF0vezyVZ+l4pyxdffEGzZs1wcHCgfv36NG/eHK3WvH3FwcGBkJCQCs915swZGjZsaPbl1NVOnTqFoiilPltGjo6O5R5r/BItKyur1Lavv/6azMxMEhMTueeee8y2paam8uqrr7JkyZJSn3Hj35BrufrLE1C/MLPkyx4jY92Dzp07W3xMVRh/NyW/cBRCiOshibsQQlTBXXfdxZQpU0hISGDYsGFlFu6qDgsWLADU8ZpPPPFEqe2//PILkydPLvd443jZyvxHF9RW4UGDBpGamsqzzz5LixYtcHd35/z580yaNKlSU1EZ973nnnu47777ytznpptuqlR81enOO+9k/vz5LFy4kIcffrjc/S5fvlxuElTSuHHjeP7551m6dCmPP/44P//8M97e3mZJeWBgIAcOHODvv/9m9erVrF69mrlz5zJx4sQyp/GzFScnJ7p06UKXLl1o1qwZkydPZunSpWW27Jbn1KlT7NmzByj9hQyoPUosSdyNvLy8GDRoEIMGDcLR0ZH58+eza9cu+vXrZ/E5rMXS90pZunbtWmEy6ezsXCqZryqDwYBGo2H16tXodLpS26/1xYO3tzcNGjQos+6Bccx7WfUixo4dy/bt23nmmWdo3749Hh4eGAwGhg4datHfkLLihPK/iLQn4++mSZMmdo5ECHGjkMRdCCGq4Pbbb+fhhx9m586dZt2eq5OiKCxatIgBAwYwbdq0Uttff/11Fi5ceM3EPSwsDFdXV1OlaksdPnyYkydPMn/+fLNidFd35W7UqBHANQuZBQQE4OnpSVFRkcW9EE6dOmX2XFEUTp8+bUrwjfNEnzhxwlSN2+jEiROm7SX3u9rx48fx9/c3a20HeO+993BwcGDatGl4enqWOSyisLCQ+Ph4br311gpfS2RkJF27duWnn35ixowZLF++nFGjRpWas9rJyYmRI0cycuRIDAYD06ZN4+uvv+all16qEcmAMcm8ePFipY5buHAhjo6O/Pjjj6USsa1bt/Lpp58SFxdXZuuqJTHNnz/fFFN5PSAsfb9Y8n4uyZL3ii00btyYv//+m9TU1HJb3Rs3boyiKERGRtKsWbNKX2PEiBF899137N69m65du1a4/+XLl/nnn3949dVXmTVrlmn91Z/tG8WPP/6IRqNh0KBB9g5FCHGDkDHuQghRBR4eHnz55Ze88sorjBw50ibX3LZtGzExMUyePJnRo0eX+hk3bhwbNmzgwoUL5Z7D0dGRzp07l5oSqiLGBKtky5aiKKWmJwsICKBv3758//33xMXFmW0zHqvT6bjzzjv55ZdfykyIkpKSSq374YcfzMaKLlu2jIsXLzJs2DBATdgCAwP56quvyM/PN+23evVqjh07xogRIwBo0KAB7du3Z/78+WZVs6OiolizZg3Dhw8vdW2NRsM333zD6NGjue+++8oc13306FHy8vLo2bNnqW1lGTduHDt37uT7778nOTnZrJs8UGp6LK1Wa/qS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/Oc//2HYsGH06NEDgLS0NNzd3c+YOx4WFkZaWlqN11m7di3fffcdf/zxxxmPRUZGcuLECcrLy3nqqaeYNWtWrfFYrh8WFlbn526pmkPbxcfH8/bbb/PKK6/Uel1n4czt8fDDD/POO+9QVFTE4MGDWbhw4Tlfb3PhjO2maRrXX389t912GwMGDODIkSN1fblOzRnbCuCee+6hX79+BAUFsXbtWh555BFSU1N57bXX6vS6mwNnbLvDhw8D8NRTT/Haa68RExPDq6++yujRozl48GCz+cD5dM7YVqf79NNPmTRpEpGRkbVet7lxxnbT6XQsXryYadOm4evri16vJzQ0lL///pvAwMA6v3Zn54xtN3bsWGbPns3LL7/MvffeS2FhIf/3f/8HQGpqat1eOFKczmp33nknu3fvZv78+fW+xu7du7nooot48sknmThx4hmPr1q1is2bN/PBBx/wxhtv8O233wIwd+5cfHx8Kr9WrVpV7xhaImdvu2PHjjF58mQuu+wybr755nq/hqbCmdvjwQcfZNu2bfz777+4uLhw7bXXomlavV+HM3HGdnv77bfJz8/nkUceqXfMzsgZ2wpg9uzZjB49ml69enHbbbfx6quv8vbbb1NaWlrv1+FsnLHtzGYzAI8++ijTp0+nf//+fP755+h0On744Yd6v46mzhnb6lQpKSn8888/3HTTTfWO3xk5Y7tpmsadd95JaGgoq1atYuPGjUybNo0LLrjAquTP2Tlj23Xv3p0vv/ySV199FS8vL8LDw4mNjSUsLKxaL/w51XlQvdDuvPNOLTIyUjt8+HC1+5csWaIB2smTJ6vdHx0drb322mvV7tuzZ48WGhqq/fe//63Tcz777LNap06dNE1T81gOHTpU+VVUVKQlJCTUOFdz5MiR2j333HPG9VrqHHdnb7tjx45pHTt21K655ppq82OclbO3x6mOHj2qAdratWvrFIczc9Z2u+iiizS9Xq+5uLhUfgGai4uLdu2111rxHXAeztpWNdm9e7cGaPv3769THM7OWdtu6dKlGqCtWrWq2jGDBg2qcxzOxlnb6lTPPPOM1qpVqxZVp8VZ223x4sWaXq/XcnP/v727i+nx/+M4/urbn/iSm6xCQ0hmbloOsDYHbtcm82MzGcKc5GbDxAEzOiDMbZk5QFg2a83UgZtN6cDdRqtVqMwUbbmbiYao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", "text/plain": [ - "<Figure size 1400x700 with 1 Axes>" + "<Figure size 1200x600 with 1 Axes>" ] }, "metadata": {}, @@ -586,15 +760,14 @@ "\n", "exitcode: 0 (execution succeeded)\n", "Code output: \n", - "[*********************100%%**********************] 2 of 2 completed\n", + "[*********************100%***********************] 1 of 1 completed\n", + "[*********************100%***********************] 1 of 1 completed\n", "\n", "\n", "--------------------------------------------------------------------------------\n", "\u001b[33massistant\u001b[0m (to ipython_user_proxy):\n", "\n", - "Great! The code executed successfully and it should have displayed a chart showing the Year-to-Date (YTD) return of META and TESLA stocks. The chart should have two lines, one for each stock, plotted against the date. The YTD return is calculated as the cumulative sum of the daily percentage change in the stock price.\n", - "\n", - "If you can see the chart and it matches the description, then the task is completed successfully.\n", + "I'm glad the code executed successfully. You should now see a chart comparing the YTD percentage gain of META (Facebook) and TESLA stocks. If you have any further questions or need assistance with another task, feel free to ask.\n", "\n", "TERMINATE\n", "\n", @@ -633,7 +806,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.5" + "version": "3.11.4" }, "vscode": { "interpreter": { diff --git a/notebook/agentchat_chess.ipynb b/notebook/agentchat_chess.ipynb index b3e5664ff2b..6b2a64a2a37 100644 --- a/notebook/agentchat_chess.ipynb +++ b/notebook/agentchat_chess.ipynb @@ -15,7 +15,7 @@ "source": [ "# Auto Generated Agent Chat: Chess Game Playing While Chitchatting by GPT-4 Agents\n", "\n", - "AutoGen offers conversable agents powered by LLM, tool or human, which can be used to perform tasks collectively via automated chat. This framwork allows tool use and human participance through multi-agent conversation.\n", + "AutoGen offers conversable agents powered by LLM, tool, or human, which can be used to perform tasks collectively via automated chat. This framework allows tool use and human participation through multi-agent conversation.\n", "Please find documentation about this feature [here](https://microsoft.github.io/autogen/docs/Use-Cases/agent_chat).\n", "\n", "This notebook is modified based on https://github.com/ekzhu/FLAML/blob/evaluation/evaluation/chess/play_chess.ipynb\n", @@ -35,7 +35,7 @@ "outputs": [], "source": [ "%%capture --no-stderr\n", - "# %pip install pyautogen~=0.1.0\n", + "# %pip install \"pyautogen~=0.2.0b4\"\n", "%pip install chess -U" ] }, @@ -63,16 +63,7 @@ "cell_type": "code", "execution_count": 3, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/usr/local/anaconda3/envs/autogen/lib/python3.11/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n", - " from .autonotebook import tqdm as notebook_tqdm\n" - ] - } - ], + "outputs": [], "source": [ "import autogen\n", "\n", @@ -114,23 +105,21 @@ " {\n", " 'model': 'gpt-4',\n", " 'api_key': '<your Azure OpenAI API key here>',\n", - " 'api_base': '<your Azure OpenAI API base here>',\n", + " 'base_url': '<your Azure OpenAI API base here>',\n", " 'api_type': 'azure',\n", " 'api_version': '2023-06-01-preview',\n", " },\n", " {\n", " 'model': 'gpt-4-32k',\n", " 'api_key': '<your Azure OpenAI API key here>',\n", - " 'api_base': '<your Azure OpenAI API base here>',\n", + " 'base_url': '<your Azure OpenAI API base here>',\n", " 'api_type': 'azure',\n", " 'api_version': '2023-06-01-preview',\n", " },\n", "]\n", "```\n", "\n", - "If you open this notebook in colab, you can upload your files by clicking the file icon on the left panel and then choose \"upload file\" icon.\n", - "\n", - "You can set the value of config_list in other ways you prefer, e.g., loading from a YAML file." + "You can set the value of config_list in any way you prefer. Please refer to this [notebook](https://github.com/microsoft/autogen/blob/main/notebook/oai_openai_utils.ipynb) for full code examples of the different methods." ] }, { @@ -153,8 +142,8 @@ "from typing import Any, Dict, List, Optional, Union\n", "\n", "sys_msg = \"\"\"You are an AI-powered chess board agent.\n", - "You translate user's natural language input into legal UCI moves.\n", - "You should only reply with a UCI move string extracted from user's input.\"\"\"\n", + "You translate the user's natural language input into legal UCI moves.\n", + "You should only reply with a UCI move string extracted from the user's input.\"\"\"\n", "\n", "class BoardAgent(autogen.AssistantAgent):\n", " board: chess.Board\n", @@ -206,7 +195,7 @@ "You are playing as {color}. \n", "You communicate your move using universal chess interface language.\n", "You also chit-chat with your opponent when you communicate a move to light up the mood.\n", - "You should make sure both you and the opponent are making legal moves.\n", + "You should ensure both you and the opponent are making legal moves.\n", "Do not apologize for making illegal moves.\"\"\"\n", "\n", "\n", @@ -303,13 +292,13 @@ " color=\"black\",\n", " board_agent=board_agent,\n", " max_turns=max_turn,\n", - " llm_config={\"temperature\": 0.5, \"seed\": 1, \"config_list\": config_list_gpt4},\n", + " llm_config={\"temperature\": 0.5, \"cache_seed\": 1, \"config_list\": config_list_gpt4},\n", ")\n", "player_white = ChessPlayerAgent(\n", " color=\"white\",\n", " board_agent=board_agent,\n", " max_turns=max_turn,\n", - " llm_config={\"temperature\": 0.5, \"seed\": 2, \"config_list\": config_list_gpt4},\n", + " llm_config={\"temperature\": 0.5, \"cache_seed\": 2, \"config_list\": config_list_gpt4},\n", ")" ] }, @@ -362,7 +351,9 @@ "text": [ "\u001b[33mPlayer white\u001b[0m (to Player black):\n", "\n", - "e2e4. The king's pawn opens the game. A classic move! Your turn, my friend.\n", + "Alright, let's kick things off. I'll move my pawn from e2 to e4. The center of the board is the heart of the battle, isn't it? Your move. \n", + "\n", + "e2e4\n", "\n", "--------------------------------------------------------------------------------\n" ] @@ -392,7 +383,11 @@ "text": [ "\u001b[33mPlayer black\u001b[0m (to Player white):\n", "\n", - "e7e5. A mirrored response, keeping the symmetry. The game is afoot! Your move.\n", + "Ah, the King's Pawn Opening, a classic. Let's see how this plays out. I'll move my pawn from e7 to e5. \n", + "\n", + "e7e5\n", + "\n", + "You know, I've always admired how chess reflects life. It's all about making strategic decisions, isn't it? Your move.\n", "\n", "--------------------------------------------------------------------------------\n" ] @@ -422,7 +417,9 @@ "text": [ "\u001b[33mPlayer white\u001b[0m (to Player black):\n", "\n", - "Ng1f3. Developing the knight and attacking your pawn. The stage is set for an exciting game! Your move.\n", + "Indeed, chess is a mirror of life in many ways. Every move matters, just like every decision in life. I'll move my knight from g1 to f3, aiming to control the center.\n", + "\n", + "g1f3\n", "\n", "--------------------------------------------------------------------------------\n" ] @@ -452,7 +449,11 @@ "text": [ "\u001b[33mPlayer black\u001b[0m (to Player white):\n", "\n", - "Ng8f6. Responding in kind, my knight comes into play. Your move, Player white.\n", + "Well said! Chess is indeed a game of deep strategy and foresight. I will move my knight from g8 to f6, matching your control of the center.\n", + "\n", + "g8f6\n", + "\n", + "Did you know, the knight's move is actually based on the 'L' shape, which stands for 'leap'? Quite interesting, isn't it? Your move.\n", "\n", "--------------------------------------------------------------------------------\n" ] @@ -482,7 +483,9 @@ "text": [ "\u001b[33mPlayer white\u001b[0m (to Player black):\n", "\n", - "Bf1c4. Moving my bishop out onto the board. Your move, Player black.\n", + "That's a fun fact! The knight's L-shaped leap makes it a unique piece on the board. Now, I'll move my bishop from f1 to c4, putting a little pressure on your side.\n", + "\n", + "f1c4\n", "\n", "--------------------------------------------------------------------------------\n" ] @@ -512,7 +515,11 @@ "text": [ "\u001b[33mPlayer black\u001b[0m (to Player white):\n", "\n", - "Bf8c5. I'm also developing my bishop, eyeing some potential squares. Your move.\n", + "A strong move, indeed! I can see you're not one to hold back. I'll move my bishop from f8 to c5, maintaining the balance.\n", + "\n", + "f8c5\n", + "\n", + "You know, the bishop was originally an elephant in ancient chess. It's fascinating how the game has evolved over the centuries, isn't it? Your move.\n", "\n", "--------------------------------------------------------------------------------\n" ] @@ -542,7 +549,9 @@ "text": [ "\u001b[33mPlayer white\u001b[0m (to Player black):\n", "\n", - "O-O. Castling to ensure the safety of my king. Your move.\n", + "Absolutely, the evolution of chess is quite fascinating. It's a testament to the game's timeless appeal. Now, I'll castle kingside to ensure my king's safety. \n", + "\n", + "e1g1\n", "\n", "--------------------------------------------------------------------------------\n" ] @@ -572,7 +581,11 @@ "text": [ "\u001b[33mPlayer black\u001b[0m (to Player white):\n", "\n", - "O-O. Castling as well to secure my king. Your move.\n", + "A wise decision, safety first! I'll follow your lead and castle kingside as well. \n", + "\n", + "e8g8\n", + "\n", + "They say the king is a fighting piece, but in the early game, it's all about keeping him safe, isn't it? Your move.\n", "\n", "--------------------------------------------------------------------------------\n" ] @@ -602,7 +615,9 @@ "text": [ "\u001b[33mPlayer white\u001b[0m (to Player black):\n", "\n", - "d2d4. Advancing my pawn to challenge your bishop and control the center. Your move!\n", + "I see, it looks like we had a bit of a mix-up. Let's get back to the game. I'll move my pawn from d2 to d4, opening up lines for my queen and bishop.\n", + "\n", + "d2d4\n", "\n", "--------------------------------------------------------------------------------\n" ] @@ -612,15 +627,15 @@ "image/svg+xml": [ "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 390 390\" width=\"200\" height=\"200\"><desc><pre>r n b q . r k .\n", "p p p p . p p p\n", - ". . . . . n . .\n", - ". . b . . . . .\n", - ". . B p P . . .\n", + ". b . . . n . .\n", + ". . . . p . . .\n", + ". . B P P . . .\n", ". . . . . N . .\n", "P P P . . P P P\n", - "R N B Q . R K .</pre></desc><defs><g id=\"white-pawn\" class=\"white pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#fff\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"white-knight\" class=\"white knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#000000; stroke:#000000;\" /></g><g id=\"white-bishop\" class=\"white bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#fff\" stroke-linecap=\"butt\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zM15 32c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" /></g><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke-linejoin=\"miter\" /></g><g id=\"white-rook\" class=\"white rook\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12 36v-4h21v4H12zM11 14V9h4v2h5V9h5v2h5V9h4v5\" stroke-linecap=\"butt\" /><path d=\"M34 14l-3 3H14l-3-3\" /><path d=\"M31 17v12.5H14V17\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M31 29.5l1.5 2.5h-20l1.5-2.5\" /><path d=\"M11 14h23\" fill=\"none\" stroke-linejoin=\"miter\" /></g><g id=\"white-queen\" class=\"white queen\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M8 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM24.5 7.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM41 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM16 8.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM33 9a2 2 0 1 1-4 0 2 2 0 1 1 4 0z\" /><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2-12-7 11V11l-5.5 13.5-3-15-3 15-5.5-14V25L7 14l2 12zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11.5 30c3.5-1 18.5-1 22 0M12 33.5c6-1 15-1 21 0\" fill=\"none\" /></g><g id=\"white-king\" class=\"white king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#fff\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#fff\" /><path d=\"M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" /></g><g id=\"black-pawn\" class=\"black pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#000\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"black-knight\" class=\"black knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 24.55,10.4 L 24.1,11.85 L 24.6,12 C 27.75,13 30.25,14.49 32.5,18.75 C 34.75,23.01 35.75,29.06 35.25,39 L 35.2,39.5 L 37.45,39.5 L 37.5,39 C 38,28.94 36.62,22.15 34.25,17.66 C 31.88,13.17 28.46,11.02 25.06,10.5 L 24.55,10.4 z \" style=\"fill:#ececec; stroke:none;\" /></g><g id=\"black-bishop\" class=\"black bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zm6-4c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" fill=\"#000\" stroke-linecap=\"butt\" /><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke=\"#fff\" stroke-linejoin=\"miter\" /></g><g id=\"black-rook\" class=\"black rook\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12.5 32l1.5-2.5h17l1.5 2.5h-20zM12 36v-4h21v4H12z\" stroke-linecap=\"butt\" /><path d=\"M14 29.5v-13h17v13H14z\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M14 16.5L11 14h23l-3 2.5H14zM11 14V9h4v2h5V9h5v2h5V9h4v5H11z\" stroke-linecap=\"butt\" /><path d=\"M12 35.5h21M13 31.5h19M14 29.5h17M14 16.5h17M11 14h23\" fill=\"none\" stroke=\"#fff\" stroke-width=\"1\" stroke-linejoin=\"miter\" /></g><g id=\"black-queen\" class=\"black queen\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#000\" stroke=\"none\"><circle cx=\"6\" cy=\"12\" r=\"2.75\" /><circle cx=\"14\" cy=\"9\" r=\"2.75\" /><circle cx=\"22.5\" cy=\"8\" r=\"2.75\" /><circle cx=\"31\" cy=\"9\" r=\"2.75\" /><circle cx=\"39\" cy=\"12\" r=\"2.75\" /></g><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2.5-12.5L31 25l-.3-14.1-5.2 13.6-3-14.5-3 14.5-5.2-13.6L14 25 6.5 13.5 9 26zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11 38.5a35 35 1 0 0 23 0\" fill=\"none\" stroke-linecap=\"butt\" /><path d=\"M11 29a35 35 1 0 1 23 0M12.5 31.5h20M11.5 34.5a35 35 1 0 0 22 0M10.5 37.5a35 35 1 0 0 24 0\" fill=\"none\" stroke=\"#fff\" /></g><g id=\"black-king\" class=\"black king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#000\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#000\" /><path d=\"M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M32 29.5s8.5-4 6.03-9.65C34.15 14 25 18 22.5 24.5l.01 2.1-.01-2.1C20 18 9.906 14 6.997 19.85c-2.497 5.65 4.853 9 4.853 9M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" stroke=\"#fff\" /></g></defs><rect x=\"7.5\" y=\"7.5\" width=\"375\" height=\"375\" fill=\"none\" stroke=\"#212121\" stroke-width=\"15\" /><g transform=\"translate(20, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(20, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(65, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(65, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(110, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(110, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(155, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(155, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(200, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(200, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(245, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(245, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(290, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(290, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(335, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(335, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(0, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(375, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(0, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(375, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(0, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(375, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(0, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(375, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(0, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(375, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(0, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(375, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(0, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(375, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(0, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><g transform=\"translate(375, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><rect x=\"15\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark a1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"330\" width=\"45\" height=\"45\" class=\"square light b1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark c1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"330\" width=\"45\" height=\"45\" class=\"square light d1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark e1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"330\" width=\"45\" height=\"45\" class=\"square light f1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark g1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"330\" width=\"45\" height=\"45\" class=\"square light h1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"285\" width=\"45\" height=\"45\" class=\"square light a2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark b2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"285\" width=\"45\" height=\"45\" class=\"square light c2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark d2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"285\" width=\"45\" height=\"45\" class=\"square light e2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark f2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"285\" width=\"45\" height=\"45\" class=\"square light g2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark h2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark a3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"240\" width=\"45\" height=\"45\" class=\"square light b3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark c3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"240\" width=\"45\" height=\"45\" class=\"square light d3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark e3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"240\" width=\"45\" height=\"45\" class=\"square light f3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark g3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"240\" width=\"45\" height=\"45\" class=\"square light h3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"195\" width=\"45\" height=\"45\" class=\"square light a4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark b4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"195\" width=\"45\" height=\"45\" class=\"square light c4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark d4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"195\" width=\"45\" height=\"45\" class=\"square light e4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark f4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"195\" width=\"45\" height=\"45\" class=\"square light g4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark h4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark a5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"150\" width=\"45\" height=\"45\" class=\"square light b5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark c5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"150\" width=\"45\" height=\"45\" class=\"square light d5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark e5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"150\" width=\"45\" height=\"45\" stroke=\"none\" fill=\"gray\" /><rect x=\"240\" y=\"150\" width=\"45\" height=\"45\" class=\"square light f5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark g5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"150\" width=\"45\" height=\"45\" class=\"square light h5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"105\" width=\"45\" height=\"45\" class=\"square light a6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark b6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"105\" width=\"45\" height=\"45\" class=\"square light c6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark d6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"105\" width=\"45\" height=\"45\" class=\"square light e6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark f6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"105\" width=\"45\" height=\"45\" class=\"square light g6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark h6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark a7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"60\" width=\"45\" height=\"45\" class=\"square light b7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark c7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"60\" width=\"45\" height=\"45\" class=\"square light d7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark e7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"60\" width=\"45\" height=\"45\" class=\"square light f7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark g7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"60\" width=\"45\" height=\"45\" class=\"square light h7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"15\" width=\"45\" height=\"45\" class=\"square light a8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark b8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"15\" width=\"45\" height=\"45\" class=\"square light c8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark d8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"15\" width=\"45\" height=\"45\" class=\"square light e8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark f8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"15\" width=\"45\" height=\"45\" class=\"square light g8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark h8\" stroke=\"none\" fill=\"#d18b47\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(15, 330)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(60, 330)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(105, 330)\" /><use href=\"#white-queen\" xlink:href=\"#white-queen\" transform=\"translate(150, 330)\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(240, 330)\" /><use href=\"#white-king\" xlink:href=\"#white-king\" transform=\"translate(285, 330)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(15, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(60, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(105, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(240, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(285, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(330, 285)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(240, 240)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(105, 195)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(150, 195)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(195, 195)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(105, 150)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(240, 105)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(15, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(60, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(105, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(150, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(240, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(285, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(330, 60)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(15, 15)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(60, 15)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(105, 15)\" /><use href=\"#black-queen\" xlink:href=\"#black-queen\" transform=\"translate(150, 15)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(240, 15)\" /><use href=\"#black-king\" xlink:href=\"#black-king\" transform=\"translate(285, 15)\" /><line x1=\"217.5\" y1=\"172.5\" x2=\"199.54683438038543\" y2=\"190.45316561961457\" stroke=\"#15781B\" opacity=\"0.5019607843137255\" stroke-width=\"9.0\" stroke-linecap=\"butt\" class=\"arrow\" /><polygon points=\"175.68198051533946,214.31801948466054 211.47926131290842,202.38559255213755 187.61440744786245,178.52073868709158\" fill=\"#15781B\" opacity=\"0.5019607843137255\" class=\"arrow\" /></svg>" + "R N B Q . R K .</pre></desc><defs><g id=\"white-pawn\" class=\"white pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#fff\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"white-knight\" class=\"white knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#000000; stroke:#000000;\" /></g><g id=\"white-bishop\" class=\"white bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#fff\" stroke-linecap=\"butt\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zM15 32c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" /></g><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke-linejoin=\"miter\" /></g><g id=\"white-rook\" class=\"white rook\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12 36v-4h21v4H12zM11 14V9h4v2h5V9h5v2h5V9h4v5\" stroke-linecap=\"butt\" /><path d=\"M34 14l-3 3H14l-3-3\" /><path d=\"M31 17v12.5H14V17\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M31 29.5l1.5 2.5h-20l1.5-2.5\" /><path d=\"M11 14h23\" fill=\"none\" stroke-linejoin=\"miter\" /></g><g id=\"white-queen\" class=\"white queen\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M8 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM24.5 7.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM41 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM16 8.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM33 9a2 2 0 1 1-4 0 2 2 0 1 1 4 0z\" /><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2-12-7 11V11l-5.5 13.5-3-15-3 15-5.5-14V25L7 14l2 12zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11.5 30c3.5-1 18.5-1 22 0M12 33.5c6-1 15-1 21 0\" fill=\"none\" /></g><g id=\"white-king\" class=\"white king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#fff\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#fff\" /><path d=\"M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" /></g><g id=\"black-pawn\" class=\"black pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#000\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"black-knight\" class=\"black knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 24.55,10.4 L 24.1,11.85 L 24.6,12 C 27.75,13 30.25,14.49 32.5,18.75 C 34.75,23.01 35.75,29.06 35.25,39 L 35.2,39.5 L 37.45,39.5 L 37.5,39 C 38,28.94 36.62,22.15 34.25,17.66 C 31.88,13.17 28.46,11.02 25.06,10.5 L 24.55,10.4 z \" style=\"fill:#ececec; stroke:none;\" /></g><g id=\"black-bishop\" class=\"black bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zm6-4c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" fill=\"#000\" stroke-linecap=\"butt\" /><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke=\"#fff\" stroke-linejoin=\"miter\" /></g><g id=\"black-rook\" class=\"black rook\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12.5 32l1.5-2.5h17l1.5 2.5h-20zM12 36v-4h21v4H12z\" stroke-linecap=\"butt\" /><path d=\"M14 29.5v-13h17v13H14z\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M14 16.5L11 14h23l-3 2.5H14zM11 14V9h4v2h5V9h5v2h5V9h4v5H11z\" stroke-linecap=\"butt\" /><path d=\"M12 35.5h21M13 31.5h19M14 29.5h17M14 16.5h17M11 14h23\" fill=\"none\" stroke=\"#fff\" stroke-width=\"1\" stroke-linejoin=\"miter\" /></g><g id=\"black-queen\" class=\"black queen\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#000\" stroke=\"none\"><circle cx=\"6\" cy=\"12\" r=\"2.75\" /><circle cx=\"14\" cy=\"9\" r=\"2.75\" /><circle cx=\"22.5\" cy=\"8\" r=\"2.75\" /><circle cx=\"31\" cy=\"9\" r=\"2.75\" /><circle cx=\"39\" cy=\"12\" r=\"2.75\" /></g><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2.5-12.5L31 25l-.3-14.1-5.2 13.6-3-14.5-3 14.5-5.2-13.6L14 25 6.5 13.5 9 26zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11 38.5a35 35 1 0 0 23 0\" fill=\"none\" stroke-linecap=\"butt\" /><path d=\"M11 29a35 35 1 0 1 23 0M12.5 31.5h20M11.5 34.5a35 35 1 0 0 22 0M10.5 37.5a35 35 1 0 0 24 0\" fill=\"none\" stroke=\"#fff\" /></g><g id=\"black-king\" class=\"black king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#000\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#000\" /><path d=\"M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M32 29.5s8.5-4 6.03-9.65C34.15 14 25 18 22.5 24.5l.01 2.1-.01-2.1C20 18 9.906 14 6.997 19.85c-2.497 5.65 4.853 9 4.853 9M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" stroke=\"#fff\" /></g></defs><rect x=\"7.5\" y=\"7.5\" width=\"375\" height=\"375\" fill=\"none\" stroke=\"#212121\" stroke-width=\"15\" /><g transform=\"translate(20, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(20, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(65, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(65, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(110, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(110, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(155, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(155, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(200, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(200, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(245, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(245, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(290, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(290, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(335, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(335, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(0, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(375, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(0, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(375, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(0, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(375, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(0, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(375, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(0, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(375, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(0, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(375, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(0, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(375, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(0, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><g transform=\"translate(375, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><rect x=\"15\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark a1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"330\" width=\"45\" height=\"45\" class=\"square light b1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark c1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"330\" width=\"45\" height=\"45\" class=\"square light d1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark e1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"330\" width=\"45\" height=\"45\" class=\"square light f1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark g1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"330\" width=\"45\" height=\"45\" class=\"square light h1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"285\" width=\"45\" height=\"45\" class=\"square light a2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark b2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"285\" width=\"45\" height=\"45\" class=\"square light c2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark d2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"285\" width=\"45\" height=\"45\" class=\"square light e2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark f2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"285\" width=\"45\" height=\"45\" class=\"square light g2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark h2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark a3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"240\" width=\"45\" height=\"45\" class=\"square light b3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark c3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"240\" width=\"45\" height=\"45\" class=\"square light d3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark e3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"240\" width=\"45\" height=\"45\" class=\"square light f3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark g3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"240\" width=\"45\" height=\"45\" class=\"square light h3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"195\" width=\"45\" height=\"45\" class=\"square light a4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark b4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"195\" width=\"45\" height=\"45\" class=\"square light c4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark d4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"195\" width=\"45\" height=\"45\" class=\"square light e4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark f4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"195\" width=\"45\" height=\"45\" class=\"square light g4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark h4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark a5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"150\" width=\"45\" height=\"45\" class=\"square light b5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark c5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"150\" width=\"45\" height=\"45\" stroke=\"none\" fill=\"gray\" /><rect x=\"150\" y=\"150\" width=\"45\" height=\"45\" class=\"square light d5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark e5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"150\" width=\"45\" height=\"45\" class=\"square light f5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark g5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"150\" width=\"45\" height=\"45\" class=\"square light h5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"105\" width=\"45\" height=\"45\" class=\"square light a6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark b6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"105\" width=\"45\" height=\"45\" class=\"square light c6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark d6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"105\" width=\"45\" height=\"45\" class=\"square light e6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark f6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"105\" width=\"45\" height=\"45\" class=\"square light g6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark h6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark a7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"60\" width=\"45\" height=\"45\" class=\"square light b7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark c7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"60\" width=\"45\" height=\"45\" class=\"square light d7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark e7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"60\" width=\"45\" height=\"45\" class=\"square light f7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark g7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"60\" width=\"45\" height=\"45\" class=\"square light h7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"15\" width=\"45\" height=\"45\" class=\"square light a8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark b8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"15\" width=\"45\" height=\"45\" class=\"square light c8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark d8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"15\" width=\"45\" height=\"45\" class=\"square light e8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark f8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"15\" width=\"45\" height=\"45\" class=\"square light g8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark h8\" stroke=\"none\" fill=\"#d18b47\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(15, 330)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(60, 330)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(105, 330)\" /><use href=\"#white-queen\" xlink:href=\"#white-queen\" transform=\"translate(150, 330)\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(240, 330)\" /><use href=\"#white-king\" xlink:href=\"#white-king\" transform=\"translate(285, 330)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(15, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(60, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(105, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(240, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(285, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(330, 285)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(240, 240)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(105, 195)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(150, 195)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(195, 195)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(195, 150)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(60, 105)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(240, 105)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(15, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(60, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(105, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(150, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(240, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(285, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(330, 60)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(15, 15)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(60, 15)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(105, 15)\" /><use href=\"#black-queen\" xlink:href=\"#black-queen\" transform=\"translate(150, 15)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(240, 15)\" /><use href=\"#black-king\" xlink:href=\"#black-king\" transform=\"translate(285, 15)\" /><line x1=\"127.5\" y1=\"172.5\" x2=\"109.54683438038543\" y2=\"154.54683438038543\" stroke=\"#15781B\" opacity=\"0.5019607843137255\" stroke-width=\"9.0\" stroke-linecap=\"butt\" class=\"arrow\" /><polygon points=\"85.68198051533946,130.68198051533946 97.61440744786245,166.47926131290842 121.47926131290842,142.61440744786245\" fill=\"#15781B\" opacity=\"0.5019607843137255\" class=\"arrow\" /></svg>" ], "text/plain": [ - "'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 390 390\" width=\"200\" height=\"200\"><desc><pre>r n b q . r k .\\np p p p . p p p\\n. . . . . n . .\\n. . b . . . . .\\n. . B p P . . .\\n. . . . . N . .\\nP P P . . P P P\\nR N B Q . R K .</pre></desc><defs><g id=\"white-pawn\" class=\"white pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#fff\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"white-knight\" class=\"white knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#000000; stroke:#000000;\" /></g><g id=\"white-bishop\" class=\"white bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#fff\" stroke-linecap=\"butt\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zM15 32c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" /></g><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke-linejoin=\"miter\" /></g><g id=\"white-rook\" class=\"white rook\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12 36v-4h21v4H12zM11 14V9h4v2h5V9h5v2h5V9h4v5\" stroke-linecap=\"butt\" /><path d=\"M34 14l-3 3H14l-3-3\" /><path d=\"M31 17v12.5H14V17\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M31 29.5l1.5 2.5h-20l1.5-2.5\" /><path d=\"M11 14h23\" fill=\"none\" stroke-linejoin=\"miter\" /></g><g id=\"white-queen\" class=\"white queen\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M8 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM24.5 7.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM41 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM16 8.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM33 9a2 2 0 1 1-4 0 2 2 0 1 1 4 0z\" /><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2-12-7 11V11l-5.5 13.5-3-15-3 15-5.5-14V25L7 14l2 12zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11.5 30c3.5-1 18.5-1 22 0M12 33.5c6-1 15-1 21 0\" fill=\"none\" /></g><g id=\"white-king\" class=\"white king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#fff\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#fff\" /><path d=\"M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" /></g><g id=\"black-pawn\" class=\"black pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#000\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"black-knight\" class=\"black knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 24.55,10.4 L 24.1,11.85 L 24.6,12 C 27.75,13 30.25,14.49 32.5,18.75 C 34.75,23.01 35.75,29.06 35.25,39 L 35.2,39.5 L 37.45,39.5 L 37.5,39 C 38,28.94 36.62,22.15 34.25,17.66 C 31.88,13.17 28.46,11.02 25.06,10.5 L 24.55,10.4 z \" style=\"fill:#ececec; stroke:none;\" /></g><g id=\"black-bishop\" class=\"black bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zm6-4c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" fill=\"#000\" stroke-linecap=\"butt\" /><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke=\"#fff\" stroke-linejoin=\"miter\" /></g><g id=\"black-rook\" class=\"black rook\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12.5 32l1.5-2.5h17l1.5 2.5h-20zM12 36v-4h21v4H12z\" stroke-linecap=\"butt\" /><path d=\"M14 29.5v-13h17v13H14z\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M14 16.5L11 14h23l-3 2.5H14zM11 14V9h4v2h5V9h5v2h5V9h4v5H11z\" stroke-linecap=\"butt\" /><path d=\"M12 35.5h21M13 31.5h19M14 29.5h17M14 16.5h17M11 14h23\" fill=\"none\" stroke=\"#fff\" stroke-width=\"1\" stroke-linejoin=\"miter\" /></g><g id=\"black-queen\" class=\"black queen\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#000\" stroke=\"none\"><circle cx=\"6\" cy=\"12\" r=\"2.75\" /><circle cx=\"14\" cy=\"9\" r=\"2.75\" /><circle cx=\"22.5\" cy=\"8\" r=\"2.75\" /><circle cx=\"31\" cy=\"9\" r=\"2.75\" /><circle cx=\"39\" cy=\"12\" r=\"2.75\" /></g><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2.5-12.5L31 25l-.3-14.1-5.2 13.6-3-14.5-3 14.5-5.2-13.6L14 25 6.5 13.5 9 26zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11 38.5a35 35 1 0 0 23 0\" fill=\"none\" stroke-linecap=\"butt\" /><path d=\"M11 29a35 35 1 0 1 23 0M12.5 31.5h20M11.5 34.5a35 35 1 0 0 22 0M10.5 37.5a35 35 1 0 0 24 0\" fill=\"none\" stroke=\"#fff\" /></g><g id=\"black-king\" class=\"black king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#000\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#000\" /><path d=\"M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M32 29.5s8.5-4 6.03-9.65C34.15 14 25 18 22.5 24.5l.01 2.1-.01-2.1C20 18 9.906 14 6.997 19.85c-2.497 5.65 4.853 9 4.853 9M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" stroke=\"#fff\" /></g></defs><rect x=\"7.5\" y=\"7.5\" width=\"375\" height=\"375\" fill=\"none\" stroke=\"#212121\" stroke-width=\"15\" /><g transform=\"translate(20, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(20, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(65, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(65, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(110, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(110, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(155, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(155, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(200, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(200, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(245, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(245, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(290, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(290, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(335, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(335, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(0, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(375, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(0, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(375, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(0, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(375, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(0, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(375, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(0, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(375, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(0, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(375, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(0, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(375, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(0, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><g transform=\"translate(375, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><rect x=\"15\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark a1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"330\" width=\"45\" height=\"45\" class=\"square light b1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark c1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"330\" width=\"45\" height=\"45\" class=\"square light d1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark e1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"330\" width=\"45\" height=\"45\" class=\"square light f1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark g1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"330\" width=\"45\" height=\"45\" class=\"square light h1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"285\" width=\"45\" height=\"45\" class=\"square light a2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark b2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"285\" width=\"45\" height=\"45\" class=\"square light c2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark d2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"285\" width=\"45\" height=\"45\" class=\"square light e2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark f2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"285\" width=\"45\" height=\"45\" class=\"square light g2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark h2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark a3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"240\" width=\"45\" height=\"45\" class=\"square light b3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark c3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"240\" width=\"45\" height=\"45\" class=\"square light d3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark e3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"240\" width=\"45\" height=\"45\" class=\"square light f3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark g3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"240\" width=\"45\" height=\"45\" class=\"square light h3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"195\" width=\"45\" height=\"45\" class=\"square light a4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark b4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"195\" width=\"45\" height=\"45\" class=\"square light c4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark d4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"195\" width=\"45\" height=\"45\" class=\"square light e4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark f4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"195\" width=\"45\" height=\"45\" class=\"square light g4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark h4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark a5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"150\" width=\"45\" height=\"45\" class=\"square light b5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark c5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"150\" width=\"45\" height=\"45\" class=\"square light d5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark e5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"150\" width=\"45\" height=\"45\" stroke=\"none\" fill=\"gray\" /><rect x=\"240\" y=\"150\" width=\"45\" height=\"45\" class=\"square light f5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark g5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"150\" width=\"45\" height=\"45\" class=\"square light h5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"105\" width=\"45\" height=\"45\" class=\"square light a6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark b6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"105\" width=\"45\" height=\"45\" class=\"square light c6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark d6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"105\" width=\"45\" height=\"45\" class=\"square light e6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark f6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"105\" width=\"45\" height=\"45\" class=\"square light g6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark h6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark a7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"60\" width=\"45\" height=\"45\" class=\"square light b7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark c7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"60\" width=\"45\" height=\"45\" class=\"square light d7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark e7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"60\" width=\"45\" height=\"45\" class=\"square light f7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark g7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"60\" width=\"45\" height=\"45\" class=\"square light h7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"15\" width=\"45\" height=\"45\" class=\"square light a8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark b8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"15\" width=\"45\" height=\"45\" class=\"square light c8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark d8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"15\" width=\"45\" height=\"45\" class=\"square light e8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark f8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"15\" width=\"45\" height=\"45\" class=\"square light g8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark h8\" stroke=\"none\" fill=\"#d18b47\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(15, 330)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(60, 330)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(105, 330)\" /><use href=\"#white-queen\" xlink:href=\"#white-queen\" transform=\"translate(150, 330)\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(240, 330)\" /><use href=\"#white-king\" xlink:href=\"#white-king\" transform=\"translate(285, 330)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(15, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(60, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(105, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(240, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(285, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(330, 285)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(240, 240)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(105, 195)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(150, 195)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(195, 195)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(105, 150)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(240, 105)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(15, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(60, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(105, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(150, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(240, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(285, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(330, 60)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(15, 15)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(60, 15)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(105, 15)\" /><use href=\"#black-queen\" xlink:href=\"#black-queen\" transform=\"translate(150, 15)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(240, 15)\" /><use href=\"#black-king\" xlink:href=\"#black-king\" transform=\"translate(285, 15)\" /><line x1=\"217.5\" y1=\"172.5\" x2=\"199.54683438038543\" y2=\"190.45316561961457\" stroke=\"#15781B\" opacity=\"0.5019607843137255\" stroke-width=\"9.0\" stroke-linecap=\"butt\" class=\"arrow\" /><polygon points=\"175.68198051533946,214.31801948466054 211.47926131290842,202.38559255213755 187.61440744786245,178.52073868709158\" fill=\"#15781B\" opacity=\"0.5019607843137255\" class=\"arrow\" /></svg>'" + "'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 390 390\" width=\"200\" height=\"200\"><desc><pre>r n b q . r k .\\np p p p . p p p\\n. b . . . n . .\\n. . . . p . . .\\n. . B P P . . .\\n. . . . . N . .\\nP P P . . P P P\\nR N B Q . R K .</pre></desc><defs><g id=\"white-pawn\" class=\"white pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#fff\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"white-knight\" class=\"white knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#000000; stroke:#000000;\" /></g><g id=\"white-bishop\" class=\"white bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#fff\" stroke-linecap=\"butt\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zM15 32c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" /></g><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke-linejoin=\"miter\" /></g><g id=\"white-rook\" class=\"white rook\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12 36v-4h21v4H12zM11 14V9h4v2h5V9h5v2h5V9h4v5\" stroke-linecap=\"butt\" /><path d=\"M34 14l-3 3H14l-3-3\" /><path d=\"M31 17v12.5H14V17\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M31 29.5l1.5 2.5h-20l1.5-2.5\" /><path d=\"M11 14h23\" fill=\"none\" stroke-linejoin=\"miter\" /></g><g id=\"white-queen\" class=\"white queen\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M8 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM24.5 7.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM41 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM16 8.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM33 9a2 2 0 1 1-4 0 2 2 0 1 1 4 0z\" /><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2-12-7 11V11l-5.5 13.5-3-15-3 15-5.5-14V25L7 14l2 12zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11.5 30c3.5-1 18.5-1 22 0M12 33.5c6-1 15-1 21 0\" fill=\"none\" /></g><g id=\"white-king\" class=\"white king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#fff\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#fff\" /><path d=\"M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" /></g><g id=\"black-pawn\" class=\"black pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#000\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"black-knight\" class=\"black knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 24.55,10.4 L 24.1,11.85 L 24.6,12 C 27.75,13 30.25,14.49 32.5,18.75 C 34.75,23.01 35.75,29.06 35.25,39 L 35.2,39.5 L 37.45,39.5 L 37.5,39 C 38,28.94 36.62,22.15 34.25,17.66 C 31.88,13.17 28.46,11.02 25.06,10.5 L 24.55,10.4 z \" style=\"fill:#ececec; stroke:none;\" /></g><g id=\"black-bishop\" class=\"black bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zm6-4c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" fill=\"#000\" stroke-linecap=\"butt\" /><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke=\"#fff\" stroke-linejoin=\"miter\" /></g><g id=\"black-rook\" class=\"black rook\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12.5 32l1.5-2.5h17l1.5 2.5h-20zM12 36v-4h21v4H12z\" stroke-linecap=\"butt\" /><path d=\"M14 29.5v-13h17v13H14z\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M14 16.5L11 14h23l-3 2.5H14zM11 14V9h4v2h5V9h5v2h5V9h4v5H11z\" stroke-linecap=\"butt\" /><path d=\"M12 35.5h21M13 31.5h19M14 29.5h17M14 16.5h17M11 14h23\" fill=\"none\" stroke=\"#fff\" stroke-width=\"1\" stroke-linejoin=\"miter\" /></g><g id=\"black-queen\" class=\"black queen\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#000\" stroke=\"none\"><circle cx=\"6\" cy=\"12\" r=\"2.75\" /><circle cx=\"14\" cy=\"9\" r=\"2.75\" /><circle cx=\"22.5\" cy=\"8\" r=\"2.75\" /><circle cx=\"31\" cy=\"9\" r=\"2.75\" /><circle cx=\"39\" cy=\"12\" r=\"2.75\" /></g><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2.5-12.5L31 25l-.3-14.1-5.2 13.6-3-14.5-3 14.5-5.2-13.6L14 25 6.5 13.5 9 26zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11 38.5a35 35 1 0 0 23 0\" fill=\"none\" stroke-linecap=\"butt\" /><path d=\"M11 29a35 35 1 0 1 23 0M12.5 31.5h20M11.5 34.5a35 35 1 0 0 22 0M10.5 37.5a35 35 1 0 0 24 0\" fill=\"none\" stroke=\"#fff\" /></g><g id=\"black-king\" class=\"black king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#000\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#000\" /><path d=\"M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M32 29.5s8.5-4 6.03-9.65C34.15 14 25 18 22.5 24.5l.01 2.1-.01-2.1C20 18 9.906 14 6.997 19.85c-2.497 5.65 4.853 9 4.853 9M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" stroke=\"#fff\" /></g></defs><rect x=\"7.5\" y=\"7.5\" width=\"375\" height=\"375\" fill=\"none\" stroke=\"#212121\" stroke-width=\"15\" /><g transform=\"translate(20, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(20, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(65, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(65, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(110, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(110, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(155, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(155, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(200, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(200, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(245, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(245, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(290, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(290, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(335, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(335, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(0, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(375, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(0, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(375, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(0, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(375, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(0, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(375, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(0, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(375, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(0, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(375, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(0, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(375, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(0, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><g transform=\"translate(375, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><rect x=\"15\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark a1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"330\" width=\"45\" height=\"45\" class=\"square light b1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark c1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"330\" width=\"45\" height=\"45\" class=\"square light d1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark e1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"330\" width=\"45\" height=\"45\" class=\"square light f1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark g1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"330\" width=\"45\" height=\"45\" class=\"square light h1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"285\" width=\"45\" height=\"45\" class=\"square light a2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark b2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"285\" width=\"45\" height=\"45\" class=\"square light c2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark d2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"285\" width=\"45\" height=\"45\" class=\"square light e2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark f2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"285\" width=\"45\" height=\"45\" class=\"square light g2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark h2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark a3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"240\" width=\"45\" height=\"45\" class=\"square light b3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark c3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"240\" width=\"45\" height=\"45\" class=\"square light d3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark e3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"240\" width=\"45\" height=\"45\" class=\"square light f3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark g3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"240\" width=\"45\" height=\"45\" class=\"square light h3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"195\" width=\"45\" height=\"45\" class=\"square light a4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark b4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"195\" width=\"45\" height=\"45\" class=\"square light c4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark d4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"195\" width=\"45\" height=\"45\" class=\"square light e4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark f4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"195\" width=\"45\" height=\"45\" class=\"square light g4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark h4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark a5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"150\" width=\"45\" height=\"45\" class=\"square light b5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark c5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"150\" width=\"45\" height=\"45\" stroke=\"none\" fill=\"gray\" /><rect x=\"150\" y=\"150\" width=\"45\" height=\"45\" class=\"square light d5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark e5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"150\" width=\"45\" height=\"45\" class=\"square light f5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark g5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"150\" width=\"45\" height=\"45\" class=\"square light h5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"105\" width=\"45\" height=\"45\" class=\"square light a6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark b6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"105\" width=\"45\" height=\"45\" class=\"square light c6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark d6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"105\" width=\"45\" height=\"45\" class=\"square light e6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark f6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"105\" width=\"45\" height=\"45\" class=\"square light g6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark h6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark a7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"60\" width=\"45\" height=\"45\" class=\"square light b7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark c7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"60\" width=\"45\" height=\"45\" class=\"square light d7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark e7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"60\" width=\"45\" height=\"45\" class=\"square light f7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark g7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"60\" width=\"45\" height=\"45\" class=\"square light h7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"15\" width=\"45\" height=\"45\" class=\"square light a8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark b8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"15\" width=\"45\" height=\"45\" class=\"square light c8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark d8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"15\" width=\"45\" height=\"45\" class=\"square light e8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark f8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"15\" width=\"45\" height=\"45\" class=\"square light g8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark h8\" stroke=\"none\" fill=\"#d18b47\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(15, 330)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(60, 330)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(105, 330)\" /><use href=\"#white-queen\" xlink:href=\"#white-queen\" transform=\"translate(150, 330)\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(240, 330)\" /><use href=\"#white-king\" xlink:href=\"#white-king\" transform=\"translate(285, 330)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(15, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(60, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(105, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(240, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(285, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(330, 285)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(240, 240)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(105, 195)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(150, 195)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(195, 195)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(195, 150)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(60, 105)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(240, 105)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(15, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(60, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(105, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(150, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(240, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(285, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(330, 60)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(15, 15)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(60, 15)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(105, 15)\" /><use href=\"#black-queen\" xlink:href=\"#black-queen\" transform=\"translate(150, 15)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(240, 15)\" /><use href=\"#black-king\" xlink:href=\"#black-king\" transform=\"translate(285, 15)\" /><line x1=\"127.5\" y1=\"172.5\" x2=\"109.54683438038543\" y2=\"154.54683438038543\" stroke=\"#15781B\" opacity=\"0.5019607843137255\" stroke-width=\"9.0\" stroke-linecap=\"butt\" class=\"arrow\" /><polygon points=\"85.68198051533946,130.68198051533946 97.61440744786245,166.47926131290842 121.47926131290842,142.61440744786245\" fill=\"#15781B\" opacity=\"0.5019607843137255\" class=\"arrow\" /></svg>'" ] }, "metadata": {}, @@ -632,7 +647,11 @@ "text": [ "\u001b[33mPlayer black\u001b[0m (to Player white):\n", "\n", - "exd4. Taking your pawn, opening up the center a bit more. Your move!\n", + "Indeed, opening lines for your major pieces is a crucial part of the game. I'll move my bishop from c5 to b6. \n", + "\n", + "c5b6\n", + "\n", + "Chess is a lot like a dance, don't you think? Each piece moving in harmony with the others. Your move.\n", "\n", "--------------------------------------------------------------------------------\n" ] @@ -642,15 +661,15 @@ "image/svg+xml": [ "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 390 390\" width=\"200\" height=\"200\"><desc><pre>r n b q . r k .\n", "p p p p . p p p\n", - ". . . . . n . .\n", - ". . b . . . . .\n", - ". . B N P . . .\n", - ". . . . . . . .\n", - "P P P . . P P P\n", - "R N B Q . R K .</pre></desc><defs><g id=\"white-pawn\" class=\"white pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#fff\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"white-knight\" class=\"white knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#000000; stroke:#000000;\" /></g><g id=\"white-bishop\" class=\"white bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#fff\" stroke-linecap=\"butt\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zM15 32c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" /></g><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke-linejoin=\"miter\" /></g><g id=\"white-rook\" class=\"white rook\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12 36v-4h21v4H12zM11 14V9h4v2h5V9h5v2h5V9h4v5\" stroke-linecap=\"butt\" /><path d=\"M34 14l-3 3H14l-3-3\" /><path d=\"M31 17v12.5H14V17\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M31 29.5l1.5 2.5h-20l1.5-2.5\" /><path d=\"M11 14h23\" fill=\"none\" stroke-linejoin=\"miter\" /></g><g id=\"white-queen\" class=\"white queen\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M8 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM24.5 7.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM41 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM16 8.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM33 9a2 2 0 1 1-4 0 2 2 0 1 1 4 0z\" /><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2-12-7 11V11l-5.5 13.5-3-15-3 15-5.5-14V25L7 14l2 12zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11.5 30c3.5-1 18.5-1 22 0M12 33.5c6-1 15-1 21 0\" fill=\"none\" /></g><g id=\"white-king\" class=\"white king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#fff\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#fff\" /><path d=\"M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" /></g><g id=\"black-pawn\" class=\"black pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#000\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"black-knight\" class=\"black knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 24.55,10.4 L 24.1,11.85 L 24.6,12 C 27.75,13 30.25,14.49 32.5,18.75 C 34.75,23.01 35.75,29.06 35.25,39 L 35.2,39.5 L 37.45,39.5 L 37.5,39 C 38,28.94 36.62,22.15 34.25,17.66 C 31.88,13.17 28.46,11.02 25.06,10.5 L 24.55,10.4 z \" style=\"fill:#ececec; stroke:none;\" /></g><g id=\"black-bishop\" class=\"black bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zm6-4c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" fill=\"#000\" stroke-linecap=\"butt\" /><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke=\"#fff\" stroke-linejoin=\"miter\" /></g><g id=\"black-rook\" class=\"black rook\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12.5 32l1.5-2.5h17l1.5 2.5h-20zM12 36v-4h21v4H12z\" stroke-linecap=\"butt\" /><path d=\"M14 29.5v-13h17v13H14z\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M14 16.5L11 14h23l-3 2.5H14zM11 14V9h4v2h5V9h5v2h5V9h4v5H11z\" stroke-linecap=\"butt\" /><path d=\"M12 35.5h21M13 31.5h19M14 29.5h17M14 16.5h17M11 14h23\" fill=\"none\" stroke=\"#fff\" stroke-width=\"1\" stroke-linejoin=\"miter\" /></g><g id=\"black-queen\" class=\"black queen\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#000\" stroke=\"none\"><circle cx=\"6\" cy=\"12\" r=\"2.75\" /><circle cx=\"14\" cy=\"9\" r=\"2.75\" /><circle cx=\"22.5\" cy=\"8\" r=\"2.75\" /><circle cx=\"31\" cy=\"9\" r=\"2.75\" /><circle cx=\"39\" cy=\"12\" r=\"2.75\" /></g><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2.5-12.5L31 25l-.3-14.1-5.2 13.6-3-14.5-3 14.5-5.2-13.6L14 25 6.5 13.5 9 26zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11 38.5a35 35 1 0 0 23 0\" fill=\"none\" stroke-linecap=\"butt\" /><path d=\"M11 29a35 35 1 0 1 23 0M12.5 31.5h20M11.5 34.5a35 35 1 0 0 22 0M10.5 37.5a35 35 1 0 0 24 0\" fill=\"none\" stroke=\"#fff\" /></g><g id=\"black-king\" class=\"black king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#000\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#000\" /><path d=\"M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M32 29.5s8.5-4 6.03-9.65C34.15 14 25 18 22.5 24.5l.01 2.1-.01-2.1C20 18 9.906 14 6.997 19.85c-2.497 5.65 4.853 9 4.853 9M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" stroke=\"#fff\" /></g></defs><rect x=\"7.5\" y=\"7.5\" width=\"375\" height=\"375\" fill=\"none\" stroke=\"#212121\" stroke-width=\"15\" /><g transform=\"translate(20, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(20, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(65, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(65, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(110, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(110, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(155, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(155, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(200, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(200, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(245, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(245, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(290, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(290, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(335, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(335, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(0, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(375, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(0, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(375, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(0, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(375, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(0, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(375, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(0, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(375, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(0, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(375, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(0, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(375, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(0, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><g transform=\"translate(375, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><rect x=\"15\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark a1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"330\" width=\"45\" height=\"45\" class=\"square light b1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark c1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"330\" width=\"45\" height=\"45\" class=\"square light d1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark e1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"330\" width=\"45\" height=\"45\" class=\"square light f1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark g1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"330\" width=\"45\" height=\"45\" class=\"square light h1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"285\" width=\"45\" height=\"45\" class=\"square light a2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark b2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"285\" width=\"45\" height=\"45\" class=\"square light c2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark d2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"285\" width=\"45\" height=\"45\" class=\"square light e2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark f2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"285\" width=\"45\" height=\"45\" class=\"square light g2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark h2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark a3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"240\" width=\"45\" height=\"45\" class=\"square light b3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark c3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"240\" width=\"45\" height=\"45\" class=\"square light d3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark e3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"240\" width=\"45\" height=\"45\" class=\"square light f3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"240\" width=\"45\" height=\"45\" stroke=\"none\" fill=\"gray\" /><rect x=\"285\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark g3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"240\" width=\"45\" height=\"45\" class=\"square light h3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"195\" width=\"45\" height=\"45\" class=\"square light a4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark b4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"195\" width=\"45\" height=\"45\" class=\"square light c4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark d4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"195\" width=\"45\" height=\"45\" class=\"square light e4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark f4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"195\" width=\"45\" height=\"45\" class=\"square light g4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark h4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark a5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"150\" width=\"45\" height=\"45\" class=\"square light b5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark c5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"150\" width=\"45\" height=\"45\" class=\"square light d5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark e5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"150\" width=\"45\" height=\"45\" class=\"square light f5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark g5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"150\" width=\"45\" height=\"45\" class=\"square light h5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"105\" width=\"45\" height=\"45\" class=\"square light a6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark b6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"105\" width=\"45\" height=\"45\" class=\"square light c6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark d6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"105\" width=\"45\" height=\"45\" class=\"square light e6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark f6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"105\" width=\"45\" height=\"45\" class=\"square light g6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark h6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark a7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"60\" width=\"45\" height=\"45\" class=\"square light b7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark c7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"60\" width=\"45\" height=\"45\" class=\"square light d7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark e7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"60\" width=\"45\" height=\"45\" class=\"square light f7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark g7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"60\" width=\"45\" height=\"45\" class=\"square light h7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"15\" width=\"45\" height=\"45\" class=\"square light a8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark b8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"15\" width=\"45\" height=\"45\" class=\"square light c8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark d8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"15\" width=\"45\" height=\"45\" class=\"square light e8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark f8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"15\" width=\"45\" height=\"45\" class=\"square light g8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark h8\" stroke=\"none\" fill=\"#d18b47\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(15, 330)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(60, 330)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(105, 330)\" /><use href=\"#white-queen\" xlink:href=\"#white-queen\" transform=\"translate(150, 330)\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(240, 330)\" /><use href=\"#white-king\" xlink:href=\"#white-king\" transform=\"translate(285, 330)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(15, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(60, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(105, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(240, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(285, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(330, 285)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(105, 195)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(150, 195)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(195, 195)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(105, 150)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(240, 105)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(15, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(60, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(105, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(150, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(240, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(285, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(330, 60)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(15, 15)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(60, 15)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(105, 15)\" /><use href=\"#black-queen\" xlink:href=\"#black-queen\" transform=\"translate(150, 15)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(240, 15)\" /><use href=\"#black-king\" xlink:href=\"#black-king\" transform=\"translate(285, 15)\" /><line x1=\"262.5\" y1=\"262.5\" x2=\"206.7118400557468\" y2=\"234.6059200278734\" stroke=\"#15781B\" opacity=\"0.5019607843137255\" stroke-width=\"9.0\" stroke-linecap=\"butt\" class=\"arrow\" /><polygon points=\"176.5249223594996,219.5124611797498 199.165110631685,249.69937887599698 214.25856947980859,219.5124611797498\" fill=\"#15781B\" opacity=\"0.5019607843137255\" class=\"arrow\" /></svg>" + ". b . . . n . .\n", + ". . . . p . . .\n", + ". . B P P . . .\n", + ". . . . . N . .\n", + "P P P . Q P P P\n", + "R N B . . R K .</pre></desc><defs><g id=\"white-pawn\" class=\"white pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#fff\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"white-knight\" class=\"white knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#000000; stroke:#000000;\" /></g><g id=\"white-bishop\" class=\"white bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#fff\" stroke-linecap=\"butt\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zM15 32c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" /></g><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke-linejoin=\"miter\" /></g><g id=\"white-rook\" class=\"white rook\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12 36v-4h21v4H12zM11 14V9h4v2h5V9h5v2h5V9h4v5\" stroke-linecap=\"butt\" /><path d=\"M34 14l-3 3H14l-3-3\" /><path d=\"M31 17v12.5H14V17\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M31 29.5l1.5 2.5h-20l1.5-2.5\" /><path d=\"M11 14h23\" fill=\"none\" stroke-linejoin=\"miter\" /></g><g id=\"white-queen\" class=\"white queen\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M8 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM24.5 7.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM41 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM16 8.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM33 9a2 2 0 1 1-4 0 2 2 0 1 1 4 0z\" /><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2-12-7 11V11l-5.5 13.5-3-15-3 15-5.5-14V25L7 14l2 12zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11.5 30c3.5-1 18.5-1 22 0M12 33.5c6-1 15-1 21 0\" fill=\"none\" /></g><g id=\"white-king\" class=\"white king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#fff\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#fff\" /><path d=\"M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" /></g><g id=\"black-pawn\" class=\"black pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#000\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"black-knight\" class=\"black knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 24.55,10.4 L 24.1,11.85 L 24.6,12 C 27.75,13 30.25,14.49 32.5,18.75 C 34.75,23.01 35.75,29.06 35.25,39 L 35.2,39.5 L 37.45,39.5 L 37.5,39 C 38,28.94 36.62,22.15 34.25,17.66 C 31.88,13.17 28.46,11.02 25.06,10.5 L 24.55,10.4 z \" style=\"fill:#ececec; stroke:none;\" /></g><g id=\"black-bishop\" class=\"black bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zm6-4c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" fill=\"#000\" stroke-linecap=\"butt\" /><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke=\"#fff\" stroke-linejoin=\"miter\" /></g><g id=\"black-rook\" class=\"black rook\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12.5 32l1.5-2.5h17l1.5 2.5h-20zM12 36v-4h21v4H12z\" stroke-linecap=\"butt\" /><path d=\"M14 29.5v-13h17v13H14z\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M14 16.5L11 14h23l-3 2.5H14zM11 14V9h4v2h5V9h5v2h5V9h4v5H11z\" stroke-linecap=\"butt\" /><path d=\"M12 35.5h21M13 31.5h19M14 29.5h17M14 16.5h17M11 14h23\" fill=\"none\" stroke=\"#fff\" stroke-width=\"1\" stroke-linejoin=\"miter\" /></g><g id=\"black-queen\" class=\"black queen\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#000\" stroke=\"none\"><circle cx=\"6\" cy=\"12\" r=\"2.75\" /><circle cx=\"14\" cy=\"9\" r=\"2.75\" /><circle cx=\"22.5\" cy=\"8\" r=\"2.75\" /><circle cx=\"31\" cy=\"9\" r=\"2.75\" /><circle cx=\"39\" cy=\"12\" r=\"2.75\" /></g><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2.5-12.5L31 25l-.3-14.1-5.2 13.6-3-14.5-3 14.5-5.2-13.6L14 25 6.5 13.5 9 26zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11 38.5a35 35 1 0 0 23 0\" fill=\"none\" stroke-linecap=\"butt\" /><path d=\"M11 29a35 35 1 0 1 23 0M12.5 31.5h20M11.5 34.5a35 35 1 0 0 22 0M10.5 37.5a35 35 1 0 0 24 0\" fill=\"none\" stroke=\"#fff\" /></g><g id=\"black-king\" class=\"black king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#000\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#000\" /><path d=\"M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M32 29.5s8.5-4 6.03-9.65C34.15 14 25 18 22.5 24.5l.01 2.1-.01-2.1C20 18 9.906 14 6.997 19.85c-2.497 5.65 4.853 9 4.853 9M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" stroke=\"#fff\" /></g></defs><rect x=\"7.5\" y=\"7.5\" width=\"375\" height=\"375\" fill=\"none\" stroke=\"#212121\" stroke-width=\"15\" /><g transform=\"translate(20, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(20, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(65, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(65, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(110, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(110, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(155, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(155, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(200, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(200, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(245, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(245, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(290, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(290, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(335, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(335, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(0, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(375, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(0, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(375, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(0, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(375, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(0, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(375, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(0, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(375, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(0, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(375, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(0, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(375, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(0, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><g transform=\"translate(375, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><rect x=\"15\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark a1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"330\" width=\"45\" height=\"45\" class=\"square light b1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark c1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"330\" width=\"45\" height=\"45\" class=\"square light d1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"330\" width=\"45\" height=\"45\" stroke=\"none\" fill=\"gray\" /><rect x=\"195\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark e1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"330\" width=\"45\" height=\"45\" class=\"square light f1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark g1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"330\" width=\"45\" height=\"45\" class=\"square light h1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"285\" width=\"45\" height=\"45\" class=\"square light a2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark b2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"285\" width=\"45\" height=\"45\" class=\"square light c2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark d2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"285\" width=\"45\" height=\"45\" class=\"square light e2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark f2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"285\" width=\"45\" height=\"45\" class=\"square light g2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark h2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark a3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"240\" width=\"45\" height=\"45\" class=\"square light b3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark c3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"240\" width=\"45\" height=\"45\" class=\"square light d3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark e3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"240\" width=\"45\" height=\"45\" class=\"square light f3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark g3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"240\" width=\"45\" height=\"45\" class=\"square light h3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"195\" width=\"45\" height=\"45\" class=\"square light a4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark b4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"195\" width=\"45\" height=\"45\" class=\"square light c4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark d4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"195\" width=\"45\" height=\"45\" class=\"square light e4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark f4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"195\" width=\"45\" height=\"45\" class=\"square light g4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark h4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark a5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"150\" width=\"45\" height=\"45\" class=\"square light b5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark c5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"150\" width=\"45\" height=\"45\" class=\"square light d5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark e5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"150\" width=\"45\" height=\"45\" class=\"square light f5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark g5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"150\" width=\"45\" height=\"45\" class=\"square light h5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"105\" width=\"45\" height=\"45\" class=\"square light a6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark b6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"105\" width=\"45\" height=\"45\" class=\"square light c6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark d6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"105\" width=\"45\" height=\"45\" class=\"square light e6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark f6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"105\" width=\"45\" height=\"45\" class=\"square light g6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark h6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark a7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"60\" width=\"45\" height=\"45\" class=\"square light b7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark c7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"60\" width=\"45\" height=\"45\" class=\"square light d7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark e7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"60\" width=\"45\" height=\"45\" class=\"square light f7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark g7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"60\" width=\"45\" height=\"45\" class=\"square light h7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"15\" width=\"45\" height=\"45\" class=\"square light a8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark b8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"15\" width=\"45\" height=\"45\" class=\"square light c8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark d8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"15\" width=\"45\" height=\"45\" class=\"square light e8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark f8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"15\" width=\"45\" height=\"45\" class=\"square light g8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark h8\" stroke=\"none\" fill=\"#d18b47\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(15, 330)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(60, 330)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(105, 330)\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(240, 330)\" /><use href=\"#white-king\" xlink:href=\"#white-king\" transform=\"translate(285, 330)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(15, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(60, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(105, 285)\" /><use href=\"#white-queen\" xlink:href=\"#white-queen\" transform=\"translate(195, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(240, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(285, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(330, 285)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(240, 240)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(105, 195)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(150, 195)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(195, 195)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(195, 150)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(60, 105)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(240, 105)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(15, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(60, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(105, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(150, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(240, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(285, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(330, 60)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(15, 15)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(60, 15)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(105, 15)\" /><use href=\"#black-queen\" xlink:href=\"#black-queen\" transform=\"translate(150, 15)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(240, 15)\" /><use href=\"#black-king\" xlink:href=\"#black-king\" transform=\"translate(285, 15)\" /><line x1=\"172.5\" y1=\"352.5\" x2=\"190.45316561961457\" y2=\"334.54683438038546\" stroke=\"#15781B\" opacity=\"0.5019607843137255\" stroke-width=\"9.0\" stroke-linecap=\"butt\" class=\"arrow\" /><polygon points=\"214.31801948466054,310.6819805153395 178.52073868709158,322.61440744786245 202.38559255213755,346.4792613129085\" fill=\"#15781B\" opacity=\"0.5019607843137255\" class=\"arrow\" /></svg>" ], "text/plain": [ - "'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 390 390\" width=\"200\" height=\"200\"><desc><pre>r n b q . r k .\\np p p p . p p p\\n. . . . . n . .\\n. . b . . . . .\\n. . B N P . . .\\n. . . . . . . .\\nP P P . . P P P\\nR N B Q . R K .</pre></desc><defs><g id=\"white-pawn\" class=\"white pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#fff\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"white-knight\" class=\"white knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#000000; stroke:#000000;\" /></g><g id=\"white-bishop\" class=\"white bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#fff\" stroke-linecap=\"butt\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zM15 32c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" /></g><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke-linejoin=\"miter\" /></g><g id=\"white-rook\" class=\"white rook\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12 36v-4h21v4H12zM11 14V9h4v2h5V9h5v2h5V9h4v5\" stroke-linecap=\"butt\" /><path d=\"M34 14l-3 3H14l-3-3\" /><path d=\"M31 17v12.5H14V17\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M31 29.5l1.5 2.5h-20l1.5-2.5\" /><path d=\"M11 14h23\" fill=\"none\" stroke-linejoin=\"miter\" /></g><g id=\"white-queen\" class=\"white queen\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M8 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM24.5 7.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM41 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM16 8.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM33 9a2 2 0 1 1-4 0 2 2 0 1 1 4 0z\" /><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2-12-7 11V11l-5.5 13.5-3-15-3 15-5.5-14V25L7 14l2 12zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11.5 30c3.5-1 18.5-1 22 0M12 33.5c6-1 15-1 21 0\" fill=\"none\" /></g><g id=\"white-king\" class=\"white king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#fff\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#fff\" /><path d=\"M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" /></g><g id=\"black-pawn\" class=\"black pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#000\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"black-knight\" class=\"black knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 24.55,10.4 L 24.1,11.85 L 24.6,12 C 27.75,13 30.25,14.49 32.5,18.75 C 34.75,23.01 35.75,29.06 35.25,39 L 35.2,39.5 L 37.45,39.5 L 37.5,39 C 38,28.94 36.62,22.15 34.25,17.66 C 31.88,13.17 28.46,11.02 25.06,10.5 L 24.55,10.4 z \" style=\"fill:#ececec; stroke:none;\" /></g><g id=\"black-bishop\" class=\"black bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zm6-4c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" fill=\"#000\" stroke-linecap=\"butt\" /><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke=\"#fff\" stroke-linejoin=\"miter\" /></g><g id=\"black-rook\" class=\"black rook\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12.5 32l1.5-2.5h17l1.5 2.5h-20zM12 36v-4h21v4H12z\" stroke-linecap=\"butt\" /><path d=\"M14 29.5v-13h17v13H14z\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M14 16.5L11 14h23l-3 2.5H14zM11 14V9h4v2h5V9h5v2h5V9h4v5H11z\" stroke-linecap=\"butt\" /><path d=\"M12 35.5h21M13 31.5h19M14 29.5h17M14 16.5h17M11 14h23\" fill=\"none\" stroke=\"#fff\" stroke-width=\"1\" stroke-linejoin=\"miter\" /></g><g id=\"black-queen\" class=\"black queen\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#000\" stroke=\"none\"><circle cx=\"6\" cy=\"12\" r=\"2.75\" /><circle cx=\"14\" cy=\"9\" r=\"2.75\" /><circle cx=\"22.5\" cy=\"8\" r=\"2.75\" /><circle cx=\"31\" cy=\"9\" r=\"2.75\" /><circle cx=\"39\" cy=\"12\" r=\"2.75\" /></g><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2.5-12.5L31 25l-.3-14.1-5.2 13.6-3-14.5-3 14.5-5.2-13.6L14 25 6.5 13.5 9 26zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11 38.5a35 35 1 0 0 23 0\" fill=\"none\" stroke-linecap=\"butt\" /><path d=\"M11 29a35 35 1 0 1 23 0M12.5 31.5h20M11.5 34.5a35 35 1 0 0 22 0M10.5 37.5a35 35 1 0 0 24 0\" fill=\"none\" stroke=\"#fff\" /></g><g id=\"black-king\" class=\"black king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#000\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#000\" /><path d=\"M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M32 29.5s8.5-4 6.03-9.65C34.15 14 25 18 22.5 24.5l.01 2.1-.01-2.1C20 18 9.906 14 6.997 19.85c-2.497 5.65 4.853 9 4.853 9M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" stroke=\"#fff\" /></g></defs><rect x=\"7.5\" y=\"7.5\" width=\"375\" height=\"375\" fill=\"none\" stroke=\"#212121\" stroke-width=\"15\" /><g transform=\"translate(20, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(20, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(65, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(65, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(110, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(110, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(155, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(155, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(200, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(200, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(245, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(245, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(290, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(290, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(335, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(335, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(0, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(375, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(0, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(375, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(0, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(375, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(0, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(375, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(0, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(375, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(0, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(375, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(0, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(375, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(0, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><g transform=\"translate(375, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><rect x=\"15\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark a1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"330\" width=\"45\" height=\"45\" class=\"square light b1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark c1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"330\" width=\"45\" height=\"45\" class=\"square light d1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark e1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"330\" width=\"45\" height=\"45\" class=\"square light f1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark g1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"330\" width=\"45\" height=\"45\" class=\"square light h1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"285\" width=\"45\" height=\"45\" class=\"square light a2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark b2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"285\" width=\"45\" height=\"45\" class=\"square light c2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark d2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"285\" width=\"45\" height=\"45\" class=\"square light e2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark f2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"285\" width=\"45\" height=\"45\" class=\"square light g2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark h2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark a3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"240\" width=\"45\" height=\"45\" class=\"square light b3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark c3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"240\" width=\"45\" height=\"45\" class=\"square light d3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark e3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"240\" width=\"45\" height=\"45\" class=\"square light f3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"240\" width=\"45\" height=\"45\" stroke=\"none\" fill=\"gray\" /><rect x=\"285\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark g3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"240\" width=\"45\" height=\"45\" class=\"square light h3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"195\" width=\"45\" height=\"45\" class=\"square light a4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark b4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"195\" width=\"45\" height=\"45\" class=\"square light c4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark d4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"195\" width=\"45\" height=\"45\" class=\"square light e4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark f4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"195\" width=\"45\" height=\"45\" class=\"square light g4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark h4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark a5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"150\" width=\"45\" height=\"45\" class=\"square light b5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark c5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"150\" width=\"45\" height=\"45\" class=\"square light d5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark e5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"150\" width=\"45\" height=\"45\" class=\"square light f5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark g5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"150\" width=\"45\" height=\"45\" class=\"square light h5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"105\" width=\"45\" height=\"45\" class=\"square light a6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark b6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"105\" width=\"45\" height=\"45\" class=\"square light c6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark d6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"105\" width=\"45\" height=\"45\" class=\"square light e6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark f6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"105\" width=\"45\" height=\"45\" class=\"square light g6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark h6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark a7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"60\" width=\"45\" height=\"45\" class=\"square light b7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark c7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"60\" width=\"45\" height=\"45\" class=\"square light d7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark e7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"60\" width=\"45\" height=\"45\" class=\"square light f7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark g7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"60\" width=\"45\" height=\"45\" class=\"square light h7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"15\" width=\"45\" height=\"45\" class=\"square light a8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark b8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"15\" width=\"45\" height=\"45\" class=\"square light c8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark d8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"15\" width=\"45\" height=\"45\" class=\"square light e8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark f8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"15\" width=\"45\" height=\"45\" class=\"square light g8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark h8\" stroke=\"none\" fill=\"#d18b47\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(15, 330)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(60, 330)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(105, 330)\" /><use href=\"#white-queen\" xlink:href=\"#white-queen\" transform=\"translate(150, 330)\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(240, 330)\" /><use href=\"#white-king\" xlink:href=\"#white-king\" transform=\"translate(285, 330)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(15, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(60, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(105, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(240, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(285, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(330, 285)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(105, 195)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(150, 195)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(195, 195)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(105, 150)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(240, 105)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(15, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(60, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(105, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(150, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(240, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(285, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(330, 60)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(15, 15)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(60, 15)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(105, 15)\" /><use href=\"#black-queen\" xlink:href=\"#black-queen\" transform=\"translate(150, 15)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(240, 15)\" /><use href=\"#black-king\" xlink:href=\"#black-king\" transform=\"translate(285, 15)\" /><line x1=\"262.5\" y1=\"262.5\" x2=\"206.7118400557468\" y2=\"234.6059200278734\" stroke=\"#15781B\" opacity=\"0.5019607843137255\" stroke-width=\"9.0\" stroke-linecap=\"butt\" class=\"arrow\" /><polygon points=\"176.5249223594996,219.5124611797498 199.165110631685,249.69937887599698 214.25856947980859,219.5124611797498\" fill=\"#15781B\" opacity=\"0.5019607843137255\" class=\"arrow\" /></svg>'" + "'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 390 390\" width=\"200\" height=\"200\"><desc><pre>r n b q . r k .\\np p p p . p p p\\n. b . . . n . .\\n. . . . p . . .\\n. . B P P . . .\\n. . . . . N . .\\nP P P . Q P P P\\nR N B . . R K .</pre></desc><defs><g id=\"white-pawn\" class=\"white pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#fff\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"white-knight\" class=\"white knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#000000; stroke:#000000;\" /></g><g id=\"white-bishop\" class=\"white bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#fff\" stroke-linecap=\"butt\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zM15 32c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" /></g><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke-linejoin=\"miter\" /></g><g id=\"white-rook\" class=\"white rook\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12 36v-4h21v4H12zM11 14V9h4v2h5V9h5v2h5V9h4v5\" stroke-linecap=\"butt\" /><path d=\"M34 14l-3 3H14l-3-3\" /><path d=\"M31 17v12.5H14V17\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M31 29.5l1.5 2.5h-20l1.5-2.5\" /><path d=\"M11 14h23\" fill=\"none\" stroke-linejoin=\"miter\" /></g><g id=\"white-queen\" class=\"white queen\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M8 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM24.5 7.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM41 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM16 8.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM33 9a2 2 0 1 1-4 0 2 2 0 1 1 4 0z\" /><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2-12-7 11V11l-5.5 13.5-3-15-3 15-5.5-14V25L7 14l2 12zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11.5 30c3.5-1 18.5-1 22 0M12 33.5c6-1 15-1 21 0\" fill=\"none\" /></g><g id=\"white-king\" class=\"white king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#fff\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#fff\" /><path d=\"M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" /></g><g id=\"black-pawn\" class=\"black pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#000\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"black-knight\" class=\"black knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 24.55,10.4 L 24.1,11.85 L 24.6,12 C 27.75,13 30.25,14.49 32.5,18.75 C 34.75,23.01 35.75,29.06 35.25,39 L 35.2,39.5 L 37.45,39.5 L 37.5,39 C 38,28.94 36.62,22.15 34.25,17.66 C 31.88,13.17 28.46,11.02 25.06,10.5 L 24.55,10.4 z \" style=\"fill:#ececec; stroke:none;\" /></g><g id=\"black-bishop\" class=\"black bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zm6-4c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" fill=\"#000\" stroke-linecap=\"butt\" /><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke=\"#fff\" stroke-linejoin=\"miter\" /></g><g id=\"black-rook\" class=\"black rook\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12.5 32l1.5-2.5h17l1.5 2.5h-20zM12 36v-4h21v4H12z\" stroke-linecap=\"butt\" /><path d=\"M14 29.5v-13h17v13H14z\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M14 16.5L11 14h23l-3 2.5H14zM11 14V9h4v2h5V9h5v2h5V9h4v5H11z\" stroke-linecap=\"butt\" /><path d=\"M12 35.5h21M13 31.5h19M14 29.5h17M14 16.5h17M11 14h23\" fill=\"none\" stroke=\"#fff\" stroke-width=\"1\" stroke-linejoin=\"miter\" /></g><g id=\"black-queen\" class=\"black queen\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#000\" stroke=\"none\"><circle cx=\"6\" cy=\"12\" r=\"2.75\" /><circle cx=\"14\" cy=\"9\" r=\"2.75\" /><circle cx=\"22.5\" cy=\"8\" r=\"2.75\" /><circle cx=\"31\" cy=\"9\" r=\"2.75\" /><circle cx=\"39\" cy=\"12\" r=\"2.75\" /></g><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2.5-12.5L31 25l-.3-14.1-5.2 13.6-3-14.5-3 14.5-5.2-13.6L14 25 6.5 13.5 9 26zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11 38.5a35 35 1 0 0 23 0\" fill=\"none\" stroke-linecap=\"butt\" /><path d=\"M11 29a35 35 1 0 1 23 0M12.5 31.5h20M11.5 34.5a35 35 1 0 0 22 0M10.5 37.5a35 35 1 0 0 24 0\" fill=\"none\" stroke=\"#fff\" /></g><g id=\"black-king\" class=\"black king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#000\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#000\" /><path d=\"M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M32 29.5s8.5-4 6.03-9.65C34.15 14 25 18 22.5 24.5l.01 2.1-.01-2.1C20 18 9.906 14 6.997 19.85c-2.497 5.65 4.853 9 4.853 9M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" stroke=\"#fff\" /></g></defs><rect x=\"7.5\" y=\"7.5\" width=\"375\" height=\"375\" fill=\"none\" stroke=\"#212121\" stroke-width=\"15\" /><g transform=\"translate(20, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(20, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(65, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(65, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(110, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(110, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(155, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(155, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(200, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(200, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(245, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(245, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(290, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(290, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(335, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(335, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(0, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(375, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(0, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(375, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(0, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(375, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(0, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(375, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(0, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(375, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(0, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(375, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(0, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(375, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(0, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><g transform=\"translate(375, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><rect x=\"15\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark a1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"330\" width=\"45\" height=\"45\" class=\"square light b1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark c1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"330\" width=\"45\" height=\"45\" class=\"square light d1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"330\" width=\"45\" height=\"45\" stroke=\"none\" fill=\"gray\" /><rect x=\"195\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark e1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"330\" width=\"45\" height=\"45\" class=\"square light f1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark g1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"330\" width=\"45\" height=\"45\" class=\"square light h1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"285\" width=\"45\" height=\"45\" class=\"square light a2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark b2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"285\" width=\"45\" height=\"45\" class=\"square light c2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark d2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"285\" width=\"45\" height=\"45\" class=\"square light e2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark f2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"285\" width=\"45\" height=\"45\" class=\"square light g2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark h2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark a3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"240\" width=\"45\" height=\"45\" class=\"square light b3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark c3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"240\" width=\"45\" height=\"45\" class=\"square light d3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark e3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"240\" width=\"45\" height=\"45\" class=\"square light f3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark g3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"240\" width=\"45\" height=\"45\" class=\"square light h3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"195\" width=\"45\" height=\"45\" class=\"square light a4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark b4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"195\" width=\"45\" height=\"45\" class=\"square light c4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark d4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"195\" width=\"45\" height=\"45\" class=\"square light e4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark f4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"195\" width=\"45\" height=\"45\" class=\"square light g4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark h4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark a5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"150\" width=\"45\" height=\"45\" class=\"square light b5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark c5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"150\" width=\"45\" height=\"45\" class=\"square light d5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark e5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"150\" width=\"45\" height=\"45\" class=\"square light f5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark g5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"150\" width=\"45\" height=\"45\" class=\"square light h5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"105\" width=\"45\" height=\"45\" class=\"square light a6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark b6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"105\" width=\"45\" height=\"45\" class=\"square light c6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark d6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"105\" width=\"45\" height=\"45\" class=\"square light e6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark f6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"105\" width=\"45\" height=\"45\" class=\"square light g6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark h6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark a7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"60\" width=\"45\" height=\"45\" class=\"square light b7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark c7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"60\" width=\"45\" height=\"45\" class=\"square light d7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark e7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"60\" width=\"45\" height=\"45\" class=\"square light f7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark g7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"60\" width=\"45\" height=\"45\" class=\"square light h7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"15\" width=\"45\" height=\"45\" class=\"square light a8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark b8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"15\" width=\"45\" height=\"45\" class=\"square light c8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark d8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"15\" width=\"45\" height=\"45\" class=\"square light e8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark f8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"15\" width=\"45\" height=\"45\" class=\"square light g8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark h8\" stroke=\"none\" fill=\"#d18b47\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(15, 330)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(60, 330)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(105, 330)\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(240, 330)\" /><use href=\"#white-king\" xlink:href=\"#white-king\" transform=\"translate(285, 330)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(15, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(60, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(105, 285)\" /><use href=\"#white-queen\" xlink:href=\"#white-queen\" transform=\"translate(195, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(240, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(285, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(330, 285)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(240, 240)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(105, 195)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(150, 195)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(195, 195)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(195, 150)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(60, 105)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(240, 105)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(15, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(60, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(105, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(150, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(240, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(285, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(330, 60)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(15, 15)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(60, 15)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(105, 15)\" /><use href=\"#black-queen\" xlink:href=\"#black-queen\" transform=\"translate(150, 15)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(240, 15)\" /><use href=\"#black-king\" xlink:href=\"#black-king\" transform=\"translate(285, 15)\" /><line x1=\"172.5\" y1=\"352.5\" x2=\"190.45316561961457\" y2=\"334.54683438038546\" stroke=\"#15781B\" opacity=\"0.5019607843137255\" stroke-width=\"9.0\" stroke-linecap=\"butt\" class=\"arrow\" /><polygon points=\"214.31801948466054,310.6819805153395 178.52073868709158,322.61440744786245 202.38559255213755,346.4792613129085\" fill=\"#15781B\" opacity=\"0.5019607843137255\" class=\"arrow\" /></svg>'" ] }, "metadata": {}, @@ -662,7 +681,9 @@ "text": [ "\u001b[33mPlayer white\u001b[0m (to Player black):\n", "\n", - "Nf3xd4. Taking back with my knight, keeping the tension in the center. Your move!\n", + "I see, it looks like we had a bit of a mix-up. Let's get back to the game. I'll move my queen from d1 to e2, aiming to control the center.\n", + "\n", + "d1e2\n", "\n", "--------------------------------------------------------------------------------\n" ] @@ -670,17 +691,17 @@ { "data": { "image/svg+xml": [ - "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 390 390\" width=\"200\" height=\"200\"><desc><pre>r n b q . r k .\n", - "p p p . . p p p\n", - ". . . . . n . .\n", - ". . b p . . . .\n", - ". . B N P . . .\n", - ". . . . . . . .\n", - "P P P . . P P P\n", - "R N B Q . R K .</pre></desc><defs><g id=\"white-pawn\" class=\"white pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#fff\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"white-knight\" class=\"white knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#000000; stroke:#000000;\" /></g><g id=\"white-bishop\" class=\"white bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#fff\" stroke-linecap=\"butt\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zM15 32c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" /></g><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke-linejoin=\"miter\" /></g><g id=\"white-rook\" class=\"white rook\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12 36v-4h21v4H12zM11 14V9h4v2h5V9h5v2h5V9h4v5\" stroke-linecap=\"butt\" /><path d=\"M34 14l-3 3H14l-3-3\" /><path d=\"M31 17v12.5H14V17\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M31 29.5l1.5 2.5h-20l1.5-2.5\" /><path d=\"M11 14h23\" fill=\"none\" stroke-linejoin=\"miter\" /></g><g id=\"white-queen\" class=\"white queen\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M8 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM24.5 7.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM41 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM16 8.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM33 9a2 2 0 1 1-4 0 2 2 0 1 1 4 0z\" /><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2-12-7 11V11l-5.5 13.5-3-15-3 15-5.5-14V25L7 14l2 12zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11.5 30c3.5-1 18.5-1 22 0M12 33.5c6-1 15-1 21 0\" fill=\"none\" /></g><g id=\"white-king\" class=\"white king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#fff\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#fff\" /><path d=\"M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" /></g><g id=\"black-pawn\" class=\"black pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#000\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"black-knight\" class=\"black knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 24.55,10.4 L 24.1,11.85 L 24.6,12 C 27.75,13 30.25,14.49 32.5,18.75 C 34.75,23.01 35.75,29.06 35.25,39 L 35.2,39.5 L 37.45,39.5 L 37.5,39 C 38,28.94 36.62,22.15 34.25,17.66 C 31.88,13.17 28.46,11.02 25.06,10.5 L 24.55,10.4 z \" style=\"fill:#ececec; stroke:none;\" /></g><g id=\"black-bishop\" class=\"black bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zm6-4c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" fill=\"#000\" stroke-linecap=\"butt\" /><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke=\"#fff\" stroke-linejoin=\"miter\" /></g><g id=\"black-rook\" class=\"black rook\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12.5 32l1.5-2.5h17l1.5 2.5h-20zM12 36v-4h21v4H12z\" stroke-linecap=\"butt\" /><path d=\"M14 29.5v-13h17v13H14z\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M14 16.5L11 14h23l-3 2.5H14zM11 14V9h4v2h5V9h5v2h5V9h4v5H11z\" stroke-linecap=\"butt\" /><path d=\"M12 35.5h21M13 31.5h19M14 29.5h17M14 16.5h17M11 14h23\" fill=\"none\" stroke=\"#fff\" stroke-width=\"1\" stroke-linejoin=\"miter\" /></g><g id=\"black-queen\" class=\"black queen\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#000\" stroke=\"none\"><circle cx=\"6\" cy=\"12\" r=\"2.75\" /><circle cx=\"14\" cy=\"9\" r=\"2.75\" /><circle cx=\"22.5\" cy=\"8\" r=\"2.75\" /><circle cx=\"31\" cy=\"9\" r=\"2.75\" /><circle cx=\"39\" cy=\"12\" r=\"2.75\" /></g><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2.5-12.5L31 25l-.3-14.1-5.2 13.6-3-14.5-3 14.5-5.2-13.6L14 25 6.5 13.5 9 26zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11 38.5a35 35 1 0 0 23 0\" fill=\"none\" stroke-linecap=\"butt\" /><path d=\"M11 29a35 35 1 0 1 23 0M12.5 31.5h20M11.5 34.5a35 35 1 0 0 22 0M10.5 37.5a35 35 1 0 0 24 0\" fill=\"none\" stroke=\"#fff\" /></g><g id=\"black-king\" class=\"black king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#000\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#000\" /><path d=\"M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M32 29.5s8.5-4 6.03-9.65C34.15 14 25 18 22.5 24.5l.01 2.1-.01-2.1C20 18 9.906 14 6.997 19.85c-2.497 5.65 4.853 9 4.853 9M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" stroke=\"#fff\" /></g></defs><rect x=\"7.5\" y=\"7.5\" width=\"375\" height=\"375\" fill=\"none\" stroke=\"#212121\" stroke-width=\"15\" /><g transform=\"translate(20, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(20, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(65, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(65, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(110, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(110, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(155, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(155, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(200, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(200, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(245, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(245, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(290, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(290, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(335, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(335, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(0, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(375, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(0, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(375, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(0, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(375, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(0, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(375, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(0, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(375, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(0, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(375, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(0, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(375, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(0, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><g transform=\"translate(375, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><rect x=\"15\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark a1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"330\" width=\"45\" height=\"45\" class=\"square light b1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark c1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"330\" width=\"45\" height=\"45\" class=\"square light d1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark e1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"330\" width=\"45\" height=\"45\" class=\"square light f1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark g1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"330\" width=\"45\" height=\"45\" class=\"square light h1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"285\" width=\"45\" height=\"45\" class=\"square light a2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark b2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"285\" width=\"45\" height=\"45\" class=\"square light c2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark d2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"285\" width=\"45\" height=\"45\" class=\"square light e2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark f2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"285\" width=\"45\" height=\"45\" class=\"square light g2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark h2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark a3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"240\" width=\"45\" height=\"45\" class=\"square light b3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark c3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"240\" width=\"45\" height=\"45\" class=\"square light d3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark e3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"240\" width=\"45\" height=\"45\" class=\"square light f3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark g3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"240\" width=\"45\" height=\"45\" class=\"square light h3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"195\" width=\"45\" height=\"45\" class=\"square light a4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark b4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"195\" width=\"45\" height=\"45\" class=\"square light c4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark d4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"195\" width=\"45\" height=\"45\" class=\"square light e4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark f4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"195\" width=\"45\" height=\"45\" class=\"square light g4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark h4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark a5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"150\" width=\"45\" height=\"45\" class=\"square light b5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark c5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"150\" width=\"45\" height=\"45\" class=\"square light d5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark e5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"150\" width=\"45\" height=\"45\" class=\"square light f5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark g5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"150\" width=\"45\" height=\"45\" class=\"square light h5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"105\" width=\"45\" height=\"45\" class=\"square light a6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark b6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"105\" width=\"45\" height=\"45\" class=\"square light c6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark d6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"105\" width=\"45\" height=\"45\" class=\"square light e6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark f6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"105\" width=\"45\" height=\"45\" class=\"square light g6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark h6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark a7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"60\" width=\"45\" height=\"45\" class=\"square light b7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark c7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"60\" width=\"45\" height=\"45\" class=\"square light d7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"60\" width=\"45\" height=\"45\" stroke=\"none\" fill=\"gray\" /><rect x=\"195\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark e7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"60\" width=\"45\" height=\"45\" class=\"square light f7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark g7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"60\" width=\"45\" height=\"45\" class=\"square light h7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"15\" width=\"45\" height=\"45\" class=\"square light a8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark b8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"15\" width=\"45\" height=\"45\" class=\"square light c8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark d8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"15\" width=\"45\" height=\"45\" class=\"square light e8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark f8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"15\" width=\"45\" height=\"45\" class=\"square light g8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark h8\" stroke=\"none\" fill=\"#d18b47\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(15, 330)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(60, 330)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(105, 330)\" /><use href=\"#white-queen\" xlink:href=\"#white-queen\" transform=\"translate(150, 330)\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(240, 330)\" /><use href=\"#white-king\" xlink:href=\"#white-king\" transform=\"translate(285, 330)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(15, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(60, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(105, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(240, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(285, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(330, 285)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(105, 195)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(150, 195)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(195, 195)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(105, 150)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(150, 150)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(240, 105)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(15, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(60, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(105, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(240, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(285, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(330, 60)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(15, 15)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(60, 15)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(105, 15)\" /><use href=\"#black-queen\" xlink:href=\"#black-queen\" transform=\"translate(150, 15)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(240, 15)\" /><use href=\"#black-king\" xlink:href=\"#black-king\" transform=\"translate(285, 15)\" /><line x1=\"172.5\" y1=\"82.5\" x2=\"172.5\" y2=\"134.25\" stroke=\"#15781B\" opacity=\"0.5019607843137255\" stroke-width=\"9.0\" stroke-linecap=\"butt\" class=\"arrow\" /><polygon points=\"172.5,168.0 189.375,134.25 155.625,134.25\" fill=\"#15781B\" opacity=\"0.5019607843137255\" class=\"arrow\" /></svg>" + "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 390 390\" width=\"200\" height=\"200\"><desc><pre>r n b . . r k .\n", + "p p p p q p p p\n", + ". b . . . n . .\n", + ". . . . p . . .\n", + ". . B P P . . .\n", + ". . . . . N . .\n", + "P P P . Q P P P\n", + "R N B . . R K .</pre></desc><defs><g id=\"white-pawn\" class=\"white pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#fff\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"white-knight\" class=\"white knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#000000; stroke:#000000;\" /></g><g id=\"white-bishop\" class=\"white bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#fff\" stroke-linecap=\"butt\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zM15 32c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" /></g><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke-linejoin=\"miter\" /></g><g id=\"white-rook\" class=\"white rook\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12 36v-4h21v4H12zM11 14V9h4v2h5V9h5v2h5V9h4v5\" stroke-linecap=\"butt\" /><path d=\"M34 14l-3 3H14l-3-3\" /><path d=\"M31 17v12.5H14V17\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M31 29.5l1.5 2.5h-20l1.5-2.5\" /><path d=\"M11 14h23\" fill=\"none\" stroke-linejoin=\"miter\" /></g><g id=\"white-queen\" class=\"white queen\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M8 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM24.5 7.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM41 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM16 8.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM33 9a2 2 0 1 1-4 0 2 2 0 1 1 4 0z\" /><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2-12-7 11V11l-5.5 13.5-3-15-3 15-5.5-14V25L7 14l2 12zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11.5 30c3.5-1 18.5-1 22 0M12 33.5c6-1 15-1 21 0\" fill=\"none\" /></g><g id=\"white-king\" class=\"white king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#fff\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#fff\" /><path d=\"M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" /></g><g id=\"black-pawn\" class=\"black pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#000\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"black-knight\" class=\"black knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 24.55,10.4 L 24.1,11.85 L 24.6,12 C 27.75,13 30.25,14.49 32.5,18.75 C 34.75,23.01 35.75,29.06 35.25,39 L 35.2,39.5 L 37.45,39.5 L 37.5,39 C 38,28.94 36.62,22.15 34.25,17.66 C 31.88,13.17 28.46,11.02 25.06,10.5 L 24.55,10.4 z \" style=\"fill:#ececec; stroke:none;\" /></g><g id=\"black-bishop\" class=\"black bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zm6-4c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" fill=\"#000\" stroke-linecap=\"butt\" /><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke=\"#fff\" stroke-linejoin=\"miter\" /></g><g id=\"black-rook\" class=\"black rook\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12.5 32l1.5-2.5h17l1.5 2.5h-20zM12 36v-4h21v4H12z\" stroke-linecap=\"butt\" /><path d=\"M14 29.5v-13h17v13H14z\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M14 16.5L11 14h23l-3 2.5H14zM11 14V9h4v2h5V9h5v2h5V9h4v5H11z\" stroke-linecap=\"butt\" /><path d=\"M12 35.5h21M13 31.5h19M14 29.5h17M14 16.5h17M11 14h23\" fill=\"none\" stroke=\"#fff\" stroke-width=\"1\" stroke-linejoin=\"miter\" /></g><g id=\"black-queen\" class=\"black queen\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#000\" stroke=\"none\"><circle cx=\"6\" cy=\"12\" r=\"2.75\" /><circle cx=\"14\" cy=\"9\" r=\"2.75\" /><circle cx=\"22.5\" cy=\"8\" r=\"2.75\" /><circle cx=\"31\" cy=\"9\" r=\"2.75\" /><circle cx=\"39\" cy=\"12\" r=\"2.75\" /></g><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2.5-12.5L31 25l-.3-14.1-5.2 13.6-3-14.5-3 14.5-5.2-13.6L14 25 6.5 13.5 9 26zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11 38.5a35 35 1 0 0 23 0\" fill=\"none\" stroke-linecap=\"butt\" /><path d=\"M11 29a35 35 1 0 1 23 0M12.5 31.5h20M11.5 34.5a35 35 1 0 0 22 0M10.5 37.5a35 35 1 0 0 24 0\" fill=\"none\" stroke=\"#fff\" /></g><g id=\"black-king\" class=\"black king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#000\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#000\" /><path d=\"M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M32 29.5s8.5-4 6.03-9.65C34.15 14 25 18 22.5 24.5l.01 2.1-.01-2.1C20 18 9.906 14 6.997 19.85c-2.497 5.65 4.853 9 4.853 9M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" stroke=\"#fff\" /></g></defs><rect x=\"7.5\" y=\"7.5\" width=\"375\" height=\"375\" fill=\"none\" stroke=\"#212121\" stroke-width=\"15\" /><g transform=\"translate(20, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(20, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(65, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(65, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(110, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(110, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(155, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(155, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(200, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(200, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(245, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(245, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(290, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(290, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(335, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(335, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(0, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(375, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(0, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(375, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(0, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(375, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(0, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(375, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(0, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(375, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(0, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(375, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(0, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(375, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(0, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><g transform=\"translate(375, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><rect x=\"15\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark a1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"330\" width=\"45\" height=\"45\" class=\"square light b1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark c1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"330\" width=\"45\" height=\"45\" class=\"square light d1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark e1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"330\" width=\"45\" height=\"45\" class=\"square light f1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark g1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"330\" width=\"45\" height=\"45\" class=\"square light h1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"285\" width=\"45\" height=\"45\" class=\"square light a2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark b2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"285\" width=\"45\" height=\"45\" class=\"square light c2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark d2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"285\" width=\"45\" height=\"45\" class=\"square light e2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark f2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"285\" width=\"45\" height=\"45\" class=\"square light g2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark h2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark a3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"240\" width=\"45\" height=\"45\" class=\"square light b3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark c3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"240\" width=\"45\" height=\"45\" class=\"square light d3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark e3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"240\" width=\"45\" height=\"45\" class=\"square light f3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark g3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"240\" width=\"45\" height=\"45\" class=\"square light h3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"195\" width=\"45\" height=\"45\" class=\"square light a4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark b4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"195\" width=\"45\" height=\"45\" class=\"square light c4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark d4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"195\" width=\"45\" height=\"45\" class=\"square light e4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark f4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"195\" width=\"45\" height=\"45\" class=\"square light g4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark h4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark a5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"150\" width=\"45\" height=\"45\" class=\"square light b5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark c5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"150\" width=\"45\" height=\"45\" class=\"square light d5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark e5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"150\" width=\"45\" height=\"45\" class=\"square light f5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark g5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"150\" width=\"45\" height=\"45\" class=\"square light h5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"105\" width=\"45\" height=\"45\" class=\"square light a6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark b6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"105\" width=\"45\" height=\"45\" class=\"square light c6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark d6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"105\" width=\"45\" height=\"45\" class=\"square light e6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark f6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"105\" width=\"45\" height=\"45\" class=\"square light g6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark h6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark a7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"60\" width=\"45\" height=\"45\" class=\"square light b7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark c7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"60\" width=\"45\" height=\"45\" class=\"square light d7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark e7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"60\" width=\"45\" height=\"45\" class=\"square light f7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark g7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"60\" width=\"45\" height=\"45\" class=\"square light h7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"15\" width=\"45\" height=\"45\" class=\"square light a8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark b8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"15\" width=\"45\" height=\"45\" class=\"square light c8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark d8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"15\" width=\"45\" height=\"45\" stroke=\"none\" fill=\"gray\" /><rect x=\"195\" y=\"15\" width=\"45\" height=\"45\" class=\"square light e8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark f8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"15\" width=\"45\" height=\"45\" class=\"square light g8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark h8\" stroke=\"none\" fill=\"#d18b47\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(15, 330)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(60, 330)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(105, 330)\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(240, 330)\" /><use href=\"#white-king\" xlink:href=\"#white-king\" transform=\"translate(285, 330)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(15, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(60, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(105, 285)\" /><use href=\"#white-queen\" xlink:href=\"#white-queen\" transform=\"translate(195, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(240, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(285, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(330, 285)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(240, 240)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(105, 195)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(150, 195)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(195, 195)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(195, 150)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(60, 105)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(240, 105)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(15, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(60, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(105, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(150, 60)\" /><use href=\"#black-queen\" xlink:href=\"#black-queen\" transform=\"translate(195, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(240, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(285, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(330, 60)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(15, 15)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(60, 15)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(105, 15)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(240, 15)\" /><use href=\"#black-king\" xlink:href=\"#black-king\" transform=\"translate(285, 15)\" /><line x1=\"172.5\" y1=\"37.5\" x2=\"190.45316561961457\" y2=\"55.45316561961456\" stroke=\"#15781B\" opacity=\"0.5019607843137255\" stroke-width=\"9.0\" stroke-linecap=\"butt\" class=\"arrow\" /><polygon points=\"214.31801948466054,79.31801948466054 202.38559255213755,43.520738687091566 178.52073868709158,67.38559255213755\" fill=\"#15781B\" opacity=\"0.5019607843137255\" class=\"arrow\" /></svg>" ], "text/plain": [ - "'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 390 390\" width=\"200\" height=\"200\"><desc><pre>r n b q . r k .\\np p p . . p p p\\n. . . . . n . .\\n. . b p . . . .\\n. . B N P . . .\\n. . . . . . . .\\nP P P . . P P P\\nR N B Q . R K .</pre></desc><defs><g id=\"white-pawn\" class=\"white pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#fff\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"white-knight\" class=\"white knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#000000; stroke:#000000;\" /></g><g id=\"white-bishop\" class=\"white bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#fff\" stroke-linecap=\"butt\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zM15 32c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" /></g><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke-linejoin=\"miter\" /></g><g id=\"white-rook\" class=\"white rook\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12 36v-4h21v4H12zM11 14V9h4v2h5V9h5v2h5V9h4v5\" stroke-linecap=\"butt\" /><path d=\"M34 14l-3 3H14l-3-3\" /><path d=\"M31 17v12.5H14V17\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M31 29.5l1.5 2.5h-20l1.5-2.5\" /><path d=\"M11 14h23\" fill=\"none\" stroke-linejoin=\"miter\" /></g><g id=\"white-queen\" class=\"white queen\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M8 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM24.5 7.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM41 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM16 8.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM33 9a2 2 0 1 1-4 0 2 2 0 1 1 4 0z\" /><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2-12-7 11V11l-5.5 13.5-3-15-3 15-5.5-14V25L7 14l2 12zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11.5 30c3.5-1 18.5-1 22 0M12 33.5c6-1 15-1 21 0\" fill=\"none\" /></g><g id=\"white-king\" class=\"white king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#fff\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#fff\" /><path d=\"M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" /></g><g id=\"black-pawn\" class=\"black pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#000\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"black-knight\" class=\"black knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 24.55,10.4 L 24.1,11.85 L 24.6,12 C 27.75,13 30.25,14.49 32.5,18.75 C 34.75,23.01 35.75,29.06 35.25,39 L 35.2,39.5 L 37.45,39.5 L 37.5,39 C 38,28.94 36.62,22.15 34.25,17.66 C 31.88,13.17 28.46,11.02 25.06,10.5 L 24.55,10.4 z \" style=\"fill:#ececec; stroke:none;\" /></g><g id=\"black-bishop\" class=\"black bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zm6-4c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" fill=\"#000\" stroke-linecap=\"butt\" /><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke=\"#fff\" stroke-linejoin=\"miter\" /></g><g id=\"black-rook\" class=\"black rook\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12.5 32l1.5-2.5h17l1.5 2.5h-20zM12 36v-4h21v4H12z\" stroke-linecap=\"butt\" /><path d=\"M14 29.5v-13h17v13H14z\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M14 16.5L11 14h23l-3 2.5H14zM11 14V9h4v2h5V9h5v2h5V9h4v5H11z\" stroke-linecap=\"butt\" /><path d=\"M12 35.5h21M13 31.5h19M14 29.5h17M14 16.5h17M11 14h23\" fill=\"none\" stroke=\"#fff\" stroke-width=\"1\" stroke-linejoin=\"miter\" /></g><g id=\"black-queen\" class=\"black queen\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#000\" stroke=\"none\"><circle cx=\"6\" cy=\"12\" r=\"2.75\" /><circle cx=\"14\" cy=\"9\" r=\"2.75\" /><circle cx=\"22.5\" cy=\"8\" r=\"2.75\" /><circle cx=\"31\" cy=\"9\" r=\"2.75\" /><circle cx=\"39\" cy=\"12\" r=\"2.75\" /></g><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2.5-12.5L31 25l-.3-14.1-5.2 13.6-3-14.5-3 14.5-5.2-13.6L14 25 6.5 13.5 9 26zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11 38.5a35 35 1 0 0 23 0\" fill=\"none\" stroke-linecap=\"butt\" /><path d=\"M11 29a35 35 1 0 1 23 0M12.5 31.5h20M11.5 34.5a35 35 1 0 0 22 0M10.5 37.5a35 35 1 0 0 24 0\" fill=\"none\" stroke=\"#fff\" /></g><g id=\"black-king\" class=\"black king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#000\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#000\" /><path d=\"M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M32 29.5s8.5-4 6.03-9.65C34.15 14 25 18 22.5 24.5l.01 2.1-.01-2.1C20 18 9.906 14 6.997 19.85c-2.497 5.65 4.853 9 4.853 9M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" stroke=\"#fff\" /></g></defs><rect x=\"7.5\" y=\"7.5\" width=\"375\" height=\"375\" fill=\"none\" stroke=\"#212121\" stroke-width=\"15\" /><g transform=\"translate(20, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(20, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(65, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(65, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(110, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(110, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(155, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(155, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(200, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(200, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(245, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(245, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(290, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(290, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(335, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(335, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(0, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(375, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(0, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(375, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(0, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(375, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(0, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(375, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(0, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(375, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(0, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(375, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(0, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(375, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(0, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><g transform=\"translate(375, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><rect x=\"15\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark a1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"330\" width=\"45\" height=\"45\" class=\"square light b1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark c1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"330\" width=\"45\" height=\"45\" class=\"square light d1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark e1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"330\" width=\"45\" height=\"45\" class=\"square light f1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark g1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"330\" width=\"45\" height=\"45\" class=\"square light h1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"285\" width=\"45\" height=\"45\" class=\"square light a2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark b2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"285\" width=\"45\" height=\"45\" class=\"square light c2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark d2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"285\" width=\"45\" height=\"45\" class=\"square light e2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark f2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"285\" width=\"45\" height=\"45\" class=\"square light g2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark h2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark a3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"240\" width=\"45\" height=\"45\" class=\"square light b3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark c3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"240\" width=\"45\" height=\"45\" class=\"square light d3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark e3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"240\" width=\"45\" height=\"45\" class=\"square light f3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark g3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"240\" width=\"45\" height=\"45\" class=\"square light h3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"195\" width=\"45\" height=\"45\" class=\"square light a4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark b4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"195\" width=\"45\" height=\"45\" class=\"square light c4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark d4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"195\" width=\"45\" height=\"45\" class=\"square light e4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark f4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"195\" width=\"45\" height=\"45\" class=\"square light g4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark h4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark a5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"150\" width=\"45\" height=\"45\" class=\"square light b5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark c5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"150\" width=\"45\" height=\"45\" class=\"square light d5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark e5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"150\" width=\"45\" height=\"45\" class=\"square light f5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark g5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"150\" width=\"45\" height=\"45\" class=\"square light h5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"105\" width=\"45\" height=\"45\" class=\"square light a6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark b6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"105\" width=\"45\" height=\"45\" class=\"square light c6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark d6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"105\" width=\"45\" height=\"45\" class=\"square light e6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark f6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"105\" width=\"45\" height=\"45\" class=\"square light g6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark h6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark a7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"60\" width=\"45\" height=\"45\" class=\"square light b7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark c7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"60\" width=\"45\" height=\"45\" class=\"square light d7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"60\" width=\"45\" height=\"45\" stroke=\"none\" fill=\"gray\" /><rect x=\"195\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark e7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"60\" width=\"45\" height=\"45\" class=\"square light f7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark g7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"60\" width=\"45\" height=\"45\" class=\"square light h7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"15\" width=\"45\" height=\"45\" class=\"square light a8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark b8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"15\" width=\"45\" height=\"45\" class=\"square light c8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark d8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"15\" width=\"45\" height=\"45\" class=\"square light e8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark f8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"15\" width=\"45\" height=\"45\" class=\"square light g8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark h8\" stroke=\"none\" fill=\"#d18b47\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(15, 330)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(60, 330)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(105, 330)\" /><use href=\"#white-queen\" xlink:href=\"#white-queen\" transform=\"translate(150, 330)\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(240, 330)\" /><use href=\"#white-king\" xlink:href=\"#white-king\" transform=\"translate(285, 330)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(15, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(60, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(105, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(240, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(285, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(330, 285)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(105, 195)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(150, 195)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(195, 195)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(105, 150)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(150, 150)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(240, 105)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(15, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(60, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(105, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(240, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(285, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(330, 60)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(15, 15)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(60, 15)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(105, 15)\" /><use href=\"#black-queen\" xlink:href=\"#black-queen\" transform=\"translate(150, 15)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(240, 15)\" /><use href=\"#black-king\" xlink:href=\"#black-king\" transform=\"translate(285, 15)\" /><line x1=\"172.5\" y1=\"82.5\" x2=\"172.5\" y2=\"134.25\" stroke=\"#15781B\" opacity=\"0.5019607843137255\" stroke-width=\"9.0\" stroke-linecap=\"butt\" class=\"arrow\" /><polygon points=\"172.5,168.0 189.375,134.25 155.625,134.25\" fill=\"#15781B\" opacity=\"0.5019607843137255\" class=\"arrow\" /></svg>'" + "'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 390 390\" width=\"200\" height=\"200\"><desc><pre>r n b . . r k .\\np p p p q p p p\\n. b . . . n . .\\n. . . . p . . .\\n. . B P P . . .\\n. . . . . N . .\\nP P P . Q P P P\\nR N B . . R K .</pre></desc><defs><g id=\"white-pawn\" class=\"white pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#fff\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"white-knight\" class=\"white knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#000000; stroke:#000000;\" /></g><g id=\"white-bishop\" class=\"white bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#fff\" stroke-linecap=\"butt\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zM15 32c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" /></g><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke-linejoin=\"miter\" /></g><g id=\"white-rook\" class=\"white rook\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12 36v-4h21v4H12zM11 14V9h4v2h5V9h5v2h5V9h4v5\" stroke-linecap=\"butt\" /><path d=\"M34 14l-3 3H14l-3-3\" /><path d=\"M31 17v12.5H14V17\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M31 29.5l1.5 2.5h-20l1.5-2.5\" /><path d=\"M11 14h23\" fill=\"none\" stroke-linejoin=\"miter\" /></g><g id=\"white-queen\" class=\"white queen\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M8 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM24.5 7.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM41 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM16 8.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM33 9a2 2 0 1 1-4 0 2 2 0 1 1 4 0z\" /><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2-12-7 11V11l-5.5 13.5-3-15-3 15-5.5-14V25L7 14l2 12zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11.5 30c3.5-1 18.5-1 22 0M12 33.5c6-1 15-1 21 0\" fill=\"none\" /></g><g id=\"white-king\" class=\"white king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#fff\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#fff\" /><path d=\"M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" /></g><g id=\"black-pawn\" class=\"black pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#000\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"black-knight\" class=\"black knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 24.55,10.4 L 24.1,11.85 L 24.6,12 C 27.75,13 30.25,14.49 32.5,18.75 C 34.75,23.01 35.75,29.06 35.25,39 L 35.2,39.5 L 37.45,39.5 L 37.5,39 C 38,28.94 36.62,22.15 34.25,17.66 C 31.88,13.17 28.46,11.02 25.06,10.5 L 24.55,10.4 z \" style=\"fill:#ececec; stroke:none;\" /></g><g id=\"black-bishop\" class=\"black bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zm6-4c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" fill=\"#000\" stroke-linecap=\"butt\" /><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke=\"#fff\" stroke-linejoin=\"miter\" /></g><g id=\"black-rook\" class=\"black rook\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12.5 32l1.5-2.5h17l1.5 2.5h-20zM12 36v-4h21v4H12z\" stroke-linecap=\"butt\" /><path d=\"M14 29.5v-13h17v13H14z\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M14 16.5L11 14h23l-3 2.5H14zM11 14V9h4v2h5V9h5v2h5V9h4v5H11z\" stroke-linecap=\"butt\" /><path d=\"M12 35.5h21M13 31.5h19M14 29.5h17M14 16.5h17M11 14h23\" fill=\"none\" stroke=\"#fff\" stroke-width=\"1\" stroke-linejoin=\"miter\" /></g><g id=\"black-queen\" class=\"black queen\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#000\" stroke=\"none\"><circle cx=\"6\" cy=\"12\" r=\"2.75\" /><circle cx=\"14\" cy=\"9\" r=\"2.75\" /><circle cx=\"22.5\" cy=\"8\" r=\"2.75\" /><circle cx=\"31\" cy=\"9\" r=\"2.75\" /><circle cx=\"39\" cy=\"12\" r=\"2.75\" /></g><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2.5-12.5L31 25l-.3-14.1-5.2 13.6-3-14.5-3 14.5-5.2-13.6L14 25 6.5 13.5 9 26zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11 38.5a35 35 1 0 0 23 0\" fill=\"none\" stroke-linecap=\"butt\" /><path d=\"M11 29a35 35 1 0 1 23 0M12.5 31.5h20M11.5 34.5a35 35 1 0 0 22 0M10.5 37.5a35 35 1 0 0 24 0\" fill=\"none\" stroke=\"#fff\" /></g><g id=\"black-king\" class=\"black king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#000\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#000\" /><path d=\"M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M32 29.5s8.5-4 6.03-9.65C34.15 14 25 18 22.5 24.5l.01 2.1-.01-2.1C20 18 9.906 14 6.997 19.85c-2.497 5.65 4.853 9 4.853 9M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" stroke=\"#fff\" /></g></defs><rect x=\"7.5\" y=\"7.5\" width=\"375\" height=\"375\" fill=\"none\" stroke=\"#212121\" stroke-width=\"15\" /><g transform=\"translate(20, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(20, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(65, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(65, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(110, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(110, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(155, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(155, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(200, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(200, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(245, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(245, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(290, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(290, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(335, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(335, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(0, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(375, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(0, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(375, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(0, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(375, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(0, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(375, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(0, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(375, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(0, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(375, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(0, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(375, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(0, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><g transform=\"translate(375, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><rect x=\"15\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark a1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"330\" width=\"45\" height=\"45\" class=\"square light b1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark c1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"330\" width=\"45\" height=\"45\" class=\"square light d1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark e1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"330\" width=\"45\" height=\"45\" class=\"square light f1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark g1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"330\" width=\"45\" height=\"45\" class=\"square light h1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"285\" width=\"45\" height=\"45\" class=\"square light a2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark b2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"285\" width=\"45\" height=\"45\" class=\"square light c2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark d2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"285\" width=\"45\" height=\"45\" class=\"square light e2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark f2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"285\" width=\"45\" height=\"45\" class=\"square light g2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark h2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark a3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"240\" width=\"45\" height=\"45\" class=\"square light b3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark c3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"240\" width=\"45\" height=\"45\" class=\"square light d3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark e3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"240\" width=\"45\" height=\"45\" class=\"square light f3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark g3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"240\" width=\"45\" height=\"45\" class=\"square light h3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"195\" width=\"45\" height=\"45\" class=\"square light a4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark b4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"195\" width=\"45\" height=\"45\" class=\"square light c4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark d4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"195\" width=\"45\" height=\"45\" class=\"square light e4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark f4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"195\" width=\"45\" height=\"45\" class=\"square light g4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark h4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark a5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"150\" width=\"45\" height=\"45\" class=\"square light b5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark c5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"150\" width=\"45\" height=\"45\" class=\"square light d5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark e5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"150\" width=\"45\" height=\"45\" class=\"square light f5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark g5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"150\" width=\"45\" height=\"45\" class=\"square light h5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"105\" width=\"45\" height=\"45\" class=\"square light a6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark b6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"105\" width=\"45\" height=\"45\" class=\"square light c6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark d6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"105\" width=\"45\" height=\"45\" class=\"square light e6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark f6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"105\" width=\"45\" height=\"45\" class=\"square light g6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark h6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark a7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"60\" width=\"45\" height=\"45\" class=\"square light b7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark c7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"60\" width=\"45\" height=\"45\" class=\"square light d7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark e7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"60\" width=\"45\" height=\"45\" class=\"square light f7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark g7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"60\" width=\"45\" height=\"45\" class=\"square light h7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"15\" width=\"45\" height=\"45\" class=\"square light a8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark b8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"15\" width=\"45\" height=\"45\" class=\"square light c8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark d8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"15\" width=\"45\" height=\"45\" stroke=\"none\" fill=\"gray\" /><rect x=\"195\" y=\"15\" width=\"45\" height=\"45\" class=\"square light e8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark f8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"15\" width=\"45\" height=\"45\" class=\"square light g8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark h8\" stroke=\"none\" fill=\"#d18b47\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(15, 330)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(60, 330)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(105, 330)\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(240, 330)\" /><use href=\"#white-king\" xlink:href=\"#white-king\" transform=\"translate(285, 330)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(15, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(60, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(105, 285)\" /><use href=\"#white-queen\" xlink:href=\"#white-queen\" transform=\"translate(195, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(240, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(285, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(330, 285)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(240, 240)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(105, 195)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(150, 195)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(195, 195)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(195, 150)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(60, 105)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(240, 105)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(15, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(60, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(105, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(150, 60)\" /><use href=\"#black-queen\" xlink:href=\"#black-queen\" transform=\"translate(195, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(240, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(285, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(330, 60)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(15, 15)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(60, 15)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(105, 15)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(240, 15)\" /><use href=\"#black-king\" xlink:href=\"#black-king\" transform=\"translate(285, 15)\" /><line x1=\"172.5\" y1=\"37.5\" x2=\"190.45316561961457\" y2=\"55.45316561961456\" stroke=\"#15781B\" opacity=\"0.5019607843137255\" stroke-width=\"9.0\" stroke-linecap=\"butt\" class=\"arrow\" /><polygon points=\"214.31801948466054,79.31801948466054 202.38559255213755,43.520738687091566 178.52073868709158,67.38559255213755\" fill=\"#15781B\" opacity=\"0.5019607843137255\" class=\"arrow\" /></svg>'" ] }, "metadata": {}, @@ -692,7 +713,11 @@ "text": [ "\u001b[33mPlayer black\u001b[0m (to Player white):\n", "\n", - "d7d5. Pushing my pawn to challenge your bishop and control the center. Your move!\n", + "Indeed, control of the center is key. I'll move my queen from d8 to e7, matching your control of the center.\n", + "\n", + "d8e7\n", + "\n", + "Did you know the queen wasn't always the most powerful piece on the board? In the original game of chess, the piece could only move one square diagonally! Your move.\n", "\n", "--------------------------------------------------------------------------------\n" ] @@ -700,17 +725,17 @@ { "data": { "image/svg+xml": [ - "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 390 390\" width=\"200\" height=\"200\"><desc><pre>r n b q . r k .\n", - "p p p . . p p p\n", - ". . . . . n . .\n", - ". . b B . . . .\n", - ". . . N P . . .\n", - ". . . . . . . .\n", - "P P P . . P P P\n", - "R N B Q . R K .</pre></desc><defs><g id=\"white-pawn\" class=\"white pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#fff\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"white-knight\" class=\"white knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#000000; stroke:#000000;\" /></g><g id=\"white-bishop\" class=\"white bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#fff\" stroke-linecap=\"butt\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zM15 32c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" /></g><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke-linejoin=\"miter\" /></g><g id=\"white-rook\" class=\"white rook\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12 36v-4h21v4H12zM11 14V9h4v2h5V9h5v2h5V9h4v5\" stroke-linecap=\"butt\" /><path d=\"M34 14l-3 3H14l-3-3\" /><path d=\"M31 17v12.5H14V17\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M31 29.5l1.5 2.5h-20l1.5-2.5\" /><path d=\"M11 14h23\" fill=\"none\" stroke-linejoin=\"miter\" /></g><g id=\"white-queen\" class=\"white queen\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M8 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM24.5 7.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM41 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM16 8.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM33 9a2 2 0 1 1-4 0 2 2 0 1 1 4 0z\" /><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2-12-7 11V11l-5.5 13.5-3-15-3 15-5.5-14V25L7 14l2 12zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11.5 30c3.5-1 18.5-1 22 0M12 33.5c6-1 15-1 21 0\" fill=\"none\" /></g><g id=\"white-king\" class=\"white king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#fff\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#fff\" /><path d=\"M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" /></g><g id=\"black-pawn\" class=\"black pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#000\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"black-knight\" class=\"black knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 24.55,10.4 L 24.1,11.85 L 24.6,12 C 27.75,13 30.25,14.49 32.5,18.75 C 34.75,23.01 35.75,29.06 35.25,39 L 35.2,39.5 L 37.45,39.5 L 37.5,39 C 38,28.94 36.62,22.15 34.25,17.66 C 31.88,13.17 28.46,11.02 25.06,10.5 L 24.55,10.4 z \" style=\"fill:#ececec; stroke:none;\" /></g><g id=\"black-bishop\" class=\"black bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zm6-4c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" fill=\"#000\" stroke-linecap=\"butt\" /><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke=\"#fff\" stroke-linejoin=\"miter\" /></g><g id=\"black-rook\" class=\"black rook\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12.5 32l1.5-2.5h17l1.5 2.5h-20zM12 36v-4h21v4H12z\" stroke-linecap=\"butt\" /><path d=\"M14 29.5v-13h17v13H14z\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M14 16.5L11 14h23l-3 2.5H14zM11 14V9h4v2h5V9h5v2h5V9h4v5H11z\" stroke-linecap=\"butt\" /><path d=\"M12 35.5h21M13 31.5h19M14 29.5h17M14 16.5h17M11 14h23\" fill=\"none\" stroke=\"#fff\" stroke-width=\"1\" stroke-linejoin=\"miter\" /></g><g id=\"black-queen\" class=\"black queen\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#000\" stroke=\"none\"><circle cx=\"6\" cy=\"12\" r=\"2.75\" /><circle cx=\"14\" cy=\"9\" r=\"2.75\" /><circle cx=\"22.5\" cy=\"8\" r=\"2.75\" /><circle cx=\"31\" cy=\"9\" r=\"2.75\" /><circle cx=\"39\" cy=\"12\" r=\"2.75\" /></g><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2.5-12.5L31 25l-.3-14.1-5.2 13.6-3-14.5-3 14.5-5.2-13.6L14 25 6.5 13.5 9 26zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11 38.5a35 35 1 0 0 23 0\" fill=\"none\" stroke-linecap=\"butt\" /><path d=\"M11 29a35 35 1 0 1 23 0M12.5 31.5h20M11.5 34.5a35 35 1 0 0 22 0M10.5 37.5a35 35 1 0 0 24 0\" fill=\"none\" stroke=\"#fff\" /></g><g id=\"black-king\" class=\"black king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#000\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#000\" /><path d=\"M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M32 29.5s8.5-4 6.03-9.65C34.15 14 25 18 22.5 24.5l.01 2.1-.01-2.1C20 18 9.906 14 6.997 19.85c-2.497 5.65 4.853 9 4.853 9M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" stroke=\"#fff\" /></g></defs><rect x=\"7.5\" y=\"7.5\" width=\"375\" height=\"375\" fill=\"none\" stroke=\"#212121\" stroke-width=\"15\" /><g transform=\"translate(20, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(20, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(65, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(65, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(110, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(110, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(155, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(155, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(200, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(200, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(245, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(245, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(290, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(290, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(335, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(335, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(0, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(375, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(0, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(375, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(0, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(375, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(0, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(375, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(0, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(375, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(0, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(375, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(0, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(375, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(0, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><g transform=\"translate(375, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><rect x=\"15\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark a1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"330\" width=\"45\" height=\"45\" class=\"square light b1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark c1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"330\" width=\"45\" height=\"45\" class=\"square light d1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark e1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"330\" width=\"45\" height=\"45\" class=\"square light f1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark g1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"330\" width=\"45\" height=\"45\" class=\"square light h1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"285\" width=\"45\" height=\"45\" class=\"square light a2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark b2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"285\" width=\"45\" height=\"45\" class=\"square light c2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark d2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"285\" width=\"45\" height=\"45\" class=\"square light e2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark f2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"285\" width=\"45\" height=\"45\" class=\"square light g2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark h2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark a3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"240\" width=\"45\" height=\"45\" class=\"square light b3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark c3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"240\" width=\"45\" height=\"45\" class=\"square light d3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark e3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"240\" width=\"45\" height=\"45\" class=\"square light f3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark g3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"240\" width=\"45\" height=\"45\" class=\"square light h3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"195\" width=\"45\" height=\"45\" class=\"square light a4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark b4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"195\" width=\"45\" height=\"45\" class=\"square light c4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"195\" width=\"45\" height=\"45\" stroke=\"none\" fill=\"gray\" /><rect x=\"150\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark d4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"195\" width=\"45\" height=\"45\" class=\"square light e4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark f4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"195\" width=\"45\" height=\"45\" class=\"square light g4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark h4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark a5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"150\" width=\"45\" height=\"45\" class=\"square light b5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark c5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"150\" width=\"45\" height=\"45\" class=\"square light d5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark e5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"150\" width=\"45\" height=\"45\" class=\"square light f5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark g5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"150\" width=\"45\" height=\"45\" class=\"square light h5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"105\" width=\"45\" height=\"45\" class=\"square light a6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark b6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"105\" width=\"45\" height=\"45\" class=\"square light c6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark d6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"105\" width=\"45\" height=\"45\" class=\"square light e6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark f6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"105\" width=\"45\" height=\"45\" class=\"square light g6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark h6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark a7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"60\" width=\"45\" height=\"45\" class=\"square light b7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark c7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"60\" width=\"45\" height=\"45\" class=\"square light d7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark e7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"60\" width=\"45\" height=\"45\" class=\"square light f7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark g7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"60\" width=\"45\" height=\"45\" class=\"square light h7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"15\" width=\"45\" height=\"45\" class=\"square light a8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark b8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"15\" width=\"45\" height=\"45\" class=\"square light c8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark d8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"15\" width=\"45\" height=\"45\" class=\"square light e8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark f8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"15\" width=\"45\" height=\"45\" class=\"square light g8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark h8\" stroke=\"none\" fill=\"#d18b47\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(15, 330)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(60, 330)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(105, 330)\" /><use href=\"#white-queen\" xlink:href=\"#white-queen\" transform=\"translate(150, 330)\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(240, 330)\" /><use href=\"#white-king\" xlink:href=\"#white-king\" transform=\"translate(285, 330)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(15, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(60, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(105, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(240, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(285, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(330, 285)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(150, 195)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(195, 195)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(105, 150)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(150, 150)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(240, 105)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(15, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(60, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(105, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(240, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(285, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(330, 60)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(15, 15)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(60, 15)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(105, 15)\" /><use href=\"#black-queen\" xlink:href=\"#black-queen\" transform=\"translate(150, 15)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(240, 15)\" /><use href=\"#black-king\" xlink:href=\"#black-king\" transform=\"translate(285, 15)\" /><line x1=\"127.5\" y1=\"217.5\" x2=\"145.45316561961457\" y2=\"199.54683438038543\" stroke=\"#15781B\" opacity=\"0.5019607843137255\" stroke-width=\"9.0\" stroke-linecap=\"butt\" class=\"arrow\" /><polygon points=\"169.31801948466054,175.68198051533946 133.52073868709158,187.61440744786245 157.38559255213755,211.47926131290842\" fill=\"#15781B\" opacity=\"0.5019607843137255\" class=\"arrow\" /></svg>" + "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 390 390\" width=\"200\" height=\"200\"><desc><pre>r n b . . r k .\n", + "p p p p q p p p\n", + ". b . . . n . .\n", + ". . . . P . . .\n", + ". . B . P . . .\n", + ". . . . . N . .\n", + "P P P . Q P P P\n", + "R N B . . R K .</pre></desc><defs><g id=\"white-pawn\" class=\"white pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#fff\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"white-knight\" class=\"white knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#000000; stroke:#000000;\" /></g><g id=\"white-bishop\" class=\"white bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#fff\" stroke-linecap=\"butt\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zM15 32c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" /></g><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke-linejoin=\"miter\" /></g><g id=\"white-rook\" class=\"white rook\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12 36v-4h21v4H12zM11 14V9h4v2h5V9h5v2h5V9h4v5\" stroke-linecap=\"butt\" /><path d=\"M34 14l-3 3H14l-3-3\" /><path d=\"M31 17v12.5H14V17\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M31 29.5l1.5 2.5h-20l1.5-2.5\" /><path d=\"M11 14h23\" fill=\"none\" stroke-linejoin=\"miter\" /></g><g id=\"white-queen\" class=\"white queen\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M8 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM24.5 7.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM41 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM16 8.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM33 9a2 2 0 1 1-4 0 2 2 0 1 1 4 0z\" /><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2-12-7 11V11l-5.5 13.5-3-15-3 15-5.5-14V25L7 14l2 12zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11.5 30c3.5-1 18.5-1 22 0M12 33.5c6-1 15-1 21 0\" fill=\"none\" /></g><g id=\"white-king\" class=\"white king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#fff\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#fff\" /><path d=\"M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" /></g><g id=\"black-pawn\" class=\"black pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#000\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"black-knight\" class=\"black knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 24.55,10.4 L 24.1,11.85 L 24.6,12 C 27.75,13 30.25,14.49 32.5,18.75 C 34.75,23.01 35.75,29.06 35.25,39 L 35.2,39.5 L 37.45,39.5 L 37.5,39 C 38,28.94 36.62,22.15 34.25,17.66 C 31.88,13.17 28.46,11.02 25.06,10.5 L 24.55,10.4 z \" style=\"fill:#ececec; stroke:none;\" /></g><g id=\"black-bishop\" class=\"black bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zm6-4c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" fill=\"#000\" stroke-linecap=\"butt\" /><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke=\"#fff\" stroke-linejoin=\"miter\" /></g><g id=\"black-rook\" class=\"black rook\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12.5 32l1.5-2.5h17l1.5 2.5h-20zM12 36v-4h21v4H12z\" stroke-linecap=\"butt\" /><path d=\"M14 29.5v-13h17v13H14z\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M14 16.5L11 14h23l-3 2.5H14zM11 14V9h4v2h5V9h5v2h5V9h4v5H11z\" stroke-linecap=\"butt\" /><path d=\"M12 35.5h21M13 31.5h19M14 29.5h17M14 16.5h17M11 14h23\" fill=\"none\" stroke=\"#fff\" stroke-width=\"1\" stroke-linejoin=\"miter\" /></g><g id=\"black-queen\" class=\"black queen\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#000\" stroke=\"none\"><circle cx=\"6\" cy=\"12\" r=\"2.75\" /><circle cx=\"14\" cy=\"9\" r=\"2.75\" /><circle cx=\"22.5\" cy=\"8\" r=\"2.75\" /><circle cx=\"31\" cy=\"9\" r=\"2.75\" /><circle cx=\"39\" cy=\"12\" r=\"2.75\" /></g><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2.5-12.5L31 25l-.3-14.1-5.2 13.6-3-14.5-3 14.5-5.2-13.6L14 25 6.5 13.5 9 26zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11 38.5a35 35 1 0 0 23 0\" fill=\"none\" stroke-linecap=\"butt\" /><path d=\"M11 29a35 35 1 0 1 23 0M12.5 31.5h20M11.5 34.5a35 35 1 0 0 22 0M10.5 37.5a35 35 1 0 0 24 0\" fill=\"none\" stroke=\"#fff\" /></g><g id=\"black-king\" class=\"black king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#000\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#000\" /><path d=\"M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M32 29.5s8.5-4 6.03-9.65C34.15 14 25 18 22.5 24.5l.01 2.1-.01-2.1C20 18 9.906 14 6.997 19.85c-2.497 5.65 4.853 9 4.853 9M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" stroke=\"#fff\" /></g></defs><rect x=\"7.5\" y=\"7.5\" width=\"375\" height=\"375\" fill=\"none\" stroke=\"#212121\" stroke-width=\"15\" /><g transform=\"translate(20, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(20, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(65, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(65, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(110, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(110, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(155, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(155, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(200, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(200, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(245, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(245, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(290, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(290, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(335, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(335, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(0, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(375, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(0, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(375, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(0, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(375, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(0, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(375, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(0, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(375, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(0, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(375, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(0, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(375, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(0, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><g transform=\"translate(375, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><rect x=\"15\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark a1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"330\" width=\"45\" height=\"45\" class=\"square light b1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark c1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"330\" width=\"45\" height=\"45\" class=\"square light d1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark e1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"330\" width=\"45\" height=\"45\" class=\"square light f1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark g1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"330\" width=\"45\" height=\"45\" class=\"square light h1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"285\" width=\"45\" height=\"45\" class=\"square light a2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark b2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"285\" width=\"45\" height=\"45\" class=\"square light c2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark d2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"285\" width=\"45\" height=\"45\" class=\"square light e2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark f2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"285\" width=\"45\" height=\"45\" class=\"square light g2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark h2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark a3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"240\" width=\"45\" height=\"45\" class=\"square light b3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark c3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"240\" width=\"45\" height=\"45\" class=\"square light d3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark e3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"240\" width=\"45\" height=\"45\" class=\"square light f3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark g3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"240\" width=\"45\" height=\"45\" class=\"square light h3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"195\" width=\"45\" height=\"45\" class=\"square light a4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark b4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"195\" width=\"45\" height=\"45\" class=\"square light c4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark d4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"195\" width=\"45\" height=\"45\" stroke=\"none\" fill=\"gray\" /><rect x=\"195\" y=\"195\" width=\"45\" height=\"45\" class=\"square light e4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark f4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"195\" width=\"45\" height=\"45\" class=\"square light g4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark h4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark a5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"150\" width=\"45\" height=\"45\" class=\"square light b5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark c5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"150\" width=\"45\" height=\"45\" class=\"square light d5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark e5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"150\" width=\"45\" height=\"45\" class=\"square light f5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark g5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"150\" width=\"45\" height=\"45\" class=\"square light h5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"105\" width=\"45\" height=\"45\" class=\"square light a6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark b6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"105\" width=\"45\" height=\"45\" class=\"square light c6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark d6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"105\" width=\"45\" height=\"45\" class=\"square light e6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark f6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"105\" width=\"45\" height=\"45\" class=\"square light g6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark h6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark a7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"60\" width=\"45\" height=\"45\" class=\"square light b7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark c7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"60\" width=\"45\" height=\"45\" class=\"square light d7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark e7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"60\" width=\"45\" height=\"45\" class=\"square light f7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark g7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"60\" width=\"45\" height=\"45\" class=\"square light h7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"15\" width=\"45\" height=\"45\" class=\"square light a8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark b8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"15\" width=\"45\" height=\"45\" class=\"square light c8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark d8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"15\" width=\"45\" height=\"45\" class=\"square light e8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark f8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"15\" width=\"45\" height=\"45\" class=\"square light g8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark h8\" stroke=\"none\" fill=\"#d18b47\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(15, 330)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(60, 330)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(105, 330)\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(240, 330)\" /><use href=\"#white-king\" xlink:href=\"#white-king\" transform=\"translate(285, 330)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(15, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(60, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(105, 285)\" /><use href=\"#white-queen\" xlink:href=\"#white-queen\" transform=\"translate(195, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(240, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(285, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(330, 285)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(240, 240)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(105, 195)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(195, 195)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(195, 150)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(60, 105)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(240, 105)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(15, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(60, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(105, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(150, 60)\" /><use href=\"#black-queen\" xlink:href=\"#black-queen\" transform=\"translate(195, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(240, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(285, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(330, 60)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(15, 15)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(60, 15)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(105, 15)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(240, 15)\" /><use href=\"#black-king\" xlink:href=\"#black-king\" transform=\"translate(285, 15)\" /><line x1=\"172.5\" y1=\"217.5\" x2=\"190.45316561961457\" y2=\"199.54683438038543\" stroke=\"#15781B\" opacity=\"0.5019607843137255\" stroke-width=\"9.0\" stroke-linecap=\"butt\" class=\"arrow\" /><polygon points=\"214.31801948466054,175.68198051533946 178.52073868709158,187.61440744786245 202.38559255213755,211.47926131290842\" fill=\"#15781B\" opacity=\"0.5019607843137255\" class=\"arrow\" /></svg>" ], "text/plain": [ - "'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 390 390\" width=\"200\" height=\"200\"><desc><pre>r n b q . r k .\\np p p . . p p p\\n. . . . . n . .\\n. . b B . . . .\\n. . . N P . . .\\n. . . . . . . .\\nP P P . . P P P\\nR N B Q . R K .</pre></desc><defs><g id=\"white-pawn\" class=\"white pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#fff\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"white-knight\" class=\"white knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#000000; stroke:#000000;\" /></g><g id=\"white-bishop\" class=\"white bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#fff\" stroke-linecap=\"butt\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zM15 32c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" /></g><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke-linejoin=\"miter\" /></g><g id=\"white-rook\" class=\"white rook\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12 36v-4h21v4H12zM11 14V9h4v2h5V9h5v2h5V9h4v5\" stroke-linecap=\"butt\" /><path d=\"M34 14l-3 3H14l-3-3\" /><path d=\"M31 17v12.5H14V17\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M31 29.5l1.5 2.5h-20l1.5-2.5\" /><path d=\"M11 14h23\" fill=\"none\" stroke-linejoin=\"miter\" /></g><g id=\"white-queen\" class=\"white queen\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M8 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM24.5 7.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM41 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM16 8.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM33 9a2 2 0 1 1-4 0 2 2 0 1 1 4 0z\" /><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2-12-7 11V11l-5.5 13.5-3-15-3 15-5.5-14V25L7 14l2 12zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11.5 30c3.5-1 18.5-1 22 0M12 33.5c6-1 15-1 21 0\" fill=\"none\" /></g><g id=\"white-king\" class=\"white king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#fff\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#fff\" /><path d=\"M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" /></g><g id=\"black-pawn\" class=\"black pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#000\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"black-knight\" class=\"black knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 24.55,10.4 L 24.1,11.85 L 24.6,12 C 27.75,13 30.25,14.49 32.5,18.75 C 34.75,23.01 35.75,29.06 35.25,39 L 35.2,39.5 L 37.45,39.5 L 37.5,39 C 38,28.94 36.62,22.15 34.25,17.66 C 31.88,13.17 28.46,11.02 25.06,10.5 L 24.55,10.4 z \" style=\"fill:#ececec; stroke:none;\" /></g><g id=\"black-bishop\" class=\"black bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zm6-4c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" fill=\"#000\" stroke-linecap=\"butt\" /><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke=\"#fff\" stroke-linejoin=\"miter\" /></g><g id=\"black-rook\" class=\"black rook\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12.5 32l1.5-2.5h17l1.5 2.5h-20zM12 36v-4h21v4H12z\" stroke-linecap=\"butt\" /><path d=\"M14 29.5v-13h17v13H14z\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M14 16.5L11 14h23l-3 2.5H14zM11 14V9h4v2h5V9h5v2h5V9h4v5H11z\" stroke-linecap=\"butt\" /><path d=\"M12 35.5h21M13 31.5h19M14 29.5h17M14 16.5h17M11 14h23\" fill=\"none\" stroke=\"#fff\" stroke-width=\"1\" stroke-linejoin=\"miter\" /></g><g id=\"black-queen\" class=\"black queen\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#000\" stroke=\"none\"><circle cx=\"6\" cy=\"12\" r=\"2.75\" /><circle cx=\"14\" cy=\"9\" r=\"2.75\" /><circle cx=\"22.5\" cy=\"8\" r=\"2.75\" /><circle cx=\"31\" cy=\"9\" r=\"2.75\" /><circle cx=\"39\" cy=\"12\" r=\"2.75\" /></g><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2.5-12.5L31 25l-.3-14.1-5.2 13.6-3-14.5-3 14.5-5.2-13.6L14 25 6.5 13.5 9 26zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11 38.5a35 35 1 0 0 23 0\" fill=\"none\" stroke-linecap=\"butt\" /><path d=\"M11 29a35 35 1 0 1 23 0M12.5 31.5h20M11.5 34.5a35 35 1 0 0 22 0M10.5 37.5a35 35 1 0 0 24 0\" fill=\"none\" stroke=\"#fff\" /></g><g id=\"black-king\" class=\"black king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#000\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#000\" /><path d=\"M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M32 29.5s8.5-4 6.03-9.65C34.15 14 25 18 22.5 24.5l.01 2.1-.01-2.1C20 18 9.906 14 6.997 19.85c-2.497 5.65 4.853 9 4.853 9M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" stroke=\"#fff\" /></g></defs><rect x=\"7.5\" y=\"7.5\" width=\"375\" height=\"375\" fill=\"none\" stroke=\"#212121\" stroke-width=\"15\" /><g transform=\"translate(20, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(20, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(65, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(65, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(110, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(110, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(155, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(155, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(200, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(200, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(245, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(245, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(290, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(290, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(335, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(335, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(0, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(375, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(0, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(375, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(0, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(375, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(0, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(375, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(0, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(375, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(0, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(375, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(0, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(375, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(0, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><g transform=\"translate(375, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><rect x=\"15\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark a1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"330\" width=\"45\" height=\"45\" class=\"square light b1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark c1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"330\" width=\"45\" height=\"45\" class=\"square light d1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark e1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"330\" width=\"45\" height=\"45\" class=\"square light f1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark g1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"330\" width=\"45\" height=\"45\" class=\"square light h1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"285\" width=\"45\" height=\"45\" class=\"square light a2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark b2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"285\" width=\"45\" height=\"45\" class=\"square light c2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark d2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"285\" width=\"45\" height=\"45\" class=\"square light e2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark f2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"285\" width=\"45\" height=\"45\" class=\"square light g2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark h2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark a3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"240\" width=\"45\" height=\"45\" class=\"square light b3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark c3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"240\" width=\"45\" height=\"45\" class=\"square light d3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark e3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"240\" width=\"45\" height=\"45\" class=\"square light f3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark g3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"240\" width=\"45\" height=\"45\" class=\"square light h3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"195\" width=\"45\" height=\"45\" class=\"square light a4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark b4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"195\" width=\"45\" height=\"45\" class=\"square light c4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"195\" width=\"45\" height=\"45\" stroke=\"none\" fill=\"gray\" /><rect x=\"150\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark d4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"195\" width=\"45\" height=\"45\" class=\"square light e4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark f4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"195\" width=\"45\" height=\"45\" class=\"square light g4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark h4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark a5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"150\" width=\"45\" height=\"45\" class=\"square light b5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark c5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"150\" width=\"45\" height=\"45\" class=\"square light d5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark e5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"150\" width=\"45\" height=\"45\" class=\"square light f5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark g5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"150\" width=\"45\" height=\"45\" class=\"square light h5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"105\" width=\"45\" height=\"45\" class=\"square light a6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark b6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"105\" width=\"45\" height=\"45\" class=\"square light c6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark d6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"105\" width=\"45\" height=\"45\" class=\"square light e6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark f6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"105\" width=\"45\" height=\"45\" class=\"square light g6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark h6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark a7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"60\" width=\"45\" height=\"45\" class=\"square light b7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark c7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"60\" width=\"45\" height=\"45\" class=\"square light d7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark e7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"60\" width=\"45\" height=\"45\" class=\"square light f7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark g7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"60\" width=\"45\" height=\"45\" class=\"square light h7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"15\" width=\"45\" height=\"45\" class=\"square light a8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark b8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"15\" width=\"45\" height=\"45\" class=\"square light c8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark d8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"15\" width=\"45\" height=\"45\" class=\"square light e8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark f8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"15\" width=\"45\" height=\"45\" class=\"square light g8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark h8\" stroke=\"none\" fill=\"#d18b47\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(15, 330)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(60, 330)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(105, 330)\" /><use href=\"#white-queen\" xlink:href=\"#white-queen\" transform=\"translate(150, 330)\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(240, 330)\" /><use href=\"#white-king\" xlink:href=\"#white-king\" transform=\"translate(285, 330)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(15, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(60, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(105, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(240, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(285, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(330, 285)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(150, 195)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(195, 195)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(105, 150)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(150, 150)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(240, 105)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(15, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(60, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(105, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(240, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(285, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(330, 60)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(15, 15)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(60, 15)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(105, 15)\" /><use href=\"#black-queen\" xlink:href=\"#black-queen\" transform=\"translate(150, 15)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(240, 15)\" /><use href=\"#black-king\" xlink:href=\"#black-king\" transform=\"translate(285, 15)\" /><line x1=\"127.5\" y1=\"217.5\" x2=\"145.45316561961457\" y2=\"199.54683438038543\" stroke=\"#15781B\" opacity=\"0.5019607843137255\" stroke-width=\"9.0\" stroke-linecap=\"butt\" class=\"arrow\" /><polygon points=\"169.31801948466054,175.68198051533946 133.52073868709158,187.61440744786245 157.38559255213755,211.47926131290842\" fill=\"#15781B\" opacity=\"0.5019607843137255\" class=\"arrow\" /></svg>'" + "'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 390 390\" width=\"200\" height=\"200\"><desc><pre>r n b . . r k .\\np p p p q p p p\\n. b . . . n . .\\n. . . . P . . .\\n. . B . P . . .\\n. . . . . N . .\\nP P P . Q P P P\\nR N B . . R K .</pre></desc><defs><g id=\"white-pawn\" class=\"white pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#fff\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"white-knight\" class=\"white knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#000000; stroke:#000000;\" /></g><g id=\"white-bishop\" class=\"white bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#fff\" stroke-linecap=\"butt\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zM15 32c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" /></g><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke-linejoin=\"miter\" /></g><g id=\"white-rook\" class=\"white rook\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12 36v-4h21v4H12zM11 14V9h4v2h5V9h5v2h5V9h4v5\" stroke-linecap=\"butt\" /><path d=\"M34 14l-3 3H14l-3-3\" /><path d=\"M31 17v12.5H14V17\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M31 29.5l1.5 2.5h-20l1.5-2.5\" /><path d=\"M11 14h23\" fill=\"none\" stroke-linejoin=\"miter\" /></g><g id=\"white-queen\" class=\"white queen\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M8 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM24.5 7.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM41 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM16 8.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM33 9a2 2 0 1 1-4 0 2 2 0 1 1 4 0z\" /><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2-12-7 11V11l-5.5 13.5-3-15-3 15-5.5-14V25L7 14l2 12zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11.5 30c3.5-1 18.5-1 22 0M12 33.5c6-1 15-1 21 0\" fill=\"none\" /></g><g id=\"white-king\" class=\"white king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#fff\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#fff\" /><path d=\"M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" /></g><g id=\"black-pawn\" class=\"black pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#000\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"black-knight\" class=\"black knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 24.55,10.4 L 24.1,11.85 L 24.6,12 C 27.75,13 30.25,14.49 32.5,18.75 C 34.75,23.01 35.75,29.06 35.25,39 L 35.2,39.5 L 37.45,39.5 L 37.5,39 C 38,28.94 36.62,22.15 34.25,17.66 C 31.88,13.17 28.46,11.02 25.06,10.5 L 24.55,10.4 z \" style=\"fill:#ececec; stroke:none;\" /></g><g id=\"black-bishop\" class=\"black bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zm6-4c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" fill=\"#000\" stroke-linecap=\"butt\" /><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke=\"#fff\" stroke-linejoin=\"miter\" /></g><g id=\"black-rook\" class=\"black rook\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12.5 32l1.5-2.5h17l1.5 2.5h-20zM12 36v-4h21v4H12z\" stroke-linecap=\"butt\" /><path d=\"M14 29.5v-13h17v13H14z\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M14 16.5L11 14h23l-3 2.5H14zM11 14V9h4v2h5V9h5v2h5V9h4v5H11z\" stroke-linecap=\"butt\" /><path d=\"M12 35.5h21M13 31.5h19M14 29.5h17M14 16.5h17M11 14h23\" fill=\"none\" stroke=\"#fff\" stroke-width=\"1\" stroke-linejoin=\"miter\" /></g><g id=\"black-queen\" class=\"black queen\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#000\" stroke=\"none\"><circle cx=\"6\" cy=\"12\" r=\"2.75\" /><circle cx=\"14\" cy=\"9\" r=\"2.75\" /><circle cx=\"22.5\" cy=\"8\" r=\"2.75\" /><circle cx=\"31\" cy=\"9\" r=\"2.75\" /><circle cx=\"39\" cy=\"12\" r=\"2.75\" /></g><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2.5-12.5L31 25l-.3-14.1-5.2 13.6-3-14.5-3 14.5-5.2-13.6L14 25 6.5 13.5 9 26zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11 38.5a35 35 1 0 0 23 0\" fill=\"none\" stroke-linecap=\"butt\" /><path d=\"M11 29a35 35 1 0 1 23 0M12.5 31.5h20M11.5 34.5a35 35 1 0 0 22 0M10.5 37.5a35 35 1 0 0 24 0\" fill=\"none\" stroke=\"#fff\" /></g><g id=\"black-king\" class=\"black king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#000\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#000\" /><path d=\"M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M32 29.5s8.5-4 6.03-9.65C34.15 14 25 18 22.5 24.5l.01 2.1-.01-2.1C20 18 9.906 14 6.997 19.85c-2.497 5.65 4.853 9 4.853 9M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" stroke=\"#fff\" /></g></defs><rect x=\"7.5\" y=\"7.5\" width=\"375\" height=\"375\" fill=\"none\" stroke=\"#212121\" stroke-width=\"15\" /><g transform=\"translate(20, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(20, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(65, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(65, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(110, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(110, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(155, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(155, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(200, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(200, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(245, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(245, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(290, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(290, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(335, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(335, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(0, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(375, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(0, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(375, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(0, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(375, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(0, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(375, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(0, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(375, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(0, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(375, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(0, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(375, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(0, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><g transform=\"translate(375, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><rect x=\"15\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark a1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"330\" width=\"45\" height=\"45\" class=\"square light b1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark c1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"330\" width=\"45\" height=\"45\" class=\"square light d1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark e1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"330\" width=\"45\" height=\"45\" class=\"square light f1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark g1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"330\" width=\"45\" height=\"45\" class=\"square light h1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"285\" width=\"45\" height=\"45\" class=\"square light a2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark b2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"285\" width=\"45\" height=\"45\" class=\"square light c2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark d2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"285\" width=\"45\" height=\"45\" class=\"square light e2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark f2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"285\" width=\"45\" height=\"45\" class=\"square light g2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark h2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark a3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"240\" width=\"45\" height=\"45\" class=\"square light b3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark c3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"240\" width=\"45\" height=\"45\" class=\"square light d3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark e3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"240\" width=\"45\" height=\"45\" class=\"square light f3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark g3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"240\" width=\"45\" height=\"45\" class=\"square light h3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"195\" width=\"45\" height=\"45\" class=\"square light a4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark b4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"195\" width=\"45\" height=\"45\" class=\"square light c4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark d4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"195\" width=\"45\" height=\"45\" stroke=\"none\" fill=\"gray\" /><rect x=\"195\" y=\"195\" width=\"45\" height=\"45\" class=\"square light e4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark f4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"195\" width=\"45\" height=\"45\" class=\"square light g4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark h4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark a5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"150\" width=\"45\" height=\"45\" class=\"square light b5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark c5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"150\" width=\"45\" height=\"45\" class=\"square light d5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark e5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"150\" width=\"45\" height=\"45\" class=\"square light f5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark g5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"150\" width=\"45\" height=\"45\" class=\"square light h5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"105\" width=\"45\" height=\"45\" class=\"square light a6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark b6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"105\" width=\"45\" height=\"45\" class=\"square light c6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark d6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"105\" width=\"45\" height=\"45\" class=\"square light e6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark f6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"105\" width=\"45\" height=\"45\" class=\"square light g6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark h6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark a7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"60\" width=\"45\" height=\"45\" class=\"square light b7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark c7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"60\" width=\"45\" height=\"45\" class=\"square light d7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark e7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"60\" width=\"45\" height=\"45\" class=\"square light f7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark g7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"60\" width=\"45\" height=\"45\" class=\"square light h7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"15\" width=\"45\" height=\"45\" class=\"square light a8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark b8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"15\" width=\"45\" height=\"45\" class=\"square light c8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark d8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"15\" width=\"45\" height=\"45\" class=\"square light e8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark f8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"15\" width=\"45\" height=\"45\" class=\"square light g8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark h8\" stroke=\"none\" fill=\"#d18b47\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(15, 330)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(60, 330)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(105, 330)\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(240, 330)\" /><use href=\"#white-king\" xlink:href=\"#white-king\" transform=\"translate(285, 330)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(15, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(60, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(105, 285)\" /><use href=\"#white-queen\" xlink:href=\"#white-queen\" transform=\"translate(195, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(240, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(285, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(330, 285)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(240, 240)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(105, 195)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(195, 195)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(195, 150)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(60, 105)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(240, 105)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(15, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(60, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(105, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(150, 60)\" /><use href=\"#black-queen\" xlink:href=\"#black-queen\" transform=\"translate(195, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(240, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(285, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(330, 60)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(15, 15)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(60, 15)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(105, 15)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(240, 15)\" /><use href=\"#black-king\" xlink:href=\"#black-king\" transform=\"translate(285, 15)\" /><line x1=\"172.5\" y1=\"217.5\" x2=\"190.45316561961457\" y2=\"199.54683438038543\" stroke=\"#15781B\" opacity=\"0.5019607843137255\" stroke-width=\"9.0\" stroke-linecap=\"butt\" class=\"arrow\" /><polygon points=\"214.31801948466054,175.68198051533946 178.52073868709158,187.61440744786245 202.38559255213755,211.47926131290842\" fill=\"#15781B\" opacity=\"0.5019607843137255\" class=\"arrow\" /></svg>'" ] }, "metadata": {}, @@ -722,7 +747,9 @@ "text": [ "\u001b[33mPlayer white\u001b[0m (to Player black):\n", "\n", - "Bc4xd5. Taking your pawn with my bishop. The center is heating up! Your move!\n", + "Indeed, the queen has come a long way from its humble beginnings. Now, I'll move my pawn from d4 to e5, adding some tension to the center.\n", + "\n", + "d4e5\n", "\n", "--------------------------------------------------------------------------------\n" ] @@ -730,17 +757,17 @@ { "data": { "image/svg+xml": [ - "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 390 390\" width=\"200\" height=\"200\"><desc><pre>r n b q . r k .\n", - "p p p . . p p p\n", - ". . . . . . . .\n", - ". . b n . . . .\n", - ". . . N P . . .\n", - ". . . . . . . .\n", - "P P P . . P P P\n", - "R N B Q . R K .</pre></desc><defs><g id=\"white-pawn\" class=\"white pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#fff\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"white-knight\" class=\"white knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#000000; stroke:#000000;\" /></g><g id=\"white-bishop\" class=\"white bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#fff\" stroke-linecap=\"butt\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zM15 32c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" /></g><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke-linejoin=\"miter\" /></g><g id=\"white-rook\" class=\"white rook\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12 36v-4h21v4H12zM11 14V9h4v2h5V9h5v2h5V9h4v5\" stroke-linecap=\"butt\" /><path d=\"M34 14l-3 3H14l-3-3\" /><path d=\"M31 17v12.5H14V17\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M31 29.5l1.5 2.5h-20l1.5-2.5\" /><path d=\"M11 14h23\" fill=\"none\" stroke-linejoin=\"miter\" /></g><g id=\"white-queen\" class=\"white queen\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M8 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM24.5 7.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM41 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM16 8.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM33 9a2 2 0 1 1-4 0 2 2 0 1 1 4 0z\" /><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2-12-7 11V11l-5.5 13.5-3-15-3 15-5.5-14V25L7 14l2 12zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11.5 30c3.5-1 18.5-1 22 0M12 33.5c6-1 15-1 21 0\" fill=\"none\" /></g><g id=\"white-king\" class=\"white king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#fff\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#fff\" /><path d=\"M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" /></g><g id=\"black-pawn\" class=\"black pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#000\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"black-knight\" class=\"black knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 24.55,10.4 L 24.1,11.85 L 24.6,12 C 27.75,13 30.25,14.49 32.5,18.75 C 34.75,23.01 35.75,29.06 35.25,39 L 35.2,39.5 L 37.45,39.5 L 37.5,39 C 38,28.94 36.62,22.15 34.25,17.66 C 31.88,13.17 28.46,11.02 25.06,10.5 L 24.55,10.4 z \" style=\"fill:#ececec; stroke:none;\" /></g><g id=\"black-bishop\" class=\"black bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zm6-4c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" fill=\"#000\" stroke-linecap=\"butt\" /><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke=\"#fff\" stroke-linejoin=\"miter\" /></g><g id=\"black-rook\" class=\"black rook\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12.5 32l1.5-2.5h17l1.5 2.5h-20zM12 36v-4h21v4H12z\" stroke-linecap=\"butt\" /><path d=\"M14 29.5v-13h17v13H14z\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M14 16.5L11 14h23l-3 2.5H14zM11 14V9h4v2h5V9h5v2h5V9h4v5H11z\" stroke-linecap=\"butt\" /><path d=\"M12 35.5h21M13 31.5h19M14 29.5h17M14 16.5h17M11 14h23\" fill=\"none\" stroke=\"#fff\" stroke-width=\"1\" stroke-linejoin=\"miter\" /></g><g id=\"black-queen\" class=\"black queen\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#000\" stroke=\"none\"><circle cx=\"6\" cy=\"12\" r=\"2.75\" /><circle cx=\"14\" cy=\"9\" r=\"2.75\" /><circle cx=\"22.5\" cy=\"8\" r=\"2.75\" /><circle cx=\"31\" cy=\"9\" r=\"2.75\" /><circle cx=\"39\" cy=\"12\" r=\"2.75\" /></g><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2.5-12.5L31 25l-.3-14.1-5.2 13.6-3-14.5-3 14.5-5.2-13.6L14 25 6.5 13.5 9 26zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11 38.5a35 35 1 0 0 23 0\" fill=\"none\" stroke-linecap=\"butt\" /><path d=\"M11 29a35 35 1 0 1 23 0M12.5 31.5h20M11.5 34.5a35 35 1 0 0 22 0M10.5 37.5a35 35 1 0 0 24 0\" fill=\"none\" stroke=\"#fff\" /></g><g id=\"black-king\" class=\"black king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#000\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#000\" /><path d=\"M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M32 29.5s8.5-4 6.03-9.65C34.15 14 25 18 22.5 24.5l.01 2.1-.01-2.1C20 18 9.906 14 6.997 19.85c-2.497 5.65 4.853 9 4.853 9M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" stroke=\"#fff\" /></g></defs><rect x=\"7.5\" y=\"7.5\" width=\"375\" height=\"375\" fill=\"none\" stroke=\"#212121\" stroke-width=\"15\" /><g transform=\"translate(20, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(20, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(65, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(65, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(110, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(110, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(155, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(155, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(200, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(200, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(245, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(245, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(290, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(290, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(335, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(335, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(0, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(375, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(0, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(375, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(0, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(375, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(0, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(375, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(0, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(375, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(0, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(375, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(0, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(375, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(0, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><g transform=\"translate(375, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><rect x=\"15\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark a1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"330\" width=\"45\" height=\"45\" class=\"square light b1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark c1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"330\" width=\"45\" height=\"45\" class=\"square light d1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark e1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"330\" width=\"45\" height=\"45\" class=\"square light f1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark g1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"330\" width=\"45\" height=\"45\" class=\"square light h1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"285\" width=\"45\" height=\"45\" class=\"square light a2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark b2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"285\" width=\"45\" height=\"45\" class=\"square light c2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark d2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"285\" width=\"45\" height=\"45\" class=\"square light e2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark f2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"285\" width=\"45\" height=\"45\" class=\"square light g2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark h2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark a3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"240\" width=\"45\" height=\"45\" class=\"square light b3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark c3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"240\" width=\"45\" height=\"45\" class=\"square light d3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark e3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"240\" width=\"45\" height=\"45\" class=\"square light f3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark g3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"240\" width=\"45\" height=\"45\" class=\"square light h3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"195\" width=\"45\" height=\"45\" class=\"square light a4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark b4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"195\" width=\"45\" height=\"45\" class=\"square light c4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark d4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"195\" width=\"45\" height=\"45\" class=\"square light e4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark f4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"195\" width=\"45\" height=\"45\" class=\"square light g4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark h4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark a5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"150\" width=\"45\" height=\"45\" class=\"square light b5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark c5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"150\" width=\"45\" height=\"45\" class=\"square light d5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark e5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"150\" width=\"45\" height=\"45\" class=\"square light f5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark g5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"150\" width=\"45\" height=\"45\" class=\"square light h5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"105\" width=\"45\" height=\"45\" class=\"square light a6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark b6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"105\" width=\"45\" height=\"45\" class=\"square light c6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark d6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"105\" width=\"45\" height=\"45\" class=\"square light e6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark f6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"105\" width=\"45\" height=\"45\" stroke=\"none\" fill=\"gray\" /><rect x=\"285\" y=\"105\" width=\"45\" height=\"45\" class=\"square light g6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark h6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark a7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"60\" width=\"45\" height=\"45\" class=\"square light b7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark c7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"60\" width=\"45\" height=\"45\" class=\"square light d7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark e7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"60\" width=\"45\" height=\"45\" class=\"square light f7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark g7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"60\" width=\"45\" height=\"45\" class=\"square light h7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"15\" width=\"45\" height=\"45\" class=\"square light a8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark b8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"15\" width=\"45\" height=\"45\" class=\"square light c8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark d8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"15\" width=\"45\" height=\"45\" class=\"square light e8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark f8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"15\" width=\"45\" height=\"45\" class=\"square light g8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark h8\" stroke=\"none\" fill=\"#d18b47\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(15, 330)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(60, 330)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(105, 330)\" /><use href=\"#white-queen\" xlink:href=\"#white-queen\" transform=\"translate(150, 330)\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(240, 330)\" /><use href=\"#white-king\" xlink:href=\"#white-king\" transform=\"translate(285, 330)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(15, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(60, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(105, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(240, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(285, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(330, 285)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(150, 195)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(195, 195)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(105, 150)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(150, 150)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(15, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(60, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(105, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(240, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(285, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(330, 60)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(15, 15)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(60, 15)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(105, 15)\" /><use href=\"#black-queen\" xlink:href=\"#black-queen\" transform=\"translate(150, 15)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(240, 15)\" /><use href=\"#black-king\" xlink:href=\"#black-king\" transform=\"translate(285, 15)\" /><line x1=\"262.5\" y1=\"127.5\" x2=\"206.7118400557468\" y2=\"155.3940799721266\" stroke=\"#15781B\" opacity=\"0.5019607843137255\" stroke-width=\"9.0\" stroke-linecap=\"butt\" class=\"arrow\" /><polygon points=\"176.5249223594996,170.4875388202502 214.25856947980859,170.4875388202502 199.165110631685,140.30062112400302\" fill=\"#15781B\" opacity=\"0.5019607843137255\" class=\"arrow\" /></svg>" + "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 390 390\" width=\"200\" height=\"200\"><desc><pre>r n b . . r k .\n", + "p p p p q p p p\n", + ". b . . . . . .\n", + ". . . n P . . .\n", + ". . B . P . . .\n", + ". . . . . N . .\n", + "P P P . Q P P P\n", + "R N B . . R K .</pre></desc><defs><g id=\"white-pawn\" class=\"white pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#fff\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"white-knight\" class=\"white knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#000000; stroke:#000000;\" /></g><g id=\"white-bishop\" class=\"white bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#fff\" stroke-linecap=\"butt\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zM15 32c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" /></g><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke-linejoin=\"miter\" /></g><g id=\"white-rook\" class=\"white rook\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12 36v-4h21v4H12zM11 14V9h4v2h5V9h5v2h5V9h4v5\" stroke-linecap=\"butt\" /><path d=\"M34 14l-3 3H14l-3-3\" /><path d=\"M31 17v12.5H14V17\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M31 29.5l1.5 2.5h-20l1.5-2.5\" /><path d=\"M11 14h23\" fill=\"none\" stroke-linejoin=\"miter\" /></g><g id=\"white-queen\" class=\"white queen\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M8 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM24.5 7.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM41 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM16 8.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM33 9a2 2 0 1 1-4 0 2 2 0 1 1 4 0z\" /><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2-12-7 11V11l-5.5 13.5-3-15-3 15-5.5-14V25L7 14l2 12zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11.5 30c3.5-1 18.5-1 22 0M12 33.5c6-1 15-1 21 0\" fill=\"none\" /></g><g id=\"white-king\" class=\"white king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#fff\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#fff\" /><path d=\"M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" /></g><g id=\"black-pawn\" class=\"black pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#000\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"black-knight\" class=\"black knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 24.55,10.4 L 24.1,11.85 L 24.6,12 C 27.75,13 30.25,14.49 32.5,18.75 C 34.75,23.01 35.75,29.06 35.25,39 L 35.2,39.5 L 37.45,39.5 L 37.5,39 C 38,28.94 36.62,22.15 34.25,17.66 C 31.88,13.17 28.46,11.02 25.06,10.5 L 24.55,10.4 z \" style=\"fill:#ececec; stroke:none;\" /></g><g id=\"black-bishop\" class=\"black bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zm6-4c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" fill=\"#000\" stroke-linecap=\"butt\" /><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke=\"#fff\" stroke-linejoin=\"miter\" /></g><g id=\"black-rook\" class=\"black rook\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12.5 32l1.5-2.5h17l1.5 2.5h-20zM12 36v-4h21v4H12z\" stroke-linecap=\"butt\" /><path d=\"M14 29.5v-13h17v13H14z\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M14 16.5L11 14h23l-3 2.5H14zM11 14V9h4v2h5V9h5v2h5V9h4v5H11z\" stroke-linecap=\"butt\" /><path d=\"M12 35.5h21M13 31.5h19M14 29.5h17M14 16.5h17M11 14h23\" fill=\"none\" stroke=\"#fff\" stroke-width=\"1\" stroke-linejoin=\"miter\" /></g><g id=\"black-queen\" class=\"black queen\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#000\" stroke=\"none\"><circle cx=\"6\" cy=\"12\" r=\"2.75\" /><circle cx=\"14\" cy=\"9\" r=\"2.75\" /><circle cx=\"22.5\" cy=\"8\" r=\"2.75\" /><circle cx=\"31\" cy=\"9\" r=\"2.75\" /><circle cx=\"39\" cy=\"12\" r=\"2.75\" /></g><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2.5-12.5L31 25l-.3-14.1-5.2 13.6-3-14.5-3 14.5-5.2-13.6L14 25 6.5 13.5 9 26zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11 38.5a35 35 1 0 0 23 0\" fill=\"none\" stroke-linecap=\"butt\" /><path d=\"M11 29a35 35 1 0 1 23 0M12.5 31.5h20M11.5 34.5a35 35 1 0 0 22 0M10.5 37.5a35 35 1 0 0 24 0\" fill=\"none\" stroke=\"#fff\" /></g><g id=\"black-king\" class=\"black king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#000\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#000\" /><path d=\"M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M32 29.5s8.5-4 6.03-9.65C34.15 14 25 18 22.5 24.5l.01 2.1-.01-2.1C20 18 9.906 14 6.997 19.85c-2.497 5.65 4.853 9 4.853 9M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" stroke=\"#fff\" /></g></defs><rect x=\"7.5\" y=\"7.5\" width=\"375\" height=\"375\" fill=\"none\" stroke=\"#212121\" stroke-width=\"15\" /><g transform=\"translate(20, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(20, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(65, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(65, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(110, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(110, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(155, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(155, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(200, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(200, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(245, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(245, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(290, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(290, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(335, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(335, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(0, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(375, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(0, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(375, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(0, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(375, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(0, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(375, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(0, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(375, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(0, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(375, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(0, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(375, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(0, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><g transform=\"translate(375, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><rect x=\"15\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark a1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"330\" width=\"45\" height=\"45\" class=\"square light b1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark c1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"330\" width=\"45\" height=\"45\" class=\"square light d1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark e1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"330\" width=\"45\" height=\"45\" class=\"square light f1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark g1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"330\" width=\"45\" height=\"45\" class=\"square light h1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"285\" width=\"45\" height=\"45\" class=\"square light a2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark b2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"285\" width=\"45\" height=\"45\" class=\"square light c2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark d2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"285\" width=\"45\" height=\"45\" class=\"square light e2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark f2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"285\" width=\"45\" height=\"45\" class=\"square light g2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark h2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark a3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"240\" width=\"45\" height=\"45\" class=\"square light b3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark c3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"240\" width=\"45\" height=\"45\" class=\"square light d3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark e3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"240\" width=\"45\" height=\"45\" class=\"square light f3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark g3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"240\" width=\"45\" height=\"45\" class=\"square light h3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"195\" width=\"45\" height=\"45\" class=\"square light a4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark b4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"195\" width=\"45\" height=\"45\" class=\"square light c4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark d4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"195\" width=\"45\" height=\"45\" class=\"square light e4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark f4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"195\" width=\"45\" height=\"45\" class=\"square light g4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark h4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark a5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"150\" width=\"45\" height=\"45\" class=\"square light b5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark c5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"150\" width=\"45\" height=\"45\" class=\"square light d5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark e5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"150\" width=\"45\" height=\"45\" class=\"square light f5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark g5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"150\" width=\"45\" height=\"45\" class=\"square light h5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"105\" width=\"45\" height=\"45\" class=\"square light a6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark b6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"105\" width=\"45\" height=\"45\" class=\"square light c6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark d6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"105\" width=\"45\" height=\"45\" class=\"square light e6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark f6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"105\" width=\"45\" height=\"45\" stroke=\"none\" fill=\"gray\" /><rect x=\"285\" y=\"105\" width=\"45\" height=\"45\" class=\"square light g6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark h6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark a7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"60\" width=\"45\" height=\"45\" class=\"square light b7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark c7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"60\" width=\"45\" height=\"45\" class=\"square light d7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark e7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"60\" width=\"45\" height=\"45\" class=\"square light f7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark g7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"60\" width=\"45\" height=\"45\" class=\"square light h7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"15\" width=\"45\" height=\"45\" class=\"square light a8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark b8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"15\" width=\"45\" height=\"45\" class=\"square light c8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark d8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"15\" width=\"45\" height=\"45\" class=\"square light e8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark f8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"15\" width=\"45\" height=\"45\" class=\"square light g8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark h8\" stroke=\"none\" fill=\"#d18b47\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(15, 330)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(60, 330)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(105, 330)\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(240, 330)\" /><use href=\"#white-king\" xlink:href=\"#white-king\" transform=\"translate(285, 330)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(15, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(60, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(105, 285)\" /><use href=\"#white-queen\" xlink:href=\"#white-queen\" transform=\"translate(195, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(240, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(285, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(330, 285)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(240, 240)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(105, 195)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(195, 195)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(150, 150)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(195, 150)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(60, 105)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(15, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(60, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(105, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(150, 60)\" /><use href=\"#black-queen\" xlink:href=\"#black-queen\" transform=\"translate(195, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(240, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(285, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(330, 60)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(15, 15)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(60, 15)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(105, 15)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(240, 15)\" /><use href=\"#black-king\" xlink:href=\"#black-king\" transform=\"translate(285, 15)\" /><line x1=\"262.5\" y1=\"127.5\" x2=\"206.7118400557468\" y2=\"155.3940799721266\" stroke=\"#15781B\" opacity=\"0.5019607843137255\" stroke-width=\"9.0\" stroke-linecap=\"butt\" class=\"arrow\" /><polygon points=\"176.5249223594996,170.4875388202502 214.25856947980859,170.4875388202502 199.165110631685,140.30062112400302\" fill=\"#15781B\" opacity=\"0.5019607843137255\" class=\"arrow\" /></svg>" ], "text/plain": [ - "'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 390 390\" width=\"200\" height=\"200\"><desc><pre>r n b q . r k .\\np p p . . p p p\\n. . . . . . . .\\n. . b n . . . .\\n. . . N P . . .\\n. . . . . . . .\\nP P P . . P P P\\nR N B Q . R K .</pre></desc><defs><g id=\"white-pawn\" class=\"white pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#fff\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"white-knight\" class=\"white knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#000000; stroke:#000000;\" /></g><g id=\"white-bishop\" class=\"white bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#fff\" stroke-linecap=\"butt\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zM15 32c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" /></g><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke-linejoin=\"miter\" /></g><g id=\"white-rook\" class=\"white rook\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12 36v-4h21v4H12zM11 14V9h4v2h5V9h5v2h5V9h4v5\" stroke-linecap=\"butt\" /><path d=\"M34 14l-3 3H14l-3-3\" /><path d=\"M31 17v12.5H14V17\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M31 29.5l1.5 2.5h-20l1.5-2.5\" /><path d=\"M11 14h23\" fill=\"none\" stroke-linejoin=\"miter\" /></g><g id=\"white-queen\" class=\"white queen\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M8 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM24.5 7.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM41 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM16 8.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM33 9a2 2 0 1 1-4 0 2 2 0 1 1 4 0z\" /><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2-12-7 11V11l-5.5 13.5-3-15-3 15-5.5-14V25L7 14l2 12zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11.5 30c3.5-1 18.5-1 22 0M12 33.5c6-1 15-1 21 0\" fill=\"none\" /></g><g id=\"white-king\" class=\"white king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#fff\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#fff\" /><path d=\"M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" /></g><g id=\"black-pawn\" class=\"black pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#000\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"black-knight\" class=\"black knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 24.55,10.4 L 24.1,11.85 L 24.6,12 C 27.75,13 30.25,14.49 32.5,18.75 C 34.75,23.01 35.75,29.06 35.25,39 L 35.2,39.5 L 37.45,39.5 L 37.5,39 C 38,28.94 36.62,22.15 34.25,17.66 C 31.88,13.17 28.46,11.02 25.06,10.5 L 24.55,10.4 z \" style=\"fill:#ececec; stroke:none;\" /></g><g id=\"black-bishop\" class=\"black bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zm6-4c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" fill=\"#000\" stroke-linecap=\"butt\" /><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke=\"#fff\" stroke-linejoin=\"miter\" /></g><g id=\"black-rook\" class=\"black rook\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12.5 32l1.5-2.5h17l1.5 2.5h-20zM12 36v-4h21v4H12z\" stroke-linecap=\"butt\" /><path d=\"M14 29.5v-13h17v13H14z\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M14 16.5L11 14h23l-3 2.5H14zM11 14V9h4v2h5V9h5v2h5V9h4v5H11z\" stroke-linecap=\"butt\" /><path d=\"M12 35.5h21M13 31.5h19M14 29.5h17M14 16.5h17M11 14h23\" fill=\"none\" stroke=\"#fff\" stroke-width=\"1\" stroke-linejoin=\"miter\" /></g><g id=\"black-queen\" class=\"black queen\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#000\" stroke=\"none\"><circle cx=\"6\" cy=\"12\" r=\"2.75\" /><circle cx=\"14\" cy=\"9\" r=\"2.75\" /><circle cx=\"22.5\" cy=\"8\" r=\"2.75\" /><circle cx=\"31\" cy=\"9\" r=\"2.75\" /><circle cx=\"39\" cy=\"12\" r=\"2.75\" /></g><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2.5-12.5L31 25l-.3-14.1-5.2 13.6-3-14.5-3 14.5-5.2-13.6L14 25 6.5 13.5 9 26zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11 38.5a35 35 1 0 0 23 0\" fill=\"none\" stroke-linecap=\"butt\" /><path d=\"M11 29a35 35 1 0 1 23 0M12.5 31.5h20M11.5 34.5a35 35 1 0 0 22 0M10.5 37.5a35 35 1 0 0 24 0\" fill=\"none\" stroke=\"#fff\" /></g><g id=\"black-king\" class=\"black king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#000\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#000\" /><path d=\"M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M32 29.5s8.5-4 6.03-9.65C34.15 14 25 18 22.5 24.5l.01 2.1-.01-2.1C20 18 9.906 14 6.997 19.85c-2.497 5.65 4.853 9 4.853 9M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" stroke=\"#fff\" /></g></defs><rect x=\"7.5\" y=\"7.5\" width=\"375\" height=\"375\" fill=\"none\" stroke=\"#212121\" stroke-width=\"15\" /><g transform=\"translate(20, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(20, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(65, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(65, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(110, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(110, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(155, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(155, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(200, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(200, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(245, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(245, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(290, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(290, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(335, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(335, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(0, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(375, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(0, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(375, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(0, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(375, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(0, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(375, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(0, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(375, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(0, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(375, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(0, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(375, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(0, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><g transform=\"translate(375, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><rect x=\"15\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark a1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"330\" width=\"45\" height=\"45\" class=\"square light b1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark c1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"330\" width=\"45\" height=\"45\" class=\"square light d1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark e1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"330\" width=\"45\" height=\"45\" class=\"square light f1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark g1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"330\" width=\"45\" height=\"45\" class=\"square light h1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"285\" width=\"45\" height=\"45\" class=\"square light a2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark b2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"285\" width=\"45\" height=\"45\" class=\"square light c2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark d2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"285\" width=\"45\" height=\"45\" class=\"square light e2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark f2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"285\" width=\"45\" height=\"45\" class=\"square light g2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark h2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark a3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"240\" width=\"45\" height=\"45\" class=\"square light b3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark c3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"240\" width=\"45\" height=\"45\" class=\"square light d3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark e3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"240\" width=\"45\" height=\"45\" class=\"square light f3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark g3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"240\" width=\"45\" height=\"45\" class=\"square light h3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"195\" width=\"45\" height=\"45\" class=\"square light a4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark b4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"195\" width=\"45\" height=\"45\" class=\"square light c4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark d4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"195\" width=\"45\" height=\"45\" class=\"square light e4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark f4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"195\" width=\"45\" height=\"45\" class=\"square light g4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark h4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark a5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"150\" width=\"45\" height=\"45\" class=\"square light b5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark c5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"150\" width=\"45\" height=\"45\" class=\"square light d5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark e5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"150\" width=\"45\" height=\"45\" class=\"square light f5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark g5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"150\" width=\"45\" height=\"45\" class=\"square light h5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"105\" width=\"45\" height=\"45\" class=\"square light a6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark b6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"105\" width=\"45\" height=\"45\" class=\"square light c6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark d6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"105\" width=\"45\" height=\"45\" class=\"square light e6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark f6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"105\" width=\"45\" height=\"45\" stroke=\"none\" fill=\"gray\" /><rect x=\"285\" y=\"105\" width=\"45\" height=\"45\" class=\"square light g6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark h6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark a7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"60\" width=\"45\" height=\"45\" class=\"square light b7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark c7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"60\" width=\"45\" height=\"45\" class=\"square light d7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark e7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"60\" width=\"45\" height=\"45\" class=\"square light f7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark g7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"60\" width=\"45\" height=\"45\" class=\"square light h7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"15\" width=\"45\" height=\"45\" class=\"square light a8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark b8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"15\" width=\"45\" height=\"45\" class=\"square light c8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark d8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"15\" width=\"45\" height=\"45\" class=\"square light e8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark f8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"15\" width=\"45\" height=\"45\" class=\"square light g8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark h8\" stroke=\"none\" fill=\"#d18b47\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(15, 330)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(60, 330)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(105, 330)\" /><use href=\"#white-queen\" xlink:href=\"#white-queen\" transform=\"translate(150, 330)\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(240, 330)\" /><use href=\"#white-king\" xlink:href=\"#white-king\" transform=\"translate(285, 330)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(15, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(60, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(105, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(240, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(285, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(330, 285)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(150, 195)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(195, 195)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(105, 150)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(150, 150)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(15, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(60, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(105, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(240, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(285, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(330, 60)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(15, 15)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(60, 15)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(105, 15)\" /><use href=\"#black-queen\" xlink:href=\"#black-queen\" transform=\"translate(150, 15)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(240, 15)\" /><use href=\"#black-king\" xlink:href=\"#black-king\" transform=\"translate(285, 15)\" /><line x1=\"262.5\" y1=\"127.5\" x2=\"206.7118400557468\" y2=\"155.3940799721266\" stroke=\"#15781B\" opacity=\"0.5019607843137255\" stroke-width=\"9.0\" stroke-linecap=\"butt\" class=\"arrow\" /><polygon points=\"176.5249223594996,170.4875388202502 214.25856947980859,170.4875388202502 199.165110631685,140.30062112400302\" fill=\"#15781B\" opacity=\"0.5019607843137255\" class=\"arrow\" /></svg>'" + "'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 390 390\" width=\"200\" height=\"200\"><desc><pre>r n b . . r k .\\np p p p q p p p\\n. b . . . . . .\\n. . . n P . . .\\n. . B . P . . .\\n. . . . . N . .\\nP P P . Q P P P\\nR N B . . R K .</pre></desc><defs><g id=\"white-pawn\" class=\"white pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#fff\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"white-knight\" class=\"white knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#000000; stroke:#000000;\" /></g><g id=\"white-bishop\" class=\"white bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#fff\" stroke-linecap=\"butt\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zM15 32c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" /></g><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke-linejoin=\"miter\" /></g><g id=\"white-rook\" class=\"white rook\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12 36v-4h21v4H12zM11 14V9h4v2h5V9h5v2h5V9h4v5\" stroke-linecap=\"butt\" /><path d=\"M34 14l-3 3H14l-3-3\" /><path d=\"M31 17v12.5H14V17\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M31 29.5l1.5 2.5h-20l1.5-2.5\" /><path d=\"M11 14h23\" fill=\"none\" stroke-linejoin=\"miter\" /></g><g id=\"white-queen\" class=\"white queen\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M8 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM24.5 7.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM41 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM16 8.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM33 9a2 2 0 1 1-4 0 2 2 0 1 1 4 0z\" /><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2-12-7 11V11l-5.5 13.5-3-15-3 15-5.5-14V25L7 14l2 12zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11.5 30c3.5-1 18.5-1 22 0M12 33.5c6-1 15-1 21 0\" fill=\"none\" /></g><g id=\"white-king\" class=\"white king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#fff\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#fff\" /><path d=\"M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" /></g><g id=\"black-pawn\" class=\"black pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#000\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"black-knight\" class=\"black knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 24.55,10.4 L 24.1,11.85 L 24.6,12 C 27.75,13 30.25,14.49 32.5,18.75 C 34.75,23.01 35.75,29.06 35.25,39 L 35.2,39.5 L 37.45,39.5 L 37.5,39 C 38,28.94 36.62,22.15 34.25,17.66 C 31.88,13.17 28.46,11.02 25.06,10.5 L 24.55,10.4 z \" style=\"fill:#ececec; stroke:none;\" /></g><g id=\"black-bishop\" class=\"black bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zm6-4c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" fill=\"#000\" stroke-linecap=\"butt\" /><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke=\"#fff\" stroke-linejoin=\"miter\" /></g><g id=\"black-rook\" class=\"black rook\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12.5 32l1.5-2.5h17l1.5 2.5h-20zM12 36v-4h21v4H12z\" stroke-linecap=\"butt\" /><path d=\"M14 29.5v-13h17v13H14z\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M14 16.5L11 14h23l-3 2.5H14zM11 14V9h4v2h5V9h5v2h5V9h4v5H11z\" stroke-linecap=\"butt\" /><path d=\"M12 35.5h21M13 31.5h19M14 29.5h17M14 16.5h17M11 14h23\" fill=\"none\" stroke=\"#fff\" stroke-width=\"1\" stroke-linejoin=\"miter\" /></g><g id=\"black-queen\" class=\"black queen\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#000\" stroke=\"none\"><circle cx=\"6\" cy=\"12\" r=\"2.75\" /><circle cx=\"14\" cy=\"9\" r=\"2.75\" /><circle cx=\"22.5\" cy=\"8\" r=\"2.75\" /><circle cx=\"31\" cy=\"9\" r=\"2.75\" /><circle cx=\"39\" cy=\"12\" r=\"2.75\" /></g><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2.5-12.5L31 25l-.3-14.1-5.2 13.6-3-14.5-3 14.5-5.2-13.6L14 25 6.5 13.5 9 26zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11 38.5a35 35 1 0 0 23 0\" fill=\"none\" stroke-linecap=\"butt\" /><path d=\"M11 29a35 35 1 0 1 23 0M12.5 31.5h20M11.5 34.5a35 35 1 0 0 22 0M10.5 37.5a35 35 1 0 0 24 0\" fill=\"none\" stroke=\"#fff\" /></g><g id=\"black-king\" class=\"black king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#000\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#000\" /><path d=\"M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M32 29.5s8.5-4 6.03-9.65C34.15 14 25 18 22.5 24.5l.01 2.1-.01-2.1C20 18 9.906 14 6.997 19.85c-2.497 5.65 4.853 9 4.853 9M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" stroke=\"#fff\" /></g></defs><rect x=\"7.5\" y=\"7.5\" width=\"375\" height=\"375\" fill=\"none\" stroke=\"#212121\" stroke-width=\"15\" /><g transform=\"translate(20, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(20, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(65, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(65, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(110, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(110, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(155, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(155, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(200, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(200, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(245, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(245, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(290, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(290, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(335, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(335, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(0, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(375, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(0, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(375, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(0, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(375, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(0, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(375, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(0, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(375, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(0, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(375, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(0, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(375, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(0, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><g transform=\"translate(375, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><rect x=\"15\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark a1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"330\" width=\"45\" height=\"45\" class=\"square light b1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark c1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"330\" width=\"45\" height=\"45\" class=\"square light d1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark e1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"330\" width=\"45\" height=\"45\" class=\"square light f1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark g1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"330\" width=\"45\" height=\"45\" class=\"square light h1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"285\" width=\"45\" height=\"45\" class=\"square light a2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark b2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"285\" width=\"45\" height=\"45\" class=\"square light c2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark d2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"285\" width=\"45\" height=\"45\" class=\"square light e2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark f2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"285\" width=\"45\" height=\"45\" class=\"square light g2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark h2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark a3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"240\" width=\"45\" height=\"45\" class=\"square light b3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark c3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"240\" width=\"45\" height=\"45\" class=\"square light d3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark e3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"240\" width=\"45\" height=\"45\" class=\"square light f3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark g3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"240\" width=\"45\" height=\"45\" class=\"square light h3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"195\" width=\"45\" height=\"45\" class=\"square light a4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark b4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"195\" width=\"45\" height=\"45\" class=\"square light c4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark d4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"195\" width=\"45\" height=\"45\" class=\"square light e4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark f4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"195\" width=\"45\" height=\"45\" class=\"square light g4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark h4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark a5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"150\" width=\"45\" height=\"45\" class=\"square light b5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark c5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"150\" width=\"45\" height=\"45\" class=\"square light d5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark e5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"150\" width=\"45\" height=\"45\" class=\"square light f5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark g5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"150\" width=\"45\" height=\"45\" class=\"square light h5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"105\" width=\"45\" height=\"45\" class=\"square light a6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark b6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"105\" width=\"45\" height=\"45\" class=\"square light c6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark d6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"105\" width=\"45\" height=\"45\" class=\"square light e6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark f6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"105\" width=\"45\" height=\"45\" stroke=\"none\" fill=\"gray\" /><rect x=\"285\" y=\"105\" width=\"45\" height=\"45\" class=\"square light g6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark h6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark a7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"60\" width=\"45\" height=\"45\" class=\"square light b7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark c7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"60\" width=\"45\" height=\"45\" class=\"square light d7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark e7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"60\" width=\"45\" height=\"45\" class=\"square light f7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark g7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"60\" width=\"45\" height=\"45\" class=\"square light h7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"15\" width=\"45\" height=\"45\" class=\"square light a8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark b8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"15\" width=\"45\" height=\"45\" class=\"square light c8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark d8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"15\" width=\"45\" height=\"45\" class=\"square light e8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark f8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"15\" width=\"45\" height=\"45\" class=\"square light g8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark h8\" stroke=\"none\" fill=\"#d18b47\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(15, 330)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(60, 330)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(105, 330)\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(240, 330)\" /><use href=\"#white-king\" xlink:href=\"#white-king\" transform=\"translate(285, 330)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(15, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(60, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(105, 285)\" /><use href=\"#white-queen\" xlink:href=\"#white-queen\" transform=\"translate(195, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(240, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(285, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(330, 285)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(240, 240)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(105, 195)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(195, 195)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(150, 150)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(195, 150)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(60, 105)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(15, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(60, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(105, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(150, 60)\" /><use href=\"#black-queen\" xlink:href=\"#black-queen\" transform=\"translate(195, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(240, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(285, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(330, 60)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(15, 15)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(60, 15)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(105, 15)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(240, 15)\" /><use href=\"#black-king\" xlink:href=\"#black-king\" transform=\"translate(285, 15)\" /><line x1=\"262.5\" y1=\"127.5\" x2=\"206.7118400557468\" y2=\"155.3940799721266\" stroke=\"#15781B\" opacity=\"0.5019607843137255\" stroke-width=\"9.0\" stroke-linecap=\"butt\" class=\"arrow\" /><polygon points=\"176.5249223594996,170.4875388202502 214.25856947980859,170.4875388202502 199.165110631685,140.30062112400302\" fill=\"#15781B\" opacity=\"0.5019607843137255\" class=\"arrow\" /></svg>'" ] }, "metadata": {}, @@ -752,7 +779,11 @@ "text": [ "\u001b[33mPlayer black\u001b[0m (to Player white):\n", "\n", - "Nf6xd5. Taking back with my knight, keeping the tension in the center. Your move!\n", + "Interesting move! This is shaping up to be quite the game. I'll move my knight from f6 to d5.\n", + "\n", + "f6d5\n", + "\n", + "You know, the knight is the only piece that can jump over others. It's like the horse in a game of polo, leaping over obstacles. Your move.\n", "\n", "--------------------------------------------------------------------------------\n" ] @@ -760,17 +791,17 @@ { "data": { "image/svg+xml": [ - "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 390 390\" width=\"200\" height=\"200\"><desc><pre>r n b q . r k .\n", - "p p p . . p p p\n", - ". . . . . . . .\n", - ". . b n . . . .\n", - ". . P N P . . .\n", - ". . . . . . . .\n", - "P P . . . P P P\n", - "R N B Q . R K .</pre></desc><defs><g id=\"white-pawn\" class=\"white pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#fff\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"white-knight\" class=\"white knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#000000; stroke:#000000;\" /></g><g id=\"white-bishop\" class=\"white bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#fff\" stroke-linecap=\"butt\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zM15 32c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" /></g><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke-linejoin=\"miter\" /></g><g id=\"white-rook\" class=\"white rook\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12 36v-4h21v4H12zM11 14V9h4v2h5V9h5v2h5V9h4v5\" stroke-linecap=\"butt\" /><path d=\"M34 14l-3 3H14l-3-3\" /><path d=\"M31 17v12.5H14V17\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M31 29.5l1.5 2.5h-20l1.5-2.5\" /><path d=\"M11 14h23\" fill=\"none\" stroke-linejoin=\"miter\" /></g><g id=\"white-queen\" class=\"white queen\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M8 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM24.5 7.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM41 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM16 8.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM33 9a2 2 0 1 1-4 0 2 2 0 1 1 4 0z\" /><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2-12-7 11V11l-5.5 13.5-3-15-3 15-5.5-14V25L7 14l2 12zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11.5 30c3.5-1 18.5-1 22 0M12 33.5c6-1 15-1 21 0\" fill=\"none\" /></g><g id=\"white-king\" class=\"white king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#fff\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#fff\" /><path d=\"M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" /></g><g id=\"black-pawn\" class=\"black pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#000\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"black-knight\" class=\"black knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 24.55,10.4 L 24.1,11.85 L 24.6,12 C 27.75,13 30.25,14.49 32.5,18.75 C 34.75,23.01 35.75,29.06 35.25,39 L 35.2,39.5 L 37.45,39.5 L 37.5,39 C 38,28.94 36.62,22.15 34.25,17.66 C 31.88,13.17 28.46,11.02 25.06,10.5 L 24.55,10.4 z \" style=\"fill:#ececec; stroke:none;\" /></g><g id=\"black-bishop\" class=\"black bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zm6-4c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" fill=\"#000\" stroke-linecap=\"butt\" /><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke=\"#fff\" stroke-linejoin=\"miter\" /></g><g id=\"black-rook\" class=\"black rook\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12.5 32l1.5-2.5h17l1.5 2.5h-20zM12 36v-4h21v4H12z\" stroke-linecap=\"butt\" /><path d=\"M14 29.5v-13h17v13H14z\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M14 16.5L11 14h23l-3 2.5H14zM11 14V9h4v2h5V9h5v2h5V9h4v5H11z\" stroke-linecap=\"butt\" /><path d=\"M12 35.5h21M13 31.5h19M14 29.5h17M14 16.5h17M11 14h23\" fill=\"none\" stroke=\"#fff\" stroke-width=\"1\" stroke-linejoin=\"miter\" /></g><g id=\"black-queen\" class=\"black queen\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#000\" stroke=\"none\"><circle cx=\"6\" cy=\"12\" r=\"2.75\" /><circle cx=\"14\" cy=\"9\" r=\"2.75\" /><circle cx=\"22.5\" cy=\"8\" r=\"2.75\" /><circle cx=\"31\" cy=\"9\" r=\"2.75\" /><circle cx=\"39\" cy=\"12\" r=\"2.75\" /></g><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2.5-12.5L31 25l-.3-14.1-5.2 13.6-3-14.5-3 14.5-5.2-13.6L14 25 6.5 13.5 9 26zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11 38.5a35 35 1 0 0 23 0\" fill=\"none\" stroke-linecap=\"butt\" /><path d=\"M11 29a35 35 1 0 1 23 0M12.5 31.5h20M11.5 34.5a35 35 1 0 0 22 0M10.5 37.5a35 35 1 0 0 24 0\" fill=\"none\" stroke=\"#fff\" /></g><g id=\"black-king\" class=\"black king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#000\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#000\" /><path d=\"M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M32 29.5s8.5-4 6.03-9.65C34.15 14 25 18 22.5 24.5l.01 2.1-.01-2.1C20 18 9.906 14 6.997 19.85c-2.497 5.65 4.853 9 4.853 9M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" stroke=\"#fff\" /></g></defs><rect x=\"7.5\" y=\"7.5\" width=\"375\" height=\"375\" fill=\"none\" stroke=\"#212121\" stroke-width=\"15\" /><g transform=\"translate(20, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(20, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(65, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(65, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(110, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(110, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(155, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(155, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(200, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(200, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(245, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(245, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(290, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(290, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(335, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(335, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(0, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(375, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(0, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(375, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(0, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(375, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(0, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(375, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(0, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(375, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(0, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(375, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(0, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(375, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(0, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><g transform=\"translate(375, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><rect x=\"15\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark a1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"330\" width=\"45\" height=\"45\" class=\"square light b1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark c1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"330\" width=\"45\" height=\"45\" class=\"square light d1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark e1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"330\" width=\"45\" height=\"45\" class=\"square light f1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark g1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"330\" width=\"45\" height=\"45\" class=\"square light h1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"285\" width=\"45\" height=\"45\" class=\"square light a2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark b2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"285\" width=\"45\" height=\"45\" class=\"square light c2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"285\" width=\"45\" height=\"45\" stroke=\"none\" fill=\"gray\" /><rect x=\"150\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark d2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"285\" width=\"45\" height=\"45\" class=\"square light e2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark f2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"285\" width=\"45\" height=\"45\" class=\"square light g2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark h2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark a3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"240\" width=\"45\" height=\"45\" class=\"square light b3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark c3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"240\" width=\"45\" height=\"45\" class=\"square light d3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark e3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"240\" width=\"45\" height=\"45\" class=\"square light f3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark g3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"240\" width=\"45\" height=\"45\" class=\"square light h3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"195\" width=\"45\" height=\"45\" class=\"square light a4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark b4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"195\" width=\"45\" height=\"45\" class=\"square light c4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark d4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"195\" width=\"45\" height=\"45\" class=\"square light e4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark f4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"195\" width=\"45\" height=\"45\" class=\"square light g4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark h4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark a5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"150\" width=\"45\" height=\"45\" class=\"square light b5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark c5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"150\" width=\"45\" height=\"45\" class=\"square light d5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark e5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"150\" width=\"45\" height=\"45\" class=\"square light f5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark g5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"150\" width=\"45\" height=\"45\" class=\"square light h5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"105\" width=\"45\" height=\"45\" class=\"square light a6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark b6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"105\" width=\"45\" height=\"45\" class=\"square light c6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark d6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"105\" width=\"45\" height=\"45\" class=\"square light e6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark f6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"105\" width=\"45\" height=\"45\" class=\"square light g6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark h6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark a7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"60\" width=\"45\" height=\"45\" class=\"square light b7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark c7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"60\" width=\"45\" height=\"45\" class=\"square light d7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark e7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"60\" width=\"45\" height=\"45\" class=\"square light f7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark g7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"60\" width=\"45\" height=\"45\" class=\"square light h7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"15\" width=\"45\" height=\"45\" class=\"square light a8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark b8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"15\" width=\"45\" height=\"45\" class=\"square light c8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark d8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"15\" width=\"45\" height=\"45\" class=\"square light e8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark f8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"15\" width=\"45\" height=\"45\" class=\"square light g8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark h8\" stroke=\"none\" fill=\"#d18b47\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(15, 330)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(60, 330)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(105, 330)\" /><use href=\"#white-queen\" xlink:href=\"#white-queen\" transform=\"translate(150, 330)\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(240, 330)\" /><use href=\"#white-king\" xlink:href=\"#white-king\" transform=\"translate(285, 330)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(15, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(60, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(240, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(285, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(330, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(105, 195)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(150, 195)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(195, 195)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(105, 150)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(150, 150)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(15, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(60, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(105, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(240, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(285, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(330, 60)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(15, 15)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(60, 15)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(105, 15)\" /><use href=\"#black-queen\" xlink:href=\"#black-queen\" transform=\"translate(150, 15)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(240, 15)\" /><use href=\"#black-king\" xlink:href=\"#black-king\" transform=\"translate(285, 15)\" /><line x1=\"127.5\" y1=\"307.5\" x2=\"127.5\" y2=\"255.75\" stroke=\"#15781B\" opacity=\"0.5019607843137255\" stroke-width=\"9.0\" stroke-linecap=\"butt\" class=\"arrow\" /><polygon points=\"127.5,222.0 110.625,255.75 144.375,255.75\" fill=\"#15781B\" opacity=\"0.5019607843137255\" class=\"arrow\" /></svg>" + "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 390 390\" width=\"200\" height=\"200\"><desc><pre>r n b . . r k .\n", + "p p p p q p p p\n", + ". b . . . . . .\n", + ". . . n P . . .\n", + ". . B . P . . .\n", + ". . N . . N . .\n", + "P P P . Q P P P\n", + "R . B . . R K .</pre></desc><defs><g id=\"white-pawn\" class=\"white pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#fff\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"white-knight\" class=\"white knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#000000; stroke:#000000;\" /></g><g id=\"white-bishop\" class=\"white bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#fff\" stroke-linecap=\"butt\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zM15 32c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" /></g><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke-linejoin=\"miter\" /></g><g id=\"white-rook\" class=\"white rook\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12 36v-4h21v4H12zM11 14V9h4v2h5V9h5v2h5V9h4v5\" stroke-linecap=\"butt\" /><path d=\"M34 14l-3 3H14l-3-3\" /><path d=\"M31 17v12.5H14V17\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M31 29.5l1.5 2.5h-20l1.5-2.5\" /><path d=\"M11 14h23\" fill=\"none\" stroke-linejoin=\"miter\" /></g><g id=\"white-queen\" class=\"white queen\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M8 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM24.5 7.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM41 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM16 8.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM33 9a2 2 0 1 1-4 0 2 2 0 1 1 4 0z\" /><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2-12-7 11V11l-5.5 13.5-3-15-3 15-5.5-14V25L7 14l2 12zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11.5 30c3.5-1 18.5-1 22 0M12 33.5c6-1 15-1 21 0\" fill=\"none\" /></g><g id=\"white-king\" class=\"white king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#fff\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#fff\" /><path d=\"M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" /></g><g id=\"black-pawn\" class=\"black pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#000\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"black-knight\" class=\"black knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 24.55,10.4 L 24.1,11.85 L 24.6,12 C 27.75,13 30.25,14.49 32.5,18.75 C 34.75,23.01 35.75,29.06 35.25,39 L 35.2,39.5 L 37.45,39.5 L 37.5,39 C 38,28.94 36.62,22.15 34.25,17.66 C 31.88,13.17 28.46,11.02 25.06,10.5 L 24.55,10.4 z \" style=\"fill:#ececec; stroke:none;\" /></g><g id=\"black-bishop\" class=\"black bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zm6-4c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" fill=\"#000\" stroke-linecap=\"butt\" /><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke=\"#fff\" stroke-linejoin=\"miter\" /></g><g id=\"black-rook\" class=\"black rook\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12.5 32l1.5-2.5h17l1.5 2.5h-20zM12 36v-4h21v4H12z\" stroke-linecap=\"butt\" /><path d=\"M14 29.5v-13h17v13H14z\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M14 16.5L11 14h23l-3 2.5H14zM11 14V9h4v2h5V9h5v2h5V9h4v5H11z\" stroke-linecap=\"butt\" /><path d=\"M12 35.5h21M13 31.5h19M14 29.5h17M14 16.5h17M11 14h23\" fill=\"none\" stroke=\"#fff\" stroke-width=\"1\" stroke-linejoin=\"miter\" /></g><g id=\"black-queen\" class=\"black queen\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#000\" stroke=\"none\"><circle cx=\"6\" cy=\"12\" r=\"2.75\" /><circle cx=\"14\" cy=\"9\" r=\"2.75\" /><circle cx=\"22.5\" cy=\"8\" r=\"2.75\" /><circle cx=\"31\" cy=\"9\" r=\"2.75\" /><circle cx=\"39\" cy=\"12\" r=\"2.75\" /></g><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2.5-12.5L31 25l-.3-14.1-5.2 13.6-3-14.5-3 14.5-5.2-13.6L14 25 6.5 13.5 9 26zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11 38.5a35 35 1 0 0 23 0\" fill=\"none\" stroke-linecap=\"butt\" /><path d=\"M11 29a35 35 1 0 1 23 0M12.5 31.5h20M11.5 34.5a35 35 1 0 0 22 0M10.5 37.5a35 35 1 0 0 24 0\" fill=\"none\" stroke=\"#fff\" /></g><g id=\"black-king\" class=\"black king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#000\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#000\" /><path d=\"M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M32 29.5s8.5-4 6.03-9.65C34.15 14 25 18 22.5 24.5l.01 2.1-.01-2.1C20 18 9.906 14 6.997 19.85c-2.497 5.65 4.853 9 4.853 9M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" stroke=\"#fff\" /></g></defs><rect x=\"7.5\" y=\"7.5\" width=\"375\" height=\"375\" fill=\"none\" stroke=\"#212121\" stroke-width=\"15\" /><g transform=\"translate(20, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(20, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(65, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(65, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(110, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(110, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(155, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(155, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(200, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(200, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(245, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(245, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(290, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(290, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(335, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(335, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(0, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(375, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(0, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(375, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(0, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(375, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(0, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(375, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(0, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(375, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(0, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(375, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(0, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(375, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(0, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><g transform=\"translate(375, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><rect x=\"15\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark a1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"330\" width=\"45\" height=\"45\" class=\"square light b1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"330\" width=\"45\" height=\"45\" stroke=\"none\" fill=\"gray\" /><rect x=\"105\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark c1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"330\" width=\"45\" height=\"45\" class=\"square light d1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark e1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"330\" width=\"45\" height=\"45\" class=\"square light f1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark g1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"330\" width=\"45\" height=\"45\" class=\"square light h1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"285\" width=\"45\" height=\"45\" class=\"square light a2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark b2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"285\" width=\"45\" height=\"45\" class=\"square light c2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark d2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"285\" width=\"45\" height=\"45\" class=\"square light e2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark f2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"285\" width=\"45\" height=\"45\" class=\"square light g2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark h2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark a3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"240\" width=\"45\" height=\"45\" class=\"square light b3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark c3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"240\" width=\"45\" height=\"45\" class=\"square light d3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark e3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"240\" width=\"45\" height=\"45\" class=\"square light f3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark g3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"240\" width=\"45\" height=\"45\" class=\"square light h3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"195\" width=\"45\" height=\"45\" class=\"square light a4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark b4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"195\" width=\"45\" height=\"45\" class=\"square light c4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark d4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"195\" width=\"45\" height=\"45\" class=\"square light e4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark f4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"195\" width=\"45\" height=\"45\" class=\"square light g4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark h4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark a5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"150\" width=\"45\" height=\"45\" class=\"square light b5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark c5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"150\" width=\"45\" height=\"45\" class=\"square light d5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark e5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"150\" width=\"45\" height=\"45\" class=\"square light f5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark g5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"150\" width=\"45\" height=\"45\" class=\"square light h5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"105\" width=\"45\" height=\"45\" class=\"square light a6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark b6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"105\" width=\"45\" height=\"45\" class=\"square light c6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark d6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"105\" width=\"45\" height=\"45\" class=\"square light e6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark f6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"105\" width=\"45\" height=\"45\" class=\"square light g6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark h6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark a7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"60\" width=\"45\" height=\"45\" class=\"square light b7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark c7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"60\" width=\"45\" height=\"45\" class=\"square light d7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark e7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"60\" width=\"45\" height=\"45\" class=\"square light f7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark g7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"60\" width=\"45\" height=\"45\" class=\"square light h7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"15\" width=\"45\" height=\"45\" class=\"square light a8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark b8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"15\" width=\"45\" height=\"45\" class=\"square light c8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark d8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"15\" width=\"45\" height=\"45\" class=\"square light e8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark f8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"15\" width=\"45\" height=\"45\" class=\"square light g8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark h8\" stroke=\"none\" fill=\"#d18b47\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(15, 330)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(105, 330)\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(240, 330)\" /><use href=\"#white-king\" xlink:href=\"#white-king\" transform=\"translate(285, 330)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(15, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(60, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(105, 285)\" /><use href=\"#white-queen\" xlink:href=\"#white-queen\" transform=\"translate(195, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(240, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(285, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(330, 285)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(105, 240)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(240, 240)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(105, 195)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(195, 195)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(150, 150)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(195, 150)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(60, 105)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(15, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(60, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(105, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(150, 60)\" /><use href=\"#black-queen\" xlink:href=\"#black-queen\" transform=\"translate(195, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(240, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(285, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(330, 60)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(15, 15)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(60, 15)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(105, 15)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(240, 15)\" /><use href=\"#black-king\" xlink:href=\"#black-king\" transform=\"translate(285, 15)\" /><line x1=\"82.5\" y1=\"352.5\" x2=\"110.3940799721266\" y2=\"296.7118400557468\" stroke=\"#15781B\" opacity=\"0.5019607843137255\" stroke-width=\"9.0\" stroke-linecap=\"butt\" class=\"arrow\" /><polygon points=\"125.4875388202502,266.5249223594996 95.30062112400303,289.165110631685 125.48753882025018,304.25856947980856\" fill=\"#15781B\" opacity=\"0.5019607843137255\" class=\"arrow\" /></svg>" ], "text/plain": [ - "'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 390 390\" width=\"200\" height=\"200\"><desc><pre>r n b q . r k .\\np p p . . p p p\\n. . . . . . . .\\n. . b n . . . .\\n. . P N P . . .\\n. . . . . . . .\\nP P . . . P P P\\nR N B Q . R K .</pre></desc><defs><g id=\"white-pawn\" class=\"white pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#fff\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"white-knight\" class=\"white knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#000000; stroke:#000000;\" /></g><g id=\"white-bishop\" class=\"white bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#fff\" stroke-linecap=\"butt\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zM15 32c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" /></g><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke-linejoin=\"miter\" /></g><g id=\"white-rook\" class=\"white rook\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12 36v-4h21v4H12zM11 14V9h4v2h5V9h5v2h5V9h4v5\" stroke-linecap=\"butt\" /><path d=\"M34 14l-3 3H14l-3-3\" /><path d=\"M31 17v12.5H14V17\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M31 29.5l1.5 2.5h-20l1.5-2.5\" /><path d=\"M11 14h23\" fill=\"none\" stroke-linejoin=\"miter\" /></g><g id=\"white-queen\" class=\"white queen\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M8 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM24.5 7.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM41 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM16 8.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM33 9a2 2 0 1 1-4 0 2 2 0 1 1 4 0z\" /><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2-12-7 11V11l-5.5 13.5-3-15-3 15-5.5-14V25L7 14l2 12zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11.5 30c3.5-1 18.5-1 22 0M12 33.5c6-1 15-1 21 0\" fill=\"none\" /></g><g id=\"white-king\" class=\"white king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#fff\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#fff\" /><path d=\"M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" /></g><g id=\"black-pawn\" class=\"black pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#000\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"black-knight\" class=\"black knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 24.55,10.4 L 24.1,11.85 L 24.6,12 C 27.75,13 30.25,14.49 32.5,18.75 C 34.75,23.01 35.75,29.06 35.25,39 L 35.2,39.5 L 37.45,39.5 L 37.5,39 C 38,28.94 36.62,22.15 34.25,17.66 C 31.88,13.17 28.46,11.02 25.06,10.5 L 24.55,10.4 z \" style=\"fill:#ececec; stroke:none;\" /></g><g id=\"black-bishop\" class=\"black bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zm6-4c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" fill=\"#000\" stroke-linecap=\"butt\" /><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke=\"#fff\" stroke-linejoin=\"miter\" /></g><g id=\"black-rook\" class=\"black rook\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12.5 32l1.5-2.5h17l1.5 2.5h-20zM12 36v-4h21v4H12z\" stroke-linecap=\"butt\" /><path d=\"M14 29.5v-13h17v13H14z\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M14 16.5L11 14h23l-3 2.5H14zM11 14V9h4v2h5V9h5v2h5V9h4v5H11z\" stroke-linecap=\"butt\" /><path d=\"M12 35.5h21M13 31.5h19M14 29.5h17M14 16.5h17M11 14h23\" fill=\"none\" stroke=\"#fff\" stroke-width=\"1\" stroke-linejoin=\"miter\" /></g><g id=\"black-queen\" class=\"black queen\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#000\" stroke=\"none\"><circle cx=\"6\" cy=\"12\" r=\"2.75\" /><circle cx=\"14\" cy=\"9\" r=\"2.75\" /><circle cx=\"22.5\" cy=\"8\" r=\"2.75\" /><circle cx=\"31\" cy=\"9\" r=\"2.75\" /><circle cx=\"39\" cy=\"12\" r=\"2.75\" /></g><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2.5-12.5L31 25l-.3-14.1-5.2 13.6-3-14.5-3 14.5-5.2-13.6L14 25 6.5 13.5 9 26zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11 38.5a35 35 1 0 0 23 0\" fill=\"none\" stroke-linecap=\"butt\" /><path d=\"M11 29a35 35 1 0 1 23 0M12.5 31.5h20M11.5 34.5a35 35 1 0 0 22 0M10.5 37.5a35 35 1 0 0 24 0\" fill=\"none\" stroke=\"#fff\" /></g><g id=\"black-king\" class=\"black king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#000\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#000\" /><path d=\"M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M32 29.5s8.5-4 6.03-9.65C34.15 14 25 18 22.5 24.5l.01 2.1-.01-2.1C20 18 9.906 14 6.997 19.85c-2.497 5.65 4.853 9 4.853 9M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" stroke=\"#fff\" /></g></defs><rect x=\"7.5\" y=\"7.5\" width=\"375\" height=\"375\" fill=\"none\" stroke=\"#212121\" stroke-width=\"15\" /><g transform=\"translate(20, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(20, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(65, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(65, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(110, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(110, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(155, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(155, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(200, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(200, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(245, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(245, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(290, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(290, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(335, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(335, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(0, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(375, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(0, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(375, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(0, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(375, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(0, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(375, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(0, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(375, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(0, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(375, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(0, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(375, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(0, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><g transform=\"translate(375, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><rect x=\"15\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark a1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"330\" width=\"45\" height=\"45\" class=\"square light b1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark c1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"330\" width=\"45\" height=\"45\" class=\"square light d1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark e1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"330\" width=\"45\" height=\"45\" class=\"square light f1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark g1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"330\" width=\"45\" height=\"45\" class=\"square light h1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"285\" width=\"45\" height=\"45\" class=\"square light a2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark b2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"285\" width=\"45\" height=\"45\" class=\"square light c2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"285\" width=\"45\" height=\"45\" stroke=\"none\" fill=\"gray\" /><rect x=\"150\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark d2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"285\" width=\"45\" height=\"45\" class=\"square light e2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark f2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"285\" width=\"45\" height=\"45\" class=\"square light g2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark h2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark a3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"240\" width=\"45\" height=\"45\" class=\"square light b3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark c3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"240\" width=\"45\" height=\"45\" class=\"square light d3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark e3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"240\" width=\"45\" height=\"45\" class=\"square light f3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark g3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"240\" width=\"45\" height=\"45\" class=\"square light h3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"195\" width=\"45\" height=\"45\" class=\"square light a4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark b4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"195\" width=\"45\" height=\"45\" class=\"square light c4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark d4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"195\" width=\"45\" height=\"45\" class=\"square light e4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark f4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"195\" width=\"45\" height=\"45\" class=\"square light g4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark h4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark a5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"150\" width=\"45\" height=\"45\" class=\"square light b5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark c5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"150\" width=\"45\" height=\"45\" class=\"square light d5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark e5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"150\" width=\"45\" height=\"45\" class=\"square light f5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark g5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"150\" width=\"45\" height=\"45\" class=\"square light h5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"105\" width=\"45\" height=\"45\" class=\"square light a6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark b6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"105\" width=\"45\" height=\"45\" class=\"square light c6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark d6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"105\" width=\"45\" height=\"45\" class=\"square light e6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark f6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"105\" width=\"45\" height=\"45\" class=\"square light g6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark h6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark a7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"60\" width=\"45\" height=\"45\" class=\"square light b7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark c7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"60\" width=\"45\" height=\"45\" class=\"square light d7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark e7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"60\" width=\"45\" height=\"45\" class=\"square light f7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark g7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"60\" width=\"45\" height=\"45\" class=\"square light h7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"15\" width=\"45\" height=\"45\" class=\"square light a8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark b8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"15\" width=\"45\" height=\"45\" class=\"square light c8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark d8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"15\" width=\"45\" height=\"45\" class=\"square light e8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark f8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"15\" width=\"45\" height=\"45\" class=\"square light g8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark h8\" stroke=\"none\" fill=\"#d18b47\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(15, 330)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(60, 330)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(105, 330)\" /><use href=\"#white-queen\" xlink:href=\"#white-queen\" transform=\"translate(150, 330)\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(240, 330)\" /><use href=\"#white-king\" xlink:href=\"#white-king\" transform=\"translate(285, 330)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(15, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(60, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(240, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(285, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(330, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(105, 195)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(150, 195)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(195, 195)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(105, 150)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(150, 150)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(15, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(60, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(105, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(240, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(285, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(330, 60)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(15, 15)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(60, 15)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(105, 15)\" /><use href=\"#black-queen\" xlink:href=\"#black-queen\" transform=\"translate(150, 15)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(240, 15)\" /><use href=\"#black-king\" xlink:href=\"#black-king\" transform=\"translate(285, 15)\" /><line x1=\"127.5\" y1=\"307.5\" x2=\"127.5\" y2=\"255.75\" stroke=\"#15781B\" opacity=\"0.5019607843137255\" stroke-width=\"9.0\" stroke-linecap=\"butt\" class=\"arrow\" /><polygon points=\"127.5,222.0 110.625,255.75 144.375,255.75\" fill=\"#15781B\" opacity=\"0.5019607843137255\" class=\"arrow\" /></svg>'" + "'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 390 390\" width=\"200\" height=\"200\"><desc><pre>r n b . . r k .\\np p p p q p p p\\n. b . . . . . .\\n. . . n P . . .\\n. . B . P . . .\\n. . N . . N . .\\nP P P . Q P P P\\nR . B . . R K .</pre></desc><defs><g id=\"white-pawn\" class=\"white pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#fff\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"white-knight\" class=\"white knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#000000; stroke:#000000;\" /></g><g id=\"white-bishop\" class=\"white bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#fff\" stroke-linecap=\"butt\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zM15 32c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" /></g><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke-linejoin=\"miter\" /></g><g id=\"white-rook\" class=\"white rook\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12 36v-4h21v4H12zM11 14V9h4v2h5V9h5v2h5V9h4v5\" stroke-linecap=\"butt\" /><path d=\"M34 14l-3 3H14l-3-3\" /><path d=\"M31 17v12.5H14V17\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M31 29.5l1.5 2.5h-20l1.5-2.5\" /><path d=\"M11 14h23\" fill=\"none\" stroke-linejoin=\"miter\" /></g><g id=\"white-queen\" class=\"white queen\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M8 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM24.5 7.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM41 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM16 8.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM33 9a2 2 0 1 1-4 0 2 2 0 1 1 4 0z\" /><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2-12-7 11V11l-5.5 13.5-3-15-3 15-5.5-14V25L7 14l2 12zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11.5 30c3.5-1 18.5-1 22 0M12 33.5c6-1 15-1 21 0\" fill=\"none\" /></g><g id=\"white-king\" class=\"white king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#fff\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#fff\" /><path d=\"M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" /></g><g id=\"black-pawn\" class=\"black pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#000\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"black-knight\" class=\"black knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 24.55,10.4 L 24.1,11.85 L 24.6,12 C 27.75,13 30.25,14.49 32.5,18.75 C 34.75,23.01 35.75,29.06 35.25,39 L 35.2,39.5 L 37.45,39.5 L 37.5,39 C 38,28.94 36.62,22.15 34.25,17.66 C 31.88,13.17 28.46,11.02 25.06,10.5 L 24.55,10.4 z \" style=\"fill:#ececec; stroke:none;\" /></g><g id=\"black-bishop\" class=\"black bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zm6-4c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" fill=\"#000\" stroke-linecap=\"butt\" /><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke=\"#fff\" stroke-linejoin=\"miter\" /></g><g id=\"black-rook\" class=\"black rook\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12.5 32l1.5-2.5h17l1.5 2.5h-20zM12 36v-4h21v4H12z\" stroke-linecap=\"butt\" /><path d=\"M14 29.5v-13h17v13H14z\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M14 16.5L11 14h23l-3 2.5H14zM11 14V9h4v2h5V9h5v2h5V9h4v5H11z\" stroke-linecap=\"butt\" /><path d=\"M12 35.5h21M13 31.5h19M14 29.5h17M14 16.5h17M11 14h23\" fill=\"none\" stroke=\"#fff\" stroke-width=\"1\" stroke-linejoin=\"miter\" /></g><g id=\"black-queen\" class=\"black queen\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#000\" stroke=\"none\"><circle cx=\"6\" cy=\"12\" r=\"2.75\" /><circle cx=\"14\" cy=\"9\" r=\"2.75\" /><circle cx=\"22.5\" cy=\"8\" r=\"2.75\" /><circle cx=\"31\" cy=\"9\" r=\"2.75\" /><circle cx=\"39\" cy=\"12\" r=\"2.75\" /></g><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2.5-12.5L31 25l-.3-14.1-5.2 13.6-3-14.5-3 14.5-5.2-13.6L14 25 6.5 13.5 9 26zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11 38.5a35 35 1 0 0 23 0\" fill=\"none\" stroke-linecap=\"butt\" /><path d=\"M11 29a35 35 1 0 1 23 0M12.5 31.5h20M11.5 34.5a35 35 1 0 0 22 0M10.5 37.5a35 35 1 0 0 24 0\" fill=\"none\" stroke=\"#fff\" /></g><g id=\"black-king\" class=\"black king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#000\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#000\" /><path d=\"M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M32 29.5s8.5-4 6.03-9.65C34.15 14 25 18 22.5 24.5l.01 2.1-.01-2.1C20 18 9.906 14 6.997 19.85c-2.497 5.65 4.853 9 4.853 9M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" stroke=\"#fff\" /></g></defs><rect x=\"7.5\" y=\"7.5\" width=\"375\" height=\"375\" fill=\"none\" stroke=\"#212121\" stroke-width=\"15\" /><g transform=\"translate(20, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(20, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(65, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(65, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(110, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(110, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(155, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(155, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(200, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(200, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(245, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(245, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(290, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(290, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(335, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(335, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(0, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(375, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(0, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(375, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(0, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(375, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(0, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(375, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(0, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(375, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(0, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(375, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(0, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(375, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(0, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><g transform=\"translate(375, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><rect x=\"15\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark a1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"330\" width=\"45\" height=\"45\" class=\"square light b1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"330\" width=\"45\" height=\"45\" stroke=\"none\" fill=\"gray\" /><rect x=\"105\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark c1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"330\" width=\"45\" height=\"45\" class=\"square light d1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark e1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"330\" width=\"45\" height=\"45\" class=\"square light f1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark g1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"330\" width=\"45\" height=\"45\" class=\"square light h1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"285\" width=\"45\" height=\"45\" class=\"square light a2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark b2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"285\" width=\"45\" height=\"45\" class=\"square light c2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark d2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"285\" width=\"45\" height=\"45\" class=\"square light e2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark f2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"285\" width=\"45\" height=\"45\" class=\"square light g2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark h2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark a3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"240\" width=\"45\" height=\"45\" class=\"square light b3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark c3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"240\" width=\"45\" height=\"45\" class=\"square light d3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark e3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"240\" width=\"45\" height=\"45\" class=\"square light f3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark g3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"240\" width=\"45\" height=\"45\" class=\"square light h3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"195\" width=\"45\" height=\"45\" class=\"square light a4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark b4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"195\" width=\"45\" height=\"45\" class=\"square light c4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark d4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"195\" width=\"45\" height=\"45\" class=\"square light e4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark f4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"195\" width=\"45\" height=\"45\" class=\"square light g4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark h4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark a5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"150\" width=\"45\" height=\"45\" class=\"square light b5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark c5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"150\" width=\"45\" height=\"45\" class=\"square light d5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark e5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"150\" width=\"45\" height=\"45\" class=\"square light f5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark g5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"150\" width=\"45\" height=\"45\" class=\"square light h5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"105\" width=\"45\" height=\"45\" class=\"square light a6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark b6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"105\" width=\"45\" height=\"45\" class=\"square light c6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark d6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"105\" width=\"45\" height=\"45\" class=\"square light e6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark f6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"105\" width=\"45\" height=\"45\" class=\"square light g6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark h6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark a7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"60\" width=\"45\" height=\"45\" class=\"square light b7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark c7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"60\" width=\"45\" height=\"45\" class=\"square light d7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark e7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"60\" width=\"45\" height=\"45\" class=\"square light f7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark g7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"60\" width=\"45\" height=\"45\" class=\"square light h7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"15\" width=\"45\" height=\"45\" class=\"square light a8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark b8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"15\" width=\"45\" height=\"45\" class=\"square light c8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark d8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"15\" width=\"45\" height=\"45\" class=\"square light e8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark f8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"15\" width=\"45\" height=\"45\" class=\"square light g8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark h8\" stroke=\"none\" fill=\"#d18b47\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(15, 330)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(105, 330)\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(240, 330)\" /><use href=\"#white-king\" xlink:href=\"#white-king\" transform=\"translate(285, 330)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(15, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(60, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(105, 285)\" /><use href=\"#white-queen\" xlink:href=\"#white-queen\" transform=\"translate(195, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(240, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(285, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(330, 285)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(105, 240)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(240, 240)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(105, 195)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(195, 195)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(150, 150)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(195, 150)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(60, 105)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(15, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(60, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(105, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(150, 60)\" /><use href=\"#black-queen\" xlink:href=\"#black-queen\" transform=\"translate(195, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(240, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(285, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(330, 60)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(15, 15)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(60, 15)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(105, 15)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(240, 15)\" /><use href=\"#black-king\" xlink:href=\"#black-king\" transform=\"translate(285, 15)\" /><line x1=\"82.5\" y1=\"352.5\" x2=\"110.3940799721266\" y2=\"296.7118400557468\" stroke=\"#15781B\" opacity=\"0.5019607843137255\" stroke-width=\"9.0\" stroke-linecap=\"butt\" class=\"arrow\" /><polygon points=\"125.4875388202502,266.5249223594996 95.30062112400303,289.165110631685 125.48753882025018,304.25856947980856\" fill=\"#15781B\" opacity=\"0.5019607843137255\" class=\"arrow\" /></svg>'" ] }, "metadata": {}, @@ -782,7 +813,9 @@ "text": [ "\u001b[33mPlayer white\u001b[0m (to Player black):\n", "\n", - "c2c4. Advancing my pawn to challenge your knight. Your move!\n", + "Indeed, the knight's ability to jump over other pieces is quite unique. Now, I'll move my knight from b1 to c3, challenging your knight.\n", + "\n", + "b1c3\n", "\n", "--------------------------------------------------------------------------------\n" ] @@ -790,17 +823,17 @@ { "data": { "image/svg+xml": [ - "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 390 390\" width=\"200\" height=\"200\"><desc><pre>r . b q . r k .\n", - "p p p . . p p p\n", - "n . . . . . . .\n", - ". . b n . . . .\n", - ". . P N P . . .\n", - ". . . . . . . .\n", - "P P . . . P P P\n", - "R N B Q . R K .</pre></desc><defs><g id=\"white-pawn\" class=\"white pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#fff\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"white-knight\" class=\"white knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#000000; stroke:#000000;\" /></g><g id=\"white-bishop\" class=\"white bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#fff\" stroke-linecap=\"butt\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zM15 32c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" /></g><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke-linejoin=\"miter\" /></g><g id=\"white-rook\" class=\"white rook\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12 36v-4h21v4H12zM11 14V9h4v2h5V9h5v2h5V9h4v5\" stroke-linecap=\"butt\" /><path d=\"M34 14l-3 3H14l-3-3\" /><path d=\"M31 17v12.5H14V17\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M31 29.5l1.5 2.5h-20l1.5-2.5\" /><path d=\"M11 14h23\" fill=\"none\" stroke-linejoin=\"miter\" /></g><g id=\"white-queen\" class=\"white queen\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M8 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM24.5 7.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM41 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM16 8.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM33 9a2 2 0 1 1-4 0 2 2 0 1 1 4 0z\" /><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2-12-7 11V11l-5.5 13.5-3-15-3 15-5.5-14V25L7 14l2 12zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11.5 30c3.5-1 18.5-1 22 0M12 33.5c6-1 15-1 21 0\" fill=\"none\" /></g><g id=\"white-king\" class=\"white king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#fff\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#fff\" /><path d=\"M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" /></g><g id=\"black-pawn\" class=\"black pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#000\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"black-knight\" class=\"black knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 24.55,10.4 L 24.1,11.85 L 24.6,12 C 27.75,13 30.25,14.49 32.5,18.75 C 34.75,23.01 35.75,29.06 35.25,39 L 35.2,39.5 L 37.45,39.5 L 37.5,39 C 38,28.94 36.62,22.15 34.25,17.66 C 31.88,13.17 28.46,11.02 25.06,10.5 L 24.55,10.4 z \" style=\"fill:#ececec; stroke:none;\" /></g><g id=\"black-bishop\" class=\"black bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zm6-4c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" fill=\"#000\" stroke-linecap=\"butt\" /><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke=\"#fff\" stroke-linejoin=\"miter\" /></g><g id=\"black-rook\" class=\"black rook\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12.5 32l1.5-2.5h17l1.5 2.5h-20zM12 36v-4h21v4H12z\" stroke-linecap=\"butt\" /><path d=\"M14 29.5v-13h17v13H14z\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M14 16.5L11 14h23l-3 2.5H14zM11 14V9h4v2h5V9h5v2h5V9h4v5H11z\" stroke-linecap=\"butt\" /><path d=\"M12 35.5h21M13 31.5h19M14 29.5h17M14 16.5h17M11 14h23\" fill=\"none\" stroke=\"#fff\" stroke-width=\"1\" stroke-linejoin=\"miter\" /></g><g id=\"black-queen\" class=\"black queen\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#000\" stroke=\"none\"><circle cx=\"6\" cy=\"12\" r=\"2.75\" /><circle cx=\"14\" cy=\"9\" r=\"2.75\" /><circle cx=\"22.5\" cy=\"8\" r=\"2.75\" /><circle cx=\"31\" cy=\"9\" r=\"2.75\" /><circle cx=\"39\" cy=\"12\" r=\"2.75\" /></g><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2.5-12.5L31 25l-.3-14.1-5.2 13.6-3-14.5-3 14.5-5.2-13.6L14 25 6.5 13.5 9 26zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11 38.5a35 35 1 0 0 23 0\" fill=\"none\" stroke-linecap=\"butt\" /><path d=\"M11 29a35 35 1 0 1 23 0M12.5 31.5h20M11.5 34.5a35 35 1 0 0 22 0M10.5 37.5a35 35 1 0 0 24 0\" fill=\"none\" stroke=\"#fff\" /></g><g id=\"black-king\" class=\"black king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#000\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#000\" /><path d=\"M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M32 29.5s8.5-4 6.03-9.65C34.15 14 25 18 22.5 24.5l.01 2.1-.01-2.1C20 18 9.906 14 6.997 19.85c-2.497 5.65 4.853 9 4.853 9M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" stroke=\"#fff\" /></g></defs><rect x=\"7.5\" y=\"7.5\" width=\"375\" height=\"375\" fill=\"none\" stroke=\"#212121\" stroke-width=\"15\" /><g transform=\"translate(20, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(20, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(65, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(65, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(110, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(110, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(155, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(155, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(200, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(200, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(245, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(245, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(290, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(290, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(335, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(335, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(0, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(375, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(0, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(375, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(0, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(375, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(0, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(375, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(0, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(375, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(0, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(375, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(0, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(375, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(0, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><g transform=\"translate(375, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><rect x=\"15\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark a1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"330\" width=\"45\" height=\"45\" class=\"square light b1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark c1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"330\" width=\"45\" height=\"45\" class=\"square light d1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark e1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"330\" width=\"45\" height=\"45\" class=\"square light f1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark g1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"330\" width=\"45\" height=\"45\" class=\"square light h1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"285\" width=\"45\" height=\"45\" class=\"square light a2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark b2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"285\" width=\"45\" height=\"45\" class=\"square light c2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark d2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"285\" width=\"45\" height=\"45\" class=\"square light e2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark f2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"285\" width=\"45\" height=\"45\" class=\"square light g2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark h2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark a3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"240\" width=\"45\" height=\"45\" class=\"square light b3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark c3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"240\" width=\"45\" height=\"45\" class=\"square light d3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark e3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"240\" width=\"45\" height=\"45\" class=\"square light f3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark g3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"240\" width=\"45\" height=\"45\" class=\"square light h3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"195\" width=\"45\" height=\"45\" class=\"square light a4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark b4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"195\" width=\"45\" height=\"45\" class=\"square light c4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark d4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"195\" width=\"45\" height=\"45\" class=\"square light e4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark f4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"195\" width=\"45\" height=\"45\" class=\"square light g4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark h4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark a5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"150\" width=\"45\" height=\"45\" class=\"square light b5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark c5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"150\" width=\"45\" height=\"45\" class=\"square light d5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark e5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"150\" width=\"45\" height=\"45\" class=\"square light f5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark g5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"150\" width=\"45\" height=\"45\" class=\"square light h5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"105\" width=\"45\" height=\"45\" class=\"square light a6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark b6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"105\" width=\"45\" height=\"45\" class=\"square light c6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark d6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"105\" width=\"45\" height=\"45\" class=\"square light e6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark f6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"105\" width=\"45\" height=\"45\" class=\"square light g6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark h6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark a7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"60\" width=\"45\" height=\"45\" class=\"square light b7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark c7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"60\" width=\"45\" height=\"45\" class=\"square light d7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark e7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"60\" width=\"45\" height=\"45\" class=\"square light f7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark g7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"60\" width=\"45\" height=\"45\" class=\"square light h7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"15\" width=\"45\" height=\"45\" class=\"square light a8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark b8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"15\" width=\"45\" height=\"45\" stroke=\"none\" fill=\"gray\" /><rect x=\"105\" y=\"15\" width=\"45\" height=\"45\" class=\"square light c8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark d8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"15\" width=\"45\" height=\"45\" class=\"square light e8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark f8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"15\" width=\"45\" height=\"45\" class=\"square light g8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark h8\" stroke=\"none\" fill=\"#d18b47\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(15, 330)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(60, 330)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(105, 330)\" /><use href=\"#white-queen\" xlink:href=\"#white-queen\" transform=\"translate(150, 330)\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(240, 330)\" /><use href=\"#white-king\" xlink:href=\"#white-king\" transform=\"translate(285, 330)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(15, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(60, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(240, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(285, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(330, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(105, 195)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(150, 195)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(195, 195)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(105, 150)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(150, 150)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(15, 105)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(15, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(60, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(105, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(240, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(285, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(330, 60)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(15, 15)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(105, 15)\" /><use href=\"#black-queen\" xlink:href=\"#black-queen\" transform=\"translate(150, 15)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(240, 15)\" /><use href=\"#black-king\" xlink:href=\"#black-king\" transform=\"translate(285, 15)\" /><line x1=\"82.5\" y1=\"37.5\" x2=\"54.605920027873395\" y2=\"93.28815994425321\" stroke=\"#15781B\" opacity=\"0.5019607843137255\" stroke-width=\"9.0\" stroke-linecap=\"butt\" class=\"arrow\" /><polygon points=\"39.51246117974981,123.47507764050037 69.69937887599697,100.834889368315 39.51246117974981,85.74143052019141\" fill=\"#15781B\" opacity=\"0.5019607843137255\" class=\"arrow\" /></svg>" + "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 390 390\" width=\"200\" height=\"200\"><desc><pre>r . b . . r k .\n", + "p p p p q p p p\n", + ". b n . . . . .\n", + ". . . n P . . .\n", + ". . B . P . . .\n", + ". . N . . N . .\n", + "P P P . Q P P P\n", + "R . B . . R K .</pre></desc><defs><g id=\"white-pawn\" class=\"white pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#fff\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"white-knight\" class=\"white knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#000000; stroke:#000000;\" /></g><g id=\"white-bishop\" class=\"white bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#fff\" stroke-linecap=\"butt\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zM15 32c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" /></g><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke-linejoin=\"miter\" /></g><g id=\"white-rook\" class=\"white rook\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12 36v-4h21v4H12zM11 14V9h4v2h5V9h5v2h5V9h4v5\" stroke-linecap=\"butt\" /><path d=\"M34 14l-3 3H14l-3-3\" /><path d=\"M31 17v12.5H14V17\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M31 29.5l1.5 2.5h-20l1.5-2.5\" /><path d=\"M11 14h23\" fill=\"none\" stroke-linejoin=\"miter\" /></g><g id=\"white-queen\" class=\"white queen\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M8 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM24.5 7.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM41 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM16 8.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM33 9a2 2 0 1 1-4 0 2 2 0 1 1 4 0z\" /><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2-12-7 11V11l-5.5 13.5-3-15-3 15-5.5-14V25L7 14l2 12zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11.5 30c3.5-1 18.5-1 22 0M12 33.5c6-1 15-1 21 0\" fill=\"none\" /></g><g id=\"white-king\" class=\"white king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#fff\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#fff\" /><path d=\"M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" /></g><g id=\"black-pawn\" class=\"black pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#000\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"black-knight\" class=\"black knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 24.55,10.4 L 24.1,11.85 L 24.6,12 C 27.75,13 30.25,14.49 32.5,18.75 C 34.75,23.01 35.75,29.06 35.25,39 L 35.2,39.5 L 37.45,39.5 L 37.5,39 C 38,28.94 36.62,22.15 34.25,17.66 C 31.88,13.17 28.46,11.02 25.06,10.5 L 24.55,10.4 z \" style=\"fill:#ececec; stroke:none;\" /></g><g id=\"black-bishop\" class=\"black bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zm6-4c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" fill=\"#000\" stroke-linecap=\"butt\" /><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke=\"#fff\" stroke-linejoin=\"miter\" /></g><g id=\"black-rook\" class=\"black rook\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12.5 32l1.5-2.5h17l1.5 2.5h-20zM12 36v-4h21v4H12z\" stroke-linecap=\"butt\" /><path d=\"M14 29.5v-13h17v13H14z\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M14 16.5L11 14h23l-3 2.5H14zM11 14V9h4v2h5V9h5v2h5V9h4v5H11z\" stroke-linecap=\"butt\" /><path d=\"M12 35.5h21M13 31.5h19M14 29.5h17M14 16.5h17M11 14h23\" fill=\"none\" stroke=\"#fff\" stroke-width=\"1\" stroke-linejoin=\"miter\" /></g><g id=\"black-queen\" class=\"black queen\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#000\" stroke=\"none\"><circle cx=\"6\" cy=\"12\" r=\"2.75\" /><circle cx=\"14\" cy=\"9\" r=\"2.75\" /><circle cx=\"22.5\" cy=\"8\" r=\"2.75\" /><circle cx=\"31\" cy=\"9\" r=\"2.75\" /><circle cx=\"39\" cy=\"12\" r=\"2.75\" /></g><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2.5-12.5L31 25l-.3-14.1-5.2 13.6-3-14.5-3 14.5-5.2-13.6L14 25 6.5 13.5 9 26zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11 38.5a35 35 1 0 0 23 0\" fill=\"none\" stroke-linecap=\"butt\" /><path d=\"M11 29a35 35 1 0 1 23 0M12.5 31.5h20M11.5 34.5a35 35 1 0 0 22 0M10.5 37.5a35 35 1 0 0 24 0\" fill=\"none\" stroke=\"#fff\" /></g><g id=\"black-king\" class=\"black king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#000\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#000\" /><path d=\"M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M32 29.5s8.5-4 6.03-9.65C34.15 14 25 18 22.5 24.5l.01 2.1-.01-2.1C20 18 9.906 14 6.997 19.85c-2.497 5.65 4.853 9 4.853 9M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" stroke=\"#fff\" /></g></defs><rect x=\"7.5\" y=\"7.5\" width=\"375\" height=\"375\" fill=\"none\" stroke=\"#212121\" stroke-width=\"15\" /><g transform=\"translate(20, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(20, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(65, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(65, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(110, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(110, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(155, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(155, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(200, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(200, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(245, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(245, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(290, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(290, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(335, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(335, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(0, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(375, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(0, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(375, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(0, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(375, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(0, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(375, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(0, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(375, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(0, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(375, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(0, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(375, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(0, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><g transform=\"translate(375, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><rect x=\"15\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark a1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"330\" width=\"45\" height=\"45\" class=\"square light b1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark c1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"330\" width=\"45\" height=\"45\" class=\"square light d1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark e1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"330\" width=\"45\" height=\"45\" class=\"square light f1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark g1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"330\" width=\"45\" height=\"45\" class=\"square light h1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"285\" width=\"45\" height=\"45\" class=\"square light a2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark b2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"285\" width=\"45\" height=\"45\" class=\"square light c2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark d2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"285\" width=\"45\" height=\"45\" class=\"square light e2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark f2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"285\" width=\"45\" height=\"45\" class=\"square light g2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark h2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark a3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"240\" width=\"45\" height=\"45\" class=\"square light b3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark c3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"240\" width=\"45\" height=\"45\" class=\"square light d3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark e3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"240\" width=\"45\" height=\"45\" class=\"square light f3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark g3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"240\" width=\"45\" height=\"45\" class=\"square light h3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"195\" width=\"45\" height=\"45\" class=\"square light a4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark b4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"195\" width=\"45\" height=\"45\" class=\"square light c4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark d4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"195\" width=\"45\" height=\"45\" class=\"square light e4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark f4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"195\" width=\"45\" height=\"45\" class=\"square light g4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark h4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark a5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"150\" width=\"45\" height=\"45\" class=\"square light b5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark c5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"150\" width=\"45\" height=\"45\" class=\"square light d5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark e5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"150\" width=\"45\" height=\"45\" class=\"square light f5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark g5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"150\" width=\"45\" height=\"45\" class=\"square light h5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"105\" width=\"45\" height=\"45\" class=\"square light a6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark b6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"105\" width=\"45\" height=\"45\" class=\"square light c6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark d6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"105\" width=\"45\" height=\"45\" class=\"square light e6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark f6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"105\" width=\"45\" height=\"45\" class=\"square light g6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark h6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark a7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"60\" width=\"45\" height=\"45\" class=\"square light b7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark c7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"60\" width=\"45\" height=\"45\" class=\"square light d7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark e7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"60\" width=\"45\" height=\"45\" class=\"square light f7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark g7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"60\" width=\"45\" height=\"45\" class=\"square light h7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"15\" width=\"45\" height=\"45\" class=\"square light a8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark b8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"15\" width=\"45\" height=\"45\" stroke=\"none\" fill=\"gray\" /><rect x=\"105\" y=\"15\" width=\"45\" height=\"45\" class=\"square light c8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark d8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"15\" width=\"45\" height=\"45\" class=\"square light e8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark f8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"15\" width=\"45\" height=\"45\" class=\"square light g8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark h8\" stroke=\"none\" fill=\"#d18b47\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(15, 330)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(105, 330)\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(240, 330)\" /><use href=\"#white-king\" xlink:href=\"#white-king\" transform=\"translate(285, 330)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(15, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(60, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(105, 285)\" /><use href=\"#white-queen\" xlink:href=\"#white-queen\" transform=\"translate(195, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(240, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(285, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(330, 285)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(105, 240)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(240, 240)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(105, 195)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(195, 195)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(150, 150)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(195, 150)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(60, 105)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(105, 105)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(15, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(60, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(105, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(150, 60)\" /><use href=\"#black-queen\" xlink:href=\"#black-queen\" transform=\"translate(195, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(240, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(285, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(330, 60)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(15, 15)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(105, 15)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(240, 15)\" /><use href=\"#black-king\" xlink:href=\"#black-king\" transform=\"translate(285, 15)\" /><line x1=\"82.5\" y1=\"37.5\" x2=\"110.3940799721266\" y2=\"93.28815994425321\" stroke=\"#15781B\" opacity=\"0.5019607843137255\" stroke-width=\"9.0\" stroke-linecap=\"butt\" class=\"arrow\" /><polygon points=\"125.4875388202502,123.47507764050037 125.48753882025018,85.74143052019141 95.30062112400303,100.834889368315\" fill=\"#15781B\" opacity=\"0.5019607843137255\" class=\"arrow\" /></svg>" ], "text/plain": [ - "'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 390 390\" width=\"200\" height=\"200\"><desc><pre>r . b q . r k .\\np p p . . p p p\\nn . . . . . . .\\n. . b n . . . .\\n. . P N P . . .\\n. . . . . . . .\\nP P . . . P P P\\nR N B Q . R K .</pre></desc><defs><g id=\"white-pawn\" class=\"white pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#fff\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"white-knight\" class=\"white knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#000000; stroke:#000000;\" /></g><g id=\"white-bishop\" class=\"white bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#fff\" stroke-linecap=\"butt\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zM15 32c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" /></g><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke-linejoin=\"miter\" /></g><g id=\"white-rook\" class=\"white rook\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12 36v-4h21v4H12zM11 14V9h4v2h5V9h5v2h5V9h4v5\" stroke-linecap=\"butt\" /><path d=\"M34 14l-3 3H14l-3-3\" /><path d=\"M31 17v12.5H14V17\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M31 29.5l1.5 2.5h-20l1.5-2.5\" /><path d=\"M11 14h23\" fill=\"none\" stroke-linejoin=\"miter\" /></g><g id=\"white-queen\" class=\"white queen\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M8 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM24.5 7.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM41 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM16 8.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM33 9a2 2 0 1 1-4 0 2 2 0 1 1 4 0z\" /><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2-12-7 11V11l-5.5 13.5-3-15-3 15-5.5-14V25L7 14l2 12zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11.5 30c3.5-1 18.5-1 22 0M12 33.5c6-1 15-1 21 0\" fill=\"none\" /></g><g id=\"white-king\" class=\"white king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#fff\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#fff\" /><path d=\"M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" /></g><g id=\"black-pawn\" class=\"black pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#000\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"black-knight\" class=\"black knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 24.55,10.4 L 24.1,11.85 L 24.6,12 C 27.75,13 30.25,14.49 32.5,18.75 C 34.75,23.01 35.75,29.06 35.25,39 L 35.2,39.5 L 37.45,39.5 L 37.5,39 C 38,28.94 36.62,22.15 34.25,17.66 C 31.88,13.17 28.46,11.02 25.06,10.5 L 24.55,10.4 z \" style=\"fill:#ececec; stroke:none;\" /></g><g id=\"black-bishop\" class=\"black bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zm6-4c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" fill=\"#000\" stroke-linecap=\"butt\" /><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke=\"#fff\" stroke-linejoin=\"miter\" /></g><g id=\"black-rook\" class=\"black rook\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12.5 32l1.5-2.5h17l1.5 2.5h-20zM12 36v-4h21v4H12z\" stroke-linecap=\"butt\" /><path d=\"M14 29.5v-13h17v13H14z\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M14 16.5L11 14h23l-3 2.5H14zM11 14V9h4v2h5V9h5v2h5V9h4v5H11z\" stroke-linecap=\"butt\" /><path d=\"M12 35.5h21M13 31.5h19M14 29.5h17M14 16.5h17M11 14h23\" fill=\"none\" stroke=\"#fff\" stroke-width=\"1\" stroke-linejoin=\"miter\" /></g><g id=\"black-queen\" class=\"black queen\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#000\" stroke=\"none\"><circle cx=\"6\" cy=\"12\" r=\"2.75\" /><circle cx=\"14\" cy=\"9\" r=\"2.75\" /><circle cx=\"22.5\" cy=\"8\" r=\"2.75\" /><circle cx=\"31\" cy=\"9\" r=\"2.75\" /><circle cx=\"39\" cy=\"12\" r=\"2.75\" /></g><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2.5-12.5L31 25l-.3-14.1-5.2 13.6-3-14.5-3 14.5-5.2-13.6L14 25 6.5 13.5 9 26zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11 38.5a35 35 1 0 0 23 0\" fill=\"none\" stroke-linecap=\"butt\" /><path d=\"M11 29a35 35 1 0 1 23 0M12.5 31.5h20M11.5 34.5a35 35 1 0 0 22 0M10.5 37.5a35 35 1 0 0 24 0\" fill=\"none\" stroke=\"#fff\" /></g><g id=\"black-king\" class=\"black king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#000\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#000\" /><path d=\"M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M32 29.5s8.5-4 6.03-9.65C34.15 14 25 18 22.5 24.5l.01 2.1-.01-2.1C20 18 9.906 14 6.997 19.85c-2.497 5.65 4.853 9 4.853 9M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" stroke=\"#fff\" /></g></defs><rect x=\"7.5\" y=\"7.5\" width=\"375\" height=\"375\" fill=\"none\" stroke=\"#212121\" stroke-width=\"15\" /><g transform=\"translate(20, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(20, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(65, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(65, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(110, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(110, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(155, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(155, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(200, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(200, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(245, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(245, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(290, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(290, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(335, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(335, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(0, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(375, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(0, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(375, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(0, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(375, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(0, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(375, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(0, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(375, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(0, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(375, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(0, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(375, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(0, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><g transform=\"translate(375, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><rect x=\"15\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark a1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"330\" width=\"45\" height=\"45\" class=\"square light b1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark c1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"330\" width=\"45\" height=\"45\" class=\"square light d1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark e1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"330\" width=\"45\" height=\"45\" class=\"square light f1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark g1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"330\" width=\"45\" height=\"45\" class=\"square light h1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"285\" width=\"45\" height=\"45\" class=\"square light a2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark b2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"285\" width=\"45\" height=\"45\" class=\"square light c2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark d2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"285\" width=\"45\" height=\"45\" class=\"square light e2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark f2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"285\" width=\"45\" height=\"45\" class=\"square light g2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark h2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark a3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"240\" width=\"45\" height=\"45\" class=\"square light b3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark c3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"240\" width=\"45\" height=\"45\" class=\"square light d3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark e3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"240\" width=\"45\" height=\"45\" class=\"square light f3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark g3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"240\" width=\"45\" height=\"45\" class=\"square light h3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"195\" width=\"45\" height=\"45\" class=\"square light a4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark b4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"195\" width=\"45\" height=\"45\" class=\"square light c4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark d4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"195\" width=\"45\" height=\"45\" class=\"square light e4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark f4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"195\" width=\"45\" height=\"45\" class=\"square light g4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark h4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark a5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"150\" width=\"45\" height=\"45\" class=\"square light b5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark c5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"150\" width=\"45\" height=\"45\" class=\"square light d5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark e5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"150\" width=\"45\" height=\"45\" class=\"square light f5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark g5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"150\" width=\"45\" height=\"45\" class=\"square light h5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"105\" width=\"45\" height=\"45\" class=\"square light a6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark b6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"105\" width=\"45\" height=\"45\" class=\"square light c6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark d6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"105\" width=\"45\" height=\"45\" class=\"square light e6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark f6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"105\" width=\"45\" height=\"45\" class=\"square light g6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark h6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark a7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"60\" width=\"45\" height=\"45\" class=\"square light b7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark c7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"60\" width=\"45\" height=\"45\" class=\"square light d7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark e7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"60\" width=\"45\" height=\"45\" class=\"square light f7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark g7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"60\" width=\"45\" height=\"45\" class=\"square light h7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"15\" width=\"45\" height=\"45\" class=\"square light a8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark b8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"15\" width=\"45\" height=\"45\" stroke=\"none\" fill=\"gray\" /><rect x=\"105\" y=\"15\" width=\"45\" height=\"45\" class=\"square light c8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark d8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"15\" width=\"45\" height=\"45\" class=\"square light e8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark f8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"15\" width=\"45\" height=\"45\" class=\"square light g8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark h8\" stroke=\"none\" fill=\"#d18b47\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(15, 330)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(60, 330)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(105, 330)\" /><use href=\"#white-queen\" xlink:href=\"#white-queen\" transform=\"translate(150, 330)\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(240, 330)\" /><use href=\"#white-king\" xlink:href=\"#white-king\" transform=\"translate(285, 330)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(15, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(60, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(240, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(285, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(330, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(105, 195)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(150, 195)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(195, 195)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(105, 150)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(150, 150)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(15, 105)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(15, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(60, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(105, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(240, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(285, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(330, 60)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(15, 15)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(105, 15)\" /><use href=\"#black-queen\" xlink:href=\"#black-queen\" transform=\"translate(150, 15)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(240, 15)\" /><use href=\"#black-king\" xlink:href=\"#black-king\" transform=\"translate(285, 15)\" /><line x1=\"82.5\" y1=\"37.5\" x2=\"54.605920027873395\" y2=\"93.28815994425321\" stroke=\"#15781B\" opacity=\"0.5019607843137255\" stroke-width=\"9.0\" stroke-linecap=\"butt\" class=\"arrow\" /><polygon points=\"39.51246117974981,123.47507764050037 69.69937887599697,100.834889368315 39.51246117974981,85.74143052019141\" fill=\"#15781B\" opacity=\"0.5019607843137255\" class=\"arrow\" /></svg>'" + "'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 390 390\" width=\"200\" height=\"200\"><desc><pre>r . b . . r k .\\np p p p q p p p\\n. b n . . . . .\\n. . . n P . . .\\n. . B . P . . .\\n. . N . . N . .\\nP P P . Q P P P\\nR . B . . R K .</pre></desc><defs><g id=\"white-pawn\" class=\"white pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#fff\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"white-knight\" class=\"white knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#000000; stroke:#000000;\" /></g><g id=\"white-bishop\" class=\"white bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#fff\" stroke-linecap=\"butt\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zM15 32c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" /></g><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke-linejoin=\"miter\" /></g><g id=\"white-rook\" class=\"white rook\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12 36v-4h21v4H12zM11 14V9h4v2h5V9h5v2h5V9h4v5\" stroke-linecap=\"butt\" /><path d=\"M34 14l-3 3H14l-3-3\" /><path d=\"M31 17v12.5H14V17\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M31 29.5l1.5 2.5h-20l1.5-2.5\" /><path d=\"M11 14h23\" fill=\"none\" stroke-linejoin=\"miter\" /></g><g id=\"white-queen\" class=\"white queen\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M8 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM24.5 7.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM41 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM16 8.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM33 9a2 2 0 1 1-4 0 2 2 0 1 1 4 0z\" /><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2-12-7 11V11l-5.5 13.5-3-15-3 15-5.5-14V25L7 14l2 12zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11.5 30c3.5-1 18.5-1 22 0M12 33.5c6-1 15-1 21 0\" fill=\"none\" /></g><g id=\"white-king\" class=\"white king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#fff\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#fff\" /><path d=\"M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" /></g><g id=\"black-pawn\" class=\"black pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#000\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"black-knight\" class=\"black knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 24.55,10.4 L 24.1,11.85 L 24.6,12 C 27.75,13 30.25,14.49 32.5,18.75 C 34.75,23.01 35.75,29.06 35.25,39 L 35.2,39.5 L 37.45,39.5 L 37.5,39 C 38,28.94 36.62,22.15 34.25,17.66 C 31.88,13.17 28.46,11.02 25.06,10.5 L 24.55,10.4 z \" style=\"fill:#ececec; stroke:none;\" /></g><g id=\"black-bishop\" class=\"black bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zm6-4c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" fill=\"#000\" stroke-linecap=\"butt\" /><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke=\"#fff\" stroke-linejoin=\"miter\" /></g><g id=\"black-rook\" class=\"black rook\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12.5 32l1.5-2.5h17l1.5 2.5h-20zM12 36v-4h21v4H12z\" stroke-linecap=\"butt\" /><path d=\"M14 29.5v-13h17v13H14z\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M14 16.5L11 14h23l-3 2.5H14zM11 14V9h4v2h5V9h5v2h5V9h4v5H11z\" stroke-linecap=\"butt\" /><path d=\"M12 35.5h21M13 31.5h19M14 29.5h17M14 16.5h17M11 14h23\" fill=\"none\" stroke=\"#fff\" stroke-width=\"1\" stroke-linejoin=\"miter\" /></g><g id=\"black-queen\" class=\"black queen\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#000\" stroke=\"none\"><circle cx=\"6\" cy=\"12\" r=\"2.75\" /><circle cx=\"14\" cy=\"9\" r=\"2.75\" /><circle cx=\"22.5\" cy=\"8\" r=\"2.75\" /><circle cx=\"31\" cy=\"9\" r=\"2.75\" /><circle cx=\"39\" cy=\"12\" r=\"2.75\" /></g><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2.5-12.5L31 25l-.3-14.1-5.2 13.6-3-14.5-3 14.5-5.2-13.6L14 25 6.5 13.5 9 26zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11 38.5a35 35 1 0 0 23 0\" fill=\"none\" stroke-linecap=\"butt\" /><path d=\"M11 29a35 35 1 0 1 23 0M12.5 31.5h20M11.5 34.5a35 35 1 0 0 22 0M10.5 37.5a35 35 1 0 0 24 0\" fill=\"none\" stroke=\"#fff\" /></g><g id=\"black-king\" class=\"black king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#000\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#000\" /><path d=\"M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M32 29.5s8.5-4 6.03-9.65C34.15 14 25 18 22.5 24.5l.01 2.1-.01-2.1C20 18 9.906 14 6.997 19.85c-2.497 5.65 4.853 9 4.853 9M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" stroke=\"#fff\" /></g></defs><rect x=\"7.5\" y=\"7.5\" width=\"375\" height=\"375\" fill=\"none\" stroke=\"#212121\" stroke-width=\"15\" /><g transform=\"translate(20, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(20, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(65, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(65, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(110, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(110, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(155, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(155, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(200, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(200, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(245, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(245, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(290, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(290, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(335, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(335, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(0, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(375, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(0, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(375, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(0, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(375, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(0, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(375, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(0, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(375, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(0, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(375, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(0, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(375, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(0, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><g transform=\"translate(375, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><rect x=\"15\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark a1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"330\" width=\"45\" height=\"45\" class=\"square light b1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark c1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"330\" width=\"45\" height=\"45\" class=\"square light d1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark e1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"330\" width=\"45\" height=\"45\" class=\"square light f1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark g1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"330\" width=\"45\" height=\"45\" class=\"square light h1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"285\" width=\"45\" height=\"45\" class=\"square light a2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark b2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"285\" width=\"45\" height=\"45\" class=\"square light c2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark d2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"285\" width=\"45\" height=\"45\" class=\"square light e2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark f2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"285\" width=\"45\" height=\"45\" class=\"square light g2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark h2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark a3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"240\" width=\"45\" height=\"45\" class=\"square light b3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark c3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"240\" width=\"45\" height=\"45\" class=\"square light d3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark e3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"240\" width=\"45\" height=\"45\" class=\"square light f3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark g3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"240\" width=\"45\" height=\"45\" class=\"square light h3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"195\" width=\"45\" height=\"45\" class=\"square light a4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark b4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"195\" width=\"45\" height=\"45\" class=\"square light c4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark d4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"195\" width=\"45\" height=\"45\" class=\"square light e4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark f4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"195\" width=\"45\" height=\"45\" class=\"square light g4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark h4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark a5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"150\" width=\"45\" height=\"45\" class=\"square light b5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark c5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"150\" width=\"45\" height=\"45\" class=\"square light d5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark e5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"150\" width=\"45\" height=\"45\" class=\"square light f5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark g5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"150\" width=\"45\" height=\"45\" class=\"square light h5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"105\" width=\"45\" height=\"45\" class=\"square light a6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark b6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"105\" width=\"45\" height=\"45\" class=\"square light c6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark d6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"105\" width=\"45\" height=\"45\" class=\"square light e6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark f6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"105\" width=\"45\" height=\"45\" class=\"square light g6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark h6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark a7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"60\" width=\"45\" height=\"45\" class=\"square light b7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark c7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"60\" width=\"45\" height=\"45\" class=\"square light d7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark e7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"60\" width=\"45\" height=\"45\" class=\"square light f7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark g7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"60\" width=\"45\" height=\"45\" class=\"square light h7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"15\" width=\"45\" height=\"45\" class=\"square light a8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark b8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"15\" width=\"45\" height=\"45\" stroke=\"none\" fill=\"gray\" /><rect x=\"105\" y=\"15\" width=\"45\" height=\"45\" class=\"square light c8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark d8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"15\" width=\"45\" height=\"45\" class=\"square light e8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark f8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"15\" width=\"45\" height=\"45\" class=\"square light g8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark h8\" stroke=\"none\" fill=\"#d18b47\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(15, 330)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(105, 330)\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(240, 330)\" /><use href=\"#white-king\" xlink:href=\"#white-king\" transform=\"translate(285, 330)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(15, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(60, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(105, 285)\" /><use href=\"#white-queen\" xlink:href=\"#white-queen\" transform=\"translate(195, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(240, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(285, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(330, 285)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(105, 240)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(240, 240)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(105, 195)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(195, 195)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(150, 150)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(195, 150)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(60, 105)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(105, 105)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(15, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(60, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(105, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(150, 60)\" /><use href=\"#black-queen\" xlink:href=\"#black-queen\" transform=\"translate(195, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(240, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(285, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(330, 60)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(15, 15)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(105, 15)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(240, 15)\" /><use href=\"#black-king\" xlink:href=\"#black-king\" transform=\"translate(285, 15)\" /><line x1=\"82.5\" y1=\"37.5\" x2=\"110.3940799721266\" y2=\"93.28815994425321\" stroke=\"#15781B\" opacity=\"0.5019607843137255\" stroke-width=\"9.0\" stroke-linecap=\"butt\" class=\"arrow\" /><polygon points=\"125.4875388202502,123.47507764050037 125.48753882025018,85.74143052019141 95.30062112400303,100.834889368315\" fill=\"#15781B\" opacity=\"0.5019607843137255\" class=\"arrow\" /></svg>'" ] }, "metadata": {}, @@ -812,7 +845,11 @@ "text": [ "\u001b[33mPlayer black\u001b[0m (to Player white):\n", "\n", - "Nb6. I'm moving my knight to a safer square. Your move!\n", + "Apologies for the confusion. It seems there was a misunderstanding. I'll correct that and move my knight from b8 to c6.\n", + "\n", + "b8c6\n", + "\n", + "Did you know that in the Middle Ages, the knight piece was usually carved to resemble a horse's head? Your move.\n", "\n", "--------------------------------------------------------------------------------\n" ] @@ -820,17 +857,17 @@ { "data": { "image/svg+xml": [ - "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 390 390\" width=\"200\" height=\"200\"><desc><pre>r . b q . r k .\n", - "p p p . . p p p\n", - "n . . . . . . .\n", - ". . b n . . . .\n", - ". . P N P . . .\n", - ". . N . . . . .\n", - "P P . . . P P P\n", - "R . B Q . R K .</pre></desc><defs><g id=\"white-pawn\" class=\"white pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#fff\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"white-knight\" class=\"white knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#000000; stroke:#000000;\" /></g><g id=\"white-bishop\" class=\"white bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#fff\" stroke-linecap=\"butt\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zM15 32c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" /></g><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke-linejoin=\"miter\" /></g><g id=\"white-rook\" class=\"white rook\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12 36v-4h21v4H12zM11 14V9h4v2h5V9h5v2h5V9h4v5\" stroke-linecap=\"butt\" /><path d=\"M34 14l-3 3H14l-3-3\" /><path d=\"M31 17v12.5H14V17\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M31 29.5l1.5 2.5h-20l1.5-2.5\" /><path d=\"M11 14h23\" fill=\"none\" stroke-linejoin=\"miter\" /></g><g id=\"white-queen\" class=\"white queen\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M8 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM24.5 7.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM41 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM16 8.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM33 9a2 2 0 1 1-4 0 2 2 0 1 1 4 0z\" /><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2-12-7 11V11l-5.5 13.5-3-15-3 15-5.5-14V25L7 14l2 12zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11.5 30c3.5-1 18.5-1 22 0M12 33.5c6-1 15-1 21 0\" fill=\"none\" /></g><g id=\"white-king\" class=\"white king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#fff\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#fff\" /><path d=\"M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" /></g><g id=\"black-pawn\" class=\"black pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#000\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"black-knight\" class=\"black knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 24.55,10.4 L 24.1,11.85 L 24.6,12 C 27.75,13 30.25,14.49 32.5,18.75 C 34.75,23.01 35.75,29.06 35.25,39 L 35.2,39.5 L 37.45,39.5 L 37.5,39 C 38,28.94 36.62,22.15 34.25,17.66 C 31.88,13.17 28.46,11.02 25.06,10.5 L 24.55,10.4 z \" style=\"fill:#ececec; stroke:none;\" /></g><g id=\"black-bishop\" class=\"black bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zm6-4c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" fill=\"#000\" stroke-linecap=\"butt\" /><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke=\"#fff\" stroke-linejoin=\"miter\" /></g><g id=\"black-rook\" class=\"black rook\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12.5 32l1.5-2.5h17l1.5 2.5h-20zM12 36v-4h21v4H12z\" stroke-linecap=\"butt\" /><path d=\"M14 29.5v-13h17v13H14z\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M14 16.5L11 14h23l-3 2.5H14zM11 14V9h4v2h5V9h5v2h5V9h4v5H11z\" stroke-linecap=\"butt\" /><path d=\"M12 35.5h21M13 31.5h19M14 29.5h17M14 16.5h17M11 14h23\" fill=\"none\" stroke=\"#fff\" stroke-width=\"1\" stroke-linejoin=\"miter\" /></g><g id=\"black-queen\" class=\"black queen\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#000\" stroke=\"none\"><circle cx=\"6\" cy=\"12\" r=\"2.75\" /><circle cx=\"14\" cy=\"9\" r=\"2.75\" /><circle cx=\"22.5\" cy=\"8\" r=\"2.75\" /><circle cx=\"31\" cy=\"9\" r=\"2.75\" /><circle cx=\"39\" cy=\"12\" r=\"2.75\" /></g><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2.5-12.5L31 25l-.3-14.1-5.2 13.6-3-14.5-3 14.5-5.2-13.6L14 25 6.5 13.5 9 26zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11 38.5a35 35 1 0 0 23 0\" fill=\"none\" stroke-linecap=\"butt\" /><path d=\"M11 29a35 35 1 0 1 23 0M12.5 31.5h20M11.5 34.5a35 35 1 0 0 22 0M10.5 37.5a35 35 1 0 0 24 0\" fill=\"none\" stroke=\"#fff\" /></g><g id=\"black-king\" class=\"black king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#000\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#000\" /><path d=\"M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M32 29.5s8.5-4 6.03-9.65C34.15 14 25 18 22.5 24.5l.01 2.1-.01-2.1C20 18 9.906 14 6.997 19.85c-2.497 5.65 4.853 9 4.853 9M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" stroke=\"#fff\" /></g></defs><rect x=\"7.5\" y=\"7.5\" width=\"375\" height=\"375\" fill=\"none\" stroke=\"#212121\" stroke-width=\"15\" /><g transform=\"translate(20, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(20, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(65, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(65, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(110, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(110, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(155, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(155, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(200, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(200, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(245, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(245, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(290, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(290, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(335, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(335, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(0, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(375, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(0, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(375, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(0, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(375, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(0, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(375, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(0, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(375, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(0, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(375, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(0, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(375, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(0, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><g transform=\"translate(375, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><rect x=\"15\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark a1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"330\" width=\"45\" height=\"45\" class=\"square light b1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"330\" width=\"45\" height=\"45\" stroke=\"none\" fill=\"gray\" /><rect x=\"105\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark c1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"330\" width=\"45\" height=\"45\" class=\"square light d1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark e1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"330\" width=\"45\" height=\"45\" class=\"square light f1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark g1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"330\" width=\"45\" height=\"45\" class=\"square light h1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"285\" width=\"45\" height=\"45\" class=\"square light a2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark b2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"285\" width=\"45\" height=\"45\" class=\"square light c2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark d2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"285\" width=\"45\" height=\"45\" class=\"square light e2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark f2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"285\" width=\"45\" height=\"45\" class=\"square light g2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark h2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark a3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"240\" width=\"45\" height=\"45\" class=\"square light b3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark c3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"240\" width=\"45\" height=\"45\" class=\"square light d3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark e3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"240\" width=\"45\" height=\"45\" class=\"square light f3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark g3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"240\" width=\"45\" height=\"45\" class=\"square light h3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"195\" width=\"45\" height=\"45\" class=\"square light a4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark b4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"195\" width=\"45\" height=\"45\" class=\"square light c4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark d4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"195\" width=\"45\" height=\"45\" class=\"square light e4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark f4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"195\" width=\"45\" height=\"45\" class=\"square light g4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark h4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark a5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"150\" width=\"45\" height=\"45\" class=\"square light b5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark c5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"150\" width=\"45\" height=\"45\" class=\"square light d5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark e5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"150\" width=\"45\" height=\"45\" class=\"square light f5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark g5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"150\" width=\"45\" height=\"45\" class=\"square light h5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"105\" width=\"45\" height=\"45\" class=\"square light a6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark b6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"105\" width=\"45\" height=\"45\" class=\"square light c6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark d6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"105\" width=\"45\" height=\"45\" class=\"square light e6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark f6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"105\" width=\"45\" height=\"45\" class=\"square light g6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark h6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark a7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"60\" width=\"45\" height=\"45\" class=\"square light b7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark c7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"60\" width=\"45\" height=\"45\" class=\"square light d7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark e7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"60\" width=\"45\" height=\"45\" class=\"square light f7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark g7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"60\" width=\"45\" height=\"45\" class=\"square light h7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"15\" width=\"45\" height=\"45\" class=\"square light a8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark b8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"15\" width=\"45\" height=\"45\" class=\"square light c8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark d8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"15\" width=\"45\" height=\"45\" class=\"square light e8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark f8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"15\" width=\"45\" height=\"45\" class=\"square light g8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark h8\" stroke=\"none\" fill=\"#d18b47\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(15, 330)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(105, 330)\" /><use href=\"#white-queen\" xlink:href=\"#white-queen\" transform=\"translate(150, 330)\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(240, 330)\" /><use href=\"#white-king\" xlink:href=\"#white-king\" transform=\"translate(285, 330)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(15, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(60, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(240, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(285, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(330, 285)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(105, 240)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(105, 195)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(150, 195)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(195, 195)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(105, 150)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(150, 150)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(15, 105)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(15, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(60, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(105, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(240, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(285, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(330, 60)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(15, 15)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(105, 15)\" /><use href=\"#black-queen\" xlink:href=\"#black-queen\" transform=\"translate(150, 15)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(240, 15)\" /><use href=\"#black-king\" xlink:href=\"#black-king\" transform=\"translate(285, 15)\" /><line x1=\"82.5\" y1=\"352.5\" x2=\"110.3940799721266\" y2=\"296.7118400557468\" stroke=\"#15781B\" opacity=\"0.5019607843137255\" stroke-width=\"9.0\" stroke-linecap=\"butt\" class=\"arrow\" /><polygon points=\"125.4875388202502,266.5249223594996 95.30062112400303,289.165110631685 125.48753882025018,304.25856947980856\" fill=\"#15781B\" opacity=\"0.5019607843137255\" class=\"arrow\" /></svg>" + "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 390 390\" width=\"200\" height=\"200\"><desc><pre>r . b . . r k .\n", + "p p p p q p p p\n", + ". b n . . . . .\n", + ". . . n P . B .\n", + ". . B . P . . .\n", + ". . N . . N . .\n", + "P P P . Q P P P\n", + "R . . . . R K .</pre></desc><defs><g id=\"white-pawn\" class=\"white pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#fff\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"white-knight\" class=\"white knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#000000; stroke:#000000;\" /></g><g id=\"white-bishop\" class=\"white bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#fff\" stroke-linecap=\"butt\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zM15 32c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" /></g><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke-linejoin=\"miter\" /></g><g id=\"white-rook\" class=\"white rook\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12 36v-4h21v4H12zM11 14V9h4v2h5V9h5v2h5V9h4v5\" stroke-linecap=\"butt\" /><path d=\"M34 14l-3 3H14l-3-3\" /><path d=\"M31 17v12.5H14V17\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M31 29.5l1.5 2.5h-20l1.5-2.5\" /><path d=\"M11 14h23\" fill=\"none\" stroke-linejoin=\"miter\" /></g><g id=\"white-queen\" class=\"white queen\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M8 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM24.5 7.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM41 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM16 8.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM33 9a2 2 0 1 1-4 0 2 2 0 1 1 4 0z\" /><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2-12-7 11V11l-5.5 13.5-3-15-3 15-5.5-14V25L7 14l2 12zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11.5 30c3.5-1 18.5-1 22 0M12 33.5c6-1 15-1 21 0\" fill=\"none\" /></g><g id=\"white-king\" class=\"white king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#fff\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#fff\" /><path d=\"M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" /></g><g id=\"black-pawn\" class=\"black pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#000\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"black-knight\" class=\"black knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 24.55,10.4 L 24.1,11.85 L 24.6,12 C 27.75,13 30.25,14.49 32.5,18.75 C 34.75,23.01 35.75,29.06 35.25,39 L 35.2,39.5 L 37.45,39.5 L 37.5,39 C 38,28.94 36.62,22.15 34.25,17.66 C 31.88,13.17 28.46,11.02 25.06,10.5 L 24.55,10.4 z \" style=\"fill:#ececec; stroke:none;\" /></g><g id=\"black-bishop\" class=\"black bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zm6-4c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" fill=\"#000\" stroke-linecap=\"butt\" /><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke=\"#fff\" stroke-linejoin=\"miter\" /></g><g id=\"black-rook\" class=\"black rook\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12.5 32l1.5-2.5h17l1.5 2.5h-20zM12 36v-4h21v4H12z\" stroke-linecap=\"butt\" /><path d=\"M14 29.5v-13h17v13H14z\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M14 16.5L11 14h23l-3 2.5H14zM11 14V9h4v2h5V9h5v2h5V9h4v5H11z\" stroke-linecap=\"butt\" /><path d=\"M12 35.5h21M13 31.5h19M14 29.5h17M14 16.5h17M11 14h23\" fill=\"none\" stroke=\"#fff\" stroke-width=\"1\" stroke-linejoin=\"miter\" /></g><g id=\"black-queen\" class=\"black queen\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#000\" stroke=\"none\"><circle cx=\"6\" cy=\"12\" r=\"2.75\" /><circle cx=\"14\" cy=\"9\" r=\"2.75\" /><circle cx=\"22.5\" cy=\"8\" r=\"2.75\" /><circle cx=\"31\" cy=\"9\" r=\"2.75\" /><circle cx=\"39\" cy=\"12\" r=\"2.75\" /></g><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2.5-12.5L31 25l-.3-14.1-5.2 13.6-3-14.5-3 14.5-5.2-13.6L14 25 6.5 13.5 9 26zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11 38.5a35 35 1 0 0 23 0\" fill=\"none\" stroke-linecap=\"butt\" /><path d=\"M11 29a35 35 1 0 1 23 0M12.5 31.5h20M11.5 34.5a35 35 1 0 0 22 0M10.5 37.5a35 35 1 0 0 24 0\" fill=\"none\" stroke=\"#fff\" /></g><g id=\"black-king\" class=\"black king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#000\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#000\" /><path d=\"M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M32 29.5s8.5-4 6.03-9.65C34.15 14 25 18 22.5 24.5l.01 2.1-.01-2.1C20 18 9.906 14 6.997 19.85c-2.497 5.65 4.853 9 4.853 9M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" stroke=\"#fff\" /></g></defs><rect x=\"7.5\" y=\"7.5\" width=\"375\" height=\"375\" fill=\"none\" stroke=\"#212121\" stroke-width=\"15\" /><g transform=\"translate(20, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(20, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(65, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(65, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(110, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(110, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(155, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(155, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(200, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(200, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(245, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(245, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(290, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(290, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(335, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(335, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(0, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(375, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(0, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(375, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(0, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(375, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(0, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(375, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(0, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(375, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(0, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(375, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(0, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(375, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(0, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><g transform=\"translate(375, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><rect x=\"15\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark a1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"330\" width=\"45\" height=\"45\" class=\"square light b1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark c1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"330\" width=\"45\" height=\"45\" stroke=\"none\" fill=\"gray\" /><rect x=\"150\" y=\"330\" width=\"45\" height=\"45\" class=\"square light d1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark e1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"330\" width=\"45\" height=\"45\" class=\"square light f1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark g1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"330\" width=\"45\" height=\"45\" class=\"square light h1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"285\" width=\"45\" height=\"45\" class=\"square light a2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark b2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"285\" width=\"45\" height=\"45\" class=\"square light c2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark d2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"285\" width=\"45\" height=\"45\" class=\"square light e2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark f2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"285\" width=\"45\" height=\"45\" class=\"square light g2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark h2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark a3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"240\" width=\"45\" height=\"45\" class=\"square light b3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark c3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"240\" width=\"45\" height=\"45\" class=\"square light d3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark e3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"240\" width=\"45\" height=\"45\" class=\"square light f3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark g3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"240\" width=\"45\" height=\"45\" class=\"square light h3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"195\" width=\"45\" height=\"45\" class=\"square light a4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark b4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"195\" width=\"45\" height=\"45\" class=\"square light c4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark d4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"195\" width=\"45\" height=\"45\" class=\"square light e4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark f4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"195\" width=\"45\" height=\"45\" class=\"square light g4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark h4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark a5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"150\" width=\"45\" height=\"45\" class=\"square light b5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark c5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"150\" width=\"45\" height=\"45\" class=\"square light d5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark e5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"150\" width=\"45\" height=\"45\" class=\"square light f5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark g5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"150\" width=\"45\" height=\"45\" class=\"square light h5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"105\" width=\"45\" height=\"45\" class=\"square light a6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark b6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"105\" width=\"45\" height=\"45\" class=\"square light c6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark d6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"105\" width=\"45\" height=\"45\" class=\"square light e6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark f6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"105\" width=\"45\" height=\"45\" class=\"square light g6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark h6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark a7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"60\" width=\"45\" height=\"45\" class=\"square light b7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark c7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"60\" width=\"45\" height=\"45\" class=\"square light d7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark e7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"60\" width=\"45\" height=\"45\" class=\"square light f7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark g7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"60\" width=\"45\" height=\"45\" class=\"square light h7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"15\" width=\"45\" height=\"45\" class=\"square light a8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark b8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"15\" width=\"45\" height=\"45\" class=\"square light c8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark d8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"15\" width=\"45\" height=\"45\" class=\"square light e8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark f8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"15\" width=\"45\" height=\"45\" class=\"square light g8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark h8\" stroke=\"none\" fill=\"#d18b47\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(15, 330)\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(240, 330)\" /><use href=\"#white-king\" xlink:href=\"#white-king\" transform=\"translate(285, 330)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(15, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(60, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(105, 285)\" /><use href=\"#white-queen\" xlink:href=\"#white-queen\" transform=\"translate(195, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(240, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(285, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(330, 285)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(105, 240)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(240, 240)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(105, 195)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(195, 195)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(150, 150)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(195, 150)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(285, 150)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(60, 105)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(105, 105)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(15, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(60, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(105, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(150, 60)\" /><use href=\"#black-queen\" xlink:href=\"#black-queen\" transform=\"translate(195, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(240, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(285, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(330, 60)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(15, 15)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(105, 15)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(240, 15)\" /><use href=\"#black-king\" xlink:href=\"#black-king\" transform=\"translate(285, 15)\" /><line x1=\"127.5\" y1=\"352.5\" x2=\"280.45316561961454\" y2=\"199.54683438038543\" stroke=\"#15781B\" opacity=\"0.5019607843137255\" stroke-width=\"9.0\" stroke-linecap=\"butt\" class=\"arrow\" /><polygon points=\"304.3180194846605,175.68198051533946 268.5207386870915,187.61440744786245 292.38559255213755,211.47926131290842\" fill=\"#15781B\" opacity=\"0.5019607843137255\" class=\"arrow\" /></svg>" ], "text/plain": [ - "'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 390 390\" width=\"200\" height=\"200\"><desc><pre>r . b q . r k .\\np p p . . p p p\\nn . . . . . . .\\n. . b n . . . .\\n. . P N P . . .\\n. . N . . . . .\\nP P . . . P P P\\nR . B Q . R K .</pre></desc><defs><g id=\"white-pawn\" class=\"white pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#fff\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"white-knight\" class=\"white knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#000000; stroke:#000000;\" /></g><g id=\"white-bishop\" class=\"white bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#fff\" stroke-linecap=\"butt\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zM15 32c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" /></g><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke-linejoin=\"miter\" /></g><g id=\"white-rook\" class=\"white rook\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12 36v-4h21v4H12zM11 14V9h4v2h5V9h5v2h5V9h4v5\" stroke-linecap=\"butt\" /><path d=\"M34 14l-3 3H14l-3-3\" /><path d=\"M31 17v12.5H14V17\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M31 29.5l1.5 2.5h-20l1.5-2.5\" /><path d=\"M11 14h23\" fill=\"none\" stroke-linejoin=\"miter\" /></g><g id=\"white-queen\" class=\"white queen\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M8 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM24.5 7.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM41 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM16 8.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM33 9a2 2 0 1 1-4 0 2 2 0 1 1 4 0z\" /><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2-12-7 11V11l-5.5 13.5-3-15-3 15-5.5-14V25L7 14l2 12zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11.5 30c3.5-1 18.5-1 22 0M12 33.5c6-1 15-1 21 0\" fill=\"none\" /></g><g id=\"white-king\" class=\"white king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#fff\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#fff\" /><path d=\"M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" /></g><g id=\"black-pawn\" class=\"black pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#000\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"black-knight\" class=\"black knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 24.55,10.4 L 24.1,11.85 L 24.6,12 C 27.75,13 30.25,14.49 32.5,18.75 C 34.75,23.01 35.75,29.06 35.25,39 L 35.2,39.5 L 37.45,39.5 L 37.5,39 C 38,28.94 36.62,22.15 34.25,17.66 C 31.88,13.17 28.46,11.02 25.06,10.5 L 24.55,10.4 z \" style=\"fill:#ececec; stroke:none;\" /></g><g id=\"black-bishop\" class=\"black bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zm6-4c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" fill=\"#000\" stroke-linecap=\"butt\" /><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke=\"#fff\" stroke-linejoin=\"miter\" /></g><g id=\"black-rook\" class=\"black rook\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12.5 32l1.5-2.5h17l1.5 2.5h-20zM12 36v-4h21v4H12z\" stroke-linecap=\"butt\" /><path d=\"M14 29.5v-13h17v13H14z\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M14 16.5L11 14h23l-3 2.5H14zM11 14V9h4v2h5V9h5v2h5V9h4v5H11z\" stroke-linecap=\"butt\" /><path d=\"M12 35.5h21M13 31.5h19M14 29.5h17M14 16.5h17M11 14h23\" fill=\"none\" stroke=\"#fff\" stroke-width=\"1\" stroke-linejoin=\"miter\" /></g><g id=\"black-queen\" class=\"black queen\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#000\" stroke=\"none\"><circle cx=\"6\" cy=\"12\" r=\"2.75\" /><circle cx=\"14\" cy=\"9\" r=\"2.75\" /><circle cx=\"22.5\" cy=\"8\" r=\"2.75\" /><circle cx=\"31\" cy=\"9\" r=\"2.75\" /><circle cx=\"39\" cy=\"12\" r=\"2.75\" /></g><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2.5-12.5L31 25l-.3-14.1-5.2 13.6-3-14.5-3 14.5-5.2-13.6L14 25 6.5 13.5 9 26zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11 38.5a35 35 1 0 0 23 0\" fill=\"none\" stroke-linecap=\"butt\" /><path d=\"M11 29a35 35 1 0 1 23 0M12.5 31.5h20M11.5 34.5a35 35 1 0 0 22 0M10.5 37.5a35 35 1 0 0 24 0\" fill=\"none\" stroke=\"#fff\" /></g><g id=\"black-king\" class=\"black king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#000\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#000\" /><path d=\"M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M32 29.5s8.5-4 6.03-9.65C34.15 14 25 18 22.5 24.5l.01 2.1-.01-2.1C20 18 9.906 14 6.997 19.85c-2.497 5.65 4.853 9 4.853 9M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" stroke=\"#fff\" /></g></defs><rect x=\"7.5\" y=\"7.5\" width=\"375\" height=\"375\" fill=\"none\" stroke=\"#212121\" stroke-width=\"15\" /><g transform=\"translate(20, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(20, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(65, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(65, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(110, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(110, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(155, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(155, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(200, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(200, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(245, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(245, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(290, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(290, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(335, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(335, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(0, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(375, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(0, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(375, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(0, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(375, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(0, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(375, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(0, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(375, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(0, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(375, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(0, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(375, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(0, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><g transform=\"translate(375, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><rect x=\"15\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark a1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"330\" width=\"45\" height=\"45\" class=\"square light b1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"330\" width=\"45\" height=\"45\" stroke=\"none\" fill=\"gray\" /><rect x=\"105\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark c1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"330\" width=\"45\" height=\"45\" class=\"square light d1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark e1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"330\" width=\"45\" height=\"45\" class=\"square light f1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark g1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"330\" width=\"45\" height=\"45\" class=\"square light h1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"285\" width=\"45\" height=\"45\" class=\"square light a2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark b2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"285\" width=\"45\" height=\"45\" class=\"square light c2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark d2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"285\" width=\"45\" height=\"45\" class=\"square light e2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark f2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"285\" width=\"45\" height=\"45\" class=\"square light g2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark h2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark a3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"240\" width=\"45\" height=\"45\" class=\"square light b3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark c3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"240\" width=\"45\" height=\"45\" class=\"square light d3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark e3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"240\" width=\"45\" height=\"45\" class=\"square light f3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark g3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"240\" width=\"45\" height=\"45\" class=\"square light h3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"195\" width=\"45\" height=\"45\" class=\"square light a4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark b4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"195\" width=\"45\" height=\"45\" class=\"square light c4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark d4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"195\" width=\"45\" height=\"45\" class=\"square light e4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark f4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"195\" width=\"45\" height=\"45\" class=\"square light g4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark h4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark a5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"150\" width=\"45\" height=\"45\" class=\"square light b5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark c5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"150\" width=\"45\" height=\"45\" class=\"square light d5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark e5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"150\" width=\"45\" height=\"45\" class=\"square light f5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark g5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"150\" width=\"45\" height=\"45\" class=\"square light h5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"105\" width=\"45\" height=\"45\" class=\"square light a6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark b6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"105\" width=\"45\" height=\"45\" class=\"square light c6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark d6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"105\" width=\"45\" height=\"45\" class=\"square light e6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark f6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"105\" width=\"45\" height=\"45\" class=\"square light g6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark h6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark a7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"60\" width=\"45\" height=\"45\" class=\"square light b7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark c7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"60\" width=\"45\" height=\"45\" class=\"square light d7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark e7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"60\" width=\"45\" height=\"45\" class=\"square light f7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark g7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"60\" width=\"45\" height=\"45\" class=\"square light h7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"15\" width=\"45\" height=\"45\" class=\"square light a8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark b8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"15\" width=\"45\" height=\"45\" class=\"square light c8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark d8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"15\" width=\"45\" height=\"45\" class=\"square light e8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark f8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"15\" width=\"45\" height=\"45\" class=\"square light g8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark h8\" stroke=\"none\" fill=\"#d18b47\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(15, 330)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(105, 330)\" /><use href=\"#white-queen\" xlink:href=\"#white-queen\" transform=\"translate(150, 330)\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(240, 330)\" /><use href=\"#white-king\" xlink:href=\"#white-king\" transform=\"translate(285, 330)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(15, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(60, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(240, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(285, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(330, 285)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(105, 240)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(105, 195)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(150, 195)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(195, 195)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(105, 150)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(150, 150)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(15, 105)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(15, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(60, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(105, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(240, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(285, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(330, 60)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(15, 15)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(105, 15)\" /><use href=\"#black-queen\" xlink:href=\"#black-queen\" transform=\"translate(150, 15)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(240, 15)\" /><use href=\"#black-king\" xlink:href=\"#black-king\" transform=\"translate(285, 15)\" /><line x1=\"82.5\" y1=\"352.5\" x2=\"110.3940799721266\" y2=\"296.7118400557468\" stroke=\"#15781B\" opacity=\"0.5019607843137255\" stroke-width=\"9.0\" stroke-linecap=\"butt\" class=\"arrow\" /><polygon points=\"125.4875388202502,266.5249223594996 95.30062112400303,289.165110631685 125.48753882025018,304.25856947980856\" fill=\"#15781B\" opacity=\"0.5019607843137255\" class=\"arrow\" /></svg>'" + "'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 390 390\" width=\"200\" height=\"200\"><desc><pre>r . b . . r k .\\np p p p q p p p\\n. b n . . . . .\\n. . . n P . B .\\n. . B . P . . .\\n. . N . . N . .\\nP P P . Q P P P\\nR . . . . R K .</pre></desc><defs><g id=\"white-pawn\" class=\"white pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#fff\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"white-knight\" class=\"white knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#000000; stroke:#000000;\" /></g><g id=\"white-bishop\" class=\"white bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#fff\" stroke-linecap=\"butt\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zM15 32c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" /></g><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke-linejoin=\"miter\" /></g><g id=\"white-rook\" class=\"white rook\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12 36v-4h21v4H12zM11 14V9h4v2h5V9h5v2h5V9h4v5\" stroke-linecap=\"butt\" /><path d=\"M34 14l-3 3H14l-3-3\" /><path d=\"M31 17v12.5H14V17\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M31 29.5l1.5 2.5h-20l1.5-2.5\" /><path d=\"M11 14h23\" fill=\"none\" stroke-linejoin=\"miter\" /></g><g id=\"white-queen\" class=\"white queen\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M8 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM24.5 7.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM41 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM16 8.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM33 9a2 2 0 1 1-4 0 2 2 0 1 1 4 0z\" /><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2-12-7 11V11l-5.5 13.5-3-15-3 15-5.5-14V25L7 14l2 12zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11.5 30c3.5-1 18.5-1 22 0M12 33.5c6-1 15-1 21 0\" fill=\"none\" /></g><g id=\"white-king\" class=\"white king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#fff\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#fff\" /><path d=\"M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" /></g><g id=\"black-pawn\" class=\"black pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#000\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"black-knight\" class=\"black knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 24.55,10.4 L 24.1,11.85 L 24.6,12 C 27.75,13 30.25,14.49 32.5,18.75 C 34.75,23.01 35.75,29.06 35.25,39 L 35.2,39.5 L 37.45,39.5 L 37.5,39 C 38,28.94 36.62,22.15 34.25,17.66 C 31.88,13.17 28.46,11.02 25.06,10.5 L 24.55,10.4 z \" style=\"fill:#ececec; stroke:none;\" /></g><g id=\"black-bishop\" class=\"black bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zm6-4c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" fill=\"#000\" stroke-linecap=\"butt\" /><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke=\"#fff\" stroke-linejoin=\"miter\" /></g><g id=\"black-rook\" class=\"black rook\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12.5 32l1.5-2.5h17l1.5 2.5h-20zM12 36v-4h21v4H12z\" stroke-linecap=\"butt\" /><path d=\"M14 29.5v-13h17v13H14z\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M14 16.5L11 14h23l-3 2.5H14zM11 14V9h4v2h5V9h5v2h5V9h4v5H11z\" stroke-linecap=\"butt\" /><path d=\"M12 35.5h21M13 31.5h19M14 29.5h17M14 16.5h17M11 14h23\" fill=\"none\" stroke=\"#fff\" stroke-width=\"1\" stroke-linejoin=\"miter\" /></g><g id=\"black-queen\" class=\"black queen\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#000\" stroke=\"none\"><circle cx=\"6\" cy=\"12\" r=\"2.75\" /><circle cx=\"14\" cy=\"9\" r=\"2.75\" /><circle cx=\"22.5\" cy=\"8\" r=\"2.75\" /><circle cx=\"31\" cy=\"9\" r=\"2.75\" /><circle cx=\"39\" cy=\"12\" r=\"2.75\" /></g><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2.5-12.5L31 25l-.3-14.1-5.2 13.6-3-14.5-3 14.5-5.2-13.6L14 25 6.5 13.5 9 26zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11 38.5a35 35 1 0 0 23 0\" fill=\"none\" stroke-linecap=\"butt\" /><path d=\"M11 29a35 35 1 0 1 23 0M12.5 31.5h20M11.5 34.5a35 35 1 0 0 22 0M10.5 37.5a35 35 1 0 0 24 0\" fill=\"none\" stroke=\"#fff\" /></g><g id=\"black-king\" class=\"black king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#000\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#000\" /><path d=\"M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M32 29.5s8.5-4 6.03-9.65C34.15 14 25 18 22.5 24.5l.01 2.1-.01-2.1C20 18 9.906 14 6.997 19.85c-2.497 5.65 4.853 9 4.853 9M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" stroke=\"#fff\" /></g></defs><rect x=\"7.5\" y=\"7.5\" width=\"375\" height=\"375\" fill=\"none\" stroke=\"#212121\" stroke-width=\"15\" /><g transform=\"translate(20, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(20, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(65, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(65, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(110, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(110, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(155, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(155, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(200, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(200, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(245, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(245, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(290, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(290, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(335, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(335, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(0, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(375, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(0, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(375, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(0, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(375, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(0, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(375, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(0, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(375, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(0, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(375, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(0, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(375, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(0, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><g transform=\"translate(375, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><rect x=\"15\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark a1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"330\" width=\"45\" height=\"45\" class=\"square light b1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark c1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"330\" width=\"45\" height=\"45\" stroke=\"none\" fill=\"gray\" /><rect x=\"150\" y=\"330\" width=\"45\" height=\"45\" class=\"square light d1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark e1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"330\" width=\"45\" height=\"45\" class=\"square light f1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark g1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"330\" width=\"45\" height=\"45\" class=\"square light h1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"285\" width=\"45\" height=\"45\" class=\"square light a2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark b2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"285\" width=\"45\" height=\"45\" class=\"square light c2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark d2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"285\" width=\"45\" height=\"45\" class=\"square light e2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark f2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"285\" width=\"45\" height=\"45\" class=\"square light g2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark h2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark a3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"240\" width=\"45\" height=\"45\" class=\"square light b3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark c3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"240\" width=\"45\" height=\"45\" class=\"square light d3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark e3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"240\" width=\"45\" height=\"45\" class=\"square light f3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark g3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"240\" width=\"45\" height=\"45\" class=\"square light h3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"195\" width=\"45\" height=\"45\" class=\"square light a4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark b4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"195\" width=\"45\" height=\"45\" class=\"square light c4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark d4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"195\" width=\"45\" height=\"45\" class=\"square light e4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark f4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"195\" width=\"45\" height=\"45\" class=\"square light g4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark h4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark a5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"150\" width=\"45\" height=\"45\" class=\"square light b5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark c5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"150\" width=\"45\" height=\"45\" class=\"square light d5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark e5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"150\" width=\"45\" height=\"45\" class=\"square light f5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark g5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"150\" width=\"45\" height=\"45\" class=\"square light h5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"105\" width=\"45\" height=\"45\" class=\"square light a6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark b6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"105\" width=\"45\" height=\"45\" class=\"square light c6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark d6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"105\" width=\"45\" height=\"45\" class=\"square light e6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark f6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"105\" width=\"45\" height=\"45\" class=\"square light g6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark h6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark a7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"60\" width=\"45\" height=\"45\" class=\"square light b7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark c7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"60\" width=\"45\" height=\"45\" class=\"square light d7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark e7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"60\" width=\"45\" height=\"45\" class=\"square light f7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark g7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"60\" width=\"45\" height=\"45\" class=\"square light h7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"15\" width=\"45\" height=\"45\" class=\"square light a8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark b8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"15\" width=\"45\" height=\"45\" class=\"square light c8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark d8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"15\" width=\"45\" height=\"45\" class=\"square light e8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark f8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"15\" width=\"45\" height=\"45\" class=\"square light g8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark h8\" stroke=\"none\" fill=\"#d18b47\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(15, 330)\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(240, 330)\" /><use href=\"#white-king\" xlink:href=\"#white-king\" transform=\"translate(285, 330)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(15, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(60, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(105, 285)\" /><use href=\"#white-queen\" xlink:href=\"#white-queen\" transform=\"translate(195, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(240, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(285, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(330, 285)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(105, 240)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(240, 240)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(105, 195)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(195, 195)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(150, 150)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(195, 150)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(285, 150)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(60, 105)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(105, 105)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(15, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(60, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(105, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(150, 60)\" /><use href=\"#black-queen\" xlink:href=\"#black-queen\" transform=\"translate(195, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(240, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(285, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(330, 60)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(15, 15)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(105, 15)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(240, 15)\" /><use href=\"#black-king\" xlink:href=\"#black-king\" transform=\"translate(285, 15)\" /><line x1=\"127.5\" y1=\"352.5\" x2=\"280.45316561961454\" y2=\"199.54683438038543\" stroke=\"#15781B\" opacity=\"0.5019607843137255\" stroke-width=\"9.0\" stroke-linecap=\"butt\" class=\"arrow\" /><polygon points=\"304.3180194846605,175.68198051533946 268.5207386870915,187.61440744786245 292.38559255213755,211.47926131290842\" fill=\"#15781B\" opacity=\"0.5019607843137255\" class=\"arrow\" /></svg>'" ] }, "metadata": {}, @@ -842,7 +879,9 @@ "text": [ "\u001b[33mPlayer white\u001b[0m (to Player black):\n", "\n", - "Nc3. Developing my knight to control the center. Your move!\n", + "That's a fascinating bit of history! The knight piece's design certainly adds to the charm of the game. Now, I'll move my bishop from c1 to g5, putting a little pressure on your queen.\n", + "\n", + "c1g5\n", "\n", "--------------------------------------------------------------------------------\n" ] @@ -850,17 +889,17 @@ { "data": { "image/svg+xml": [ - "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 390 390\" width=\"200\" height=\"200\"><desc><pre>r . . q . r k .\n", - "p p p b . p p p\n", - "n . . . . . . .\n", - ". . b n . . . .\n", - ". . P N P . . .\n", - ". . N . . . . .\n", - "P P . . . P P P\n", - "R . B Q . R K .</pre></desc><defs><g id=\"white-pawn\" class=\"white pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#fff\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"white-knight\" class=\"white knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#000000; stroke:#000000;\" /></g><g id=\"white-bishop\" class=\"white bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#fff\" stroke-linecap=\"butt\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zM15 32c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" /></g><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke-linejoin=\"miter\" /></g><g id=\"white-rook\" class=\"white rook\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12 36v-4h21v4H12zM11 14V9h4v2h5V9h5v2h5V9h4v5\" stroke-linecap=\"butt\" /><path d=\"M34 14l-3 3H14l-3-3\" /><path d=\"M31 17v12.5H14V17\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M31 29.5l1.5 2.5h-20l1.5-2.5\" /><path d=\"M11 14h23\" fill=\"none\" stroke-linejoin=\"miter\" /></g><g id=\"white-queen\" class=\"white queen\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M8 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM24.5 7.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM41 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM16 8.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM33 9a2 2 0 1 1-4 0 2 2 0 1 1 4 0z\" /><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2-12-7 11V11l-5.5 13.5-3-15-3 15-5.5-14V25L7 14l2 12zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11.5 30c3.5-1 18.5-1 22 0M12 33.5c6-1 15-1 21 0\" fill=\"none\" /></g><g id=\"white-king\" class=\"white king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#fff\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#fff\" /><path d=\"M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" /></g><g id=\"black-pawn\" class=\"black pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#000\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"black-knight\" class=\"black knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 24.55,10.4 L 24.1,11.85 L 24.6,12 C 27.75,13 30.25,14.49 32.5,18.75 C 34.75,23.01 35.75,29.06 35.25,39 L 35.2,39.5 L 37.45,39.5 L 37.5,39 C 38,28.94 36.62,22.15 34.25,17.66 C 31.88,13.17 28.46,11.02 25.06,10.5 L 24.55,10.4 z \" style=\"fill:#ececec; stroke:none;\" /></g><g id=\"black-bishop\" class=\"black bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zm6-4c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" fill=\"#000\" stroke-linecap=\"butt\" /><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke=\"#fff\" stroke-linejoin=\"miter\" /></g><g id=\"black-rook\" class=\"black rook\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12.5 32l1.5-2.5h17l1.5 2.5h-20zM12 36v-4h21v4H12z\" stroke-linecap=\"butt\" /><path d=\"M14 29.5v-13h17v13H14z\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M14 16.5L11 14h23l-3 2.5H14zM11 14V9h4v2h5V9h5v2h5V9h4v5H11z\" stroke-linecap=\"butt\" /><path d=\"M12 35.5h21M13 31.5h19M14 29.5h17M14 16.5h17M11 14h23\" fill=\"none\" stroke=\"#fff\" stroke-width=\"1\" stroke-linejoin=\"miter\" /></g><g id=\"black-queen\" class=\"black queen\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#000\" stroke=\"none\"><circle cx=\"6\" cy=\"12\" r=\"2.75\" /><circle cx=\"14\" cy=\"9\" r=\"2.75\" /><circle cx=\"22.5\" cy=\"8\" r=\"2.75\" /><circle cx=\"31\" cy=\"9\" r=\"2.75\" /><circle cx=\"39\" cy=\"12\" r=\"2.75\" /></g><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2.5-12.5L31 25l-.3-14.1-5.2 13.6-3-14.5-3 14.5-5.2-13.6L14 25 6.5 13.5 9 26zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11 38.5a35 35 1 0 0 23 0\" fill=\"none\" stroke-linecap=\"butt\" /><path d=\"M11 29a35 35 1 0 1 23 0M12.5 31.5h20M11.5 34.5a35 35 1 0 0 22 0M10.5 37.5a35 35 1 0 0 24 0\" fill=\"none\" stroke=\"#fff\" /></g><g id=\"black-king\" class=\"black king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#000\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#000\" /><path d=\"M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M32 29.5s8.5-4 6.03-9.65C34.15 14 25 18 22.5 24.5l.01 2.1-.01-2.1C20 18 9.906 14 6.997 19.85c-2.497 5.65 4.853 9 4.853 9M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" stroke=\"#fff\" /></g></defs><rect x=\"7.5\" y=\"7.5\" width=\"375\" height=\"375\" fill=\"none\" stroke=\"#212121\" stroke-width=\"15\" /><g transform=\"translate(20, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(20, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(65, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(65, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(110, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(110, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(155, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(155, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(200, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(200, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(245, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(245, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(290, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(290, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(335, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(335, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(0, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(375, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(0, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(375, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(0, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(375, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(0, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(375, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(0, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(375, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(0, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(375, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(0, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(375, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(0, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><g transform=\"translate(375, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><rect x=\"15\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark a1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"330\" width=\"45\" height=\"45\" class=\"square light b1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark c1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"330\" width=\"45\" height=\"45\" class=\"square light d1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark e1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"330\" width=\"45\" height=\"45\" class=\"square light f1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark g1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"330\" width=\"45\" height=\"45\" class=\"square light h1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"285\" width=\"45\" height=\"45\" class=\"square light a2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark b2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"285\" width=\"45\" height=\"45\" class=\"square light c2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark d2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"285\" width=\"45\" height=\"45\" class=\"square light e2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark f2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"285\" width=\"45\" height=\"45\" class=\"square light g2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark h2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark a3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"240\" width=\"45\" height=\"45\" class=\"square light b3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark c3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"240\" width=\"45\" height=\"45\" class=\"square light d3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark e3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"240\" width=\"45\" height=\"45\" class=\"square light f3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark g3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"240\" width=\"45\" height=\"45\" class=\"square light h3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"195\" width=\"45\" height=\"45\" class=\"square light a4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark b4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"195\" width=\"45\" height=\"45\" class=\"square light c4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark d4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"195\" width=\"45\" height=\"45\" class=\"square light e4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark f4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"195\" width=\"45\" height=\"45\" class=\"square light g4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark h4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark a5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"150\" width=\"45\" height=\"45\" class=\"square light b5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark c5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"150\" width=\"45\" height=\"45\" class=\"square light d5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark e5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"150\" width=\"45\" height=\"45\" class=\"square light f5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark g5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"150\" width=\"45\" height=\"45\" class=\"square light h5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"105\" width=\"45\" height=\"45\" class=\"square light a6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark b6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"105\" width=\"45\" height=\"45\" class=\"square light c6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark d6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"105\" width=\"45\" height=\"45\" class=\"square light e6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark f6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"105\" width=\"45\" height=\"45\" class=\"square light g6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark h6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark a7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"60\" width=\"45\" height=\"45\" class=\"square light b7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark c7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"60\" width=\"45\" height=\"45\" class=\"square light d7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark e7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"60\" width=\"45\" height=\"45\" class=\"square light f7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark g7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"60\" width=\"45\" height=\"45\" class=\"square light h7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"15\" width=\"45\" height=\"45\" class=\"square light a8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark b8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"15\" width=\"45\" height=\"45\" class=\"square light c8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"15\" width=\"45\" height=\"45\" stroke=\"none\" fill=\"gray\" /><rect x=\"150\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark d8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"15\" width=\"45\" height=\"45\" class=\"square light e8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark f8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"15\" width=\"45\" height=\"45\" class=\"square light g8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark h8\" stroke=\"none\" fill=\"#d18b47\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(15, 330)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(105, 330)\" /><use href=\"#white-queen\" xlink:href=\"#white-queen\" transform=\"translate(150, 330)\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(240, 330)\" /><use href=\"#white-king\" xlink:href=\"#white-king\" transform=\"translate(285, 330)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(15, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(60, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(240, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(285, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(330, 285)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(105, 240)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(105, 195)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(150, 195)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(195, 195)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(105, 150)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(150, 150)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(15, 105)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(15, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(60, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(105, 60)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(150, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(240, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(285, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(330, 60)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(15, 15)\" /><use href=\"#black-queen\" xlink:href=\"#black-queen\" transform=\"translate(150, 15)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(240, 15)\" /><use href=\"#black-king\" xlink:href=\"#black-king\" transform=\"translate(285, 15)\" /><line x1=\"127.5\" y1=\"37.5\" x2=\"145.45316561961457\" y2=\"55.45316561961456\" stroke=\"#15781B\" opacity=\"0.5019607843137255\" stroke-width=\"9.0\" stroke-linecap=\"butt\" class=\"arrow\" /><polygon points=\"169.31801948466054,79.31801948466054 157.38559255213755,43.520738687091566 133.52073868709158,67.38559255213755\" fill=\"#15781B\" opacity=\"0.5019607843137255\" class=\"arrow\" /></svg>" + "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 390 390\" width=\"200\" height=\"200\"><desc><pre>r . b . . r k .\n", + "p p p p . p p p\n", + ". b n . q . . .\n", + ". . . n P . B .\n", + ". . B . P . . .\n", + ". . N . . N . .\n", + "P P P . Q P P P\n", + "R . . . . R K .</pre></desc><defs><g id=\"white-pawn\" class=\"white pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#fff\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"white-knight\" class=\"white knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#000000; stroke:#000000;\" /></g><g id=\"white-bishop\" class=\"white bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#fff\" stroke-linecap=\"butt\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zM15 32c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" /></g><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke-linejoin=\"miter\" /></g><g id=\"white-rook\" class=\"white rook\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12 36v-4h21v4H12zM11 14V9h4v2h5V9h5v2h5V9h4v5\" stroke-linecap=\"butt\" /><path d=\"M34 14l-3 3H14l-3-3\" /><path d=\"M31 17v12.5H14V17\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M31 29.5l1.5 2.5h-20l1.5-2.5\" /><path d=\"M11 14h23\" fill=\"none\" stroke-linejoin=\"miter\" /></g><g id=\"white-queen\" class=\"white queen\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M8 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM24.5 7.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM41 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM16 8.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM33 9a2 2 0 1 1-4 0 2 2 0 1 1 4 0z\" /><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2-12-7 11V11l-5.5 13.5-3-15-3 15-5.5-14V25L7 14l2 12zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11.5 30c3.5-1 18.5-1 22 0M12 33.5c6-1 15-1 21 0\" fill=\"none\" /></g><g id=\"white-king\" class=\"white king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#fff\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#fff\" /><path d=\"M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" /></g><g id=\"black-pawn\" class=\"black pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#000\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"black-knight\" class=\"black knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 24.55,10.4 L 24.1,11.85 L 24.6,12 C 27.75,13 30.25,14.49 32.5,18.75 C 34.75,23.01 35.75,29.06 35.25,39 L 35.2,39.5 L 37.45,39.5 L 37.5,39 C 38,28.94 36.62,22.15 34.25,17.66 C 31.88,13.17 28.46,11.02 25.06,10.5 L 24.55,10.4 z \" style=\"fill:#ececec; stroke:none;\" /></g><g id=\"black-bishop\" class=\"black bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zm6-4c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" fill=\"#000\" stroke-linecap=\"butt\" /><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke=\"#fff\" stroke-linejoin=\"miter\" /></g><g id=\"black-rook\" class=\"black rook\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12.5 32l1.5-2.5h17l1.5 2.5h-20zM12 36v-4h21v4H12z\" stroke-linecap=\"butt\" /><path d=\"M14 29.5v-13h17v13H14z\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M14 16.5L11 14h23l-3 2.5H14zM11 14V9h4v2h5V9h5v2h5V9h4v5H11z\" stroke-linecap=\"butt\" /><path d=\"M12 35.5h21M13 31.5h19M14 29.5h17M14 16.5h17M11 14h23\" fill=\"none\" stroke=\"#fff\" stroke-width=\"1\" stroke-linejoin=\"miter\" /></g><g id=\"black-queen\" class=\"black queen\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#000\" stroke=\"none\"><circle cx=\"6\" cy=\"12\" r=\"2.75\" /><circle cx=\"14\" cy=\"9\" r=\"2.75\" /><circle cx=\"22.5\" cy=\"8\" r=\"2.75\" /><circle cx=\"31\" cy=\"9\" r=\"2.75\" /><circle cx=\"39\" cy=\"12\" r=\"2.75\" /></g><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2.5-12.5L31 25l-.3-14.1-5.2 13.6-3-14.5-3 14.5-5.2-13.6L14 25 6.5 13.5 9 26zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11 38.5a35 35 1 0 0 23 0\" fill=\"none\" stroke-linecap=\"butt\" /><path d=\"M11 29a35 35 1 0 1 23 0M12.5 31.5h20M11.5 34.5a35 35 1 0 0 22 0M10.5 37.5a35 35 1 0 0 24 0\" fill=\"none\" stroke=\"#fff\" /></g><g id=\"black-king\" class=\"black king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#000\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#000\" /><path d=\"M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M32 29.5s8.5-4 6.03-9.65C34.15 14 25 18 22.5 24.5l.01 2.1-.01-2.1C20 18 9.906 14 6.997 19.85c-2.497 5.65 4.853 9 4.853 9M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" stroke=\"#fff\" /></g></defs><rect x=\"7.5\" y=\"7.5\" width=\"375\" height=\"375\" fill=\"none\" stroke=\"#212121\" stroke-width=\"15\" /><g transform=\"translate(20, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(20, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(65, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(65, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(110, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(110, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(155, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(155, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(200, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(200, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(245, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(245, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(290, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(290, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(335, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(335, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(0, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(375, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(0, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(375, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(0, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(375, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(0, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(375, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(0, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(375, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(0, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(375, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(0, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(375, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(0, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><g transform=\"translate(375, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><rect x=\"15\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark a1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"330\" width=\"45\" height=\"45\" class=\"square light b1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark c1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"330\" width=\"45\" height=\"45\" class=\"square light d1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark e1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"330\" width=\"45\" height=\"45\" class=\"square light f1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark g1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"330\" width=\"45\" height=\"45\" class=\"square light h1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"285\" width=\"45\" height=\"45\" class=\"square light a2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark b2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"285\" width=\"45\" height=\"45\" class=\"square light c2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark d2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"285\" width=\"45\" height=\"45\" class=\"square light e2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark f2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"285\" width=\"45\" height=\"45\" class=\"square light g2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark h2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark a3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"240\" width=\"45\" height=\"45\" class=\"square light b3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark c3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"240\" width=\"45\" height=\"45\" class=\"square light d3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark e3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"240\" width=\"45\" height=\"45\" class=\"square light f3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark g3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"240\" width=\"45\" height=\"45\" class=\"square light h3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"195\" width=\"45\" height=\"45\" class=\"square light a4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark b4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"195\" width=\"45\" height=\"45\" class=\"square light c4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark d4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"195\" width=\"45\" height=\"45\" class=\"square light e4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark f4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"195\" width=\"45\" height=\"45\" class=\"square light g4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark h4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark a5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"150\" width=\"45\" height=\"45\" class=\"square light b5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark c5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"150\" width=\"45\" height=\"45\" class=\"square light d5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark e5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"150\" width=\"45\" height=\"45\" class=\"square light f5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark g5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"150\" width=\"45\" height=\"45\" class=\"square light h5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"105\" width=\"45\" height=\"45\" class=\"square light a6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark b6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"105\" width=\"45\" height=\"45\" class=\"square light c6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark d6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"105\" width=\"45\" height=\"45\" class=\"square light e6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark f6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"105\" width=\"45\" height=\"45\" class=\"square light g6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark h6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark a7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"60\" width=\"45\" height=\"45\" class=\"square light b7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark c7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"60\" width=\"45\" height=\"45\" class=\"square light d7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark e7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"60\" width=\"45\" height=\"45\" stroke=\"none\" fill=\"gray\" /><rect x=\"240\" y=\"60\" width=\"45\" height=\"45\" class=\"square light f7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark g7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"60\" width=\"45\" height=\"45\" class=\"square light h7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"15\" width=\"45\" height=\"45\" class=\"square light a8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark b8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"15\" width=\"45\" height=\"45\" class=\"square light c8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark d8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"15\" width=\"45\" height=\"45\" class=\"square light e8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark f8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"15\" width=\"45\" height=\"45\" class=\"square light g8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark h8\" stroke=\"none\" fill=\"#d18b47\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(15, 330)\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(240, 330)\" /><use href=\"#white-king\" xlink:href=\"#white-king\" transform=\"translate(285, 330)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(15, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(60, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(105, 285)\" /><use href=\"#white-queen\" xlink:href=\"#white-queen\" transform=\"translate(195, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(240, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(285, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(330, 285)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(105, 240)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(240, 240)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(105, 195)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(195, 195)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(150, 150)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(195, 150)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(285, 150)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(60, 105)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(105, 105)\" /><use href=\"#black-queen\" xlink:href=\"#black-queen\" transform=\"translate(195, 105)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(15, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(60, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(105, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(150, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(240, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(285, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(330, 60)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(15, 15)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(105, 15)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(240, 15)\" /><use href=\"#black-king\" xlink:href=\"#black-king\" transform=\"translate(285, 15)\" /><line x1=\"217.5\" y1=\"82.5\" x2=\"217.5\" y2=\"89.25\" stroke=\"#15781B\" opacity=\"0.5019607843137255\" stroke-width=\"9.0\" stroke-linecap=\"butt\" class=\"arrow\" /><polygon points=\"217.5,123.0 234.375,89.25 200.625,89.25\" fill=\"#15781B\" opacity=\"0.5019607843137255\" class=\"arrow\" /></svg>" ], "text/plain": [ - "'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 390 390\" width=\"200\" height=\"200\"><desc><pre>r . . q . r k .\\np p p b . p p p\\nn . . . . . . .\\n. . b n . . . .\\n. . P N P . . .\\n. . N . . . . .\\nP P . . . P P P\\nR . B Q . R K .</pre></desc><defs><g id=\"white-pawn\" class=\"white pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#fff\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"white-knight\" class=\"white knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#000000; stroke:#000000;\" /></g><g id=\"white-bishop\" class=\"white bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#fff\" stroke-linecap=\"butt\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zM15 32c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" /></g><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke-linejoin=\"miter\" /></g><g id=\"white-rook\" class=\"white rook\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12 36v-4h21v4H12zM11 14V9h4v2h5V9h5v2h5V9h4v5\" stroke-linecap=\"butt\" /><path d=\"M34 14l-3 3H14l-3-3\" /><path d=\"M31 17v12.5H14V17\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M31 29.5l1.5 2.5h-20l1.5-2.5\" /><path d=\"M11 14h23\" fill=\"none\" stroke-linejoin=\"miter\" /></g><g id=\"white-queen\" class=\"white queen\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M8 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM24.5 7.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM41 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM16 8.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM33 9a2 2 0 1 1-4 0 2 2 0 1 1 4 0z\" /><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2-12-7 11V11l-5.5 13.5-3-15-3 15-5.5-14V25L7 14l2 12zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11.5 30c3.5-1 18.5-1 22 0M12 33.5c6-1 15-1 21 0\" fill=\"none\" /></g><g id=\"white-king\" class=\"white king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#fff\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#fff\" /><path d=\"M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" /></g><g id=\"black-pawn\" class=\"black pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#000\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"black-knight\" class=\"black knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 24.55,10.4 L 24.1,11.85 L 24.6,12 C 27.75,13 30.25,14.49 32.5,18.75 C 34.75,23.01 35.75,29.06 35.25,39 L 35.2,39.5 L 37.45,39.5 L 37.5,39 C 38,28.94 36.62,22.15 34.25,17.66 C 31.88,13.17 28.46,11.02 25.06,10.5 L 24.55,10.4 z \" style=\"fill:#ececec; stroke:none;\" /></g><g id=\"black-bishop\" class=\"black bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zm6-4c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" fill=\"#000\" stroke-linecap=\"butt\" /><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke=\"#fff\" stroke-linejoin=\"miter\" /></g><g id=\"black-rook\" class=\"black rook\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12.5 32l1.5-2.5h17l1.5 2.5h-20zM12 36v-4h21v4H12z\" stroke-linecap=\"butt\" /><path d=\"M14 29.5v-13h17v13H14z\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M14 16.5L11 14h23l-3 2.5H14zM11 14V9h4v2h5V9h5v2h5V9h4v5H11z\" stroke-linecap=\"butt\" /><path d=\"M12 35.5h21M13 31.5h19M14 29.5h17M14 16.5h17M11 14h23\" fill=\"none\" stroke=\"#fff\" stroke-width=\"1\" stroke-linejoin=\"miter\" /></g><g id=\"black-queen\" class=\"black queen\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#000\" stroke=\"none\"><circle cx=\"6\" cy=\"12\" r=\"2.75\" /><circle cx=\"14\" cy=\"9\" r=\"2.75\" /><circle cx=\"22.5\" cy=\"8\" r=\"2.75\" /><circle cx=\"31\" cy=\"9\" r=\"2.75\" /><circle cx=\"39\" cy=\"12\" r=\"2.75\" /></g><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2.5-12.5L31 25l-.3-14.1-5.2 13.6-3-14.5-3 14.5-5.2-13.6L14 25 6.5 13.5 9 26zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11 38.5a35 35 1 0 0 23 0\" fill=\"none\" stroke-linecap=\"butt\" /><path d=\"M11 29a35 35 1 0 1 23 0M12.5 31.5h20M11.5 34.5a35 35 1 0 0 22 0M10.5 37.5a35 35 1 0 0 24 0\" fill=\"none\" stroke=\"#fff\" /></g><g id=\"black-king\" class=\"black king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#000\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#000\" /><path d=\"M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M32 29.5s8.5-4 6.03-9.65C34.15 14 25 18 22.5 24.5l.01 2.1-.01-2.1C20 18 9.906 14 6.997 19.85c-2.497 5.65 4.853 9 4.853 9M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" stroke=\"#fff\" /></g></defs><rect x=\"7.5\" y=\"7.5\" width=\"375\" height=\"375\" fill=\"none\" stroke=\"#212121\" stroke-width=\"15\" /><g transform=\"translate(20, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(20, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(65, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(65, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(110, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(110, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(155, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(155, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(200, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(200, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(245, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(245, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(290, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(290, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(335, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(335, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(0, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(375, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(0, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(375, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(0, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(375, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(0, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(375, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(0, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(375, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(0, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(375, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(0, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(375, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(0, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><g transform=\"translate(375, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><rect x=\"15\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark a1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"330\" width=\"45\" height=\"45\" class=\"square light b1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark c1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"330\" width=\"45\" height=\"45\" class=\"square light d1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark e1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"330\" width=\"45\" height=\"45\" class=\"square light f1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark g1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"330\" width=\"45\" height=\"45\" class=\"square light h1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"285\" width=\"45\" height=\"45\" class=\"square light a2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark b2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"285\" width=\"45\" height=\"45\" class=\"square light c2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark d2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"285\" width=\"45\" height=\"45\" class=\"square light e2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark f2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"285\" width=\"45\" height=\"45\" class=\"square light g2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark h2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark a3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"240\" width=\"45\" height=\"45\" class=\"square light b3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark c3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"240\" width=\"45\" height=\"45\" class=\"square light d3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark e3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"240\" width=\"45\" height=\"45\" class=\"square light f3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark g3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"240\" width=\"45\" height=\"45\" class=\"square light h3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"195\" width=\"45\" height=\"45\" class=\"square light a4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark b4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"195\" width=\"45\" height=\"45\" class=\"square light c4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark d4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"195\" width=\"45\" height=\"45\" class=\"square light e4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark f4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"195\" width=\"45\" height=\"45\" class=\"square light g4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark h4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark a5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"150\" width=\"45\" height=\"45\" class=\"square light b5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark c5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"150\" width=\"45\" height=\"45\" class=\"square light d5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark e5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"150\" width=\"45\" height=\"45\" class=\"square light f5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark g5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"150\" width=\"45\" height=\"45\" class=\"square light h5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"105\" width=\"45\" height=\"45\" class=\"square light a6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark b6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"105\" width=\"45\" height=\"45\" class=\"square light c6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark d6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"105\" width=\"45\" height=\"45\" class=\"square light e6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark f6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"105\" width=\"45\" height=\"45\" class=\"square light g6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark h6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark a7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"60\" width=\"45\" height=\"45\" class=\"square light b7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark c7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"60\" width=\"45\" height=\"45\" class=\"square light d7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark e7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"60\" width=\"45\" height=\"45\" class=\"square light f7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark g7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"60\" width=\"45\" height=\"45\" class=\"square light h7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"15\" width=\"45\" height=\"45\" class=\"square light a8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark b8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"15\" width=\"45\" height=\"45\" class=\"square light c8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"15\" width=\"45\" height=\"45\" stroke=\"none\" fill=\"gray\" /><rect x=\"150\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark d8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"15\" width=\"45\" height=\"45\" class=\"square light e8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark f8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"15\" width=\"45\" height=\"45\" class=\"square light g8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark h8\" stroke=\"none\" fill=\"#d18b47\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(15, 330)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(105, 330)\" /><use href=\"#white-queen\" xlink:href=\"#white-queen\" transform=\"translate(150, 330)\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(240, 330)\" /><use href=\"#white-king\" xlink:href=\"#white-king\" transform=\"translate(285, 330)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(15, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(60, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(240, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(285, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(330, 285)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(105, 240)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(105, 195)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(150, 195)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(195, 195)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(105, 150)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(150, 150)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(15, 105)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(15, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(60, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(105, 60)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(150, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(240, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(285, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(330, 60)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(15, 15)\" /><use href=\"#black-queen\" xlink:href=\"#black-queen\" transform=\"translate(150, 15)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(240, 15)\" /><use href=\"#black-king\" xlink:href=\"#black-king\" transform=\"translate(285, 15)\" /><line x1=\"127.5\" y1=\"37.5\" x2=\"145.45316561961457\" y2=\"55.45316561961456\" stroke=\"#15781B\" opacity=\"0.5019607843137255\" stroke-width=\"9.0\" stroke-linecap=\"butt\" class=\"arrow\" /><polygon points=\"169.31801948466054,79.31801948466054 157.38559255213755,43.520738687091566 133.52073868709158,67.38559255213755\" fill=\"#15781B\" opacity=\"0.5019607843137255\" class=\"arrow\" /></svg>'" + "'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 390 390\" width=\"200\" height=\"200\"><desc><pre>r . b . . r k .\\np p p p . p p p\\n. b n . q . . .\\n. . . n P . B .\\n. . B . P . . .\\n. . N . . N . .\\nP P P . Q P P P\\nR . . . . R K .</pre></desc><defs><g id=\"white-pawn\" class=\"white pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#fff\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"white-knight\" class=\"white knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#000000; stroke:#000000;\" /></g><g id=\"white-bishop\" class=\"white bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#fff\" stroke-linecap=\"butt\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zM15 32c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" /></g><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke-linejoin=\"miter\" /></g><g id=\"white-rook\" class=\"white rook\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12 36v-4h21v4H12zM11 14V9h4v2h5V9h5v2h5V9h4v5\" stroke-linecap=\"butt\" /><path d=\"M34 14l-3 3H14l-3-3\" /><path d=\"M31 17v12.5H14V17\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M31 29.5l1.5 2.5h-20l1.5-2.5\" /><path d=\"M11 14h23\" fill=\"none\" stroke-linejoin=\"miter\" /></g><g id=\"white-queen\" class=\"white queen\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M8 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM24.5 7.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM41 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM16 8.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM33 9a2 2 0 1 1-4 0 2 2 0 1 1 4 0z\" /><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2-12-7 11V11l-5.5 13.5-3-15-3 15-5.5-14V25L7 14l2 12zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11.5 30c3.5-1 18.5-1 22 0M12 33.5c6-1 15-1 21 0\" fill=\"none\" /></g><g id=\"white-king\" class=\"white king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#fff\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#fff\" /><path d=\"M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" /></g><g id=\"black-pawn\" class=\"black pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#000\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"black-knight\" class=\"black knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 24.55,10.4 L 24.1,11.85 L 24.6,12 C 27.75,13 30.25,14.49 32.5,18.75 C 34.75,23.01 35.75,29.06 35.25,39 L 35.2,39.5 L 37.45,39.5 L 37.5,39 C 38,28.94 36.62,22.15 34.25,17.66 C 31.88,13.17 28.46,11.02 25.06,10.5 L 24.55,10.4 z \" style=\"fill:#ececec; stroke:none;\" /></g><g id=\"black-bishop\" class=\"black bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zm6-4c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" fill=\"#000\" stroke-linecap=\"butt\" /><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke=\"#fff\" stroke-linejoin=\"miter\" /></g><g id=\"black-rook\" class=\"black rook\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12.5 32l1.5-2.5h17l1.5 2.5h-20zM12 36v-4h21v4H12z\" stroke-linecap=\"butt\" /><path d=\"M14 29.5v-13h17v13H14z\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M14 16.5L11 14h23l-3 2.5H14zM11 14V9h4v2h5V9h5v2h5V9h4v5H11z\" stroke-linecap=\"butt\" /><path d=\"M12 35.5h21M13 31.5h19M14 29.5h17M14 16.5h17M11 14h23\" fill=\"none\" stroke=\"#fff\" stroke-width=\"1\" stroke-linejoin=\"miter\" /></g><g id=\"black-queen\" class=\"black queen\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#000\" stroke=\"none\"><circle cx=\"6\" cy=\"12\" r=\"2.75\" /><circle cx=\"14\" cy=\"9\" r=\"2.75\" /><circle cx=\"22.5\" cy=\"8\" r=\"2.75\" /><circle cx=\"31\" cy=\"9\" r=\"2.75\" /><circle cx=\"39\" cy=\"12\" r=\"2.75\" /></g><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2.5-12.5L31 25l-.3-14.1-5.2 13.6-3-14.5-3 14.5-5.2-13.6L14 25 6.5 13.5 9 26zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11 38.5a35 35 1 0 0 23 0\" fill=\"none\" stroke-linecap=\"butt\" /><path d=\"M11 29a35 35 1 0 1 23 0M12.5 31.5h20M11.5 34.5a35 35 1 0 0 22 0M10.5 37.5a35 35 1 0 0 24 0\" fill=\"none\" stroke=\"#fff\" /></g><g id=\"black-king\" class=\"black king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#000\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#000\" /><path d=\"M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M32 29.5s8.5-4 6.03-9.65C34.15 14 25 18 22.5 24.5l.01 2.1-.01-2.1C20 18 9.906 14 6.997 19.85c-2.497 5.65 4.853 9 4.853 9M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" stroke=\"#fff\" /></g></defs><rect x=\"7.5\" y=\"7.5\" width=\"375\" height=\"375\" fill=\"none\" stroke=\"#212121\" stroke-width=\"15\" /><g transform=\"translate(20, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(20, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(65, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(65, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(110, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(110, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(155, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(155, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(200, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(200, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(245, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(245, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(290, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(290, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(335, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(335, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(0, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(375, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(0, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(375, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(0, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(375, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(0, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(375, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(0, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(375, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(0, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(375, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(0, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(375, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(0, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><g transform=\"translate(375, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><rect x=\"15\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark a1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"330\" width=\"45\" height=\"45\" class=\"square light b1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark c1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"330\" width=\"45\" height=\"45\" class=\"square light d1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark e1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"330\" width=\"45\" height=\"45\" class=\"square light f1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark g1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"330\" width=\"45\" height=\"45\" class=\"square light h1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"285\" width=\"45\" height=\"45\" class=\"square light a2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark b2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"285\" width=\"45\" height=\"45\" class=\"square light c2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark d2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"285\" width=\"45\" height=\"45\" class=\"square light e2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark f2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"285\" width=\"45\" height=\"45\" class=\"square light g2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark h2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark a3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"240\" width=\"45\" height=\"45\" class=\"square light b3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark c3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"240\" width=\"45\" height=\"45\" class=\"square light d3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark e3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"240\" width=\"45\" height=\"45\" class=\"square light f3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark g3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"240\" width=\"45\" height=\"45\" class=\"square light h3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"195\" width=\"45\" height=\"45\" class=\"square light a4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark b4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"195\" width=\"45\" height=\"45\" class=\"square light c4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark d4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"195\" width=\"45\" height=\"45\" class=\"square light e4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark f4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"195\" width=\"45\" height=\"45\" class=\"square light g4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark h4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark a5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"150\" width=\"45\" height=\"45\" class=\"square light b5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark c5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"150\" width=\"45\" height=\"45\" class=\"square light d5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark e5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"150\" width=\"45\" height=\"45\" class=\"square light f5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark g5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"150\" width=\"45\" height=\"45\" class=\"square light h5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"105\" width=\"45\" height=\"45\" class=\"square light a6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark b6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"105\" width=\"45\" height=\"45\" class=\"square light c6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark d6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"105\" width=\"45\" height=\"45\" class=\"square light e6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark f6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"105\" width=\"45\" height=\"45\" class=\"square light g6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark h6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark a7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"60\" width=\"45\" height=\"45\" class=\"square light b7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark c7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"60\" width=\"45\" height=\"45\" class=\"square light d7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark e7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"60\" width=\"45\" height=\"45\" stroke=\"none\" fill=\"gray\" /><rect x=\"240\" y=\"60\" width=\"45\" height=\"45\" class=\"square light f7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark g7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"60\" width=\"45\" height=\"45\" class=\"square light h7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"15\" width=\"45\" height=\"45\" class=\"square light a8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark b8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"15\" width=\"45\" height=\"45\" class=\"square light c8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark d8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"15\" width=\"45\" height=\"45\" class=\"square light e8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark f8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"15\" width=\"45\" height=\"45\" class=\"square light g8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark h8\" stroke=\"none\" fill=\"#d18b47\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(15, 330)\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(240, 330)\" /><use href=\"#white-king\" xlink:href=\"#white-king\" transform=\"translate(285, 330)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(15, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(60, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(105, 285)\" /><use href=\"#white-queen\" xlink:href=\"#white-queen\" transform=\"translate(195, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(240, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(285, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(330, 285)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(105, 240)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(240, 240)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(105, 195)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(195, 195)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(150, 150)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(195, 150)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(285, 150)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(60, 105)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(105, 105)\" /><use href=\"#black-queen\" xlink:href=\"#black-queen\" transform=\"translate(195, 105)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(15, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(60, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(105, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(150, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(240, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(285, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(330, 60)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(15, 15)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(105, 15)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(240, 15)\" /><use href=\"#black-king\" xlink:href=\"#black-king\" transform=\"translate(285, 15)\" /><line x1=\"217.5\" y1=\"82.5\" x2=\"217.5\" y2=\"89.25\" stroke=\"#15781B\" opacity=\"0.5019607843137255\" stroke-width=\"9.0\" stroke-linecap=\"butt\" class=\"arrow\" /><polygon points=\"217.5,123.0 234.375,89.25 200.625,89.25\" fill=\"#15781B\" opacity=\"0.5019607843137255\" class=\"arrow\" /></svg>'" ] }, "metadata": {}, @@ -872,7 +911,11 @@ "text": [ "\u001b[33mPlayer black\u001b[0m (to Player white):\n", "\n", - "Bd7. I'm moving my bishop to add more control in the center. Your move!\n", + "Well played! I see you're not one to shy away from a challenge. I'll move my queen from e7 to e6, keeping her safe.\n", + "\n", + "e7e6\n", + "\n", + "Did you know that the queen's ability to move any number of squares along a rank, file, or diagonal is a relatively recent development in the history of chess? Your move.\n", "\n", "--------------------------------------------------------------------------------\n" ] @@ -880,17 +923,17 @@ { "data": { "image/svg+xml": [ - "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 390 390\" width=\"200\" height=\"200\"><desc><pre>r . . q . r k .\n", - "p p p b . p p p\n", - "n . . . . . . .\n", - ". . b n . . . .\n", - ". . P . P . . .\n", + "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 390 390\" width=\"200\" height=\"200\"><desc><pre>r . b . . r k .\n", + "p p p p . p p p\n", + ". b n . q . . .\n", + ". . . n P . B .\n", + ". . B . P . . .\n", ". . N . . N . .\n", - "P P . . . P P P\n", - "R . B Q . R K .</pre></desc><defs><g id=\"white-pawn\" class=\"white pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#fff\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"white-knight\" class=\"white knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#000000; stroke:#000000;\" /></g><g id=\"white-bishop\" class=\"white bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#fff\" stroke-linecap=\"butt\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zM15 32c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" /></g><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke-linejoin=\"miter\" /></g><g id=\"white-rook\" class=\"white rook\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12 36v-4h21v4H12zM11 14V9h4v2h5V9h5v2h5V9h4v5\" stroke-linecap=\"butt\" /><path d=\"M34 14l-3 3H14l-3-3\" /><path d=\"M31 17v12.5H14V17\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M31 29.5l1.5 2.5h-20l1.5-2.5\" /><path d=\"M11 14h23\" fill=\"none\" stroke-linejoin=\"miter\" /></g><g id=\"white-queen\" class=\"white queen\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M8 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM24.5 7.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM41 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM16 8.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM33 9a2 2 0 1 1-4 0 2 2 0 1 1 4 0z\" /><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2-12-7 11V11l-5.5 13.5-3-15-3 15-5.5-14V25L7 14l2 12zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11.5 30c3.5-1 18.5-1 22 0M12 33.5c6-1 15-1 21 0\" fill=\"none\" /></g><g id=\"white-king\" class=\"white king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#fff\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#fff\" /><path d=\"M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" /></g><g id=\"black-pawn\" class=\"black pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#000\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"black-knight\" class=\"black knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 24.55,10.4 L 24.1,11.85 L 24.6,12 C 27.75,13 30.25,14.49 32.5,18.75 C 34.75,23.01 35.75,29.06 35.25,39 L 35.2,39.5 L 37.45,39.5 L 37.5,39 C 38,28.94 36.62,22.15 34.25,17.66 C 31.88,13.17 28.46,11.02 25.06,10.5 L 24.55,10.4 z \" style=\"fill:#ececec; stroke:none;\" /></g><g id=\"black-bishop\" class=\"black bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zm6-4c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" fill=\"#000\" stroke-linecap=\"butt\" /><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke=\"#fff\" stroke-linejoin=\"miter\" /></g><g id=\"black-rook\" class=\"black rook\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12.5 32l1.5-2.5h17l1.5 2.5h-20zM12 36v-4h21v4H12z\" stroke-linecap=\"butt\" /><path d=\"M14 29.5v-13h17v13H14z\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M14 16.5L11 14h23l-3 2.5H14zM11 14V9h4v2h5V9h5v2h5V9h4v5H11z\" stroke-linecap=\"butt\" /><path d=\"M12 35.5h21M13 31.5h19M14 29.5h17M14 16.5h17M11 14h23\" fill=\"none\" stroke=\"#fff\" stroke-width=\"1\" stroke-linejoin=\"miter\" /></g><g id=\"black-queen\" class=\"black queen\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#000\" stroke=\"none\"><circle cx=\"6\" cy=\"12\" r=\"2.75\" /><circle cx=\"14\" cy=\"9\" r=\"2.75\" /><circle cx=\"22.5\" cy=\"8\" r=\"2.75\" /><circle cx=\"31\" cy=\"9\" r=\"2.75\" /><circle cx=\"39\" cy=\"12\" r=\"2.75\" /></g><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2.5-12.5L31 25l-.3-14.1-5.2 13.6-3-14.5-3 14.5-5.2-13.6L14 25 6.5 13.5 9 26zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11 38.5a35 35 1 0 0 23 0\" fill=\"none\" stroke-linecap=\"butt\" /><path d=\"M11 29a35 35 1 0 1 23 0M12.5 31.5h20M11.5 34.5a35 35 1 0 0 22 0M10.5 37.5a35 35 1 0 0 24 0\" fill=\"none\" stroke=\"#fff\" /></g><g id=\"black-king\" class=\"black king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#000\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#000\" /><path d=\"M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M32 29.5s8.5-4 6.03-9.65C34.15 14 25 18 22.5 24.5l.01 2.1-.01-2.1C20 18 9.906 14 6.997 19.85c-2.497 5.65 4.853 9 4.853 9M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" stroke=\"#fff\" /></g></defs><rect x=\"7.5\" y=\"7.5\" width=\"375\" height=\"375\" fill=\"none\" stroke=\"#212121\" stroke-width=\"15\" /><g transform=\"translate(20, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(20, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(65, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(65, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(110, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(110, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(155, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(155, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(200, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(200, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(245, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(245, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(290, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(290, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(335, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(335, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(0, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(375, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(0, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(375, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(0, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(375, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(0, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(375, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(0, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(375, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(0, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(375, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(0, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(375, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(0, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><g transform=\"translate(375, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><rect x=\"15\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark a1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"330\" width=\"45\" height=\"45\" class=\"square light b1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark c1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"330\" width=\"45\" height=\"45\" class=\"square light d1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark e1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"330\" width=\"45\" height=\"45\" class=\"square light f1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark g1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"330\" width=\"45\" height=\"45\" class=\"square light h1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"285\" width=\"45\" height=\"45\" class=\"square light a2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark b2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"285\" width=\"45\" height=\"45\" class=\"square light c2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark d2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"285\" width=\"45\" height=\"45\" class=\"square light e2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark f2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"285\" width=\"45\" height=\"45\" class=\"square light g2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark h2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark a3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"240\" width=\"45\" height=\"45\" class=\"square light b3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark c3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"240\" width=\"45\" height=\"45\" class=\"square light d3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark e3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"240\" width=\"45\" height=\"45\" class=\"square light f3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark g3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"240\" width=\"45\" height=\"45\" class=\"square light h3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"195\" width=\"45\" height=\"45\" class=\"square light a4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark b4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"195\" width=\"45\" height=\"45\" class=\"square light c4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark d4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"195\" width=\"45\" height=\"45\" stroke=\"none\" fill=\"gray\" /><rect x=\"195\" y=\"195\" width=\"45\" height=\"45\" class=\"square light e4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark f4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"195\" width=\"45\" height=\"45\" class=\"square light g4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark h4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark a5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"150\" width=\"45\" height=\"45\" class=\"square light b5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark c5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"150\" width=\"45\" height=\"45\" class=\"square light d5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark e5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"150\" width=\"45\" height=\"45\" class=\"square light f5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark g5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"150\" width=\"45\" height=\"45\" class=\"square light h5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"105\" width=\"45\" height=\"45\" class=\"square light a6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark b6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"105\" width=\"45\" height=\"45\" class=\"square light c6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark d6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"105\" width=\"45\" height=\"45\" class=\"square light e6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark f6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"105\" width=\"45\" height=\"45\" class=\"square light g6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark h6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark a7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"60\" width=\"45\" height=\"45\" class=\"square light b7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark c7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"60\" width=\"45\" height=\"45\" class=\"square light d7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark e7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"60\" width=\"45\" height=\"45\" class=\"square light f7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark g7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"60\" width=\"45\" height=\"45\" class=\"square light h7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"15\" width=\"45\" height=\"45\" class=\"square light a8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark b8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"15\" width=\"45\" height=\"45\" class=\"square light c8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark d8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"15\" width=\"45\" height=\"45\" class=\"square light e8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark f8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"15\" width=\"45\" height=\"45\" class=\"square light g8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark h8\" stroke=\"none\" fill=\"#d18b47\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(15, 330)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(105, 330)\" /><use href=\"#white-queen\" xlink:href=\"#white-queen\" transform=\"translate(150, 330)\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(240, 330)\" /><use href=\"#white-king\" xlink:href=\"#white-king\" transform=\"translate(285, 330)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(15, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(60, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(240, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(285, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(330, 285)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(105, 240)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(240, 240)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(105, 195)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(195, 195)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(105, 150)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(150, 150)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(15, 105)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(15, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(60, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(105, 60)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(150, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(240, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(285, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(330, 60)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(15, 15)\" /><use href=\"#black-queen\" xlink:href=\"#black-queen\" transform=\"translate(150, 15)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(240, 15)\" /><use href=\"#black-king\" xlink:href=\"#black-king\" transform=\"translate(285, 15)\" /><line x1=\"172.5\" y1=\"217.5\" x2=\"228.2881599442532\" y2=\"245.3940799721266\" stroke=\"#15781B\" opacity=\"0.5019607843137255\" stroke-width=\"9.0\" stroke-linecap=\"butt\" class=\"arrow\" /><polygon points=\"258.4750776405004,260.48753882025017 235.834889368315,230.30062112400302 220.74143052019141,260.48753882025017\" fill=\"#15781B\" opacity=\"0.5019607843137255\" class=\"arrow\" /></svg>" + "P P P . Q P P P\n", + ". . . R . R K .</pre></desc><defs><g id=\"white-pawn\" class=\"white pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#fff\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"white-knight\" class=\"white knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#000000; stroke:#000000;\" /></g><g id=\"white-bishop\" class=\"white bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#fff\" stroke-linecap=\"butt\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zM15 32c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" /></g><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke-linejoin=\"miter\" /></g><g id=\"white-rook\" class=\"white rook\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12 36v-4h21v4H12zM11 14V9h4v2h5V9h5v2h5V9h4v5\" stroke-linecap=\"butt\" /><path d=\"M34 14l-3 3H14l-3-3\" /><path d=\"M31 17v12.5H14V17\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M31 29.5l1.5 2.5h-20l1.5-2.5\" /><path d=\"M11 14h23\" fill=\"none\" stroke-linejoin=\"miter\" /></g><g id=\"white-queen\" class=\"white queen\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M8 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM24.5 7.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM41 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM16 8.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM33 9a2 2 0 1 1-4 0 2 2 0 1 1 4 0z\" /><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2-12-7 11V11l-5.5 13.5-3-15-3 15-5.5-14V25L7 14l2 12zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11.5 30c3.5-1 18.5-1 22 0M12 33.5c6-1 15-1 21 0\" fill=\"none\" /></g><g id=\"white-king\" class=\"white king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#fff\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#fff\" /><path d=\"M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" /></g><g id=\"black-pawn\" class=\"black pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#000\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"black-knight\" class=\"black knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 24.55,10.4 L 24.1,11.85 L 24.6,12 C 27.75,13 30.25,14.49 32.5,18.75 C 34.75,23.01 35.75,29.06 35.25,39 L 35.2,39.5 L 37.45,39.5 L 37.5,39 C 38,28.94 36.62,22.15 34.25,17.66 C 31.88,13.17 28.46,11.02 25.06,10.5 L 24.55,10.4 z \" style=\"fill:#ececec; stroke:none;\" /></g><g id=\"black-bishop\" class=\"black bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zm6-4c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" fill=\"#000\" stroke-linecap=\"butt\" /><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke=\"#fff\" stroke-linejoin=\"miter\" /></g><g id=\"black-rook\" class=\"black rook\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12.5 32l1.5-2.5h17l1.5 2.5h-20zM12 36v-4h21v4H12z\" stroke-linecap=\"butt\" /><path d=\"M14 29.5v-13h17v13H14z\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M14 16.5L11 14h23l-3 2.5H14zM11 14V9h4v2h5V9h5v2h5V9h4v5H11z\" stroke-linecap=\"butt\" /><path d=\"M12 35.5h21M13 31.5h19M14 29.5h17M14 16.5h17M11 14h23\" fill=\"none\" stroke=\"#fff\" stroke-width=\"1\" stroke-linejoin=\"miter\" /></g><g id=\"black-queen\" class=\"black queen\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#000\" stroke=\"none\"><circle cx=\"6\" cy=\"12\" r=\"2.75\" /><circle cx=\"14\" cy=\"9\" r=\"2.75\" /><circle cx=\"22.5\" cy=\"8\" r=\"2.75\" /><circle cx=\"31\" cy=\"9\" r=\"2.75\" /><circle cx=\"39\" cy=\"12\" r=\"2.75\" /></g><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2.5-12.5L31 25l-.3-14.1-5.2 13.6-3-14.5-3 14.5-5.2-13.6L14 25 6.5 13.5 9 26zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11 38.5a35 35 1 0 0 23 0\" fill=\"none\" stroke-linecap=\"butt\" /><path d=\"M11 29a35 35 1 0 1 23 0M12.5 31.5h20M11.5 34.5a35 35 1 0 0 22 0M10.5 37.5a35 35 1 0 0 24 0\" fill=\"none\" stroke=\"#fff\" /></g><g id=\"black-king\" class=\"black king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#000\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#000\" /><path d=\"M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M32 29.5s8.5-4 6.03-9.65C34.15 14 25 18 22.5 24.5l.01 2.1-.01-2.1C20 18 9.906 14 6.997 19.85c-2.497 5.65 4.853 9 4.853 9M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" stroke=\"#fff\" /></g></defs><rect x=\"7.5\" y=\"7.5\" width=\"375\" height=\"375\" fill=\"none\" stroke=\"#212121\" stroke-width=\"15\" /><g transform=\"translate(20, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(20, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(65, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(65, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(110, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(110, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(155, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(155, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(200, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(200, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(245, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(245, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(290, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(290, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(335, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(335, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(0, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(375, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(0, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(375, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(0, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(375, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(0, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(375, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(0, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(375, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(0, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(375, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(0, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(375, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(0, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><g transform=\"translate(375, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><rect x=\"15\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark a1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"330\" width=\"45\" height=\"45\" stroke=\"none\" fill=\"gray\" /><rect x=\"60\" y=\"330\" width=\"45\" height=\"45\" class=\"square light b1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark c1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"330\" width=\"45\" height=\"45\" class=\"square light d1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark e1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"330\" width=\"45\" height=\"45\" class=\"square light f1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark g1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"330\" width=\"45\" height=\"45\" class=\"square light h1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"285\" width=\"45\" height=\"45\" class=\"square light a2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark b2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"285\" width=\"45\" height=\"45\" class=\"square light c2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark d2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"285\" width=\"45\" height=\"45\" class=\"square light e2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark f2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"285\" width=\"45\" height=\"45\" class=\"square light g2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark h2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark a3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"240\" width=\"45\" height=\"45\" class=\"square light b3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark c3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"240\" width=\"45\" height=\"45\" class=\"square light d3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark e3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"240\" width=\"45\" height=\"45\" class=\"square light f3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark g3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"240\" width=\"45\" height=\"45\" class=\"square light h3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"195\" width=\"45\" height=\"45\" class=\"square light a4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark b4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"195\" width=\"45\" height=\"45\" class=\"square light c4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark d4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"195\" width=\"45\" height=\"45\" class=\"square light e4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark f4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"195\" width=\"45\" height=\"45\" class=\"square light g4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark h4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark a5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"150\" width=\"45\" height=\"45\" class=\"square light b5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark c5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"150\" width=\"45\" height=\"45\" class=\"square light d5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark e5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"150\" width=\"45\" height=\"45\" class=\"square light f5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark g5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"150\" width=\"45\" height=\"45\" class=\"square light h5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"105\" width=\"45\" height=\"45\" class=\"square light a6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark b6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"105\" width=\"45\" height=\"45\" class=\"square light c6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark d6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"105\" width=\"45\" height=\"45\" class=\"square light e6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark f6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"105\" width=\"45\" height=\"45\" class=\"square light g6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark h6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark a7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"60\" width=\"45\" height=\"45\" class=\"square light b7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark c7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"60\" width=\"45\" height=\"45\" class=\"square light d7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark e7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"60\" width=\"45\" height=\"45\" class=\"square light f7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark g7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"60\" width=\"45\" height=\"45\" class=\"square light h7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"15\" width=\"45\" height=\"45\" class=\"square light a8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark b8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"15\" width=\"45\" height=\"45\" class=\"square light c8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark d8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"15\" width=\"45\" height=\"45\" class=\"square light e8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark f8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"15\" width=\"45\" height=\"45\" class=\"square light g8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark h8\" stroke=\"none\" fill=\"#d18b47\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(150, 330)\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(240, 330)\" /><use href=\"#white-king\" xlink:href=\"#white-king\" transform=\"translate(285, 330)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(15, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(60, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(105, 285)\" /><use href=\"#white-queen\" xlink:href=\"#white-queen\" transform=\"translate(195, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(240, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(285, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(330, 285)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(105, 240)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(240, 240)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(105, 195)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(195, 195)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(150, 150)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(195, 150)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(285, 150)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(60, 105)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(105, 105)\" /><use href=\"#black-queen\" xlink:href=\"#black-queen\" transform=\"translate(195, 105)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(15, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(60, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(105, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(150, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(240, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(285, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(330, 60)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(15, 15)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(105, 15)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(240, 15)\" /><use href=\"#black-king\" xlink:href=\"#black-king\" transform=\"translate(285, 15)\" /><line x1=\"37.5\" y1=\"352.5\" x2=\"134.25\" y2=\"352.5\" stroke=\"#15781B\" opacity=\"0.5019607843137255\" stroke-width=\"9.0\" stroke-linecap=\"butt\" class=\"arrow\" /><polygon points=\"168.0,352.5 134.25,335.625 134.25,369.375\" fill=\"#15781B\" opacity=\"0.5019607843137255\" class=\"arrow\" /></svg>" ], "text/plain": [ - "'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 390 390\" width=\"200\" height=\"200\"><desc><pre>r . . q . r k .\\np p p b . p p p\\nn . . . . . . .\\n. . b n . . . .\\n. . P . P . . .\\n. . N . . N . .\\nP P . . . P P P\\nR . B Q . R K .</pre></desc><defs><g id=\"white-pawn\" class=\"white pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#fff\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"white-knight\" class=\"white knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#000000; stroke:#000000;\" /></g><g id=\"white-bishop\" class=\"white bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#fff\" stroke-linecap=\"butt\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zM15 32c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" /></g><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke-linejoin=\"miter\" /></g><g id=\"white-rook\" class=\"white rook\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12 36v-4h21v4H12zM11 14V9h4v2h5V9h5v2h5V9h4v5\" stroke-linecap=\"butt\" /><path d=\"M34 14l-3 3H14l-3-3\" /><path d=\"M31 17v12.5H14V17\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M31 29.5l1.5 2.5h-20l1.5-2.5\" /><path d=\"M11 14h23\" fill=\"none\" stroke-linejoin=\"miter\" /></g><g id=\"white-queen\" class=\"white queen\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M8 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM24.5 7.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM41 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM16 8.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM33 9a2 2 0 1 1-4 0 2 2 0 1 1 4 0z\" /><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2-12-7 11V11l-5.5 13.5-3-15-3 15-5.5-14V25L7 14l2 12zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11.5 30c3.5-1 18.5-1 22 0M12 33.5c6-1 15-1 21 0\" fill=\"none\" /></g><g id=\"white-king\" class=\"white king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#fff\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#fff\" /><path d=\"M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" /></g><g id=\"black-pawn\" class=\"black pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#000\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"black-knight\" class=\"black knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 24.55,10.4 L 24.1,11.85 L 24.6,12 C 27.75,13 30.25,14.49 32.5,18.75 C 34.75,23.01 35.75,29.06 35.25,39 L 35.2,39.5 L 37.45,39.5 L 37.5,39 C 38,28.94 36.62,22.15 34.25,17.66 C 31.88,13.17 28.46,11.02 25.06,10.5 L 24.55,10.4 z \" style=\"fill:#ececec; stroke:none;\" /></g><g id=\"black-bishop\" class=\"black bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zm6-4c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" fill=\"#000\" stroke-linecap=\"butt\" /><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke=\"#fff\" stroke-linejoin=\"miter\" /></g><g id=\"black-rook\" class=\"black rook\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12.5 32l1.5-2.5h17l1.5 2.5h-20zM12 36v-4h21v4H12z\" stroke-linecap=\"butt\" /><path d=\"M14 29.5v-13h17v13H14z\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M14 16.5L11 14h23l-3 2.5H14zM11 14V9h4v2h5V9h5v2h5V9h4v5H11z\" stroke-linecap=\"butt\" /><path d=\"M12 35.5h21M13 31.5h19M14 29.5h17M14 16.5h17M11 14h23\" fill=\"none\" stroke=\"#fff\" stroke-width=\"1\" stroke-linejoin=\"miter\" /></g><g id=\"black-queen\" class=\"black queen\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#000\" stroke=\"none\"><circle cx=\"6\" cy=\"12\" r=\"2.75\" /><circle cx=\"14\" cy=\"9\" r=\"2.75\" /><circle cx=\"22.5\" cy=\"8\" r=\"2.75\" /><circle cx=\"31\" cy=\"9\" r=\"2.75\" /><circle cx=\"39\" cy=\"12\" r=\"2.75\" /></g><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2.5-12.5L31 25l-.3-14.1-5.2 13.6-3-14.5-3 14.5-5.2-13.6L14 25 6.5 13.5 9 26zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11 38.5a35 35 1 0 0 23 0\" fill=\"none\" stroke-linecap=\"butt\" /><path d=\"M11 29a35 35 1 0 1 23 0M12.5 31.5h20M11.5 34.5a35 35 1 0 0 22 0M10.5 37.5a35 35 1 0 0 24 0\" fill=\"none\" stroke=\"#fff\" /></g><g id=\"black-king\" class=\"black king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#000\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#000\" /><path d=\"M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M32 29.5s8.5-4 6.03-9.65C34.15 14 25 18 22.5 24.5l.01 2.1-.01-2.1C20 18 9.906 14 6.997 19.85c-2.497 5.65 4.853 9 4.853 9M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" stroke=\"#fff\" /></g></defs><rect x=\"7.5\" y=\"7.5\" width=\"375\" height=\"375\" fill=\"none\" stroke=\"#212121\" stroke-width=\"15\" /><g transform=\"translate(20, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(20, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(65, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(65, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(110, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(110, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(155, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(155, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(200, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(200, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(245, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(245, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(290, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(290, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(335, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(335, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(0, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(375, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(0, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(375, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(0, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(375, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(0, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(375, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(0, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(375, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(0, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(375, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(0, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(375, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(0, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><g transform=\"translate(375, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><rect x=\"15\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark a1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"330\" width=\"45\" height=\"45\" class=\"square light b1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark c1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"330\" width=\"45\" height=\"45\" class=\"square light d1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark e1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"330\" width=\"45\" height=\"45\" class=\"square light f1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark g1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"330\" width=\"45\" height=\"45\" class=\"square light h1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"285\" width=\"45\" height=\"45\" class=\"square light a2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark b2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"285\" width=\"45\" height=\"45\" class=\"square light c2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark d2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"285\" width=\"45\" height=\"45\" class=\"square light e2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark f2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"285\" width=\"45\" height=\"45\" class=\"square light g2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark h2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark a3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"240\" width=\"45\" height=\"45\" class=\"square light b3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark c3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"240\" width=\"45\" height=\"45\" class=\"square light d3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark e3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"240\" width=\"45\" height=\"45\" class=\"square light f3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark g3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"240\" width=\"45\" height=\"45\" class=\"square light h3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"195\" width=\"45\" height=\"45\" class=\"square light a4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark b4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"195\" width=\"45\" height=\"45\" class=\"square light c4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark d4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"195\" width=\"45\" height=\"45\" stroke=\"none\" fill=\"gray\" /><rect x=\"195\" y=\"195\" width=\"45\" height=\"45\" class=\"square light e4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark f4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"195\" width=\"45\" height=\"45\" class=\"square light g4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark h4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark a5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"150\" width=\"45\" height=\"45\" class=\"square light b5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark c5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"150\" width=\"45\" height=\"45\" class=\"square light d5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark e5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"150\" width=\"45\" height=\"45\" class=\"square light f5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark g5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"150\" width=\"45\" height=\"45\" class=\"square light h5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"105\" width=\"45\" height=\"45\" class=\"square light a6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark b6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"105\" width=\"45\" height=\"45\" class=\"square light c6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark d6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"105\" width=\"45\" height=\"45\" class=\"square light e6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark f6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"105\" width=\"45\" height=\"45\" class=\"square light g6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark h6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark a7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"60\" width=\"45\" height=\"45\" class=\"square light b7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark c7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"60\" width=\"45\" height=\"45\" class=\"square light d7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark e7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"60\" width=\"45\" height=\"45\" class=\"square light f7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark g7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"60\" width=\"45\" height=\"45\" class=\"square light h7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"15\" width=\"45\" height=\"45\" class=\"square light a8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark b8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"15\" width=\"45\" height=\"45\" class=\"square light c8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark d8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"15\" width=\"45\" height=\"45\" class=\"square light e8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark f8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"15\" width=\"45\" height=\"45\" class=\"square light g8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark h8\" stroke=\"none\" fill=\"#d18b47\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(15, 330)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(105, 330)\" /><use href=\"#white-queen\" xlink:href=\"#white-queen\" transform=\"translate(150, 330)\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(240, 330)\" /><use href=\"#white-king\" xlink:href=\"#white-king\" transform=\"translate(285, 330)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(15, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(60, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(240, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(285, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(330, 285)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(105, 240)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(240, 240)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(105, 195)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(195, 195)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(105, 150)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(150, 150)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(15, 105)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(15, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(60, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(105, 60)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(150, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(240, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(285, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(330, 60)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(15, 15)\" /><use href=\"#black-queen\" xlink:href=\"#black-queen\" transform=\"translate(150, 15)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(240, 15)\" /><use href=\"#black-king\" xlink:href=\"#black-king\" transform=\"translate(285, 15)\" /><line x1=\"172.5\" y1=\"217.5\" x2=\"228.2881599442532\" y2=\"245.3940799721266\" stroke=\"#15781B\" opacity=\"0.5019607843137255\" stroke-width=\"9.0\" stroke-linecap=\"butt\" class=\"arrow\" /><polygon points=\"258.4750776405004,260.48753882025017 235.834889368315,230.30062112400302 220.74143052019141,260.48753882025017\" fill=\"#15781B\" opacity=\"0.5019607843137255\" class=\"arrow\" /></svg>'" + "'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 390 390\" width=\"200\" height=\"200\"><desc><pre>r . b . . r k .\\np p p p . p p p\\n. b n . q . . .\\n. . . n P . B .\\n. . B . P . . .\\n. . N . . N . .\\nP P P . Q P P P\\n. . . R . R K .</pre></desc><defs><g id=\"white-pawn\" class=\"white pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#fff\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"white-knight\" class=\"white knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#000000; stroke:#000000;\" /></g><g id=\"white-bishop\" class=\"white bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#fff\" stroke-linecap=\"butt\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zM15 32c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" /></g><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke-linejoin=\"miter\" /></g><g id=\"white-rook\" class=\"white rook\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12 36v-4h21v4H12zM11 14V9h4v2h5V9h5v2h5V9h4v5\" stroke-linecap=\"butt\" /><path d=\"M34 14l-3 3H14l-3-3\" /><path d=\"M31 17v12.5H14V17\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M31 29.5l1.5 2.5h-20l1.5-2.5\" /><path d=\"M11 14h23\" fill=\"none\" stroke-linejoin=\"miter\" /></g><g id=\"white-queen\" class=\"white queen\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M8 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM24.5 7.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM41 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM16 8.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM33 9a2 2 0 1 1-4 0 2 2 0 1 1 4 0z\" /><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2-12-7 11V11l-5.5 13.5-3-15-3 15-5.5-14V25L7 14l2 12zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11.5 30c3.5-1 18.5-1 22 0M12 33.5c6-1 15-1 21 0\" fill=\"none\" /></g><g id=\"white-king\" class=\"white king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#fff\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#fff\" /><path d=\"M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" /></g><g id=\"black-pawn\" class=\"black pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#000\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"black-knight\" class=\"black knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 24.55,10.4 L 24.1,11.85 L 24.6,12 C 27.75,13 30.25,14.49 32.5,18.75 C 34.75,23.01 35.75,29.06 35.25,39 L 35.2,39.5 L 37.45,39.5 L 37.5,39 C 38,28.94 36.62,22.15 34.25,17.66 C 31.88,13.17 28.46,11.02 25.06,10.5 L 24.55,10.4 z \" style=\"fill:#ececec; stroke:none;\" /></g><g id=\"black-bishop\" class=\"black bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zm6-4c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" fill=\"#000\" stroke-linecap=\"butt\" /><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke=\"#fff\" stroke-linejoin=\"miter\" /></g><g id=\"black-rook\" class=\"black rook\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12.5 32l1.5-2.5h17l1.5 2.5h-20zM12 36v-4h21v4H12z\" stroke-linecap=\"butt\" /><path d=\"M14 29.5v-13h17v13H14z\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M14 16.5L11 14h23l-3 2.5H14zM11 14V9h4v2h5V9h5v2h5V9h4v5H11z\" stroke-linecap=\"butt\" /><path d=\"M12 35.5h21M13 31.5h19M14 29.5h17M14 16.5h17M11 14h23\" fill=\"none\" stroke=\"#fff\" stroke-width=\"1\" stroke-linejoin=\"miter\" /></g><g id=\"black-queen\" class=\"black queen\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#000\" stroke=\"none\"><circle cx=\"6\" cy=\"12\" r=\"2.75\" /><circle cx=\"14\" cy=\"9\" r=\"2.75\" /><circle cx=\"22.5\" cy=\"8\" r=\"2.75\" /><circle cx=\"31\" cy=\"9\" r=\"2.75\" /><circle cx=\"39\" cy=\"12\" r=\"2.75\" /></g><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2.5-12.5L31 25l-.3-14.1-5.2 13.6-3-14.5-3 14.5-5.2-13.6L14 25 6.5 13.5 9 26zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11 38.5a35 35 1 0 0 23 0\" fill=\"none\" stroke-linecap=\"butt\" /><path d=\"M11 29a35 35 1 0 1 23 0M12.5 31.5h20M11.5 34.5a35 35 1 0 0 22 0M10.5 37.5a35 35 1 0 0 24 0\" fill=\"none\" stroke=\"#fff\" /></g><g id=\"black-king\" class=\"black king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#000\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#000\" /><path d=\"M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M32 29.5s8.5-4 6.03-9.65C34.15 14 25 18 22.5 24.5l.01 2.1-.01-2.1C20 18 9.906 14 6.997 19.85c-2.497 5.65 4.853 9 4.853 9M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" stroke=\"#fff\" /></g></defs><rect x=\"7.5\" y=\"7.5\" width=\"375\" height=\"375\" fill=\"none\" stroke=\"#212121\" stroke-width=\"15\" /><g transform=\"translate(20, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(20, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(65, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(65, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(110, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(110, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(155, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(155, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(200, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(200, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(245, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(245, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(290, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(290, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(335, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(335, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(0, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(375, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(0, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(375, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(0, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(375, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(0, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(375, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(0, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(375, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(0, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(375, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(0, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(375, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(0, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><g transform=\"translate(375, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><rect x=\"15\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark a1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"330\" width=\"45\" height=\"45\" stroke=\"none\" fill=\"gray\" /><rect x=\"60\" y=\"330\" width=\"45\" height=\"45\" class=\"square light b1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark c1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"330\" width=\"45\" height=\"45\" class=\"square light d1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark e1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"330\" width=\"45\" height=\"45\" class=\"square light f1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark g1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"330\" width=\"45\" height=\"45\" class=\"square light h1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"285\" width=\"45\" height=\"45\" class=\"square light a2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark b2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"285\" width=\"45\" height=\"45\" class=\"square light c2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark d2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"285\" width=\"45\" height=\"45\" class=\"square light e2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark f2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"285\" width=\"45\" height=\"45\" class=\"square light g2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark h2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark a3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"240\" width=\"45\" height=\"45\" class=\"square light b3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark c3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"240\" width=\"45\" height=\"45\" class=\"square light d3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark e3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"240\" width=\"45\" height=\"45\" class=\"square light f3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark g3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"240\" width=\"45\" height=\"45\" class=\"square light h3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"195\" width=\"45\" height=\"45\" class=\"square light a4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark b4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"195\" width=\"45\" height=\"45\" class=\"square light c4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark d4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"195\" width=\"45\" height=\"45\" class=\"square light e4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark f4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"195\" width=\"45\" height=\"45\" class=\"square light g4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark h4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark a5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"150\" width=\"45\" height=\"45\" class=\"square light b5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark c5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"150\" width=\"45\" height=\"45\" class=\"square light d5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark e5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"150\" width=\"45\" height=\"45\" class=\"square light f5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark g5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"150\" width=\"45\" height=\"45\" class=\"square light h5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"105\" width=\"45\" height=\"45\" class=\"square light a6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark b6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"105\" width=\"45\" height=\"45\" class=\"square light c6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark d6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"105\" width=\"45\" height=\"45\" class=\"square light e6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark f6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"105\" width=\"45\" height=\"45\" class=\"square light g6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark h6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark a7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"60\" width=\"45\" height=\"45\" class=\"square light b7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark c7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"60\" width=\"45\" height=\"45\" class=\"square light d7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark e7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"60\" width=\"45\" height=\"45\" class=\"square light f7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark g7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"60\" width=\"45\" height=\"45\" class=\"square light h7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"15\" width=\"45\" height=\"45\" class=\"square light a8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark b8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"15\" width=\"45\" height=\"45\" class=\"square light c8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark d8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"15\" width=\"45\" height=\"45\" class=\"square light e8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark f8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"15\" width=\"45\" height=\"45\" class=\"square light g8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark h8\" stroke=\"none\" fill=\"#d18b47\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(150, 330)\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(240, 330)\" /><use href=\"#white-king\" xlink:href=\"#white-king\" transform=\"translate(285, 330)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(15, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(60, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(105, 285)\" /><use href=\"#white-queen\" xlink:href=\"#white-queen\" transform=\"translate(195, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(240, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(285, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(330, 285)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(105, 240)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(240, 240)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(105, 195)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(195, 195)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(150, 150)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(195, 150)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(285, 150)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(60, 105)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(105, 105)\" /><use href=\"#black-queen\" xlink:href=\"#black-queen\" transform=\"translate(195, 105)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(15, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(60, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(105, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(150, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(240, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(285, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(330, 60)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(15, 15)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(105, 15)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(240, 15)\" /><use href=\"#black-king\" xlink:href=\"#black-king\" transform=\"translate(285, 15)\" /><line x1=\"37.5\" y1=\"352.5\" x2=\"134.25\" y2=\"352.5\" stroke=\"#15781B\" opacity=\"0.5019607843137255\" stroke-width=\"9.0\" stroke-linecap=\"butt\" class=\"arrow\" /><polygon points=\"168.0,352.5 134.25,335.625 134.25,369.375\" fill=\"#15781B\" opacity=\"0.5019607843137255\" class=\"arrow\" /></svg>'" ] }, "metadata": {}, @@ -902,7 +945,9 @@ "text": [ "\u001b[33mPlayer white\u001b[0m (to Player black):\n", "\n", - "Nd4f3. Re-positioning my knight to a more defensive location. Your move!\n", + "Indeed, the queen's powers were significantly enhanced during the Middle Ages, transforming the game of chess. Now, I'll move my rook from a1 to d1, aligning it with your queen.\n", + "\n", + "a1d1\n", "\n", "--------------------------------------------------------------------------------\n" ] @@ -910,17 +955,17 @@ { "data": { "image/svg+xml": [ - "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 390 390\" width=\"200\" height=\"200\"><desc><pre>r . . . . r k .\n", - "p p p b . p p p\n", - "n . . . . q . .\n", - ". . b n . . . .\n", - ". . P . P . . .\n", + "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 390 390\" width=\"200\" height=\"200\"><desc><pre>r . b . . r k .\n", + "p p p . . p p p\n", + ". b n p q . . .\n", + ". . . n P . B .\n", + ". . B . P . . .\n", ". . N . . N . .\n", - "P P . . . P P P\n", - "R . B Q . R K .</pre></desc><defs><g id=\"white-pawn\" class=\"white pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#fff\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"white-knight\" class=\"white knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#000000; stroke:#000000;\" /></g><g id=\"white-bishop\" class=\"white bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#fff\" stroke-linecap=\"butt\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zM15 32c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" /></g><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke-linejoin=\"miter\" /></g><g id=\"white-rook\" class=\"white rook\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12 36v-4h21v4H12zM11 14V9h4v2h5V9h5v2h5V9h4v5\" stroke-linecap=\"butt\" /><path d=\"M34 14l-3 3H14l-3-3\" /><path d=\"M31 17v12.5H14V17\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M31 29.5l1.5 2.5h-20l1.5-2.5\" /><path d=\"M11 14h23\" fill=\"none\" stroke-linejoin=\"miter\" /></g><g id=\"white-queen\" class=\"white queen\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M8 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM24.5 7.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM41 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM16 8.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM33 9a2 2 0 1 1-4 0 2 2 0 1 1 4 0z\" /><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2-12-7 11V11l-5.5 13.5-3-15-3 15-5.5-14V25L7 14l2 12zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11.5 30c3.5-1 18.5-1 22 0M12 33.5c6-1 15-1 21 0\" fill=\"none\" /></g><g id=\"white-king\" class=\"white king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#fff\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#fff\" /><path d=\"M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" /></g><g id=\"black-pawn\" class=\"black pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#000\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"black-knight\" class=\"black knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 24.55,10.4 L 24.1,11.85 L 24.6,12 C 27.75,13 30.25,14.49 32.5,18.75 C 34.75,23.01 35.75,29.06 35.25,39 L 35.2,39.5 L 37.45,39.5 L 37.5,39 C 38,28.94 36.62,22.15 34.25,17.66 C 31.88,13.17 28.46,11.02 25.06,10.5 L 24.55,10.4 z \" style=\"fill:#ececec; stroke:none;\" /></g><g id=\"black-bishop\" class=\"black bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zm6-4c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" fill=\"#000\" stroke-linecap=\"butt\" /><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke=\"#fff\" stroke-linejoin=\"miter\" /></g><g id=\"black-rook\" class=\"black rook\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12.5 32l1.5-2.5h17l1.5 2.5h-20zM12 36v-4h21v4H12z\" stroke-linecap=\"butt\" /><path d=\"M14 29.5v-13h17v13H14z\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M14 16.5L11 14h23l-3 2.5H14zM11 14V9h4v2h5V9h5v2h5V9h4v5H11z\" stroke-linecap=\"butt\" /><path d=\"M12 35.5h21M13 31.5h19M14 29.5h17M14 16.5h17M11 14h23\" fill=\"none\" stroke=\"#fff\" stroke-width=\"1\" stroke-linejoin=\"miter\" /></g><g id=\"black-queen\" class=\"black queen\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#000\" stroke=\"none\"><circle cx=\"6\" cy=\"12\" r=\"2.75\" /><circle cx=\"14\" cy=\"9\" r=\"2.75\" /><circle cx=\"22.5\" cy=\"8\" r=\"2.75\" /><circle cx=\"31\" cy=\"9\" r=\"2.75\" /><circle cx=\"39\" cy=\"12\" r=\"2.75\" /></g><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2.5-12.5L31 25l-.3-14.1-5.2 13.6-3-14.5-3 14.5-5.2-13.6L14 25 6.5 13.5 9 26zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11 38.5a35 35 1 0 0 23 0\" fill=\"none\" stroke-linecap=\"butt\" /><path d=\"M11 29a35 35 1 0 1 23 0M12.5 31.5h20M11.5 34.5a35 35 1 0 0 22 0M10.5 37.5a35 35 1 0 0 24 0\" fill=\"none\" stroke=\"#fff\" /></g><g id=\"black-king\" class=\"black king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#000\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#000\" /><path d=\"M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M32 29.5s8.5-4 6.03-9.65C34.15 14 25 18 22.5 24.5l.01 2.1-.01-2.1C20 18 9.906 14 6.997 19.85c-2.497 5.65 4.853 9 4.853 9M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" stroke=\"#fff\" /></g></defs><rect x=\"7.5\" y=\"7.5\" width=\"375\" height=\"375\" fill=\"none\" stroke=\"#212121\" stroke-width=\"15\" /><g transform=\"translate(20, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(20, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(65, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(65, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(110, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(110, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(155, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(155, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(200, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(200, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(245, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(245, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(290, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(290, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(335, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(335, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(0, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(375, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(0, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(375, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(0, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(375, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(0, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(375, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(0, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(375, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(0, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(375, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(0, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(375, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(0, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><g transform=\"translate(375, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><rect x=\"15\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark a1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"330\" width=\"45\" height=\"45\" class=\"square light b1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark c1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"330\" width=\"45\" height=\"45\" class=\"square light d1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark e1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"330\" width=\"45\" height=\"45\" class=\"square light f1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark g1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"330\" width=\"45\" height=\"45\" class=\"square light h1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"285\" width=\"45\" height=\"45\" class=\"square light a2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark b2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"285\" width=\"45\" height=\"45\" class=\"square light c2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark d2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"285\" width=\"45\" height=\"45\" class=\"square light e2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark f2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"285\" width=\"45\" height=\"45\" class=\"square light g2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark h2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark a3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"240\" width=\"45\" height=\"45\" class=\"square light b3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark c3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"240\" width=\"45\" height=\"45\" class=\"square light d3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark e3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"240\" width=\"45\" height=\"45\" class=\"square light f3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark g3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"240\" width=\"45\" height=\"45\" class=\"square light h3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"195\" width=\"45\" height=\"45\" class=\"square light a4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark b4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"195\" width=\"45\" height=\"45\" class=\"square light c4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark d4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"195\" width=\"45\" height=\"45\" class=\"square light e4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark f4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"195\" width=\"45\" height=\"45\" class=\"square light g4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark h4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark a5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"150\" width=\"45\" height=\"45\" class=\"square light b5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark c5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"150\" width=\"45\" height=\"45\" class=\"square light d5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark e5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"150\" width=\"45\" height=\"45\" class=\"square light f5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark g5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"150\" width=\"45\" height=\"45\" class=\"square light h5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"105\" width=\"45\" height=\"45\" class=\"square light a6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark b6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"105\" width=\"45\" height=\"45\" class=\"square light c6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark d6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"105\" width=\"45\" height=\"45\" class=\"square light e6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark f6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"105\" width=\"45\" height=\"45\" class=\"square light g6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark h6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark a7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"60\" width=\"45\" height=\"45\" class=\"square light b7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark c7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"60\" width=\"45\" height=\"45\" class=\"square light d7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark e7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"60\" width=\"45\" height=\"45\" class=\"square light f7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark g7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"60\" width=\"45\" height=\"45\" class=\"square light h7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"15\" width=\"45\" height=\"45\" class=\"square light a8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark b8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"15\" width=\"45\" height=\"45\" class=\"square light c8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark d8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"15\" width=\"45\" height=\"45\" stroke=\"none\" fill=\"gray\" /><rect x=\"195\" y=\"15\" width=\"45\" height=\"45\" class=\"square light e8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark f8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"15\" width=\"45\" height=\"45\" class=\"square light g8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark h8\" stroke=\"none\" fill=\"#d18b47\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(15, 330)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(105, 330)\" /><use href=\"#white-queen\" xlink:href=\"#white-queen\" transform=\"translate(150, 330)\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(240, 330)\" /><use href=\"#white-king\" xlink:href=\"#white-king\" transform=\"translate(285, 330)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(15, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(60, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(240, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(285, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(330, 285)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(105, 240)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(240, 240)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(105, 195)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(195, 195)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(105, 150)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(150, 150)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(15, 105)\" /><use href=\"#black-queen\" xlink:href=\"#black-queen\" transform=\"translate(240, 105)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(15, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(60, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(105, 60)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(150, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(240, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(285, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(330, 60)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(15, 15)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(240, 15)\" /><use href=\"#black-king\" xlink:href=\"#black-king\" transform=\"translate(285, 15)\" /><line x1=\"172.5\" y1=\"37.5\" x2=\"235.45316561961457\" y2=\"100.45316561961457\" stroke=\"#15781B\" opacity=\"0.5019607843137255\" stroke-width=\"9.0\" stroke-linecap=\"butt\" class=\"arrow\" /><polygon points=\"259.3180194846605,124.31801948466054 247.38559255213755,88.52073868709158 223.52073868709158,112.38559255213755\" fill=\"#15781B\" opacity=\"0.5019607843137255\" class=\"arrow\" /></svg>" + "P P P . Q P P P\n", + ". . . R . R K .</pre></desc><defs><g id=\"white-pawn\" class=\"white pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#fff\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"white-knight\" class=\"white knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#000000; stroke:#000000;\" /></g><g id=\"white-bishop\" class=\"white bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#fff\" stroke-linecap=\"butt\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zM15 32c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" /></g><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke-linejoin=\"miter\" /></g><g id=\"white-rook\" class=\"white rook\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12 36v-4h21v4H12zM11 14V9h4v2h5V9h5v2h5V9h4v5\" stroke-linecap=\"butt\" /><path d=\"M34 14l-3 3H14l-3-3\" /><path d=\"M31 17v12.5H14V17\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M31 29.5l1.5 2.5h-20l1.5-2.5\" /><path d=\"M11 14h23\" fill=\"none\" stroke-linejoin=\"miter\" /></g><g id=\"white-queen\" class=\"white queen\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M8 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM24.5 7.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM41 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM16 8.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM33 9a2 2 0 1 1-4 0 2 2 0 1 1 4 0z\" /><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2-12-7 11V11l-5.5 13.5-3-15-3 15-5.5-14V25L7 14l2 12zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11.5 30c3.5-1 18.5-1 22 0M12 33.5c6-1 15-1 21 0\" fill=\"none\" /></g><g id=\"white-king\" class=\"white king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#fff\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#fff\" /><path d=\"M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" /></g><g id=\"black-pawn\" class=\"black pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#000\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"black-knight\" class=\"black knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 24.55,10.4 L 24.1,11.85 L 24.6,12 C 27.75,13 30.25,14.49 32.5,18.75 C 34.75,23.01 35.75,29.06 35.25,39 L 35.2,39.5 L 37.45,39.5 L 37.5,39 C 38,28.94 36.62,22.15 34.25,17.66 C 31.88,13.17 28.46,11.02 25.06,10.5 L 24.55,10.4 z \" style=\"fill:#ececec; stroke:none;\" /></g><g id=\"black-bishop\" class=\"black bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zm6-4c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" fill=\"#000\" stroke-linecap=\"butt\" /><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke=\"#fff\" stroke-linejoin=\"miter\" /></g><g id=\"black-rook\" class=\"black rook\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12.5 32l1.5-2.5h17l1.5 2.5h-20zM12 36v-4h21v4H12z\" stroke-linecap=\"butt\" /><path d=\"M14 29.5v-13h17v13H14z\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M14 16.5L11 14h23l-3 2.5H14zM11 14V9h4v2h5V9h5v2h5V9h4v5H11z\" stroke-linecap=\"butt\" /><path d=\"M12 35.5h21M13 31.5h19M14 29.5h17M14 16.5h17M11 14h23\" fill=\"none\" stroke=\"#fff\" stroke-width=\"1\" stroke-linejoin=\"miter\" /></g><g id=\"black-queen\" class=\"black queen\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#000\" stroke=\"none\"><circle cx=\"6\" cy=\"12\" r=\"2.75\" /><circle cx=\"14\" cy=\"9\" r=\"2.75\" /><circle cx=\"22.5\" cy=\"8\" r=\"2.75\" /><circle cx=\"31\" cy=\"9\" r=\"2.75\" /><circle cx=\"39\" cy=\"12\" r=\"2.75\" /></g><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2.5-12.5L31 25l-.3-14.1-5.2 13.6-3-14.5-3 14.5-5.2-13.6L14 25 6.5 13.5 9 26zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11 38.5a35 35 1 0 0 23 0\" fill=\"none\" stroke-linecap=\"butt\" /><path d=\"M11 29a35 35 1 0 1 23 0M12.5 31.5h20M11.5 34.5a35 35 1 0 0 22 0M10.5 37.5a35 35 1 0 0 24 0\" fill=\"none\" stroke=\"#fff\" /></g><g id=\"black-king\" class=\"black king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#000\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#000\" /><path d=\"M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M32 29.5s8.5-4 6.03-9.65C34.15 14 25 18 22.5 24.5l.01 2.1-.01-2.1C20 18 9.906 14 6.997 19.85c-2.497 5.65 4.853 9 4.853 9M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" stroke=\"#fff\" /></g></defs><rect x=\"7.5\" y=\"7.5\" width=\"375\" height=\"375\" fill=\"none\" stroke=\"#212121\" stroke-width=\"15\" /><g transform=\"translate(20, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(20, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(65, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(65, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(110, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(110, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(155, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(155, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(200, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(200, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(245, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(245, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(290, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(290, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(335, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(335, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(0, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(375, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(0, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(375, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(0, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(375, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(0, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(375, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(0, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(375, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(0, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(375, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(0, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(375, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(0, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><g transform=\"translate(375, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><rect x=\"15\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark a1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"330\" width=\"45\" height=\"45\" class=\"square light b1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark c1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"330\" width=\"45\" height=\"45\" class=\"square light d1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark e1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"330\" width=\"45\" height=\"45\" class=\"square light f1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark g1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"330\" width=\"45\" height=\"45\" class=\"square light h1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"285\" width=\"45\" height=\"45\" class=\"square light a2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark b2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"285\" width=\"45\" height=\"45\" class=\"square light c2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark d2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"285\" width=\"45\" height=\"45\" class=\"square light e2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark f2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"285\" width=\"45\" height=\"45\" class=\"square light g2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark h2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark a3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"240\" width=\"45\" height=\"45\" class=\"square light b3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark c3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"240\" width=\"45\" height=\"45\" class=\"square light d3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark e3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"240\" width=\"45\" height=\"45\" class=\"square light f3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark g3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"240\" width=\"45\" height=\"45\" class=\"square light h3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"195\" width=\"45\" height=\"45\" class=\"square light a4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark b4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"195\" width=\"45\" height=\"45\" class=\"square light c4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark d4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"195\" width=\"45\" height=\"45\" class=\"square light e4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark f4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"195\" width=\"45\" height=\"45\" class=\"square light g4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark h4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark a5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"150\" width=\"45\" height=\"45\" class=\"square light b5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark c5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"150\" width=\"45\" height=\"45\" class=\"square light d5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark e5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"150\" width=\"45\" height=\"45\" class=\"square light f5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark g5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"150\" width=\"45\" height=\"45\" class=\"square light h5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"105\" width=\"45\" height=\"45\" class=\"square light a6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark b6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"105\" width=\"45\" height=\"45\" class=\"square light c6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark d6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"105\" width=\"45\" height=\"45\" class=\"square light e6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark f6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"105\" width=\"45\" height=\"45\" class=\"square light g6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark h6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark a7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"60\" width=\"45\" height=\"45\" class=\"square light b7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark c7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"60\" width=\"45\" height=\"45\" class=\"square light d7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"60\" width=\"45\" height=\"45\" stroke=\"none\" fill=\"gray\" /><rect x=\"195\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark e7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"60\" width=\"45\" height=\"45\" class=\"square light f7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark g7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"60\" width=\"45\" height=\"45\" class=\"square light h7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"15\" width=\"45\" height=\"45\" class=\"square light a8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark b8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"15\" width=\"45\" height=\"45\" class=\"square light c8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark d8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"15\" width=\"45\" height=\"45\" class=\"square light e8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark f8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"15\" width=\"45\" height=\"45\" class=\"square light g8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark h8\" stroke=\"none\" fill=\"#d18b47\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(150, 330)\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(240, 330)\" /><use href=\"#white-king\" xlink:href=\"#white-king\" transform=\"translate(285, 330)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(15, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(60, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(105, 285)\" /><use href=\"#white-queen\" xlink:href=\"#white-queen\" transform=\"translate(195, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(240, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(285, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(330, 285)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(105, 240)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(240, 240)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(105, 195)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(195, 195)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(150, 150)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(195, 150)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(285, 150)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(60, 105)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(105, 105)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(150, 105)\" /><use href=\"#black-queen\" xlink:href=\"#black-queen\" transform=\"translate(195, 105)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(15, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(60, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(105, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(240, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(285, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(330, 60)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(15, 15)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(105, 15)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(240, 15)\" /><use href=\"#black-king\" xlink:href=\"#black-king\" transform=\"translate(285, 15)\" /><line x1=\"172.5\" y1=\"82.5\" x2=\"172.5\" y2=\"89.25\" stroke=\"#15781B\" opacity=\"0.5019607843137255\" stroke-width=\"9.0\" stroke-linecap=\"butt\" class=\"arrow\" /><polygon points=\"172.5,123.0 189.375,89.25 155.625,89.25\" fill=\"#15781B\" opacity=\"0.5019607843137255\" class=\"arrow\" /></svg>" ], "text/plain": [ - "'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 390 390\" width=\"200\" height=\"200\"><desc><pre>r . . . . r k .\\np p p b . p p p\\nn . . . . q . .\\n. . b n . . . .\\n. . P . P . . .\\n. . N . . N . .\\nP P . . . P P P\\nR . B Q . R K .</pre></desc><defs><g id=\"white-pawn\" class=\"white pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#fff\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"white-knight\" class=\"white knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#000000; stroke:#000000;\" /></g><g id=\"white-bishop\" class=\"white bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#fff\" stroke-linecap=\"butt\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zM15 32c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" /></g><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke-linejoin=\"miter\" /></g><g id=\"white-rook\" class=\"white rook\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12 36v-4h21v4H12zM11 14V9h4v2h5V9h5v2h5V9h4v5\" stroke-linecap=\"butt\" /><path d=\"M34 14l-3 3H14l-3-3\" /><path d=\"M31 17v12.5H14V17\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M31 29.5l1.5 2.5h-20l1.5-2.5\" /><path d=\"M11 14h23\" fill=\"none\" stroke-linejoin=\"miter\" /></g><g id=\"white-queen\" class=\"white queen\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M8 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM24.5 7.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM41 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM16 8.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM33 9a2 2 0 1 1-4 0 2 2 0 1 1 4 0z\" /><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2-12-7 11V11l-5.5 13.5-3-15-3 15-5.5-14V25L7 14l2 12zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11.5 30c3.5-1 18.5-1 22 0M12 33.5c6-1 15-1 21 0\" fill=\"none\" /></g><g id=\"white-king\" class=\"white king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#fff\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#fff\" /><path d=\"M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" /></g><g id=\"black-pawn\" class=\"black pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#000\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"black-knight\" class=\"black knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 24.55,10.4 L 24.1,11.85 L 24.6,12 C 27.75,13 30.25,14.49 32.5,18.75 C 34.75,23.01 35.75,29.06 35.25,39 L 35.2,39.5 L 37.45,39.5 L 37.5,39 C 38,28.94 36.62,22.15 34.25,17.66 C 31.88,13.17 28.46,11.02 25.06,10.5 L 24.55,10.4 z \" style=\"fill:#ececec; stroke:none;\" /></g><g id=\"black-bishop\" class=\"black bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zm6-4c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" fill=\"#000\" stroke-linecap=\"butt\" /><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke=\"#fff\" stroke-linejoin=\"miter\" /></g><g id=\"black-rook\" class=\"black rook\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12.5 32l1.5-2.5h17l1.5 2.5h-20zM12 36v-4h21v4H12z\" stroke-linecap=\"butt\" /><path d=\"M14 29.5v-13h17v13H14z\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M14 16.5L11 14h23l-3 2.5H14zM11 14V9h4v2h5V9h5v2h5V9h4v5H11z\" stroke-linecap=\"butt\" /><path d=\"M12 35.5h21M13 31.5h19M14 29.5h17M14 16.5h17M11 14h23\" fill=\"none\" stroke=\"#fff\" stroke-width=\"1\" stroke-linejoin=\"miter\" /></g><g id=\"black-queen\" class=\"black queen\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#000\" stroke=\"none\"><circle cx=\"6\" cy=\"12\" r=\"2.75\" /><circle cx=\"14\" cy=\"9\" r=\"2.75\" /><circle cx=\"22.5\" cy=\"8\" r=\"2.75\" /><circle cx=\"31\" cy=\"9\" r=\"2.75\" /><circle cx=\"39\" cy=\"12\" r=\"2.75\" /></g><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2.5-12.5L31 25l-.3-14.1-5.2 13.6-3-14.5-3 14.5-5.2-13.6L14 25 6.5 13.5 9 26zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11 38.5a35 35 1 0 0 23 0\" fill=\"none\" stroke-linecap=\"butt\" /><path d=\"M11 29a35 35 1 0 1 23 0M12.5 31.5h20M11.5 34.5a35 35 1 0 0 22 0M10.5 37.5a35 35 1 0 0 24 0\" fill=\"none\" stroke=\"#fff\" /></g><g id=\"black-king\" class=\"black king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#000\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#000\" /><path d=\"M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M32 29.5s8.5-4 6.03-9.65C34.15 14 25 18 22.5 24.5l.01 2.1-.01-2.1C20 18 9.906 14 6.997 19.85c-2.497 5.65 4.853 9 4.853 9M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" stroke=\"#fff\" /></g></defs><rect x=\"7.5\" y=\"7.5\" width=\"375\" height=\"375\" fill=\"none\" stroke=\"#212121\" stroke-width=\"15\" /><g transform=\"translate(20, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(20, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(65, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(65, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(110, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(110, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(155, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(155, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(200, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(200, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(245, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(245, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(290, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(290, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(335, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(335, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(0, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(375, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(0, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(375, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(0, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(375, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(0, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(375, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(0, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(375, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(0, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(375, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(0, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(375, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(0, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><g transform=\"translate(375, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><rect x=\"15\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark a1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"330\" width=\"45\" height=\"45\" class=\"square light b1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark c1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"330\" width=\"45\" height=\"45\" class=\"square light d1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark e1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"330\" width=\"45\" height=\"45\" class=\"square light f1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark g1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"330\" width=\"45\" height=\"45\" class=\"square light h1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"285\" width=\"45\" height=\"45\" class=\"square light a2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark b2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"285\" width=\"45\" height=\"45\" class=\"square light c2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark d2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"285\" width=\"45\" height=\"45\" class=\"square light e2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark f2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"285\" width=\"45\" height=\"45\" class=\"square light g2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark h2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark a3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"240\" width=\"45\" height=\"45\" class=\"square light b3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark c3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"240\" width=\"45\" height=\"45\" class=\"square light d3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark e3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"240\" width=\"45\" height=\"45\" class=\"square light f3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark g3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"240\" width=\"45\" height=\"45\" class=\"square light h3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"195\" width=\"45\" height=\"45\" class=\"square light a4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark b4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"195\" width=\"45\" height=\"45\" class=\"square light c4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark d4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"195\" width=\"45\" height=\"45\" class=\"square light e4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark f4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"195\" width=\"45\" height=\"45\" class=\"square light g4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark h4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark a5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"150\" width=\"45\" height=\"45\" class=\"square light b5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark c5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"150\" width=\"45\" height=\"45\" class=\"square light d5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark e5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"150\" width=\"45\" height=\"45\" class=\"square light f5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark g5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"150\" width=\"45\" height=\"45\" class=\"square light h5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"105\" width=\"45\" height=\"45\" class=\"square light a6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark b6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"105\" width=\"45\" height=\"45\" class=\"square light c6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark d6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"105\" width=\"45\" height=\"45\" class=\"square light e6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark f6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"105\" width=\"45\" height=\"45\" class=\"square light g6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark h6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark a7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"60\" width=\"45\" height=\"45\" class=\"square light b7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark c7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"60\" width=\"45\" height=\"45\" class=\"square light d7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark e7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"60\" width=\"45\" height=\"45\" class=\"square light f7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark g7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"60\" width=\"45\" height=\"45\" class=\"square light h7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"15\" width=\"45\" height=\"45\" class=\"square light a8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark b8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"15\" width=\"45\" height=\"45\" class=\"square light c8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark d8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"15\" width=\"45\" height=\"45\" stroke=\"none\" fill=\"gray\" /><rect x=\"195\" y=\"15\" width=\"45\" height=\"45\" class=\"square light e8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark f8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"15\" width=\"45\" height=\"45\" class=\"square light g8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark h8\" stroke=\"none\" fill=\"#d18b47\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(15, 330)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(105, 330)\" /><use href=\"#white-queen\" xlink:href=\"#white-queen\" transform=\"translate(150, 330)\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(240, 330)\" /><use href=\"#white-king\" xlink:href=\"#white-king\" transform=\"translate(285, 330)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(15, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(60, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(240, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(285, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(330, 285)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(105, 240)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(240, 240)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(105, 195)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(195, 195)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(105, 150)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(150, 150)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(15, 105)\" /><use href=\"#black-queen\" xlink:href=\"#black-queen\" transform=\"translate(240, 105)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(15, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(60, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(105, 60)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(150, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(240, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(285, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(330, 60)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(15, 15)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(240, 15)\" /><use href=\"#black-king\" xlink:href=\"#black-king\" transform=\"translate(285, 15)\" /><line x1=\"172.5\" y1=\"37.5\" x2=\"235.45316561961457\" y2=\"100.45316561961457\" stroke=\"#15781B\" opacity=\"0.5019607843137255\" stroke-width=\"9.0\" stroke-linecap=\"butt\" class=\"arrow\" /><polygon points=\"259.3180194846605,124.31801948466054 247.38559255213755,88.52073868709158 223.52073868709158,112.38559255213755\" fill=\"#15781B\" opacity=\"0.5019607843137255\" class=\"arrow\" /></svg>'" + "'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 390 390\" width=\"200\" height=\"200\"><desc><pre>r . b . . r k .\\np p p . . p p p\\n. b n p q . . .\\n. . . n P . B .\\n. . B . P . . .\\n. . N . . N . .\\nP P P . Q P P P\\n. . . R . R K .</pre></desc><defs><g id=\"white-pawn\" class=\"white pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#fff\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"white-knight\" class=\"white knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#ffffff; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#000000; stroke:#000000;\" /></g><g id=\"white-bishop\" class=\"white bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#fff\" stroke-linecap=\"butt\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zM15 32c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" /></g><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke-linejoin=\"miter\" /></g><g id=\"white-rook\" class=\"white rook\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12 36v-4h21v4H12zM11 14V9h4v2h5V9h5v2h5V9h4v5\" stroke-linecap=\"butt\" /><path d=\"M34 14l-3 3H14l-3-3\" /><path d=\"M31 17v12.5H14V17\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M31 29.5l1.5 2.5h-20l1.5-2.5\" /><path d=\"M11 14h23\" fill=\"none\" stroke-linejoin=\"miter\" /></g><g id=\"white-queen\" class=\"white queen\" fill=\"#fff\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M8 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM24.5 7.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM41 12a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM16 8.5a2 2 0 1 1-4 0 2 2 0 1 1 4 0zM33 9a2 2 0 1 1-4 0 2 2 0 1 1 4 0z\" /><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2-12-7 11V11l-5.5 13.5-3-15-3 15-5.5-14V25L7 14l2 12zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11.5 30c3.5-1 18.5-1 22 0M12 33.5c6-1 15-1 21 0\" fill=\"none\" /></g><g id=\"white-king\" class=\"white king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#fff\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#fff\" /><path d=\"M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" /></g><g id=\"black-pawn\" class=\"black pawn\"><path d=\"M22.5 9c-2.21 0-4 1.79-4 4 0 .89.29 1.71.78 2.38C17.33 16.5 16 18.59 16 21c0 2.03.94 3.84 2.41 5.03-3 1.06-7.41 5.55-7.41 13.47h23c0-7.92-4.41-12.41-7.41-13.47 1.47-1.19 2.41-3 2.41-5.03 0-2.41-1.33-4.5-3.28-5.62.49-.67.78-1.49.78-2.38 0-2.21-1.79-4-4-4z\" fill=\"#000\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" /></g><g id=\"black-knight\" class=\"black knight\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M 22,10 C 32.5,11 38.5,18 38,39 L 15,39 C 15,30 25,32.5 23,18\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 24,18 C 24.38,20.91 18.45,25.37 16,27 C 13,29 13.18,31.34 11,31 C 9.958,30.06 12.41,27.96 11,28 C 10,28 11.19,29.23 10,30 C 9,30 5.997,31 6,26 C 6,24 12,14 12,14 C 12,14 13.89,12.1 14,10.5 C 13.27,9.506 13.5,8.5 13.5,7.5 C 14.5,6.5 16.5,10 16.5,10 L 18.5,10 C 18.5,10 19.28,8.008 21,7 C 22,7 22,10 22,10\" style=\"fill:#000000; stroke:#000000;\" /><path d=\"M 9.5 25.5 A 0.5 0.5 0 1 1 8.5,25.5 A 0.5 0.5 0 1 1 9.5 25.5 z\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 15 15.5 A 0.5 1.5 0 1 1 14,15.5 A 0.5 1.5 0 1 1 15 15.5 z\" transform=\"matrix(0.866,0.5,-0.5,0.866,9.693,-5.173)\" style=\"fill:#ececec; stroke:#ececec;\" /><path d=\"M 24.55,10.4 L 24.1,11.85 L 24.6,12 C 27.75,13 30.25,14.49 32.5,18.75 C 34.75,23.01 35.75,29.06 35.25,39 L 35.2,39.5 L 37.45,39.5 L 37.5,39 C 38,28.94 36.62,22.15 34.25,17.66 C 31.88,13.17 28.46,11.02 25.06,10.5 L 24.55,10.4 z \" style=\"fill:#ececec; stroke:none;\" /></g><g id=\"black-bishop\" class=\"black bishop\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 36c3.39-.97 10.11.43 13.5-2 3.39 2.43 10.11 1.03 13.5 2 0 0 1.65.54 3 2-.68.97-1.65.99-3 .5-3.39-.97-10.11.46-13.5-1-3.39 1.46-10.11.03-13.5 1-1.354.49-2.323.47-3-.5 1.354-1.94 3-2 3-2zm6-4c2.5 2.5 12.5 2.5 15 0 .5-1.5 0-2 0-2 0-2.5-2.5-4-2.5-4 5.5-1.5 6-11.5-5-15.5-11 4-10.5 14-5 15.5 0 0-2.5 1.5-2.5 4 0 0-.5.5 0 2zM25 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 1 1 5 0z\" fill=\"#000\" stroke-linecap=\"butt\" /><path d=\"M17.5 26h10M15 30h15m-7.5-14.5v5M20 18h5\" stroke=\"#fff\" stroke-linejoin=\"miter\" /></g><g id=\"black-rook\" class=\"black rook\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 39h27v-3H9v3zM12.5 32l1.5-2.5h17l1.5 2.5h-20zM12 36v-4h21v4H12z\" stroke-linecap=\"butt\" /><path d=\"M14 29.5v-13h17v13H14z\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M14 16.5L11 14h23l-3 2.5H14zM11 14V9h4v2h5V9h5v2h5V9h4v5H11z\" stroke-linecap=\"butt\" /><path d=\"M12 35.5h21M13 31.5h19M14 29.5h17M14 16.5h17M11 14h23\" fill=\"none\" stroke=\"#fff\" stroke-width=\"1\" stroke-linejoin=\"miter\" /></g><g id=\"black-queen\" class=\"black queen\" fill=\"#000\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><g fill=\"#000\" stroke=\"none\"><circle cx=\"6\" cy=\"12\" r=\"2.75\" /><circle cx=\"14\" cy=\"9\" r=\"2.75\" /><circle cx=\"22.5\" cy=\"8\" r=\"2.75\" /><circle cx=\"31\" cy=\"9\" r=\"2.75\" /><circle cx=\"39\" cy=\"12\" r=\"2.75\" /></g><path d=\"M9 26c8.5-1.5 21-1.5 27 0l2.5-12.5L31 25l-.3-14.1-5.2 13.6-3-14.5-3 14.5-5.2-13.6L14 25 6.5 13.5 9 26zM9 26c0 2 1.5 2 2.5 4 1 1.5 1 1 .5 3.5-1.5 1-1.5 2.5-1.5 2.5-1.5 1.5.5 2.5.5 2.5 6.5 1 16.5 1 23 0 0 0 1.5-1 0-2.5 0 0 .5-1.5-1-2.5-.5-2.5-.5-2 .5-3.5 1-2 2.5-2 2.5-4-8.5-1.5-18.5-1.5-27 0z\" stroke-linecap=\"butt\" /><path d=\"M11 38.5a35 35 1 0 0 23 0\" fill=\"none\" stroke-linecap=\"butt\" /><path d=\"M11 29a35 35 1 0 1 23 0M12.5 31.5h20M11.5 34.5a35 35 1 0 0 22 0M10.5 37.5a35 35 1 0 0 24 0\" fill=\"none\" stroke=\"#fff\" /></g><g id=\"black-king\" class=\"black king\" fill=\"none\" fill-rule=\"evenodd\" stroke=\"#000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22.5 11.63V6\" stroke-linejoin=\"miter\" /><path d=\"M22.5 25s4.5-7.5 3-10.5c0 0-1-2.5-3-2.5s-3 2.5-3 2.5c-1.5 3 3 10.5 3 10.5\" fill=\"#000\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" /><path d=\"M11.5 37c5.5 3.5 15.5 3.5 21 0v-7s9-4.5 6-10.5c-4-6.5-13.5-3.5-16 4V27v-3.5c-3.5-7.5-13-10.5-16-4-3 6 5 10 5 10V37z\" fill=\"#000\" /><path d=\"M20 8h5\" stroke-linejoin=\"miter\" /><path d=\"M32 29.5s8.5-4 6.03-9.65C34.15 14 25 18 22.5 24.5l.01 2.1-.01-2.1C20 18 9.906 14 6.997 19.85c-2.497 5.65 4.853 9 4.853 9M11.5 30c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0m-21 3.5c5.5-3 15.5-3 21 0\" stroke=\"#fff\" /></g></defs><rect x=\"7.5\" y=\"7.5\" width=\"375\" height=\"375\" fill=\"none\" stroke=\"#212121\" stroke-width=\"15\" /><g transform=\"translate(20, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(20, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M23.328 10.016q-1.742 0-2.414.398-.672.398-.672 1.36 0 .765.5 1.218.508.445 1.375.445 1.196 0 1.914-.843.727-.852.727-2.258v-.32zm2.867-.594v4.992h-1.437v-1.328q-.492.797-1.227 1.18-.734.375-1.797.375-1.343 0-2.14-.75-.79-.758-.79-2.024 0-1.476.985-2.226.992-.75 2.953-.75h2.016V8.75q0-.992-.656-1.531-.649-.547-1.829-.547-.75 0-1.46.18-.711.18-1.368.539V6.062q.79-.304 1.532-.453.742-.156 1.445-.156 1.898 0 2.836.984.937.985.937 2.985z\" /></g><g transform=\"translate(65, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(65, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.922 10.047q0-1.586-.656-2.485-.649-.906-1.79-.906-1.14 0-1.796.906-.649.899-.649 2.485 0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.789-.898.656-.906.656-2.492zm-4.89-3.055q.452-.781 1.14-1.156.695-.383 1.656-.383 1.594 0 2.586 1.266 1 1.265 1 3.328 0 2.062-1 3.328-.992 1.266-2.586 1.266-.96 0-1.656-.375-.688-.383-1.14-1.164v1.312h-1.446V2.258h1.445z\" /></g><g transform=\"translate(110, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(110, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.96 6v1.344q-.608-.336-1.226-.5-.609-.172-1.234-.172-1.398 0-2.172.89-.773.883-.773 2.485 0 1.601.773 2.492.774.883 2.172.883.625 0 1.234-.164.618-.172 1.227-.508v1.328q-.602.281-1.25.422-.64.14-1.367.14-1.977 0-3.14-1.242-1.165-1.242-1.165-3.351 0-2.14 1.172-3.367 1.18-1.227 3.227-1.227.664 0 1.296.14.633.134 1.227.407z\" /></g><g transform=\"translate(155, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(155, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 6.992V2.258h1.437v12.156h-1.437v-1.312q-.453.78-1.149 1.164-.687.375-1.656.375-1.586 0-2.586-1.266-.992-1.266-.992-3.328 0-2.063.992-3.328 1-1.266 2.586-1.266.969 0 1.656.383.696.375 1.149 1.156zm-4.899 3.055q0 1.586.649 2.492.656.898 1.797.898 1.14 0 1.796-.898.657-.906.657-2.492 0-1.586-.657-2.485-.656-.906-1.796-.906-1.141 0-1.797.906-.649.899-.649 2.485z\" /></g><g transform=\"translate(200, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(200, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.555 9.68v.703h-6.61q.094 1.484.89 2.265.806.774 2.235.774.828 0 1.602-.203.781-.203 1.547-.61v1.36q-.774.328-1.586.5-.813.172-1.649.172-2.093 0-3.32-1.22-1.219-1.218-1.219-3.296 0-2.148 1.157-3.406 1.164-1.266 3.132-1.266 1.766 0 2.79 1.14 1.03 1.134 1.03 3.087zm-1.438-.422q-.015-1.18-.664-1.883-.64-.703-1.703-.703-1.203 0-1.93.68-.718.68-.828 1.914z\" /></g><g transform=\"translate(245, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(245, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M25.285 2.258v1.195H23.91q-.773 0-1.078.313-.297.312-.297 1.125v.773h2.367v1.117h-2.367v7.633H21.09V6.781h-1.375V5.664h1.375v-.61q0-1.46.68-2.124.68-.672 2.156-.672z\" /></g><g transform=\"translate(290, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(290, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M24.973 9.937q0-1.562-.649-2.421-.64-.86-1.804-.86-1.157 0-1.805.86-.64.859-.64 2.421 0 1.555.64 2.415.648.859 1.805.859 1.164 0 1.804-.86.649-.859.649-2.414zm1.437 3.391q0 2.234-.992 3.32-.992 1.094-3.04 1.094-.757 0-1.429-.117-.672-.11-1.304-.344v-1.398q.632.344 1.25.508.617.164 1.257.164 1.414 0 2.118-.743.703-.734.703-2.226v-.711q-.446.773-1.141 1.156-.695.383-1.664.383-1.61 0-2.594-1.227-.984-1.226-.984-3.25 0-2.03.984-3.257.985-1.227 2.594-1.227.969 0 1.664.383t1.14 1.156V5.664h1.438z\" /></g><g transform=\"translate(335, 1) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(335, 375) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M26.164 9.133v5.281h-1.437V9.18q0-1.243-.485-1.86-.484-.617-1.453-.617-1.164 0-1.836.742-.672.742-.672 2.024v4.945h-1.445V2.258h1.445v4.765q.516-.789 1.211-1.18.703-.39 1.617-.39 1.508 0 2.282.938.773.93.773 2.742z\" /></g><g transform=\"translate(0, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(375, 335) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.754 26.996h2.578v-8.898l-2.805.562v-1.437l2.79-.563h1.578v10.336h2.578v1.328h-6.72z\" /></g><g transform=\"translate(0, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(375, 290) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M8.195 26.996h5.508v1.328H6.297v-1.328q.898-.93 2.445-2.492 1.555-1.57 1.953-2.024.758-.851 1.055-1.437.305-.594.305-1.164 0-.93-.657-1.516-.648-.586-1.695-.586-.742 0-1.57.258-.82.258-1.758.781v-1.593q.953-.383 1.781-.578.828-.196 1.516-.196 1.812 0 2.89.906 1.079.907 1.079 2.422 0 .72-.274 1.368-.265.64-.976 1.515-.196.227-1.243 1.313-1.046 1.078-2.953 3.023z\" /></g><g transform=\"translate(0, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(375, 245) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.434 22.035q1.132.242 1.765 1.008.64.766.64 1.89 0 1.727-1.187 2.672-1.187.946-3.375.946-.734 0-1.515-.149-.774-.14-1.602-.43V26.45q.656.383 1.438.578.78.196 1.632.196 1.485 0 2.258-.586.782-.586.782-1.703 0-1.032-.727-1.61-.719-.586-2.008-.586h-1.36v-1.297h1.423q1.164 0 1.78-.46.618-.47.618-1.344 0-.899-.64-1.375-.633-.485-1.82-.485-.65 0-1.391.141-.743.14-1.633.437V16.95q.898-.25 1.68-.375.788-.125 1.484-.125 1.797 0 2.844.82 1.046.813 1.046 2.204 0 .968-.554 1.64-.555.664-1.578.922z\" /></g><g transform=\"translate(0, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(375, 200) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M11.016 18.035L7.03 24.262h3.985zm-.414-1.375h1.984v7.602h1.664v1.312h-1.664v2.75h-1.57v-2.75H5.75v-1.523z\" /></g><g transform=\"translate(0, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(375, 155) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.719 16.66h6.195v1.328h-4.75v2.86q.344-.118.688-.172.343-.063.687-.063 1.953 0 3.094 1.07 1.14 1.07 1.14 2.899 0 1.883-1.171 2.93-1.172 1.039-3.305 1.039-.735 0-1.5-.125-.758-.125-1.57-.375v-1.586q.703.383 1.453.57.75.188 1.586.188 1.351 0 2.14-.711.79-.711.79-1.93 0-1.219-.79-1.93-.789-.71-2.14-.71-.633 0-1.266.14-.625.14-1.281.438z\" /></g><g transform=\"translate(0, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(375, 110) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10.137 21.863q-1.063 0-1.688.727-.617.726-.617 1.992 0 1.258.617 1.992.625.727 1.688.727 1.062 0 1.68-.727.624-.734.624-1.992 0-1.266-.625-1.992-.617-.727-1.68-.727zm3.133-4.945v1.437q-.594-.28-1.204-.43-.601-.148-1.195-.148-1.562 0-2.39 1.055-.82 1.055-.938 3.188.46-.68 1.156-1.04.696-.367 1.531-.367 1.758 0 2.774 1.07 1.023 1.063 1.023 2.899 0 1.797-1.062 2.883-1.063 1.086-2.828 1.086-2.024 0-3.094-1.547-1.07-1.555-1.07-4.5 0-2.766 1.312-4.406 1.313-1.649 3.524-1.649.593 0 1.195.117.61.118 1.266.352z\" /></g><g transform=\"translate(0, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(375, 65) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M6.25 16.66h7.5v.672L9.516 28.324H7.867l3.985-10.336H6.25z\" /></g><g transform=\"translate(0, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><g transform=\"translate(375, 20) scale(0.75, 0.75)\" fill=\"#e5e5e5\" stroke=\"#e5e5e5\"><path d=\"M10 22.785q-1.125 0-1.773.602-.641.601-.641 1.656t.64 1.656q.649.602 1.774.602t1.773-.602q.649-.61.649-1.656 0-1.055-.649-1.656-.64-.602-1.773-.602zm-1.578-.672q-1.016-.25-1.586-.945-.563-.695-.563-1.695 0-1.399.993-2.211 1-.813 2.734-.813 1.742 0 2.734.813.993.812.993 2.21 0 1-.57 1.696-.563.695-1.571.945 1.14.266 1.773 1.04.641.773.641 1.89 0 1.695-1.04 2.602-1.03.906-2.96.906t-2.969-.906Q6 26.738 6 25.043q0-1.117.64-1.89.641-.774 1.782-1.04zm-.578-2.492q0 .906.562 1.414.57.508 1.594.508 1.016 0 1.586-.508.578-.508.578-1.414 0-.906-.578-1.414-.57-.508-1.586-.508-1.023 0-1.594.508-.562.508-.562 1.414z\" /></g><rect x=\"15\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark a1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"330\" width=\"45\" height=\"45\" class=\"square light b1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark c1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"330\" width=\"45\" height=\"45\" class=\"square light d1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark e1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"330\" width=\"45\" height=\"45\" class=\"square light f1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"330\" width=\"45\" height=\"45\" class=\"square dark g1\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"330\" width=\"45\" height=\"45\" class=\"square light h1\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"285\" width=\"45\" height=\"45\" class=\"square light a2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark b2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"285\" width=\"45\" height=\"45\" class=\"square light c2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark d2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"285\" width=\"45\" height=\"45\" class=\"square light e2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark f2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"285\" width=\"45\" height=\"45\" class=\"square light g2\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"285\" width=\"45\" height=\"45\" class=\"square dark h2\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark a3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"240\" width=\"45\" height=\"45\" class=\"square light b3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark c3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"240\" width=\"45\" height=\"45\" class=\"square light d3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark e3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"240\" width=\"45\" height=\"45\" class=\"square light f3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"240\" width=\"45\" height=\"45\" class=\"square dark g3\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"240\" width=\"45\" height=\"45\" class=\"square light h3\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"195\" width=\"45\" height=\"45\" class=\"square light a4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark b4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"195\" width=\"45\" height=\"45\" class=\"square light c4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark d4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"195\" width=\"45\" height=\"45\" class=\"square light e4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark f4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"195\" width=\"45\" height=\"45\" class=\"square light g4\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"195\" width=\"45\" height=\"45\" class=\"square dark h4\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark a5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"150\" width=\"45\" height=\"45\" class=\"square light b5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark c5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"150\" width=\"45\" height=\"45\" class=\"square light d5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"195\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark e5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"150\" width=\"45\" height=\"45\" class=\"square light f5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"150\" width=\"45\" height=\"45\" class=\"square dark g5\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"150\" width=\"45\" height=\"45\" class=\"square light h5\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"105\" width=\"45\" height=\"45\" class=\"square light a6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark b6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"105\" width=\"45\" height=\"45\" class=\"square light c6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark d6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"105\" width=\"45\" height=\"45\" class=\"square light e6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark f6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"105\" width=\"45\" height=\"45\" class=\"square light g6\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"105\" width=\"45\" height=\"45\" class=\"square dark h6\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"15\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark a7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"60\" y=\"60\" width=\"45\" height=\"45\" class=\"square light b7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"105\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark c7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"150\" y=\"60\" width=\"45\" height=\"45\" class=\"square light d7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"60\" width=\"45\" height=\"45\" stroke=\"none\" fill=\"gray\" /><rect x=\"195\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark e7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"240\" y=\"60\" width=\"45\" height=\"45\" class=\"square light f7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"285\" y=\"60\" width=\"45\" height=\"45\" class=\"square dark g7\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"330\" y=\"60\" width=\"45\" height=\"45\" class=\"square light h7\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"15\" y=\"15\" width=\"45\" height=\"45\" class=\"square light a8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"60\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark b8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"105\" y=\"15\" width=\"45\" height=\"45\" class=\"square light c8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"150\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark d8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"195\" y=\"15\" width=\"45\" height=\"45\" class=\"square light e8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"240\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark f8\" stroke=\"none\" fill=\"#d18b47\" /><rect x=\"285\" y=\"15\" width=\"45\" height=\"45\" class=\"square light g8\" stroke=\"none\" fill=\"#ffce9e\" /><rect x=\"330\" y=\"15\" width=\"45\" height=\"45\" class=\"square dark h8\" stroke=\"none\" fill=\"#d18b47\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(150, 330)\" /><use href=\"#white-rook\" xlink:href=\"#white-rook\" transform=\"translate(240, 330)\" /><use href=\"#white-king\" xlink:href=\"#white-king\" transform=\"translate(285, 330)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(15, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(60, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(105, 285)\" /><use href=\"#white-queen\" xlink:href=\"#white-queen\" transform=\"translate(195, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(240, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(285, 285)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(330, 285)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(105, 240)\" /><use href=\"#white-knight\" xlink:href=\"#white-knight\" transform=\"translate(240, 240)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(105, 195)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(195, 195)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(150, 150)\" /><use href=\"#white-pawn\" xlink:href=\"#white-pawn\" transform=\"translate(195, 150)\" /><use href=\"#white-bishop\" xlink:href=\"#white-bishop\" transform=\"translate(285, 150)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(60, 105)\" /><use href=\"#black-knight\" xlink:href=\"#black-knight\" transform=\"translate(105, 105)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(150, 105)\" /><use href=\"#black-queen\" xlink:href=\"#black-queen\" transform=\"translate(195, 105)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(15, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(60, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(105, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(240, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(285, 60)\" /><use href=\"#black-pawn\" xlink:href=\"#black-pawn\" transform=\"translate(330, 60)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(15, 15)\" /><use href=\"#black-bishop\" xlink:href=\"#black-bishop\" transform=\"translate(105, 15)\" /><use href=\"#black-rook\" xlink:href=\"#black-rook\" transform=\"translate(240, 15)\" /><use href=\"#black-king\" xlink:href=\"#black-king\" transform=\"translate(285, 15)\" /><line x1=\"172.5\" y1=\"82.5\" x2=\"172.5\" y2=\"89.25\" stroke=\"#15781B\" opacity=\"0.5019607843137255\" stroke-width=\"9.0\" stroke-linecap=\"butt\" class=\"arrow\" /><polygon points=\"172.5,123.0 189.375,89.25 155.625,89.25\" fill=\"#15781B\" opacity=\"0.5019607843137255\" class=\"arrow\" /></svg>'" ] }, "metadata": {}, @@ -932,7 +977,11 @@ "text": [ "\u001b[33mPlayer black\u001b[0m (to Player white):\n", "\n", - "Qd8f6. Moving my queen to put pressure on your knight. Your move!\n", + "My apologies for the confusion. Let's correct that. I'll move my pawn from d7 to d6.\n", + "\n", + "d7d6\n", + "\n", + "Did you know that pawns are the soul of chess? It's fascinating how these seemingly insignificant pieces can control the fate of the game. Your move.\n", "\n", "--------------------------------------------------------------------------------\n" ] @@ -959,7 +1008,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.5" + "version": "3.11.4" }, "orig_nbformat": 4 }, diff --git a/notebook/agentchat_compression.ipynb b/notebook/agentchat_compression.ipynb new file mode 100644 index 00000000000..295d1691856 --- /dev/null +++ b/notebook/agentchat_compression.ipynb @@ -0,0 +1,1295 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<a href=\"https://colab.research.google.com/github/microsoft/autogen/blob/main/notebook/agentchat_compression.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Auto Generated Agent Chat: Conversations with Chat History Compression Enabled (Experimental)\n", + "\n", + "AutoGen offers conversable agents powered by LLM, tools, or humans, which can be used to perform tasks collectively via automated chat. This framework allows tool use and human participance through multi-agent conversation. Please find documentation about this feature [here](https://microsoft.github.io/autogen/docs/Use-Cases/agent_chat).\n", + "\n", + "In this notebook, we demonstrate how to enable compression of history messages using the `CompressibleAgent`. While this agent retains all the default functionalities of the `AssistantAgent`, it also provides the added feature of compression when activated through the `compress_config` setting.\n", + "\n", + "Different compression modes are supported:\n", + "1. `compress_config=False` (Default): `CompressibleAgent` is equivalent to `AssistantAgent`.\n", + "2. `compress_config=True` or `compress_config={\"mode\": \"TERMINATE\"}`: no compression will be performed. However, we will count token usage before sending requests to the OpenAI model. The conversation will be terminated directly if the total token usage exceeds the maximum token usage allowed by the model (to avoid the token limit error from OpenAI API).\n", + "3. `compress_config={\"mode\": \"COMPRESS\", \"trigger_count\": <your pre-set number>}, \"leave_last_n\": <your pre-set number>`: compression is enabled.\n", + " ```python\n", + " # default compress_config\n", + " compress_config = {\n", + " \"mode\": \"COMPRESS\",\n", + " \"compress_function\": None,\n", + " \"trigger_count\": 0.7, # default to 0.7, or your pre-set number\n", + " \"broadcast\": True, # the compressed with be broadcast to sender. This will not be used in groupchat.\n", + "\n", + " # the following settings are for this mode only\n", + " \"leave_last_n\": 2, # leave the last n messages in the history to avoid compression\n", + " \"verbose\": False, # if True, print out the content to be compressed and the compressed content\n", + " }\n", + " ```\n", + " Currently, our compression logic is as follows:\n", + " 1. We will always leave the first user message (as well as system prompts) and compress the rest of the history messages.\n", + " 2. You can choose to not compress the last n messages in the history with \"leave_last_n\".\n", + " 2. The summary is performed on a per-message basis, with the role of the messages (See compressed content in the example below).\n", + "\n", + "4. `compress_config={\"mode\": \"CUSTOMIZED\", \"compress_function\": <A customized function for compression>}`: the `compress_function` function will be called on trigger count. The function should accept a list of messages as input and return a tuple of (is_success: bool, compressed_messages: List[Dict]). The whole message history (except system prompt) will be passed.\n", + "\n", + "\n", + "By adjusting `trigger_count`, you can decide when to compress the history messages based on existing tokens. If this is a float number between 0 and 1, it is interpreted as a ratio of max tokens allowed by the model. For example, the AssistantAgent uses gpt-4 with max tokens 8192, the trigger_count = 0.7 * 8192 = 5734.4 -> 5734. Do not set `trigger_count` to the max tokens allowed by the model, since the same LLM is employed for compression and it needs tokens to generate the compressed content. \n", + "\n", + "\n", + "\n", + "## Limitations\n", + "- For now, the compression feature **is not well-supported for groupchat**. If you initialize a `CompressibleAgent` in a groupchat with compression, the compressed cannot be broadcast to all other agents in the groupchat. If you use this feature in groupchat, extra cost will be incurred since compression will be performed on at per-agent basis.\n", + "- We do not support async compression for now.\n", + "\n", + "## Requirements\n", + "\n", + "AutoGen requires `Python>=3.8`. To run this notebook example, please install:\n", + "```bash\n", + "pip install pyautogen\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "# %pip install pyautogen~=0.1.0" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Set your API Endpoint\n", + "\n", + "The [`config_list_from_json`](https://microsoft.github.io/autogen/docs/reference/oai/openai_utils#config_list_from_json) function loads a list of configurations from an environment variable or a json file.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import autogen\n", + "config_list = autogen.config_list_from_json(\n", + " \"OAI_CONFIG_LIST\",\n", + " filter_dict={\n", + " \"model\": [\"gpt-4\", \"gpt-4-0314\", \"gpt4\", \"gpt-4-32k\", \"gpt-4-32k-0314\", \"gpt-4-32k-v0314\"],\n", + " },\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "It first looks for environment variable \"OAI_CONFIG_LIST\" which needs to be a valid json string. If that variable is not found, it then looks for a json file named \"OAI_CONFIG_LIST\". It filters the configs by models (you can filter by other keys as well).\n", + "\n", + "The config list looks like the following:\n", + "```python\n", + "config_list = [\n", + " {\n", + " 'model': 'gpt-4',\n", + " 'api_key': '<your OpenAI API key here>',\n", + " },\n", + " {\n", + " 'model': 'gpt-4',\n", + " 'api_key': '<your Azure OpenAI API key here>',\n", + " 'base_url': '<your Azure OpenAI API base here>',\n", + " 'api_type': 'azure',\n", + " 'api_version': '2023-06-01-preview',\n", + " },\n", + " {\n", + " 'model': 'gpt-4-32k',\n", + " 'api_key': '<your Azure OpenAI API key here>',\n", + " 'base_url': '<your Azure OpenAI API base here>',\n", + " 'api_type': 'azure',\n", + " 'api_version': '2023-06-01-preview',\n", + " },\n", + "]\n", + "```\n", + "\n", + "If you open this notebook in colab, you can upload your files by clicking the file icon on the left panel and then choose \"upload file\" icon.\n", + "\n", + "You can set the value of config_list in other ways you prefer, e.g., loading from a YAML file." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 1\n", + "This example is from [agentchat_MathChat.ipynb](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_MathChat.ipynb). Compression with code execution.\n", + "\n", + "Note: we set `trigger_count=600`, and `leave_last_n=2`. In this example, we set a low trigger_count to demonstrate the compression feature. \n", + "The token count after compression is still bigger than trigger count, mainly because the trigger count is low an the first and last 2 messages are not compressed. Thus, the compression is performed at each turn. In practice, you want to adjust the trigger_count to a bigger number and properly set the `leave_last_n` to avoid compression at each turn. " + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[33mmathproxyagent\u001b[0m (to assistant):\n", + "\n", + "Let's use Python to solve a math problem.\n", + "\n", + "Query requirements:\n", + "You should always use the 'print' function for the output and use fractions/radical forms instead of decimals.\n", + "You can use packages like sympy to help you.\n", + "You must follow the formats below to write your code:\n", + "```python\n", + "# your code\n", + "```\n", + "\n", + "First state the key idea to solve the problem. You may choose from three ways to solve the problem:\n", + "Case 1: If the problem can be solved with Python code directly, please write a program to solve it. You can enumerate all possible arrangements if needed.\n", + "Case 2: If the problem is mostly reasoning, you can solve it by yourself directly.\n", + "Case 3: If the problem cannot be handled in the above two ways, please follow this process:\n", + "1. Solve the problem step by step (do not over-divide the steps).\n", + "2. Take out any queries that can be asked through Python (for example, any calculations or equations that can be calculated).\n", + "3. Wait for me to give the results.\n", + "4. Continue if you think the result is correct. If the result is invalid or unexpected, please correct your query or reasoning.\n", + "\n", + "After all the queries are run and you get the answer, put the answer in \\boxed{}.\n", + "\n", + "Problem:\n", + "Find all $x$ that satisfy the inequality $(2x+10)(x+3)<(3x+9)(x+8)$. Express your answer in interval notation.\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33massistant\u001b[0m (to mathproxyagent):\n", + "\n", + "First, we need to consider both sides of the inequality as two separate equations. Then subtract one from the other to set this result equal to zero. This would allow us to find the critical points, i.e., the places where the inequality changes its nature (from less to more or vice versa). Then we find the intervals.\n", + "\n", + "Here's how you can solve this problem in Python:\n", + "\n", + "```python\n", + "from sympy import *\n", + "from sympy.abc import x\n", + "\n", + "# define the equation\n", + "equation = (2*x+10)*(x+3) - (3*x+9)*(x+8)\n", + "\n", + "# set the equation equal to zero to find the critical points\n", + "critical_points = solve(equation, x)\n", + "\n", + "# Sort the critical_points\n", + "critical_points = sorted(critical_points)\n", + "\n", + "# define a function to test the intervals\n", + "def test_intervals(interval):\n", + " test_num = sum(interval)/2 # get the mid point of the interval\n", + " return equation.subs(x, test_num)\n", + "\n", + "# define the intervals based on the critical points\n", + "intervals = [(-oo, critical_points[0]), (critical_points[0], critical_points[1]), (critical_points[1], oo)]\n", + "\n", + "solution = []\n", + "\n", + "# loop through the intervals, if the result is less than zero, it means it's a valid interval\n", + "for i in intervals:\n", + " if test_intervals(i) < 0:\n", + " solution.append(i)\n", + "\n", + "# print the solution in interval notation\n", + "for interval in solution:\n", + " print(interval)\n", + "```\n", + "\n", + "Replace oo with infinity when interpreting the result. Also, keep in mind that in interval notation, parentheses denote that the endpoint is not included in the set, and brackets denote that the end point is included in the set. Thus, (a, b) means \"greater than a and less than b\", [a, b] means \"greater than or equal to a and less than or equal to b\".\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33mmathproxyagent\u001b[0m (to assistant):\n", + "\n", + "Error: Traceback (most recent call last):\n", + " File \"\", line 25, in <module>\n", + " if test_intervals(i) < 0:\n", + " return func(self, other)\n", + " return StrictLessThan(self, other)\n", + " raise TypeError(\"Invalid NaN comparison\")\n", + "TypeError: Invalid NaN comparison\n", + "\n", + "--------------------------------------------------------------------------------\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Warning: Compression skipped at trigger count threshold. The first msg and last 2 msgs will not be compressed. current msg count: 3. Consider raising trigger_count.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[33massistant\u001b[0m (to mathproxyagent):\n", + "\n", + "I apologize for the oversight. It seems like the function is returning NaN error. Because we are dealing with real numbers, NaN (Not a Number) error could arise from operations that don't return a defined real number. \n", + "\n", + "However, in this case, we it seems there's a problem with the comparison of symbolic terms with zero in the function test_intervals.\n", + "\n", + "Let's correct this approach. The error arises from trying to compare a symbolic expression to zero directly. Instead, we can create a numeric function from our symbolic expression, and use this function to test the intervals. \n", + "\n", + "Here is the revised code:\n", + "\n", + "```python\n", + "from sympy import *\n", + "from sympy.abc import x\n", + "\n", + "# define the equation\n", + "equation = expand((2*x+10)*(x+3) - (3*x+9)*(x+8))\n", + "\n", + "# set the equation equal to zero to find the critical points\n", + "critical_points = solve(equation, x)\n", + "\n", + "# Convert the points to standard python floats, so that they can be sorted numerically\n", + "critical_points = [N(i) for i in critical_points]\n", + "\n", + "# Sort the critical_points\n", + "critical_points = sorted(critical_points)\n", + "\n", + "# define a function to test the intervals\n", + "def test_intervals(interval):\n", + " test_num = N(sum(interval)/2) # get the mid point of the interval\n", + " return equation.subs(x, test_num)\n", + "\n", + "# define the intervals based on the critical points\n", + "intervals = [(-oo, critical_points[0]), (critical_points[0], critical_points[1]), (critical_points[1], oo)]\n", + "\n", + "# Now, let's create a numeric function from this symbolic equation\n", + "numeric_equation = lambdify(x, equation)\n", + "\n", + "solution = []\n", + "\n", + "# loop through the intervals, first find the mid point of each interval, \n", + "# then if numeric result for this mid point is less than zero, it means it's a valid interval\n", + "for interval in intervals:\n", + " mid_point = sum(interval) / 2 \n", + " if numeric_equation(mid_point) < 0:\n", + " solution.append(interval)\n", + "\n", + "# print the solution in interval notation\n", + "for interval in solution:\n", + " print(interval)\n", + "```\n", + "\n", + "Remember to replace `oo` with infinity while interpreting the output.\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33mmathproxyagent\u001b[0m (to assistant):\n", + "\n", + "Error: Traceback (most recent call last):\n", + " File \"\", line 36, in <module>\n", + " if numeric_equation(mid_point) < 0:\n", + " return func(self, other)\n", + " return StrictLessThan(self, other)\n", + " raise TypeError(\"Invalid NaN comparison\")\n", + "TypeError: Invalid NaN comparison\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[35m******************************Start compressing the following content:******************************\u001b[0m\n", + "To be compressed:\n", + "##ASSISTANT## First, we need to consider both sides of the inequality as two separate equations. Then subtract one from the other to set this result equal to zero. This would allow us to find the critical points, i.e., the places where the inequality changes its nature (from less to more or vice versa). Then we find the intervals.\n", + "\n", + "Here's how you can solve this problem in Python:\n", + "\n", + "```python\n", + "from sympy import *\n", + "from sympy.abc import x\n", + "\n", + "# define the equation\n", + "equation = (2*x+10)*(x+3) - (3*x+9)*(x+8)\n", + "\n", + "# set the equation equal to zero to find the critical points\n", + "critical_points = solve(equation, x)\n", + "\n", + "# Sort the critical_points\n", + "critical_points = sorted(critical_points)\n", + "\n", + "# define a function to test the intervals\n", + "def test_intervals(interval):\n", + " test_num = sum(interval)/2 # get the mid point of the interval\n", + " return equation.subs(x, test_num)\n", + "\n", + "# define the intervals based on the critical points\n", + "intervals = [(-oo, critical_points[0]), (critical_points[0], critical_points[1]), (critical_points[1], oo)]\n", + "\n", + "solution = []\n", + "\n", + "# loop through the intervals, if the result is less than zero, it means it's a valid interval\n", + "for i in intervals:\n", + " if test_intervals(i) < 0:\n", + " solution.append(i)\n", + "\n", + "# print the solution in interval notation\n", + "for interval in solution:\n", + " print(interval)\n", + "```\n", + "\n", + "Replace oo with infinity when interpreting the result. Also, keep in mind that in interval notation, parentheses denote that the endpoint is not included in the set, and brackets denote that the end point is included in the set. Thus, (a, b) means \"greater than a and less than b\", [a, b] means \"greater than or equal to a and less than or equal to b\".\n", + "##USER## Error: Traceback (most recent call last):\n", + " File \"\", line 25, in <module>\n", + " if test_intervals(i) < 0:\n", + " return func(self, other)\n", + " return StrictLessThan(self, other)\n", + " raise TypeError(\"Invalid NaN comparison\")\n", + "TypeError: Invalid NaN comparison\n", + "\n", + "\u001b[35m******************************Content after compressing:******************************\u001b[0m\n", + "##ASSISTANT##\n", + "The assistant provides instructions to solve an inequality, which involves considering separate equations for the inequality components, finding the differing point (set to zero), identifying critical points (where nature of inequality changes), and determining the intervals. \n", + "\n", + "They also share Python code for the process, using sympy library. Steps include defining the equation, finding critical points by setting equation to zero, sorting these points, defining a function to test the intervals, determining intervals based on critical points, and looping through intervals to identify valid solutions. The assistant defines 'oo' as infinity and clarifies the use of parentheses and brackets to denote exclusion or inclusion of endpoints in interval notation.\n", + "\n", + "##CODE##\n", + "Python script to solve the given inequality and display the solution using interval notation.\n", + "\n", + "##USER##\n", + "User encounters 'TypeError: Invalid NaN comparison', indicating there's an error when comparing a test interval to zero in the Python script shared by the assistant.\n", + " \u001b[35m\n", + "********************************************************************************\u001b[0m\n", + "\u001b[35mToken Count (including 13 tokens from system msg and function descriptions). Before compression : 1294 | After: 1045\u001b[0m\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33massistant\u001b[0m (to mathproxyagent):\n", + "\n", + "I apologize for the confusion. There's an error with the calculation of mid_point when the interval is from negative infinity to a real number or a real number to infinity. In these circumstances, the calculation will return a NaN which cannot be used in comparison. We could handle these issues specifically.\n", + "\n", + "Let's refine the script:\n", + "\n", + "```python\n", + "from sympy import *\n", + "from sympy.abc import x\n", + "\n", + "# define the equation\n", + "equation = expand((2*x+10)*(x+3) - (3*x+9)*(x+8))\n", + "\n", + "# set the equation equal to zero to find the critical points\n", + "critical_points = solve(equation, x)\n", + "\n", + "# Convert the points to standard python floats, so that they can be sorted numerically\n", + "critical_points = [N(i) for i in critical_points]\n", + "\n", + "# Sort the critical_points\n", + "critical_points = sorted(critical_points)\n", + "\n", + "# Now, let's create a numeric function from this symbolic equation\n", + "numeric_equation = lambdify(x, equation)\n", + "\n", + "solution = []\n", + "\n", + "# Define the intervals based on the critical points\n", + "intervals = [(-oo, critical_points[0]), (critical_points[0], critical_points[1]), (critical_points[1], oo)]\n", + "\n", + "# Loop through the intervals and compute the mid point of each interval\n", + "# If the mid point is NaN (occurs when dealing with infinity), then specific values are used for testing\n", + "for interval in intervals:\n", + " if interval[0] == -oo:\n", + " test_value = interval[1] - 1\n", + " elif interval[1] == oo:\n", + " test_value = interval[0] + 1\n", + " else:\n", + " test_value = sum(interval) / 2\n", + "\n", + " # If numeric result for test_value is less than zero, it's a valid interval\n", + " if numeric_equation(test_value) < 0:\n", + " solution.append(interval)\n", + "\n", + "# Print out the solution intervals\n", + "for interval in solution:\n", + " print(interval)\n", + "```\n", + "\n", + "The script now handles the special cases when dealing with infinity and should return the valid intervals.\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33mmathproxyagent\u001b[0m (to assistant):\n", + "\n", + "(-oo, -14.0000000000000)\n", + "(-3.00000000000000, oo)\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[35m******************************Start compressing the following content:******************************\u001b[0m\n", + "To be compressed:\n", + "##ASSISTANT##\n", + "The assistant provides instructions to solve an inequality, which involves considering separate equations for the inequality components, finding the differing point (set to zero), identifying critical points (where nature of inequality changes), and determining the intervals. \n", + "\n", + "They also share Python code for the process, using sympy library. Steps include defining the equation, finding critical points by setting equation to zero, sorting these points, defining a function to test the intervals, determining intervals based on critical points, and looping through intervals to identify valid solutions. The assistant defines 'oo' as infinity and clarifies the use of parentheses and brackets to denote exclusion or inclusion of endpoints in interval notation.\n", + "\n", + "##CODE##\n", + "Python script to solve the given inequality and display the solution using interval notation.\n", + "\n", + "##USER##\n", + "User encounters 'TypeError: Invalid NaN comparison', indicating there's an error when comparing a test interval to zero in the Python script shared by the assistant.\n", + "\n", + "##ASSISTANT## I apologize for the oversight. It seems like the function is returning NaN error. Because we are dealing with real numbers, NaN (Not a Number) error could arise from operations that don't return a defined real number. \n", + "\n", + "However, in this case, we it seems there's a problem with the comparison of symbolic terms with zero in the function test_intervals.\n", + "\n", + "Let's correct this approach. The error arises from trying to compare a symbolic expression to zero directly. Instead, we can create a numeric function from our symbolic expression, and use this function to test the intervals. \n", + "\n", + "Here is the revised code:\n", + "\n", + "```python\n", + "from sympy import *\n", + "from sympy.abc import x\n", + "\n", + "# define the equation\n", + "equation = expand((2*x+10)*(x+3) - (3*x+9)*(x+8))\n", + "\n", + "# set the equation equal to zero to find the critical points\n", + "critical_points = solve(equation, x)\n", + "\n", + "# Convert the points to standard python floats, so that they can be sorted numerically\n", + "critical_points = [N(i) for i in critical_points]\n", + "\n", + "# Sort the critical_points\n", + "critical_points = sorted(critical_points)\n", + "\n", + "# define a function to test the intervals\n", + "def test_intervals(interval):\n", + " test_num = N(sum(interval)/2) # get the mid point of the interval\n", + " return equation.subs(x, test_num)\n", + "\n", + "# define the intervals based on the critical points\n", + "intervals = [(-oo, critical_points[0]), (critical_points[0], critical_points[1]), (critical_points[1], oo)]\n", + "\n", + "# Now, let's create a numeric function from this symbolic equation\n", + "numeric_equation = lambdify(x, equation)\n", + "\n", + "solution = []\n", + "\n", + "# loop through the intervals, first find the mid point of each interval, \n", + "# then if numeric result for this mid point is less than zero, it means it's a valid interval\n", + "for interval in intervals:\n", + " mid_point = sum(interval) / 2 \n", + " if numeric_equation(mid_point) < 0:\n", + " solution.append(interval)\n", + "\n", + "# print the solution in interval notation\n", + "for interval in solution:\n", + " print(interval)\n", + "```\n", + "\n", + "Remember to replace `oo` with infinity while interpreting the output.\n", + "##USER## Error: Traceback (most recent call last):\n", + " File \"\", line 36, in <module>\n", + " if numeric_equation(mid_point) < 0:\n", + " return func(self, other)\n", + " return StrictLessThan(self, other)\n", + " raise TypeError(\"Invalid NaN comparison\")\n", + "TypeError: Invalid NaN comparison\n", + "\n", + "\u001b[35m******************************Content after compressing:******************************\u001b[0m\n", + "##ASSISTANT##\n", + "The assistant provides steps to solve an inequality, including considering separate equations, finding the differing point (set to zero), identifying critical points, and determining intervals. They provide Python code using sympy for the process, defining 'oo' as infinity and explaining usage of parentheses and brackets in interval notation. \n", + "\n", + "##CODE##\n", + "The assistant provides Python code for solving an inequality and displaying the solution in interval notation.\n", + "\n", + "##USER##\n", + "The user reports encountering a 'TypeError: Invalid NaN comparison' when comparing a test interval to zero in the script provided by the assistant.\n", + "\n", + "##ASSISTANT##\n", + "The assistant apologizes for the oversight and suggests the issue might lie in the comparison of symbolic terms with zero. The assistant then provides revised code, explaining it creates a numeric function from the symbolic expression to test the intervals. It's highlighted to replace 'oo' with infinity when interpreting the output.\n", + "\n", + "##CODE##\n", + "Revised Python code is given by the assistant to solve a TypeError that occurred in the initial code.\n", + "\n", + "##USER##\n", + "The user reports another TypeError ('Invalid NaN comparison') when executing the revised code provided by the assistant. \u001b[35m\n", + "********************************************************************************\u001b[0m\n", + "\u001b[35mToken Count (including 13 tokens from system msg and function descriptions). Before compression : 1494 | After: 1013\u001b[0m\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33massistant\u001b[0m (to mathproxyagent):\n", + "\n", + "Great! You have got the correct answer.\n", + "\n", + "So, for $x$ in the interval $(-\\infty, -14]$ and $(-3, +\\infty)$, the inequality $(2x+10)(x+3)<(3x+9)(x+8)$ is satisfied. \n", + "\n", + "In interval notation, this result can be written as $(-\\infty, -14] \\cup (-3, +\\infty)$.\n", + "\n", + "The final answer is:\n", + "\n", + "\\boxed{(-\\infty, -14] \\cup (-3, +\\infty)}\n", + "\n", + "--------------------------------------------------------------------------------\n" + ] + } + ], + "source": [ + "from autogen.agentchat.contrib.math_user_proxy_agent import MathUserProxyAgent\n", + "from autogen.agentchat.contrib.compressible_agent import CompressibleAgent\n", + "\n", + "# 1. replace AssistantAgent with CompressibleAgent\n", + "assistant = CompressibleAgent(\n", + " name=\"assistant\", \n", + " system_message=\"You are a helpful assistant.\",\n", + " llm_config={\n", + " \"timeout\": 600,\n", + " \"cache_seed\": 42,\n", + " \"config_list\": config_list,\n", + " },\n", + " compress_config={\n", + " \"mode\": \"COMPRESS\",\n", + " \"trigger_count\": 600, # set this to a large number for less frequent compression\n", + " \"verbose\": True, # to allow printing of compression information: contex before and after compression\n", + " \"leave_last_n\": 2,\n", + " }\n", + ")\n", + "\n", + "# 2. create the MathUserProxyAgent instance named \"mathproxyagent\"\n", + "mathproxyagent = MathUserProxyAgent(\n", + " name=\"mathproxyagent\", \n", + " human_input_mode=\"NEVER\",\n", + " code_execution_config={\"use_docker\": False},\n", + " max_consecutive_auto_reply=5,\n", + ")\n", + "math_problem = \"Find all $x$ that satisfy the inequality $(2x+10)(x+3)<(3x+9)(x+8)$. Express your answer in interval notation.\"\n", + "mathproxyagent.initiate_chat(assistant, problem=math_problem)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 2\n", + "This example is from [agentchat_function_call.ipynb](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_function_call.ipynb). Compression with function calls. " + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[33muser_proxy\u001b[0m (to chatbot):\n", + "\n", + "Draw two agents chatting with each other with an example dialog. Don't add plt.show().\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33mchatbot\u001b[0m (to user_proxy):\n", + "\n", + "\u001b[32m***** Suggested function Call: python *****\u001b[0m\n", + "Arguments: \n", + "{\n", + " \"cell\": \n", + " \"import matplotlib.pyplot as plt\n", + "\n", + " # Define agent texts\n", + " agent1_texts = ['Hello there!', 'Nice to meet you.', 'How can I assist you?']\n", + " agent2_texts = ['Hey!', 'Nice meeting you too.', 'Could you help me solve a problem?']\n", + "\n", + " # Define agent y positions\n", + " agent1_y = [3, 2, 1]\n", + " agent2_y = [3, 2, 1]\n", + "\n", + " # Create figure and axis\n", + " fig, ax = plt.subplots()\n", + "\n", + " # Plot Agent 1 texts\n", + " for i, text in enumerate(agent1_texts):\n", + " ax.text(0, agent1_y[i], text, fontsize=12, ha='right')\n", + "\n", + " # Plot Agent 2 texts\n", + " for i, text in enumerate(agent2_texts):\n", + " ax.text(1, agent2_y[i], text, fontsize=12, ha='left')\n", + "\n", + " # Set plot attributes\n", + " ax.set_xlim(-0.5, 1.5)\n", + " ax.set_ylim(0, 4)\n", + " ax.set_xticks([0, 1])\n", + " ax.set_xticklabels(['Agent 1', 'Agent 2'])\n", + " ax.set_yticks([])\n", + " ax.spines['top'].set_visible(False)\n", + " ax.spines['right'].set_visible(False)\n", + " ax.spines['bottom'].set_visible(False)\"\n", + "}\n", + "\u001b[32m*******************************************\u001b[0m\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[35m\n", + ">>>>>>>> EXECUTING FUNCTION python...\u001b[0m\n" + ] + }, + { + "ename": "IndentationError", + "evalue": "unexpected indent (1440792568.py, line 4)", + "output_type": "error", + "traceback": [ + "\u001b[0;36m Cell \u001b[0;32mIn[3], line 4\u001b[0;36m\u001b[0m\n\u001b[0;31m agent1_texts = ['Hello there!', 'Nice to meet you.', 'How can I assist you?']\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mIndentationError\u001b[0m\u001b[0;31m:\u001b[0m unexpected indent\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[33muser_proxy\u001b[0m (to chatbot):\n", + "\n", + "\u001b[32m***** Response from calling function \"python\" *****\u001b[0m\n", + "None\n", + "unexpected indent (1440792568.py, line 4)\n", + "\u001b[32m***************************************************\u001b[0m\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33mchatbot\u001b[0m (to user_proxy):\n", + "\n", + "\u001b[32m***** Suggested function Call: python *****\u001b[0m\n", + "Arguments: \n", + "{\n", + " \"cell\": \n", + " \"import matplotlib.pyplot as plt\n", + "\n", + "# Define agent texts\n", + "agent1_texts = ['Hello there!', 'Nice to meet you.', 'How can I assist you?']\n", + "agent2_texts = ['Hey!', 'Nice meeting you too.', 'Could you help me solve a problem?']\n", + "\n", + "# Define agent y positions\n", + "agent1_y = [3, 2, 1]\n", + "agent2_y = [3, 2, 1]\n", + "\n", + "# Create figure and axis\n", + "fig, ax = plt.subplots()\n", + "\n", + "# Plot Agent 1 texts\n", + "for i, text in enumerate(agent1_texts):\n", + " ax.text(0, agent1_y[i], text, fontsize=12, ha='right')\n", + "\n", + "# Plot Agent 2 texts\n", + "for i, text in enumerate(agent2_texts):\n", + " ax.text(1, agent2_y[i], text, fontsize=12, ha='left')\n", + "\n", + "# Set plot attributes\n", + "ax.set_xlim(-0.5, 1.5)\n", + "ax.set_ylim(0, 4)\n", + "ax.set_xticks([0, 1])\n", + "ax.set_xticklabels(['Agent 1', 'Agent 2'])\n", + "ax.set_yticks([])\n", + "ax.spines['top'].set_visible(False)\n", + "ax.spines['right'].set_visible(False)\n", + "ax.spines['bottom'].set_visible(False)\"\n", + "}\n", + "\u001b[32m*******************************************\u001b[0m\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[35m\n", + ">>>>>>>> EXECUTING FUNCTION python...\u001b[0m\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "<Figure size 640x480 with 1 Axes>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[33muser_proxy\u001b[0m (to chatbot):\n", + "\n", + "\u001b[32m***** Response from calling function \"python\" *****\u001b[0m\n", + "None\n", + "\u001b[32m***************************************************\u001b[0m\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[35m******************************Start compressing the following content:******************************\u001b[0m\n", + "To be compressed:\n", + "##FUNCTION_CALL## \n", + "Name: python\n", + "Args: {\n", + " \"cell\": \n", + " \"import matplotlib.pyplot as plt\n", + "\n", + " # Define agent texts\n", + " agent1_texts = ['Hello there!', 'Nice to meet you.', 'How can I assist you?']\n", + " agent2_texts = ['Hey!', 'Nice meeting you too.', 'Could you help me solve a problem?']\n", + "\n", + " # Define agent y positions\n", + " agent1_y = [3, 2, 1]\n", + " agent2_y = [3, 2, 1]\n", + "\n", + " # Create figure and axis\n", + " fig, ax = plt.subplots()\n", + "\n", + " # Plot Agent 1 texts\n", + " for i, text in enumerate(agent1_texts):\n", + " ax.text(0, agent1_y[i], text, fontsize=12, ha='right')\n", + "\n", + " # Plot Agent 2 texts\n", + " for i, text in enumerate(agent2_texts):\n", + " ax.text(1, agent2_y[i], text, fontsize=12, ha='left')\n", + "\n", + " # Set plot attributes\n", + " ax.set_xlim(-0.5, 1.5)\n", + " ax.set_ylim(0, 4)\n", + " ax.set_xticks([0, 1])\n", + " ax.set_xticklabels(['Agent 1', 'Agent 2'])\n", + " ax.set_yticks([])\n", + " ax.spines['top'].set_visible(False)\n", + " ax.spines['right'].set_visible(False)\n", + " ax.spines['bottom'].set_visible(False)\"\n", + "}\n", + "##FUNCTION_RETURN## (from function \"python\"): \n", + "None\n", + "unexpected indent (1440792568.py, line 4)\n", + "\n", + "\u001b[35m******************************Content after compressing:******************************\u001b[0m\n", + "##FUNCTION_CALL##\n", + "Name: python\n", + "Args: Executing a block of Python code that imports the matplotlib.pyplot library for graphing and plotting. It defines texts for two agents and sets y positions. It also creates a figure and plots the agent texts on a graph with specific attributes.\n", + " \n", + "##FUNCTION_RETURN## (from function \"python\"):\n", + "None. Execution failed due to an unexpected indentation error at line 4.\n", + " \u001b[35m\n", + "********************************************************************************\u001b[0m\n", + "\u001b[35mToken Count (including 107 tokens from system msg and function descriptions). Before compression : 821 | After: 564\u001b[0m\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33mchatbot\u001b[0m (to user_proxy):\n", + "\n", + "TERMINATE\n", + "\n", + "--------------------------------------------------------------------------------\n" + ] + } + ], + "source": [ + "llm_config = {\n", + " \"functions\": [\n", + " {\n", + " \"name\": \"python\",\n", + " \"description\": \"run cell in ipython and return the execution result.\",\n", + " \"parameters\": {\n", + " \"type\": \"object\",\n", + " \"properties\": {\n", + " \"cell\": {\n", + " \"type\": \"string\",\n", + " \"description\": \"Valid Python cell to execute.\",\n", + " }\n", + " },\n", + " \"required\": [\"cell\"],\n", + " },\n", + " },\n", + " {\n", + " \"name\": \"sh\",\n", + " \"description\": \"run a shell script and return the execution result.\",\n", + " \"parameters\": {\n", + " \"type\": \"object\",\n", + " \"properties\": {\n", + " \"script\": {\n", + " \"type\": \"string\",\n", + " \"description\": \"Valid shell script to execute.\",\n", + " }\n", + " },\n", + " \"required\": [\"script\"],\n", + " },\n", + " },\n", + " ],\n", + " \"config_list\": config_list,\n", + " \"timeout\": 120,\n", + "}\n", + "import autogen\n", + "from autogen.agentchat.contrib.compressible_agent import CompressibleAgent\n", + "\n", + "chatbot = CompressibleAgent(\n", + " name=\"chatbot\",\n", + " system_message=\"For coding tasks, only use the functions you have been provided with. Reply TERMINATE when the task is done.\",\n", + " llm_config=llm_config,\n", + " compress_config={\n", + " \"mode\": \"COMPRESS\",\n", + " \"trigger_count\": 600, # set this to a large number for less frequent compression\n", + " \"verbose\": True, # set this to False to suppress the compression log\n", + " \"leave_last_n\": 2,\n", + " }\n", + ")\n", + "\n", + "# create a UserProxyAgent instance named \"user_proxy\"\n", + "user_proxy = autogen.UserProxyAgent(\n", + " name=\"user_proxy\",\n", + " is_termination_msg=lambda x: x.get(\"content\", \"\") and x.get(\"content\", \"\").rstrip().endswith(\"TERMINATE\"),\n", + " human_input_mode=\"NEVER\",\n", + " max_consecutive_auto_reply=10,\n", + " code_execution_config={\"work_dir\": \"coding\"},\n", + ")\n", + "\n", + "# define functions according to the function desription\n", + "from IPython import get_ipython\n", + "\n", + "def exec_python(cell):\n", + " ipython = get_ipython()\n", + " result = ipython.run_cell(cell)\n", + " log = str(result.result)\n", + " if result.error_before_exec is not None:\n", + " log += f\"\\n{result.error_before_exec}\"\n", + " if result.error_in_exec is not None:\n", + " log += f\"\\n{result.error_in_exec}\"\n", + " return log\n", + "\n", + "def exec_sh(script):\n", + " return user_proxy.execute_code_blocks([(\"sh\", script)])\n", + "\n", + "# register the functions\n", + "user_proxy.register_function(\n", + " function_map={\n", + " \"python\": exec_python,\n", + " \"sh\": exec_sh,\n", + " }\n", + ")\n", + "\n", + "# start the conversation\n", + "user_proxy.initiate_chat(\n", + " chatbot,\n", + " message=\"Draw two agents chatting with each other with an example dialog. Don't add plt.show().\",\n", + ")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 3\n", + "This example is from [agent_chat_web_info.ipynb](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_web_info.ipynb). \n", + "We use this example to demonstrate how to pass in a customized compression function. We pass in an compression function `constrain_num_messages`, which constrains the number of messages to be 3 or less. \n", + "The customized function should accept a list of messages as input and return a tuple of `(is_success: bool, compressed_messages: List[Dict])`." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[33muser_proxy\u001b[0m (to assistant):\n", + "\n", + "Show me the YTD gain of 10 largest technology companies as of today.\n", + "\n", + "--------------------------------------------------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[33massistant\u001b[0m (to user_proxy):\n", + "\n", + "To fulfill your request, we first need a list of the 10 largest technology companies by market cap. Unfortunately, real-time financial data is gated behind paywalls, so it's difficult to get up-to-date reliable information through coding here. \n", + "\n", + "However, I can provide you a script to download YTD performance for a given list of companies if you already know the list. Below is an example using Yahoo Finance, for which Python has a usable API.\n", + "\n", + "Frequently mentioned largest technology companies include: Apple (AAPL), Microsoft (MSFT), Alphabet (GOOGL), Amazon (AMZN), Meta (FB), Tesla (TSLA), Alibaba group holding (BABA), Taiwan Semiconductor (TSM), Tencent (TCEHY), Oracle (ORCL). Adjust as necessary for your purpose.\n", + "\n", + "First, we need to install yfinance module:\n", + "\n", + "```sh\n", + "pip install yfinance\n", + "```\n", + "\n", + "Then, you can use this Python script to get the YTD performance. \n", + "\n", + "This Python script first gets the price at the beginning of the year, and then the most recent price. The difference between those two prices, divided by the starting price, gives the YTD performance.\n", + "\n", + "```python\n", + "# filename: ytd_gain.py\n", + "\n", + "import yfinance as yf\n", + "from datetime import datetime\n", + "\n", + "# Define the tickers\n", + "tickers = ['AAPL', 'MSFT', 'GOOGL', 'AMZN', 'FB', 'TSLA', 'BABA', 'TSM', 'TCEHY', 'ORCL']\n", + "now = datetime.now()\n", + "\n", + "# Define the current year\n", + "current_year = now.year\n", + "\n", + "# Iterate through each ticker\n", + "for ticker in tickers:\n", + " # Download the year-to-date data for this ticker\n", + " ticker_data = yf.download(ticker, start=f'{current_year}-01-01', end=f'{now.year}-{now.month}-{now.day}')\n", + "\n", + " # Get the close price at the beginning of the year\n", + " initial_price = ticker_data['Close'][0]\n", + "\n", + " # Get the most recent close price\n", + " most_recent_price = ticker_data['Close'][-1]\n", + "\n", + " # Calculate the year-to-date return\n", + " ytd_return = (most_recent_price - initial_price) / initial_price * 100\n", + "\n", + " # Print the result\n", + " print(f'The YTD return for {ticker} is {ytd_return:.2f}%')\n", + "```\n", + "\n", + "Run the file in shell:\n", + "\n", + "```sh\n", + "python ytd_gain.py\n", + "```\n", + "\n", + "The output will be the YTD gain (%) of each company to the console. Please note that actual results will depend on the input list of tickers and the current date.\n", + "\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[31m\n", + ">>>>>>>> USING AUTO REPLY...\u001b[0m\n", + "\u001b[31m\n", + ">>>>>>>> EXECUTING CODE BLOCK 0 (inferred language is sh)...\u001b[0m\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "execute_code was called without specifying a value for use_docker. Since the python docker package is not available, code will be run natively. Note: this fallback behavior is subject to change\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[31m\n", + ">>>>>>>> EXECUTING CODE BLOCK 1 (inferred language is python)...\u001b[0m\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "execute_code was called without specifying a value for use_docker. Since the python docker package is not available, code will be run natively. Note: this fallback behavior is subject to change\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[33muser_proxy\u001b[0m (to assistant):\n", + "\n", + "exitcode: 1 (execution failed)\n", + "Code output: \n", + "Requirement already satisfied: yfinance in /home/ykw5399/.conda/envs/dev2/lib/python3.9/site-packages (0.2.31)\n", + "Requirement already satisfied: pandas>=1.3.0 in /home/ykw5399/.conda/envs/dev2/lib/python3.9/site-packages (from yfinance) (2.1.2)\n", + "Requirement already satisfied: numpy>=1.16.5 in /home/ykw5399/.conda/envs/dev2/lib/python3.9/site-packages (from yfinance) (1.26.1)\n", + "Requirement already satisfied: requests>=2.31 in /home/ykw5399/.conda/envs/dev2/lib/python3.9/site-packages (from yfinance) (2.31.0)\n", + "Requirement already satisfied: multitasking>=0.0.7 in /home/ykw5399/.conda/envs/dev2/lib/python3.9/site-packages (from yfinance) (0.0.11)\n", + "Requirement already satisfied: lxml>=4.9.1 in /home/ykw5399/.conda/envs/dev2/lib/python3.9/site-packages (from yfinance) (4.9.3)\n", + "Requirement already satisfied: appdirs>=1.4.4 in /home/ykw5399/.conda/envs/dev2/lib/python3.9/site-packages (from yfinance) (1.4.4)\n", + "Requirement already satisfied: pytz>=2022.5 in /home/ykw5399/.conda/envs/dev2/lib/python3.9/site-packages (from yfinance) (2023.3.post1)\n", + "Requirement already satisfied: frozendict>=2.3.4 in /home/ykw5399/.conda/envs/dev2/lib/python3.9/site-packages (from yfinance) (2.3.8)\n", + "Requirement already satisfied: peewee>=3.16.2 in /home/ykw5399/.conda/envs/dev2/lib/python3.9/site-packages (from yfinance) (3.17.0)\n", + "Requirement already satisfied: beautifulsoup4>=4.11.1 in /home/ykw5399/.conda/envs/dev2/lib/python3.9/site-packages (from yfinance) (4.12.2)\n", + "Requirement already satisfied: html5lib>=1.1 in /home/ykw5399/.conda/envs/dev2/lib/python3.9/site-packages (from yfinance) (1.1)\n", + "Requirement already satisfied: soupsieve>1.2 in /home/ykw5399/.conda/envs/dev2/lib/python3.9/site-packages (from beautifulsoup4>=4.11.1->yfinance) (2.5)\n", + "Requirement already satisfied: six>=1.9 in /home/ykw5399/.conda/envs/dev2/lib/python3.9/site-packages (from html5lib>=1.1->yfinance) (1.16.0)\n", + "Requirement already satisfied: webencodings in /home/ykw5399/.conda/envs/dev2/lib/python3.9/site-packages (from html5lib>=1.1->yfinance) (0.5.1)\n", + "Requirement already satisfied: python-dateutil>=2.8.2 in /home/ykw5399/.conda/envs/dev2/lib/python3.9/site-packages (from pandas>=1.3.0->yfinance) (2.8.2)\n", + "Requirement already satisfied: tzdata>=2022.1 in /home/ykw5399/.conda/envs/dev2/lib/python3.9/site-packages (from pandas>=1.3.0->yfinance) (2023.3)\n", + "Requirement already satisfied: charset-normalizer<4,>=2 in /home/ykw5399/.conda/envs/dev2/lib/python3.9/site-packages (from requests>=2.31->yfinance) (3.3.1)\n", + "Requirement already satisfied: idna<4,>=2.5 in /home/ykw5399/.conda/envs/dev2/lib/python3.9/site-packages (from requests>=2.31->yfinance) (3.4)\n", + "Requirement already satisfied: urllib3<3,>=1.21.1 in /home/ykw5399/.conda/envs/dev2/lib/python3.9/site-packages (from requests>=2.31->yfinance) (2.0.7)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /home/ykw5399/.conda/envs/dev2/lib/python3.9/site-packages (from requests>=2.31->yfinance) (2023.7.22)\n", + "\n", + "ytd_gain.py:19: FutureWarning: Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`\n", + " initial_price = ticker_data['Close'][0]\n", + "ytd_gain.py:22: FutureWarning: Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`\n", + " most_recent_price = ticker_data['Close'][-1]\n", + "ytd_gain.py:19: FutureWarning: Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`\n", + " initial_price = ticker_data['Close'][0]\n", + "ytd_gain.py:22: FutureWarning: Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`\n", + " most_recent_price = ticker_data['Close'][-1]\n", + "ytd_gain.py:19: FutureWarning: Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`\n", + " initial_price = ticker_data['Close'][0]\n", + "ytd_gain.py:22: FutureWarning: Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`\n", + " most_recent_price = ticker_data['Close'][-1]\n", + "ytd_gain.py:19: FutureWarning: Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`\n", + " initial_price = ticker_data['Close'][0]\n", + "ytd_gain.py:22: FutureWarning: Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`\n", + " most_recent_price = ticker_data['Close'][-1]\n", + "\n", + "1 Failed download:\n", + "['FB']: Exception('%ticker%: No timezone found, symbol may be delisted')\n", + "Traceback (most recent call last):\n", + " File \"ytd_gain.py\", line 19, in <module>\n", + " initial_price = ticker_data['Close'][0]\n", + " File \"/home/ykw5399/.conda/envs/dev2/lib/python3.9/site-packages/pandas/core/series.py\", line 1037, in __getitem__\n", + " return self._values[key]\n", + "IndexError: index 0 is out of bounds for axis 0 with size 0\n", + "\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33massistant\u001b[0m (to user_proxy):\n", + "\n", + "There seems to be an issue with the ticker symbol 'FB'. The error message shows 'FB': No timezone found, symbol may be delisted. This is because 'FB' has been recently changed to 'META' so the symbol 'FB' is causing the issue.\n", + "\n", + "We can replace 'FB' with 'META' and rerun the Python script. The error messages for series indexing are warnings rather than errors. It seems recent changes in pandas library caused these warnings. To resolve this, `iloc` function will be utilized to get the first and last items of the Series.\n", + "\n", + "Here is the updated Python script:\n", + "\n", + "```python\n", + "# filename: ytd_gain.py\n", + "\n", + "import yfinance as yf\n", + "from datetime import datetime\n", + "\n", + "# Define the tickers\n", + "tickers = ['AAPL', 'MSFT', 'GOOGL', 'AMZN', 'META', 'TSLA', 'BABA', 'TSM', 'TCEHY', 'ORCL']\n", + "now = datetime.now()\n", + "\n", + "# Define the current year\n", + "current_year = now.year\n", + "\n", + "# Iterate through each ticker\n", + "for ticker in tickers:\n", + " # Download the year-to-date data for this ticker\n", + " ticker_data = yf.download(ticker, start=f'{current_year}-01-01', end=f'{now.year}-{now.month}-{now.day}')\n", + "\n", + " # Get the close price at the beginning of the year\n", + " initial_price = ticker_data['Close'].iloc[0]\n", + "\n", + " # Get the most recent close price\n", + " most_recent_price = ticker_data['Close'].iloc[-1]\n", + "\n", + " # Calculate the year-to-date return\n", + " ytd_return = (most_recent_price - initial_price) / initial_price * 100\n", + "\n", + " # Print the result\n", + " print(f'The YTD return for {ticker} is {ytd_return:.2f}%')\n", + "```\n", + "\n", + "Run the file in shell:\n", + "\n", + "```sh\n", + "python ytd_gain.py\n", + "```\n", + "\n", + "This script will print the YTD gain (%) of each company to the console.\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[31m\n", + ">>>>>>>> USING AUTO REPLY...\u001b[0m\n", + "\u001b[31m\n", + ">>>>>>>> EXECUTING CODE BLOCK 0 (inferred language is python)...\u001b[0m\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "execute_code was called without specifying a value for use_docker. Since the python docker package is not available, code will be run natively. Note: this fallback behavior is subject to change\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[31m\n", + ">>>>>>>> EXECUTING CODE BLOCK 1 (inferred language is sh)...\u001b[0m\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "execute_code was called without specifying a value for use_docker. Since the python docker package is not available, code will be run natively. Note: this fallback behavior is subject to change\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[33muser_proxy\u001b[0m (to assistant):\n", + "\n", + "exitcode: 0 (execution succeeded)\n", + "Code output: \n", + "\n", + "[*********************100%%**********************] 1 of 1 completed\n", + "The YTD return for AAPL is 41.24%\n", + "\n", + "[*********************100%%**********************] 1 of 1 completed\n", + "The YTD return for MSFT is 47.26%\n", + "\n", + "[*********************100%%**********************] 1 of 1 completed\n", + "The YTD return for GOOGL is 44.86%\n", + "\n", + "[*********************100%%**********************] 1 of 1 completed\n", + "The YTD return for AMZN is 61.50%\n", + "\n", + "[*********************100%%**********************] 1 of 1 completed\n", + "The YTD return for META is 152.20%\n", + "\n", + "[*********************100%%**********************] 1 of 1 completed\n", + "The YTD return for TSLA is 103.48%\n", + "\n", + "[*********************100%%**********************] 1 of 1 completed\n", + "The YTD return for BABA is -7.25%\n", + "\n", + "[*********************100%%**********************] 1 of 1 completed\n", + "The YTD return for TSM is 23.99%\n", + "\n", + "[*********************100%%**********************] 1 of 1 completed\n", + "The YTD return for TCEHY is -12.16%\n", + "\n", + "[*********************100%%**********************] 1 of 1 completed\n", + "The YTD return for ORCL is 29.06%\n", + "\n", + "\n", + "[*********************100%%**********************] 1 of 1 completed\n", + "The YTD return for AAPL is 41.24%\n", + "\n", + "[*********************100%%**********************] 1 of 1 completed\n", + "The YTD return for MSFT is 47.26%\n", + "\n", + "[*********************100%%**********************] 1 of 1 completed\n", + "The YTD return for GOOGL is 44.86%\n", + "\n", + "[*********************100%%**********************] 1 of 1 completed\n", + "The YTD return for AMZN is 61.50%\n", + "\n", + "[*********************100%%**********************] 1 of 1 completed\n", + "The YTD return for META is 152.20%\n", + "\n", + "[*********************100%%**********************] 1 of 1 completed\n", + "The YTD return for TSLA is 103.48%\n", + "\n", + "[*********************100%%**********************] 1 of 1 completed\n", + "The YTD return for BABA is -7.25%\n", + "\n", + "[*********************100%%**********************] 1 of 1 completed\n", + "The YTD return for TSM is 23.99%\n", + "\n", + "[*********************100%%**********************] 1 of 1 completed\n", + "The YTD return for TCEHY is -12.16%\n", + "\n", + "[*********************100%%**********************] 1 of 1 completed\n", + "The YTD return for ORCL is 29.06%\n", + "\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[35mToken Count (including 468 tokens from system msg and function descriptions). Before compression : 3684 | After: 1509\u001b[0m\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33massistant\u001b[0m (to user_proxy):\n", + "\n", + "It appears that you've run the script twice, as the results are duplicated. From the code output, here are the Year-to-Date (YTD) returns for the 10 largest technology companies:\n", + "\n", + "1. AAPL (Apple): 41.24% gain\n", + "2. MSFT (Microsoft): 47.26% gain\n", + "3. GOOGL (Alphabet Class A): 44.86% gain\n", + "4. AMZN (Amazon): 61.50% gain\n", + "5. META (Meta Platforms, previously Facebook): 152.20% gain\n", + "6. TSLA (Tesla): 103.48% gain\n", + "7. BABA (Alibaba): -7.25% loss\n", + "8. TSM (Taiwan Semiconductor Manufacturing): 23.99% gain\n", + "9. TCEHY (Tencent Holdings): -12.16% loss\n", + "10. ORCL (Oracle): 29.06% gain\n", + "\n", + "Please note, the percentage change could have slight differences due to market volatility and the exact times the prices were taken. \n", + "\n", + "If everything looks good, let's wrap up. If you need any more help with other tasks, just let me know! \n", + "\n", + "TERMINATE\n", + "\n", + "--------------------------------------------------------------------------------\n" + ] + } + ], + "source": [ + "import autogen\n", + "from autogen.agentchat.contrib.math_user_proxy_agent import MathUserProxyAgent\n", + "from autogen.agentchat.contrib.compressible_agent import CompressibleAgent\n", + "\n", + "def constrain_num_messages(messages):\n", + " \"\"\"Constrain the number of messages to 3.\n", + " \n", + " This is an example of a customized compression function.\n", + "\n", + " Returns:\n", + " bool: whether the compression is successful.\n", + " list: the compressed messages.\n", + " \"\"\"\n", + " if len(messages) <= 3:\n", + " # do nothing\n", + " return False, None\n", + " \n", + " # save the first and last two messages\n", + " return True, messages[:1] + messages[-2:]\n", + "\n", + "# create a CompressibleAgent instance named \"assistant\"\n", + "assistant = CompressibleAgent(\n", + " name=\"assistant\",\n", + " llm_config={\n", + " \"timeout\": 600,\n", + " \"cache_seed\": 43,\n", + " \"config_list\": config_list,\n", + " },\n", + " compress_config={\n", + " \"mode\": \"CUSTOMIZED\",\n", + " \"compress_function\": constrain_num_messages, # this is required for customized compression\n", + " \"trigger_count\": 1600, \n", + " },\n", + ")\n", + "\n", + "# create a UserProxyAgent instance named \"user_proxy\"\n", + "user_proxy = autogen.UserProxyAgent(\n", + " name=\"user_proxy\",\n", + " human_input_mode=\"TERMINATE\",\n", + " max_consecutive_auto_reply=10,\n", + " is_termination_msg=lambda x: x.get(\"content\", \"\").rstrip().endswith(\"TERMINATE\") or x.get(\"content\", \"\").rstrip().endswith(\"TERMINATE.\"),\n", + " code_execution_config={\"work_dir\": \"web\"},\n", + " system_message=\"\"\"Reply TERMINATE if the task has been solved at full satisfaction.\n", + "Otherwise, reply CONTINUE, or the reason why the task is not solved yet.\"\"\"\n", + ")\n", + "\n", + "user_proxy.initiate_chat(\n", + " assistant,\n", + " message=\"\"\"Show me the YTD gain of 10 largest technology companies as of today.\"\"\",\n", + ")\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "msft", + "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.9.18" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/notebook/agentchat_function_call.ipynb b/notebook/agentchat_function_call.ipynb index 855cdb4ab5f..3ea8171054f 100644 --- a/notebook/agentchat_function_call.ipynb +++ b/notebook/agentchat_function_call.ipynb @@ -17,77 +17,26 @@ "source": [ "# Auto Generated Agent Chat: Task Solving with Provided Tools as Functions\n", "\n", - "AutoGen offers conversable agents powered by LLM, tool or human, which can be used to perform tasks collectively via automated chat. This framwork allows tool use and human participance through multi-agent conversation. Please find documentation about this feature [here](https://microsoft.github.io/autogen/docs/Use-Cases/agent_chat).\n", + "AutoGen offers conversable agents powered by LLM, tool, or human, which can be used to perform tasks collectively via automated chat. This framework allows tool use and human participation through multi-agent conversation. Please find documentation about this feature [here](https://microsoft.github.io/autogen/docs/Use-Cases/agent_chat).\n", "\n", - "In this notebook, we demonstrate how to use `AssistantAgent` and `UserProxyAgent` to make function calls with the new feature of OpenAI models (in model version 0613). A specified prompt and function configs need to be passed to `AssistantAgent` to initialize the agent. The corresponding functions need to be passed to `UserProxyAgent`, which will be responsible for executing any function calls made by `AssistantAgent`. Besides this requirement of matching descriptions with functions, we recommend checking the system message in the `AssistantAgent` to make sure the instructions align with the function call descriptions.\n", + "In this notebook, we demonstrate how to use `AssistantAgent` and `UserProxyAgent` to make function calls with the new feature of OpenAI models (in model version 0613). A specified prompt and function configs must be passed to `AssistantAgent` to initialize the agent. The corresponding functions must be passed to `UserProxyAgent`, which will execute any function calls made by `AssistantAgent`. Besides this requirement of matching descriptions with functions, we recommend checking the system message in the `AssistantAgent` to ensure the instructions align with the function call descriptions.\n", "\n", "## Requirements\n", "\n", - "AutoGen requires `Python>=3.8`. To run this notebook example, please install the [mathchat] option since we will import functions from `MathUserProxyAgent`:\n", + "AutoGen requires `Python>=3.8`. To run this notebook example, please install `pyautogen`:\n", "```bash\n", - "pip install \"pyautogen[mathchat]\"\n", + "pip install pyautogen\n", "```" ] }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 1, "id": "2b803c17", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Requirement already satisfied: pyautogen[mathchat]~=0.1.3 in /usr/local/anaconda3/envs/autogen/lib/python3.11/site-packages (0.1.3)\n", - "Requirement already satisfied: diskcache in /usr/local/anaconda3/envs/autogen/lib/python3.11/site-packages (from pyautogen[mathchat]~=0.1.3) (5.6.3)\n", - "Requirement already satisfied: flaml in /usr/local/anaconda3/envs/autogen/lib/python3.11/site-packages (from pyautogen[mathchat]~=0.1.3) (2.1.0)\n", - "Requirement already satisfied: openai in /usr/local/anaconda3/envs/autogen/lib/python3.11/site-packages (from pyautogen[mathchat]~=0.1.3) (0.28.1)\n", - "Requirement already satisfied: termcolor in /usr/local/anaconda3/envs/autogen/lib/python3.11/site-packages (from pyautogen[mathchat]~=0.1.3) (2.3.0)\n", - "Collecting pydantic==1.10.9 (from pyautogen[mathchat]~=0.1.3)\n", - " Obtaining dependency information for pydantic==1.10.9 from https://files.pythonhosted.org/packages/2d/ba/7d8c23a4c80bf33c3bffc66e98818087d1662eeaa44bdadb58bfbfcbd10f/pydantic-1.10.9-cp311-cp311-macosx_10_9_x86_64.whl.metadata\n", - " Downloading pydantic-1.10.9-cp311-cp311-macosx_10_9_x86_64.whl.metadata (147 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m147.8/147.8 kB\u001b[0m \u001b[31m47.5 kB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0ma \u001b[36m0:00:01\u001b[0m\n", - "\u001b[?25hCollecting sympy (from pyautogen[mathchat]~=0.1.3)\n", - " Using cached sympy-1.12-py3-none-any.whl (5.7 MB)\n", - "Collecting wolframalpha (from pyautogen[mathchat]~=0.1.3)\n", - " Using cached wolframalpha-5.0.0-py3-none-any.whl (7.5 kB)\n", - "Requirement already satisfied: typing-extensions>=4.2.0 in /usr/local/anaconda3/envs/autogen/lib/python3.11/site-packages (from pydantic==1.10.9->pyautogen[mathchat]~=0.1.3) (4.8.0)\n", - "Requirement already satisfied: NumPy>=1.17.0rc1 in /usr/local/anaconda3/envs/autogen/lib/python3.11/site-packages (from flaml->pyautogen[mathchat]~=0.1.3) (1.26.0)\n", - "Requirement already satisfied: requests>=2.20 in /usr/local/anaconda3/envs/autogen/lib/python3.11/site-packages (from openai->pyautogen[mathchat]~=0.1.3) (2.31.0)\n", - "Requirement already satisfied: tqdm in /usr/local/anaconda3/envs/autogen/lib/python3.11/site-packages (from openai->pyautogen[mathchat]~=0.1.3) (4.66.1)\n", - "Requirement already satisfied: aiohttp in /usr/local/anaconda3/envs/autogen/lib/python3.11/site-packages (from openai->pyautogen[mathchat]~=0.1.3) (3.8.5)\n", - "Collecting mpmath>=0.19 (from sympy->pyautogen[mathchat]~=0.1.3)\n", - " Using cached mpmath-1.3.0-py3-none-any.whl (536 kB)\n", - "Collecting xmltodict (from wolframalpha->pyautogen[mathchat]~=0.1.3)\n", - " Using cached xmltodict-0.13.0-py2.py3-none-any.whl (10.0 kB)\n", - "Collecting more-itertools (from wolframalpha->pyautogen[mathchat]~=0.1.3)\n", - " Obtaining dependency information for more-itertools from https://files.pythonhosted.org/packages/5a/cb/6dce742ea14e47d6f565589e859ad225f2a5de576d7696e0623b784e226b/more_itertools-10.1.0-py3-none-any.whl.metadata\n", - " Using cached more_itertools-10.1.0-py3-none-any.whl.metadata (33 kB)\n", - "Collecting jaraco.context (from wolframalpha->pyautogen[mathchat]~=0.1.3)\n", - " Using cached jaraco.context-4.3.0-py3-none-any.whl (5.3 kB)\n", - "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/anaconda3/envs/autogen/lib/python3.11/site-packages (from requests>=2.20->openai->pyautogen[mathchat]~=0.1.3) (3.2.0)\n", - "Requirement already satisfied: idna<4,>=2.5 in /usr/local/anaconda3/envs/autogen/lib/python3.11/site-packages (from requests>=2.20->openai->pyautogen[mathchat]~=0.1.3) (3.4)\n", - "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/anaconda3/envs/autogen/lib/python3.11/site-packages (from requests>=2.20->openai->pyautogen[mathchat]~=0.1.3) (2.0.5)\n", - "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/anaconda3/envs/autogen/lib/python3.11/site-packages (from requests>=2.20->openai->pyautogen[mathchat]~=0.1.3) (2023.7.22)\n", - "Requirement already satisfied: attrs>=17.3.0 in /usr/local/anaconda3/envs/autogen/lib/python3.11/site-packages (from aiohttp->openai->pyautogen[mathchat]~=0.1.3) (23.1.0)\n", - "Requirement already satisfied: multidict<7.0,>=4.5 in /usr/local/anaconda3/envs/autogen/lib/python3.11/site-packages (from aiohttp->openai->pyautogen[mathchat]~=0.1.3) (6.0.4)\n", - "Requirement already satisfied: async-timeout<5.0,>=4.0.0a3 in /usr/local/anaconda3/envs/autogen/lib/python3.11/site-packages (from aiohttp->openai->pyautogen[mathchat]~=0.1.3) (4.0.3)\n", - "Requirement already satisfied: yarl<2.0,>=1.0 in /usr/local/anaconda3/envs/autogen/lib/python3.11/site-packages (from aiohttp->openai->pyautogen[mathchat]~=0.1.3) (1.9.2)\n", - "Requirement already satisfied: frozenlist>=1.1.1 in /usr/local/anaconda3/envs/autogen/lib/python3.11/site-packages (from aiohttp->openai->pyautogen[mathchat]~=0.1.3) (1.4.0)\n", - "Requirement already satisfied: aiosignal>=1.1.2 in /usr/local/anaconda3/envs/autogen/lib/python3.11/site-packages (from aiohttp->openai->pyautogen[mathchat]~=0.1.3) (1.3.1)\n", - "Downloading pydantic-1.10.9-cp311-cp311-macosx_10_9_x86_64.whl (2.8 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2.8/2.8 MB\u001b[0m \u001b[31m50.5 kB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m00:01\u001b[0m00:02\u001b[0mm\n", - "\u001b[?25hDownloading more_itertools-10.1.0-py3-none-any.whl (55 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m55.8/55.8 kB\u001b[0m \u001b[31m181.7 kB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0ma \u001b[36m0:00:01\u001b[0m\n", - "\u001b[?25hInstalling collected packages: mpmath, xmltodict, sympy, pydantic, more-itertools, jaraco.context, wolframalpha\n", - "Successfully installed jaraco.context-4.3.0 more-itertools-10.1.0 mpmath-1.3.0 pydantic-1.10.9 sympy-1.12 wolframalpha-5.0.0 xmltodict-0.13.0\n", - "Note: you may need to restart the kernel to use updated packages.\n" - ] - } - ], + "outputs": [], "source": [ - "%pip install \"pyautogen[mathchat]~=0.1.3\"" + "# %pip install \"pyautogen~=0.2.0b2\"" ] }, { @@ -98,49 +47,24 @@ "source": [ "## Set your API Endpoint\n", "\n", - "The [`config_list_from_models`](https://microsoft.github.io/autogen/docs/reference/oai/openai_utils#config_list_from_models) function tries to create a list of configurations using Azure OpenAI endpoints and OpenAI endpoints for the provided list of models. It assumes the api keys and api bases are stored in the corresponding environment variables or local txt files:\n", - "\n", - "- OpenAI API key: os.environ[\"OPENAI_API_KEY\"] or `openai_api_key_file=\"key_openai.txt\"`.\n", - "- Azure OpenAI API key: os.environ[\"AZURE_OPENAI_API_KEY\"] or `aoai_api_key_file=\"key_aoai.txt\"`. Multiple keys can be stored, one per line.\n", - "- Azure OpenAI API base: os.environ[\"AZURE_OPENAI_API_BASE\"] or `aoai_api_base_file=\"base_aoai.txt\"`. Multiple bases can be stored, one per line.\n", - "\n", - "It's OK to have only the OpenAI API key, or only the Azure OpenAI API key + base.\n", - "If you open this notebook in google colab, you can upload your files by click the file icon on the left panel and then choose \"upload file\" icon.\n", - "\n", - "The following code excludes Azure OpenAI endpoints from the config list because some endpoints don't support functions yet. Remove the `exclude` argument if they do." + "The [`config_list_from_json`](https://microsoft.github.io/autogen/docs/reference/oai/openai_utils#config_list_from_json) function loads a list of configurations from an environment variable or a json file." ] }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 2, "id": "dca301a4", "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/usr/local/anaconda3/envs/autogen/lib/python3.11/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n", - " from .autonotebook import tqdm as notebook_tqdm\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[{'api_key': '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', 'model': 'gpt-4'}, {'api_key': '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', 'model': 'gpt-3.5-turbo'}, {'api_key': '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', 'model': 'gpt-3.5-turbo-16k'}]\n" - ] - } - ], + "outputs": [], "source": [ "import autogen\n", "\n", - "config_list = autogen.config_list_from_models(\n", - " openai_api_key_file=\"key_openai.txt\",\n", - " model_list=[\"gpt-4\", \"gpt-3.5-turbo\", \"gpt-3.5-turbo-16k\"],\n", - " exclude=\"aoai\")\n", - "\n", - "print(config_list)" + "config_list = autogen.config_list_from_json(\n", + " \"OAI_CONFIG_LIST\",\n", + " filter_dict={\n", + " \"model\": [\"gpt-4\", \"gpt-3.5-turbo\", \"gpt-3.5-turbo-16k\"],\n", + " },\n", + ")" ] }, { @@ -149,23 +73,33 @@ "id": "92fde41f", "metadata": {}, "source": [ + "It first looks for environment variable \"OAI_CONFIG_LIST\" which needs to be a valid json string. If that variable is not found, it then looks for a json file named \"OAI_CONFIG_LIST\". It filters the configs by models (you can filter by other keys as well). Only the models with matching names are kept in the list based on the filter condition.\n", + "\n", "The config list looks like the following:\n", "```python\n", "config_list = [\n", " {\n", " 'model': 'gpt-4',\n", " 'api_key': '<your OpenAI API key here>',\n", - " }, # OpenAI API endpoint for gpt-4\n", + " },\n", " {\n", " 'model': 'gpt-3.5-turbo',\n", - " 'api_key': '<your OpenAI API key here>',\n", - " }, # OpenAI API endpoint for gpt-3.5-turbo\n", + " 'api_key': '<your Azure OpenAI API key here>',\n", + " 'base_url': '<your Azure OpenAI API base here>',\n", + " 'api_type': 'azure',\n", + " 'api_version': '2023-08-01-preview',\n", + " },\n", " {\n", " 'model': 'gpt-3.5-turbo-16k',\n", - " 'api_key': '<your OpenAI API key here>',\n", - " }, # OpenAI API endpoint for gpt-3.5-turbo-16k\n", + " 'api_key': '<your Azure OpenAI API key here>',\n", + " 'base_url': '<your Azure OpenAI API base here>',\n", + " 'api_type': 'azure',\n", + " 'api_version': '2023-08-01-preview',\n", + " },\n", "]\n", - "```\n" + "```\n", + "\n", + "You can set the value of config_list in any way you prefer. Please refer to this [notebook](https://github.com/microsoft/autogen/blob/main/notebook/oai_openai_utils.ipynb) for full code examples of the different methods." ] }, { @@ -199,25 +133,13 @@ "\u001b[32m***** Suggested function Call: python *****\u001b[0m\n", "Arguments: \n", "{\n", - " \"cell\": \"import matplotlib.pyplot as plt\\n\\nfig = plt.figure(figsize=(10, 5))\\nax = fig.add_subplot(111)\\n\\n# x, y for points representing where the conversation take place \\nchat_x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]\\nchat_y = [2, 3, 2, 3, 2, 3, 2, 3, 2, 3]\\n\\n# Draw points\\nplt.scatter(chat_x, chat_y, color='blue')\\n\\n# Draw lines between points\\ntargets = zip(chat_x[1:], chat_y[1:])\\n\\nfor (source, target) in zip(chat_x, chat_y):\\n plt.plot([source, target], [source, target], color='blue')\\n\\n# Add text above each points representing dialog\\nchat_dialogs = ['Hi', 'Hello', 'How are you?', 'I\\'m fine', 'That\\'s nice', 'What about you?', 'I\\'m good too', 'Great', 'Bye', 'Goodbye']\\n\\nfor i, dialog in enumerate(chat_dialogs):\\n ax.annotate(dialog, (chat_x[i], chat_y[i]), textcoords='offset points', xytext=(0,10), ha='center')\\n\\nplt.axis('off')\\nplt.title('Chat between two agents')\\n\"\n", - "}\n", - "\u001b[32m*******************************************\u001b[0m\n", - "\n", - "--------------------------------------------------------------------------------\n", - "\u001b[33muser_proxy\u001b[0m (to chatbot):\n", - "\n", - "\u001b[32m***** Response from calling function \"python\" *****\u001b[0m\n", - "Error: Invalid \\escape: line 1 column 605 (char 604)\n", - " You argument should follow json format.\n", - "\u001b[32m***************************************************\u001b[0m\n", - "\n", - "--------------------------------------------------------------------------------\n", - "\u001b[33mchatbot\u001b[0m (to user_proxy):\n", - "\n", - "\u001b[32m***** Suggested function Call: python *****\u001b[0m\n", - "Arguments: \n", - "{\n", - " \"cell\": \"import matplotlib.pyplot as plt\\n\\nfig = plt.figure(figsize=(10, 5))\\nax = fig.add_subplot(111)\\n\\n# x, y for points representing where the conversation take place \\nchat_x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]\\nchat_y = [2, 3, 2, 3, 2, 3, 2, 3, 2, 3]\\n\\n# Draw points\\nplt.scatter(chat_x, chat_y, color='blue')\\n\\n# Draw lines between points\\ntargets = zip(chat_x[1:], chat_y[1:])\\n\\nfor (source, target) in zip(chat_x, chat_y):\\n plt.plot([source, target], [source, target], color='blue')\\n\\n# Add text above each points representing dialog\\nchat_dialogs = ['Hi', 'Hello', 'How are you?', 'I\\\\'m fine', 'That\\\\'s nice', 'What about you?', 'I\\\\'m good too', 'Great', 'Bye', 'Goodbye']\\n\\nfor i, dialog in enumerate(chat_dialogs):\\n ax.annotate(dialog, (chat_x[i], chat_y[i]), textcoords='offset points', xytext=(0,10), ha='center')\\n\\nplt.axis('off')\\nplt.title('Chat between two agents')\\n\"\n", + " \"cell\": \"import matplotlib.pyplot as plt\\n\n", + "# Initialize an empty figure and axis\\n\n", + "fig, ax = plt.subplots()\\n\n", + "# Create the chatboxes for messages\\n\n", + "ax.text(0.5, 0.6, 'Agent1: Hi!', bbox=dict(facecolor='red', alpha=0.5))\\n\n", + "ax.text(0.5, 0.5, 'Agent2: Hello!', bbox=dict(facecolor='blue', alpha=0.5))\\n\n", + "plt.axis('off')\"\n", "}\n", "\u001b[32m*******************************************\u001b[0m\n", "\n", @@ -229,7 +151,7 @@ { "data": { "text/plain": [ - "Text(0.5, 1.0, 'Chat between two agents')" + "(0.0, 1.0, 0.0, 1.0)" ] }, "execution_count": 3, @@ -238,9 +160,9 @@ }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAxoAAAGrCAYAAABHSeGrAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAABfKUlEQVR4nO3dd3gU1dvG8XvTGwEMvYWOFANShUgHgyggKqBSVZCfFLGADZGgoIIFsCGgAnZFUFEEpRsCIr1I74ih19BJzvvHvNlkSIAgYSfl+7muXLLPzu4+uzlOcufMmXEZY4wAAAAAIAN5Od0AAAAAgOyHoAEAAAAgwxE0AAAAAGQ4ggYAAACADEfQAAAAAJDhCBoAAAAAMhxBAwAAAECGI2gAAAAAyHAEDQAAAAAZjqABIMtyuVzq06ePY6/frVs3hYSEOPb6AABkZgQNAJnOtm3b1LNnT5UuXVoBAQEKDQ1VZGSkRo8erTNnztyw112/fr2io6O1c+fOG/YaV/Phhx9q4sSJjr3+jbZo0SJFR0fr2LFjTreSZfz666+Kjo52ug0AuGYEDQCZyvTp03XLLbfou+++U6tWrfTee+/p9ddfV4kSJTRgwAD169fvhr32+vXrNWTIEILGDbRo0SINGTKEoHENfv31Vw0ZMsTpNgDgmvk43QAAJNmxY4ceeOABhYeHa+7cuSpcuLD7vt69e2vr1q2aPn26gx0CAID0YkYDQKYxYsQIxcfH65NPPrGFjCRly5ZNc0bjxx9/VJUqVeTv76/KlStr5syZtvt37dqlXr16qUKFCgoMDFRYWJjatWtnm7mYOHGi2rVrJ0lq3LixXC6XXC6X5s+ff9W+t2/frqioKAUHB6tIkSJ65ZVXZIyxbZOYmKhRo0apcuXKCggIUMGCBdWzZ08dPXrUvU3JkiX1999/a8GCBe7Xb9SokY4dOyZvb2+9++677m0PHTokLy8vhYWF2V7r8ccfV6FChWyvvWTJErVo0UK5c+dWUFCQGjZsqNjY2FTvY+/evXrkkUdUsGBB92f56aef2raZP3++XC6XvvvuOw0bNkzFihVTQECAmjZtqq1bt17xc4qOjtaAAQMkSaVKlXK/x507d+ree+9V9erVbdu3atVKLpdL06ZNs70Xl8ulGTNm2D7/du3a6aabblJQUJBuu+22dAfSCRMmqEmTJipQoID8/f1VqVIljRkzJtV2iYmJio6OVpEiRRQUFKTGjRtr/fr1KlmypLp162bb9tixY3ryySdVvHhx+fv7q2zZsho+fLgSExPd2+zcuVMul0tvvfWWxo0bpzJlysjf31+1atXS0qVL3dt169ZNH3zwgSS5Py+Xy+W+/5tvvlGNGjWUK1cuhYaG6pZbbtHo0aPT9d4B4EZjRgNApvHzzz+rdOnSqlevXrofs3DhQk2dOlW9evVSrly59O677+q+++7T7t27FRYWJklaunSpFi1apAceeEDFihXTzp07NWbMGDVq1Ejr169XUFCQGjRooCeeeELvvvuuXnzxRVWsWFGS3P+9nISEBLVo0UK33XabRowYoZkzZ2rw4MG6ePGiXnnlFfd2PXv21MSJE/Xwww/riSee0I4dO/T+++9r5cqVio2Nla+vr0aNGqW+ffsqJCREAwcOlCQVLFhQefLkUZUqVfTHH3/oiSeecL9vl8ulI0eOaP369apcubIkKSYmRvXr13e/7ty5c3XnnXeqRo0aGjx4sLy8vNy/XMfExKh27dqSpP379+u2225zL7DPnz+/ZsyYoUcffVQnTpzQk08+aXvfb7zxhry8vNS/f38dP35cI0aMUMeOHbVkyZLLflb33nuvNm/erK+//lojR45Uvnz5JEn58+dX/fr19dNPP+nEiRMKDQ2VMUaxsbHy8vJSTEyMWrdu7X5/Xl5eioyMdPddr149nT59Wk888YTCwsI0adIktW7dWt9//73atm17xe/fmDFjVLlyZbVu3Vo+Pj76+eef1atXLyUmJqp3797u7V544QWNGDFCrVq1UlRUlFavXq2oqCidPXvW9nynT59Ww4YNtXfvXvXs2VMlSpTQokWL9MILLyguLk6jRo2ybf/VV1/p5MmT6tmzp1wul0aMGKF7771X27dvl6+vr3r27Kl///1Xs2bN0ueff2577KxZs/Tggw+qadOmGj58uCRpw4YNio2NvaGHGAJAuhkAyASOHz9uJJk2bdqk+zGSjJ+fn9m6dau7tnr1aiPJvPfee+7a6dOnUz128eLFRpL57LPP3LXJkycbSWbevHnpev2uXbsaSaZv377uWmJiornrrruMn5+fOXjwoDHGmJiYGCPJfPnll7bHz5w5M1W9cuXKpmHDhqleq3fv3qZgwYLu208//bRp0KCBKVCggBkzZowxxpjDhw8bl8tlRo8e7e6lXLlyJioqyiQmJto+j1KlSpnmzZu7a48++qgpXLiwOXTokO11H3jgAZM7d273Zzhv3jwjyVSsWNGcO3fOvd3o0aONJLN27dorfmZvvvmmkWR27Nhhqy9dutRIMr/++qsxxpg1a9YYSaZdu3amTp067u1at25tbr31VvftJ5980kgyMTEx7trJkydNqVKlTMmSJU1CQsIV+0lrbERFRZnSpUu7b+/bt8/4+PiYe+65x7ZddHS0kWS6du3qrr366qsmODjYbN682bbt888/b7y9vc3u3buNMcbs2LHDSDJhYWHmyJEj7u1++uknI8n8/PPP7lrv3r1NWj+u+/XrZ0JDQ83Fixev+B4BwCkcOgUgUzhx4oQkKVeuXNf0uGbNmqlMmTLu2xEREQoNDdX27dvdtcDAQPe/L1y4oMOHD6ts2bLKkyePVqxYcZ2dy3aK3aQZgfPnz2v27NmSpMmTJyt37txq3ry5Dh065P6qUaOGQkJCNG/evKu+Rv369bV//35t2rRJkvWX/QYNGqh+/fqKiYmRZM1yGGPcMxqrVq3Sli1b9NBDD+nw4cPu1z116pSaNm2qP/74Q4mJiTLGaMqUKWrVqpWMMbYeo6KidPz48VSf08MPPyw/Pz9bf5Jsn/u1uPXWWxUSEqI//vjD/f6KFSumLl26aMWKFTp9+rSMMVq4cKFtxubXX39V7dq1dfvtt7trISEheuyxx7Rz506tX7/+iq+bcmwcP35chw4dUsOGDbV9+3YdP35ckjRnzhxdvHhRvXr1sj22b9++qZ5v8uTJql+/vvLmzWv7HJs1a6aEhAT3+0vSoUMH5c2b1337Wj7HPHny6NSpU5o1a9ZVtwUAJ3DoFIBMITQ0VJJ08uTJa3pciRIlUtXy5s1rW/tw5swZvf7665owYYL27t1rW9OQ9Mvkf+Xl5aXSpUvbauXLl5ck9xqQLVu26Pjx4ypQoECaz3HgwIGrvk7SL6BJv4CvXLlSQ4cOVf78+fXWW2+57wsNDVXVqlXdrytJXbt2vezzHj9+XBcuXNCxY8c0btw4jRs3Ll09Xvq5J/2ynPJzvxbe3t6qW7euOzQlHQJ2++23KyEhQX/++acKFiyoI0eO2ILGrl27VKdOnVTPl3TI265du1SlSpXLvm5sbKwGDx6sxYsX6/Tp07b7jh8/rty5c2vXrl2SrDVCKd100022kCBZn/maNWuUP3/+NF8vIz/HXr166bvvvtOdd96pokWL6o477lD79u3VokWLqz4WADyBoAEgUwgNDVWRIkW0bt26a3qct7d3mvWUYaJv376aMGGCnnzySdWtW1e5c+eWy+XSAw88YFuge6MkJiaqQIEC+vLLL9O8/3K/lKZUpEgRlSpVSn/88YdKliwpY4zq1q2r/Pnzq1+/ftq1a5diYmJUr149eXl5uV9Xkt58801Vq1YtzecNCQnR4cOHJUmdOnW6bCiJiIiw3U7P536tbr/9dg0bNkxnz55VTEyMBg4c6F6fEhMTo4IFC0qSLWhcj23btqlp06a6+eab9c4776h48eLy8/PTr7/+qpEjR/6nsZGYmKjmzZvr2WefTfP+pBCa5Ho+xwIFCmjVqlX67bffNGPGDM2YMUMTJkxQly5dNGnSpGvuHQAyGkEDQKZx9913a9y4cVq8eLHq1q2bYc/7/fffq2vXrnr77bfdtbNnz6a6lkPKs/mkV2JiorZv3277BXLz5s2SrLNISVKZMmU0e/ZsRUZG2g7VScuVeqhfv77++OMPlSpVStWqVVOuXLlUtWpV5c6dWzNnztSKFSts11tIOqQsNDRUzZo1u+zz5s+fX7ly5VJCQsIVt8sIV3t/58+f19dff629e/e6A0WDBg3cQaN8+fLuwCFJ4eHh7sPJUtq4caP7/sv5+eefde7cOU2bNs02s3DpoWxJz7F161aVKlXKXT98+HCqmYcyZcooPj4+Qz/HK31mfn5+atWqlVq1aqXExET16tVLY8eO1aBBg1LNwACAp7FGA0Cm8eyzzyo4OFjdu3fX/v37U92/bdu2/3TqTm9v71R/IX7vvfeUkJBgqwUHB0vSNV9M7v3333f/2xij999/X76+vmratKkkqX379kpISNCrr76a6rEXL160vV5wcPBlX79+/frauXOnvv32W/cv4V5eXqpXr57eeecdXbhwwfbX/ho1aqhMmTJ66623FB8fn+r5Dh48KMn6fO677z5NmTIlzRmlpO0ywpU+4zp16sjX11fDhw/XTTfd5D6TVv369fXnn39qwYIFqWYzWrZsqb/++kuLFy92106dOqVx48apZMmSqlSp0mV7SZpNuPRQugkTJti2a9q0qXx8fFKd9jbl9z1J+/bttXjxYv3222+p7jt27JguXrx42X4u53KfWdJMVBIvLy/3zNO5c+eu+XUAIKMxowEg0yhTpoy++uordejQQRUrVlSXLl1UpUoVnT9/XosWLdLkyZNTXbMgPe6++259/vnnyp07typVqqTFixdr9uzZ7tPfJqlWrZq8vb01fPhwHT9+XP7+/u5rLFxOQECAZs6cqa5du6pOnTqaMWOGpk+frhdffNF9SFTDhg3Vs2dPvf7661q1apXuuOMO+fr6asuWLZo8ebJGjx6t+++/X5IVDsaMGaOhQ4eqbNmyKlCggJo0aSIp+ZChTZs26bXXXnP30KBBA82YMcN9HYYkXl5e+vjjj3XnnXeqcuXKevjhh1W0aFHt3btX8+bNU2hoqH7++WdJ1ulq582bpzp16qhHjx6qVKmSjhw5ohUrVmj27Nk6cuTINX/uaalRo4YkaeDAgXrggQfk6+urVq1aKTg4WEFBQapRo4b+/PNP9zU0kt7fqVOndOrUqVRB4/nnn9fXX3+tO++8U0888YRuuukmTZo0STt27NCUKVPch5Gl5Y477nDPCPTs2VPx8fEaP368ChQooLi4OPd2BQsWVL9+/fT222+rdevWatGihVavXq0ZM2YoX758thmHAQMGaNq0abr77rvVrVs31ahRQ6dOndLatWv1/fffa+fOne7T+l7rZ/bEE08oKipK3t7eeuCBB9S9e3cdOXJETZo0UbFixbRr1y699957qlat2lVPywwAHuHMya4A4PI2b95sevToYUqWLGn8/PxMrly5TGRkpHnvvffM2bNn3dtJMr179071+PDwcNspR48ePWoefvhhky9fPhMSEmKioqLMxo0bU21njDHjx483pUuXNt7e3lc91W3Xrl1NcHCw2bZtm7njjjtMUFCQKViwoBk8eHCap1UdN26cqVGjhgkMDDS5cuUyt9xyi3n22WfNv//+695m37595q677jK5cuUyklKd6rZAgQJGktm/f7+7tnDhQiPJ1K9fP80+V65cae69914TFhZm/P39TXh4uGnfvr2ZM2eObbv9+/eb3r17m+LFixtfX19TqFAh07RpUzNu3Dj3Nkmnt508ebLtsUmna50wYcJlP68kr776qilatKjx8vJKdarbAQMGGElm+PDhtseULVvWSDLbtm1L9Xzbtm0z999/v8mTJ48JCAgwtWvXNr/88stV+zDGmGnTppmIiAgTEBBgSpYsaYYPH24+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", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgMAAAGFCAYAAABg2vAPAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAUuklEQVR4nO3dfZBVhZ3n4W/zotCoKLQY2sUYXwqJEUIQjGWhZLRYiDOzSbRiZWISqmICyZjZZK1Z45g3zIs6GUeTsqLUDpFyMo6aGRNTEV0lhjdfojINRhTUlAJBQLrBhk6roPT+IdNrj0kEBDv6e56q/qPPuefc371UcT997rnnNnR1dXUFACirT28PAAD0LjEAAMWJAQAoTgwAQHFiAACKEwMAUJwYAIDixAAAFCcGAKA4MQAAxYkBAChODABAcWIAAIoTAwBQnBgAgOLEAAAUJwYAoDgxAADFiQEAKE4MAEBxYgAAihMDAFCcGACA4sQAABQnBgCgODEAAMWJAQAoTgwAQHFiAACKEwMAUJwYAIDixAAAFCcGAKA4MQAAxYkBAChODABAcWIAAIoTAwBQnBgAgOLEAAAUJwYAoDgxAADFiQEAKE4MAEBxYgAAihMDAFCcGACA4sQAABQnBgCgODEAAMWJAQAoTgwAQHFiAACKEwMAUJwYAIDixAAAFCcGAKA4MQAAxYkBAChODABAcWIAAIoTAwBQnBgAgOLEAAAUJwYAoDgxAADFiQEAKE4MAEBxYgAAihMDAFCcGACA4sQAABQnBgCgODEAAMWJAQAoTgwAQHFiAACKEwMAUJwYAIDixAAAFCcGAKA4MQAAxYkBAChODABAcWIAAIoTAwBQnBgAgOLEAAAUJwYAoDgxAADFiQEAKE4MAEBxYgAAihMDAFCcGACA4sQAABQnBgCgODEAAMWJAQAoTgwAQHFiAACKEwMAUJwYAIDixAAAFCcGAKA4MQAAxYkBAChODABAcWIAAIoTAwBQnBgAgOLEAAAUJwYAoDgxAADFiQEAKE4MAEBxYgAAihMDAFCcGACA4sQAABQnBgCgODEAAMWJAQAoTgwAQHFiAACKEwMAUJwYAIDixAAAFCcGAKA4MQAAxYkBAChODABAcWIAAIoTAwBQnBgAgOLEAAAUJwYAoDgxAADFiQEAKK5fbw8AvHna29vT2dnZ22O87TU2Nmbw4MG9PQbsMjEARbS3t+fqb34z21tbe3uUt73+TU05/6tfFQS8ZYgBKKKzszPbW1vzkYEDc2hjY2+P87a1sbMzt7S2prOzUwzwliEGoJhDGxsz/MADe3uMt7fnn+/tCWC3OIEQAIoTAwBQnBgAgOLEAMAfMGfp0hx82WW9PQbsc2IA6OG+NWvS95JLcuYNN/TaDE8/91waZs7M0vXreyxf/uyzOevmm3PkVVelYebMXHX//Xu0/2k//Wk+dOONr1k+/+mn0zBzZp574YUkyTnHH5/Hv/CFHrf5xvz5ee+11+7R/cKfKjEA9DC7pSVfmDAhC1etyjNbt/b2OD10bt+eow4+OJedcUbeccAB+/z+Bvbvn2GDBu3z+4He5qOFQLeObdty0/Lleegzn8n6jo7MWbo0fzdxYo/b/Gzlylxw551Z096ek0eMyLQxYzLt1luz+cILc/CAAUmSxatX56Jf/CIPPfNMmhob8+Hjjsulp5+eQfvtlyQ58qqr8tlx4/Lkpk358aOP5pABA/KVU0/NZ8eNS5K863vfS5KMnTUrSXLaO9+Z+dOmZfzhh2f84YcnSb48b94+fz7mLF2aL95xR5778pf3+X1Bb3JkAOh28/LlOa6pKSObmnLu6NH5YUtLurq6utc/tXlzzr755nxo5MgsmzEj08eNy8V3391jH7/ZtClTfvSjnDVqVB6eMSM3nX12Fq9enfNvv73H7a64776c2NyclunT8/nx4/O5227Lyp1XR3zgvPOSJPM+8Ymsu+CC3HLOObv8GOYsXZqGmTP39CmAkhwZALrNbmnJuSeckCSZcswxaX/xxSxYtSqTjjwySTJryZKMbGrKdydPTpKMbGrKI88+m28vWtS9j0sXL87HTzghX3z/+5Mkxw4dmu9PnZrT5szJNWeemQH9Xvlv54PHHpvPjx+fJLnwlFNy5f3355dPP52RTU05dOeh+aGNjbv9dsDg/ffPyKFDX/d2P3/88Rzwne/0WPbyq8IHKhEDQJJkZWtrHli7Nj/Z+Vd4vz59cs7xx2d2S0t3DKxsa8v45uYe203Yedj+Py3bsCEPb9iQf/n1r7uXdSXZ0dWVpzZvzqhDD02SjB42rHt9Q0ND3nHAAXn2d797w4/jw6NG5cOjRr3u7T7wrnflmjPP7LHsV7/9bc79yU/e8AzwViMGgCSvHBV4aceONF9xRfeyriT79+2bq6dOzeCd5wO8no5t2zJ93Lj8zUknvWbdEa+6Vn//vn17rGvIK8HwZhnUv3+OGTKkx7Lfbtnypt0//CkRA0Be2rEj1y9blismT87ko4/use5DN96Yf33kkcw48cSMHDo0c594osf6B9eu7fH7+4YPz6MbN77mhXZ37LczFF7esWOP97GvfGPSpHxj0qTeHgP2KicQAvn5449n8wsv5NNjx+Y9w4b1+Dlr1KjMbmlJkkwfNy4rWltz4V135fG2tty8fHnmLFuW5JW/7JNX3v+/d82anD93bpauX58n2tpy64oVOX/u3F2eZ9igQRnYr1/uePLJbOjoSPvOz/1ve/nlLF2/PkvXr8+2l1/O2i1bsnT9+jy5aVP3tj957LEcd/XVe+eJ+T0umjcvH77ppn22f+gNYgDI7JaWnHHUUb/3rYCz3v3uPPTMM3l4w4a865BD8m8f/WhuWbEio6+5Jtc89FAu3vnRw/13nhg4+rDDsmDatDze1paJ112XsbNm5Wvz56d5N74psV+fPvn+1KmZtWRJmv/xH/M/dl4g6JmtWzN21qyMnTUr6zo68g/33Zexs2blvJ/9rHvb9hdfzMq2tjfydPxR6zo68tTmzfts/9AbGrq6nD4LFaxbty6zLroo04cO3atfYfzthQtz7ZIlWfOlL+21fb6Vrdu6NbPa2jL90kszfPjw3h4HdolzBoDd8oMHH8z45uYMbWzMPatX57v33pvzJ0zo7bGAN0AMALvliba2fGvhwmx6/vkcMXhwLjj55Fz0X65SCLy1iAFgt1w5ZUqunDKlt8cA9iInEAJAcWIAAIoTAwBQnHMGoJiNnZ29PcLbmueXtyIxAEU0Njamf1NTbmltTZ5/vrfHeVvr39SUxsbG3h4DdpmLDkEh7e3t6fSX6z7X2NiYwa/6Uib4UycGAKA4JxACQHFiAACKEwMAUJwYAIDixAAAFCcGAKA4MQAAxYkBACjO5YihEFcgfOtyVUP2JTEARbS3t+eb37w6ra3be3sU9kBTU/989avnCwL2CTEARXR2dqa1dXsGDvxIGhsP7e1x2A2dnRvT2npLOjs7xQD7hBiAYhobD82BBw7v7THYTb5okn3JCYQAUJwYAIDixAAAFCcGAN6AmTMbsmLFT5Mkzz33dGbObMj69Ut7dSbYXWIA6GHNmvtyySV9c8MNZ/baDH/oRXXJkv+T666bmMsvPySXX35Irr/+jKxd+8Bu73/OnEm5444vvmb50qVzctllB+/Z0G/AH5oH3ixiAOihpWV2Jkz4QlatWpitW5/p7XF6WLVqft7zno/lU5/6ZT796fsyePCI/PM/T86WLWt7ezR4S/PRQqDbtm0dWb78pnzmMw+lo2N9li6dk4kT/67HbVau/FnuvPOCtLevyYgRJ2fMmGm59dZpufDCzRkw4OAkyerVi/OLX1yUZ555KI2NTTnuuA/n9NMvzX77DUqSXHXVkRk37rPZtOnJPProjzNgwCE59dSvZNy4zyZJvve9dyVJZs0amyR55ztPy7Rp8/ORj/xLj1n+4i/+KY8++u956qlfZMyYT+6T52TFiluzYMHMbNz4aA48sDljxnwqp556cfr02bX/Pp9+ekHuuutvs2HDsgwcOCRjxnwqf/Zn39rl7eHN4MgA0G358pvT1HRcmppGZvToc9PS8sN0dXV1r9+8+ancfPPZGTnyQ5kxY1nGjZueu+++uMc+Nm36TX70oykZNeqszJjxcM4++6asXr04t99+fo/b3XffFWluPjHTp7dk/PjP57bbPpfW1pVJkvPOe+XQ/yc+MS8XXLAu55xzy++dd/v2zuzYsT0DBw7pXjZ//jdy1VVH7o2nI6tWLcpPf/rJnHTS/8xf//Wj+fM/n5Vly+Zk4cJv79L2W7aszQ03fDDNzeMzY8aynHnmNWlpmZ2FC7+1V+aDvUWaAt1aWmbnhBPOTZIcc8yUvPhie1atWpAjj5yUJFmyZFaamkZm8uTvJkmamkbm2WcfyaJF///FcfHiS3PCCR/P+9//xSTJ0KHHZurU72fOnNNy5pnXpF+/AUmSY4/9YMaP/3yS5JRTLsz991+Zp5/+ZZqaRmbQoFeukNjYODQHHPCOPzjvvHkX5sADm3PUUWd0L2tsbMqQIUe/7mN98MEf5D/+4596LNux46Xu+ZJkwYKZOeWUL+e97/1UkuSQQ47KBz7wzdx11//OpElf36X7OOigEfngB69OQ0NDmpqOy9atz2TevAtz2mlfS0ODv8f40yAGgCRJa+vKrF37QM455ydJkj59+uX4489JS8vs7hhoa1uZ5ubxPbY7/PAJPX7fsGFZNmx4OL/+9asP6Xelq2tHNm9+KoceOipJMmzY6O61DQ0NOeCAd+R3v3t2l+ddvPiyPPLIjZk2bX6PF/AJE87PhAnn/5EtXzF69MczcWLPoxqPPXZLFi36To/HsmbNPT1ip6vr5bz00gvZvr0z/fs3/tH7aG19LCNGnJyGhobuZSNGnJJt2zqyZctvM3jwEa87J7wZxACQ5JWjAjt2vJQrrmh+1dKu9O27f6ZOvToDBuzaNfG3bevIuHHTc9JJf/Oada9+8evbt/9/WduQrq4du3Qf9977D1m8+LJ88pPzcthho19/g99j//0HZ8iQY3osGzRoWI/ft23ryKRJMzNq1Edes/2rAwTe6sQAkB07XsqyZddn8uQrcvTRk3usu/HGD+WRR/41J544I0OHjswTT8ztsX7t2gd7/D58+PuyceOjr3mh3R19++63c66XX7Punnv+PosWfTvnnvt/09x84h7fx64YPvx9aW1ducePpalpVB577N/T1dXVfXRgzZp7st9+B+agg/5b9+2mTZu/N8aFPeYNKyCPP/7zvPDC5owd++kMG/aeHj+jRp2VlpbZSZJx46antXVF7rrrwrS1PZ7ly2/OsmVzdu7llRe7U065MGvW3Ju5c8/P+vVL09b2RFasuDVz577+ofv/NGjQsPTrNzBPPnlHOjo25IUX2pMkixdfnl/+8qv5y7/8YQ4++Mh0dKxPR8f6bNvW0b3tAw9cneuvP32vPC+nnvq1PPzw9Zk/f2aefXZ5Nm58LI88cmPuvvsru7T9+PGfz5Yta3L77V9Ia+uKrFhxa+bP/3pOPvl/9Thf4PrrT8+iRZfulZlhTzgyAKSlZXaOOuqM3/tWwLvffVbuvffvs2HDwznssNH56Ef/LXfeeUF+9avvZcSIkzNx4sW57bbPpV+//ZMkhx02OtOmLcjdd1+c666bmK6urgwZcnSOP/6cXZ6nT59+mTr1+1mw4JLMn/+1HHHExEybNj8PPXRNXn55W37847N73P60076eSZO+kSTp7GzNpk2/2fMn41WOOea/52Mf+3kWLrwk99xzefr27Z+mpuMydux5u7T9QQcdnr/6q7m5666/zbXXjsnAgUMyduync+qpPWNi06bfZNiwE/bKzLAnGrpe/bkh4G1r3bp1ueiiWRk6dPpe/QrjhQu/nSVLrs2XvrRmr+2TnrZuXZe2tlm59NLpGT7c10+z9zkyAOyWBx/8QZqbx6excWhWr74n99773V06ex/40yUGgN3S1vZEFi78Vp5/flMGDz4iJ598QSZOvKi3xwLeADEA7JYpU67MlClX9vYYwF7k0wQAUJwYAIDixAAAFOecASims3Njb4/AbvJvxr4mBqCIxsbGNDX1T2vrLXn++d6eht3V1NQ/jY1//IuRYE+56BAU0t7ens7Ozt4egz3Q2NiYwYN37cuiYHeJAQAozgmEAFCcGACA4sQAABQnBgCgODEAAMWJAQAoTgwAQHFiAACKEwMAUJwYAIDixAAAFCcGAKA4MQAAxYkBAChODABAcWIAAIoTAwBQnBgAgOLEAAAUJwYAoDgxAADFiQEAKE4MAEBxYgAAihMDAFCcGACA4sQAABQnBgCgODEAAMWJAQAoTgwAQHFiAACKEwMAUJwYAIDixAAAFCcGAKA4MQAAxYkBAChODABAcWIAAIoTAwBQnBgAgOLEAAAUJwYAoDgxAADFiQEAKE4MAEBxYgAAihMDAFCcGACA4sQAABQnBgCgODEAAMWJAQAoTgwAQHFiAACKEwMAUJwYAIDixAAAFCcGAKA4MQAAxYkBAChODABAcWIAAIoTAwBQnBgAgOLEAAAUJwYAoDgxAADFiQEAKE4MAEBxYgAAihMDAFCcGACA4sQAABQnBgCgODEAAMWJAQAoTgwAQHFiAACKEwMAUJwYAIDixAAAFCcGAKA4MQAAxYkBAChODABAcWIAAIoTAwBQnBgAgOLEAAAUJwYAoDgxAADFiQEAKE4MAEBxYgAAihMDAFCcGACA4sQAABQnBgCgODEAAMWJAQAoTgwAQHFiAACKEwMAUJwYAIDixAAAFCcGAKA4MQAAxYkBAChODABAcWIAAIoTAwBQnBgAgOLEAAAUJwYAoDgxAADFiQEAKE4MAEBxYgAAihMDAFCcGACA4sQAABQnBgCgODEAAMWJAQAoTgwAQHFiAACKEwMAUJwYAIDixAAAFCcGAKA4MQAAxYkBAChODABAcWIAAIoTAwBQnBgAgOLEAAAUJwYAoDgxAADFiQEAKE4MAEBxYgAAihMDAFCcGACA4sQAABQnBgCgODEAAMWJAQAoTgwAQHFiAACKEwMAUJwYAIDixAAAFCcGAKA4MQAAxYkBAChODABAcWIAAIoTAwBQnBgAgOLEAAAUJwYAoDgxAADFiQEAKE4MAEBxYgAAihMDAFCcGACA4sQAABQnBgCgODEAAMWJAQAoTgwAQHFiAACKEwMAUJwYAIDixAAAFCcGAKA4MQAAxYkBAChODABAcf8PWgarshV+kfQAAAAASUVORK5CYII=", "text/plain": [ - "<Figure size 1000x500 with 1 Axes>" + "<Figure size 640x480 with 1 Axes>" ] }, "metadata": {}, @@ -253,14 +175,9 @@ "\u001b[33muser_proxy\u001b[0m (to chatbot):\n", "\n", "\u001b[32m***** Response from calling function \"python\" *****\u001b[0m\n", - "Text(0.5, 1.0, 'Chat between two agents')\n", + "(0.0, 1.0, 0.0, 1.0)\n", "\u001b[32m***************************************************\u001b[0m\n", "\n", - "--------------------------------------------------------------------------------\n", - "\u001b[33mchatbot\u001b[0m (to user_proxy):\n", - "\n", - "TERMINATE\n", - "\n", "--------------------------------------------------------------------------------\n" ] } @@ -298,7 +215,7 @@ " },\n", " ],\n", " \"config_list\": config_list,\n", - " \"request_timeout\": 120,\n", + " \"timeout\": 120,\n", "}\n", "chatbot = autogen.AssistantAgent(\n", " name=\"chatbot\",\n", @@ -315,7 +232,7 @@ " code_execution_config={\"work_dir\": \"coding\"},\n", ")\n", "\n", - "# define functions according to the function desription\n", + "# define functions according to the function description\n", "from IPython import get_ipython\n", "\n", "def exec_python(cell):\n", @@ -345,73 +262,6 @@ " message=\"Draw two agents chatting with each other with an example dialog. Don't add plt.show().\",\n", ")\n" ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "e9531d55", - "metadata": {}, - "source": [ - "## Another example with Wolfram Alpha API\n", - "\n", - "We give another example of querying Wolfram Alpha API to solve math problem. We use the predefined function `MathUserProxyAgent().execute_one_wolfram_query` as the function to be called." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "4a917492", - "metadata": {}, - "outputs": [], - "source": [ - "import os\n", - "from autogen.agentchat.contrib.math_user_proxy_agent import MathUserProxyAgent\n", - "\n", - "# you need to provide a wolfram alpha appid to run this example\n", - "if not os.environ.get(\"WOLFRAM_ALPHA_APPID\"):\n", - " os.environ[\"WOLFRAM_ALPHA_APPID\"] = open(\"wolfram.txt\").read().strip()\n", - "\n", - "llm_config = {\n", - " \"model\": \"gpt-4-0613\",\n", - " \"functions\": [\n", - " {\n", - " \"name\": \"query_wolfram\",\n", - " \"description\": \"Return the API query result from the Wolfram Alpha. the ruturn is a tuple of (result, is_success).\",\n", - " \"parameters\": {\n", - " \"type\": \"object\",\n", - " \"properties\": {\n", - " \"query\": {\n", - " \"type\": \"string\",\n", - " \"description\": \"The Wolfram Alpha code to be executed.\",\n", - " }\n", - " },\n", - " \"required\": [\"query\"],\n", - " },\n", - " }\n", - " ],\n", - " \"config_list\": config_list,\n", - "}\n", - "chatbot = autogen.AssistantAgent(\n", - " name=\"chatbot\",\n", - " system_message=\"Only use the functions you have been provided with. Do not ask user to perform other actions than executing the functions. Reply TERMINATE when the task is done.\",\n", - " llm_config=llm_config,\n", - ")\n", - "\n", - "# the key in `function_map` should match the function name in \"functions\" above\n", - "# we register a class instance method directly\n", - "user_proxy = autogen.UserProxyAgent(\n", - " \"user_proxy\",\n", - " max_consecutive_auto_reply=2,\n", - " human_input_mode=\"NEVER\",\n", - " function_map={\"query_wolfram\": MathUserProxyAgent().execute_one_wolfram_query},\n", - ")\n", - "\n", - "# start the conversation\n", - "user_proxy.initiate_chat(\n", - " chatbot,\n", - " message=\"Problem: Find all $x$ that satisfy the inequality $(2x+10)(x+3)<(3x+9)(x+8)$. Express your answer in interval notation.\",\n", - ")\n" - ] } ], "metadata": { @@ -430,7 +280,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.5" + "version": "3.11.4" } }, "nbformat": 4, diff --git a/notebook/agentchat_groupchat.ipynb b/notebook/agentchat_groupchat.ipynb index f112e7fc62d..042aebf4b6f 100644 --- a/notebook/agentchat_groupchat.ipynb +++ b/notebook/agentchat_groupchat.ipynb @@ -15,7 +15,7 @@ "source": [ "# Auto Generated Agent Chat: Group Chat\n", "\n", - "AutoGen offers conversable agents powered by LLM, tool or human, which can be used to perform tasks collectively via automated chat. This framwork allows tool use and human participance through multi-agent conversation.\n", + "AutoGen offers conversable agents powered by LLM, tool or human, which can be used to perform tasks collectively via automated chat. This framework allows tool use and human participation through multi-agent conversation.\n", "Please find documentation about this feature [here](https://microsoft.github.io/autogen/docs/Use-Cases/agent_chat).\n", "\n", "This notebook is modified based on https://github.com/microsoft/FLAML/blob/4ea686af5c3e8ff24d9076a7a626c8b28ab5b1d7/notebook/autogen_multiagent_roleplay_chat.ipynb\n", @@ -30,12 +30,12 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 105, "metadata": {}, "outputs": [], "source": [ "%%capture --no-stderr\n", - "# %pip install pyautogen~=0.1.0" + "# %pip install pyautogen~=0.2.0b4" ] }, { @@ -50,7 +50,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 106, "metadata": {}, "outputs": [], "source": [ @@ -93,23 +93,21 @@ " {\n", " 'model': 'gpt-4',\n", " 'api_key': '<your Azure OpenAI API key here>',\n", - " 'api_base': '<your Azure OpenAI API base here>',\n", + " 'base_url': '<your Azure OpenAI API base here>',\n", " 'api_type': 'azure',\n", " 'api_version': '2023-06-01-preview',\n", " },\n", " {\n", " 'model': 'gpt-4-32k',\n", " 'api_key': '<your Azure OpenAI API key here>',\n", - " 'api_base': '<your Azure OpenAI API base here>',\n", + " 'base_url': '<your Azure OpenAI API base here>',\n", " 'api_type': 'azure',\n", " 'api_version': '2023-06-01-preview',\n", " },\n", "]\n", "```\n", "\n", - "If you open this notebook in colab, you can upload your files by clicking the file icon on the left panel and then choose \"upload file\" icon.\n", - "\n", - "You can set the value of config_list in other ways you prefer, e.g., loading from a YAML file." + "You can set the value of config_list in any way you prefer. Please refer to this [notebook](https://github.com/microsoft/autogen/blob/main/notebook/oai_openai_utils.ipynb) for full code examples of the different methods." ] }, { @@ -126,7 +124,7 @@ "metadata": {}, "outputs": [], "source": [ - "llm_config = {\"config_list\": config_list_gpt4, \"seed\": 42}\n", + "llm_config = {\"config_list\": config_list_gpt4, \"cache_seed\": 42}\n", "user_proxy = autogen.UserProxyAgent(\n", " name=\"User_proxy\",\n", " system_message=\"A human admin.\",\n", @@ -282,7 +280,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.5" + "version": "3.9.17" }, "orig_nbformat": 4 }, diff --git a/notebook/agentchat_groupchat_RAG.ipynb b/notebook/agentchat_groupchat_RAG.ipynb new file mode 100644 index 00000000000..89407d9933d --- /dev/null +++ b/notebook/agentchat_groupchat_RAG.ipynb @@ -0,0 +1,1500 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<a href=\"https://colab.research.google.com/github/microsoft/autogen/blob/main/notebook/agentchat_groupchat_RAG.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Auto Generated Agent Chat: Group Chat with Retrieval Augmented Generation\n", + "\n", + "AutoGen supports conversable agents powered by LLMs, tools or humans, performing tasks collectively via automated chat. This framework allows tool use and human participation through multi-agent conversation.\n", + "Please find documentation about this feature [here](https://microsoft.github.io/autogen/docs/Use-Cases/agent_chat).\n", + "\n", + "## Requirements\n", + "\n", + "AutoGen requires `Python>=3.8`. To run this notebook example, please install:\n", + "```bash\n", + "pip install pyautogen\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "%%capture --no-stderr\n", + "# %pip install pyautogen[retrievechat]~=0.1.11" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Set your API Endpoint\n", + "\n", + "The [`config_list_from_json`](https://microsoft.github.io/autogen/docs/reference/oai/openai_utils#config_list_from_json) function loads a list of configurations from an environment variable or a json file." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "LLM models: ['gpt-35-turbo', 'gpt-35-turbo-0613']\n" + ] + } + ], + "source": [ + "import autogen\n", + "\n", + "config_list = autogen.config_list_from_json(\n", + " \"OAI_CONFIG_LIST\",\n", + " file_location=\".\",\n", + " filter_dict={\n", + " \"model\": [\"gpt-3.5-turbo\", \"gpt-35-turbo\", \"gpt-35-turbo-0613\", \"gpt-4\", \"gpt4\", \"gpt-4-32k\"],\n", + " },\n", + ")\n", + "\n", + "print(\"LLM models: \", [config_list[i][\"model\"] for i in range(len(config_list))])" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "It first looks for environment variable \"OAI_CONFIG_LIST\" which needs to be a valid json string. If that variable is not found, it then looks for a json file named \"OAI_CONFIG_LIST\". It filters the configs by models (you can filter by other keys as well).\n", + "\n", + "The config list looks like the following:\n", + "```python\n", + "config_list = [\n", + " {\n", + " \"model\": \"gpt-4\",\n", + " \"api_key\": \"<your OpenAI API key>\",\n", + " }, # OpenAI API endpoint for gpt-4\n", + " {\n", + " \"model\": \"gpt-35-turbo-0631\", # 0631 or newer is needed to use functions\n", + " \"base_url\": \"<your Azure OpenAI API base>\", \n", + " \"api_type\": \"azure\", \n", + " \"api_version\": \"2023-08-01-preview\", # 2023-07-01-preview or newer is needed to use functions\n", + " \"api_key\": \"<your Azure OpenAI API key>\"\n", + " }\n", + "]\n", + "```\n", + "\n", + "You can set the value of config_list in any way you prefer. Please refer to this [notebook](https://github.com/microsoft/autogen/blob/main/notebook/oai_openai_utils.ipynb) for full code examples of the different methods." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Construct Agents" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "from autogen.agentchat.contrib.retrieve_user_proxy_agent import RetrieveUserProxyAgent\n", + "from autogen import AssistantAgent\n", + "import chromadb\n", + "\n", + "llm_config = {\n", + " \"timeout\": 60,\n", + " \"seed\": 42,\n", + " \"config_list\": config_list,\n", + " \"temperature\": 0,\n", + "}\n", + "\n", + "# autogen.ChatCompletion.start_logging()\n", + "termination_msg = lambda x: isinstance(x, dict) and \"TERMINATE\" == str(x.get(\"content\", \"\"))[-9:].upper()\n", + "\n", + "boss = autogen.UserProxyAgent(\n", + " name=\"Boss\",\n", + " is_termination_msg=termination_msg,\n", + " human_input_mode=\"TERMINATE\",\n", + " system_message=\"The boss who ask questions and give tasks.\",\n", + " code_execution_config=False, # we don't want to execute code in this case.\n", + ")\n", + "\n", + "boss_aid = RetrieveUserProxyAgent(\n", + " name=\"Boss_Assistant\",\n", + " is_termination_msg=termination_msg,\n", + " system_message=\"Assistant who has extra content retrieval power for solving difficult problems.\",\n", + " human_input_mode=\"TERMINATE\",\n", + " max_consecutive_auto_reply=3,\n", + " retrieve_config={\n", + " \"task\": \"code\",\n", + " \"docs_path\": \"https://raw.githubusercontent.com/microsoft/FLAML/main/website/docs/Examples/Integrate%20-%20Spark.md\",\n", + " \"chunk_token_size\": 1000,\n", + " \"model\": config_list[0][\"model\"],\n", + " \"client\": chromadb.PersistentClient(path=\"/tmp/chromadb\"),\n", + " \"collection_name\": \"groupchat\",\n", + " \"get_or_create\": True,\n", + " },\n", + " code_execution_config=False, # we don't want to execute code in this case.\n", + ")\n", + "\n", + "coder = AssistantAgent(\n", + " name=\"Senior_Python_Engineer\",\n", + " is_termination_msg=termination_msg,\n", + " system_message=\"You are a senior python engineer. Reply `TERMINATE` in the end when everything is done.\",\n", + " llm_config=llm_config,\n", + ")\n", + "\n", + "pm = autogen.AssistantAgent(\n", + " name=\"Product_Manager\",\n", + " is_termination_msg=termination_msg,\n", + " system_message=\"You are a product manager. Reply `TERMINATE` in the end when everything is done.\",\n", + " llm_config=llm_config,\n", + ")\n", + "\n", + "reviewer = autogen.AssistantAgent(\n", + " name=\"Code_Reviewer\",\n", + " is_termination_msg=termination_msg,\n", + " system_message=\"You are a code reviewer. Reply `TERMINATE` in the end when everything is done.\",\n", + " llm_config=llm_config,\n", + ")\n", + "\n", + "PROBLEM = \"How to use spark for parallel training in FLAML? Give me sample code.\"\n", + "\n", + "def _reset_agents():\n", + " boss.reset()\n", + " boss_aid.reset()\n", + " coder.reset()\n", + " pm.reset()\n", + " reviewer.reset()\n", + "\n", + "def rag_chat():\n", + " _reset_agents()\n", + " groupchat = autogen.GroupChat(\n", + " agents=[boss_aid, coder, pm, reviewer], messages=[], max_round=12\n", + " )\n", + " manager = autogen.GroupChatManager(groupchat=groupchat, llm_config=llm_config)\n", + "\n", + " # Start chatting with boss_aid as this is the user proxy agent.\n", + " boss_aid.initiate_chat(\n", + " manager,\n", + " problem=PROBLEM,\n", + " n_results=3,\n", + " )\n", + "\n", + "def norag_chat():\n", + " _reset_agents()\n", + " groupchat = autogen.GroupChat(\n", + " agents=[boss, coder, pm, reviewer], messages=[], max_round=12\n", + " )\n", + " manager = autogen.GroupChatManager(groupchat=groupchat, llm_config=llm_config)\n", + "\n", + " # Start chatting with boss as this is the user proxy agent.\n", + " boss.initiate_chat(\n", + " manager,\n", + " message=PROBLEM,\n", + " )\n", + "\n", + "def call_rag_chat():\n", + " _reset_agents()\n", + " # In this case, we will have multiple user proxy agents and we don't initiate the chat\n", + " # with RAG user proxy agent.\n", + " # In order to use RAG user proxy agent, we need to wrap RAG agents in a function and call\n", + " # it from other agents.\n", + " def retrieve_content(message, n_results=3):\n", + " boss_aid.n_results = n_results # Set the number of results to be retrieved.\n", + " # Check if we need to update the context.\n", + " update_context_case1, update_context_case2 = boss_aid._check_update_context(message)\n", + " if (update_context_case1 or update_context_case2) and boss_aid.update_context:\n", + " boss_aid.problem = message if not hasattr(boss_aid, \"problem\") else boss_aid.problem\n", + " _, ret_msg = boss_aid._generate_retrieve_user_reply(message)\n", + " else:\n", + " ret_msg = boss_aid.generate_init_message(message, n_results=n_results)\n", + " return ret_msg if ret_msg else message\n", + " \n", + " boss_aid.human_input_mode = \"NEVER\" # Disable human input for boss_aid since it only retrieves content.\n", + " \n", + " llm_config = {\n", + " \"functions\": [\n", + " {\n", + " \"name\": \"retrieve_content\",\n", + " \"description\": \"retrieve content for code generation and question answering.\",\n", + " \"parameters\": {\n", + " \"type\": \"object\",\n", + " \"properties\": {\n", + " \"message\": {\n", + " \"type\": \"string\",\n", + " \"description\": \"Refined message which keeps the original meaning and can be used to retrieve content for code generation and question answering.\",\n", + " }\n", + " },\n", + " \"required\": [\"message\"],\n", + " },\n", + " },\n", + " ],\n", + " \"config_list\": config_list,\n", + " \"timeout\": 60,\n", + " \"seed\": 42,\n", + " }\n", + "\n", + " for agent in [coder, pm, reviewer]:\n", + " # update llm_config for assistant agents.\n", + " agent.llm_config.update(llm_config)\n", + "\n", + " for agent in [boss, coder, pm, reviewer]:\n", + " # register functions for all agents.\n", + " agent.register_function(\n", + " function_map={\n", + " \"retrieve_content\": retrieve_content,\n", + " }\n", + " )\n", + "\n", + " groupchat = autogen.GroupChat(\n", + " agents=[boss, coder, pm, reviewer], messages=[], max_round=12\n", + " )\n", + " manager = autogen.GroupChatManager(groupchat=groupchat, llm_config=llm_config)\n", + "\n", + " # Start chatting with boss as this is the user proxy agent.\n", + " boss.initiate_chat(\n", + " manager,\n", + " message=PROBLEM,\n", + " )" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Start Chat\n", + "\n", + "### UserProxyAgent doesn't get the correct code\n", + "[FLAML](https://github.com/microsoft/FLAML) was open sourced in 2020, so ChatGPT is familiar with it. However, Spark-related APIs were added in 2022, so they were not in ChatGPT's training data. As a result, we end up with invalid code." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[33mBoss\u001b[0m (to chat_manager):\n", + "\n", + "How to use spark for parallel training in FLAML? Give me sample code.\n", + "\n", + "--------------------------------------------------------------------------------\n", + "How to use spark for parallel training in FLAML? Give me sample code.\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33mSenior_Python_Engineer\u001b[0m (to chat_manager):\n", + "\n", + "To use Spark for parallel training in FLAML, you can use the `SparkTrials` class provided by FLAML. Here is a sample code:\n", + "\n", + "```python\n", + "from flaml import AutoML\n", + "from flaml.data import load_credit\n", + "from flaml.model import SparkTrials\n", + "\n", + "# Load data\n", + "X_train, y_train, X_test, y_test = load_credit()\n", + "\n", + "# Define the search space\n", + "search_space = {\n", + " \"n_estimators\": {\"domain\": range(10, 100)},\n", + " \"max_depth\": {\"domain\": range(6, 10)},\n", + " \"learning_rate\": {\"domain\": (0.01, 0.1, 1)},\n", + "}\n", + "\n", + "# Create an AutoML instance with SparkTrials\n", + "automl = AutoML(\n", + " search_space=search_space,\n", + " task=\"classification\",\n", + " n_jobs=1,\n", + " ensemble_size=0,\n", + " max_time=60,\n", + " trials=SparkTrials(parallelism=2),\n", + ")\n", + "\n", + "# Train the model\n", + "automl.fit(X_train=X_train, y_train=y_train)\n", + "\n", + "# Evaluate the model\n", + "print(\"Best model:\", automl.best_model)\n", + "print(\"Best hyperparameters:\", automl.best_config)\n", + "print(\"Test accuracy:\", automl.score(X_test, y_test))\n", + "\n", + "# Terminate\n", + "TERMINATE\n", + "```\n", + "\n", + "In this code, we first load the credit dataset. Then, we define the search space for the hyperparameters. We create an `AutoML` instance with `SparkTrials` as the `trials` parameter. We set the `parallelism` parameter to 2 to use 2 Spark workers for parallel training. Finally, we fit the model and evaluate it.\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33mCode_Reviewer\u001b[0m (to chat_manager):\n", + "\n", + "Great! This code looks good to me.\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33mProduct_Manager\u001b[0m (to chat_manager):\n", + "\n", + "Thank you! Let me know if you have any other questions.\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[31m\n", + ">>>>>>>> USING AUTO REPLY...\u001b[0m\n", + "\u001b[33mBoss\u001b[0m (to chat_manager):\n", + "\n", + "\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[31m\n", + ">>>>>>>> USING AUTO REPLY...\u001b[0m\n", + "\u001b[33mBoss\u001b[0m (to chat_manager):\n", + "\n", + "\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[31m\n", + ">>>>>>>> USING AUTO REPLY...\u001b[0m\n", + "\u001b[33mBoss\u001b[0m (to chat_manager):\n", + "\n", + "\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[31m\n", + ">>>>>>>> USING AUTO REPLY...\u001b[0m\n", + "\u001b[33mBoss\u001b[0m (to chat_manager):\n", + "\n", + "\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[31m\n", + ">>>>>>>> USING AUTO REPLY...\u001b[0m\n", + "\u001b[33mBoss\u001b[0m (to chat_manager):\n", + "\n", + "\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[31m\n", + ">>>>>>>> USING AUTO REPLY...\u001b[0m\n", + "\u001b[33mBoss\u001b[0m (to chat_manager):\n", + "\n", + "\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[31m\n", + ">>>>>>>> USING AUTO REPLY...\u001b[0m\n", + "\u001b[33mBoss\u001b[0m (to chat_manager):\n", + "\n", + "\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[31m\n", + ">>>>>>>> USING AUTO REPLY...\u001b[0m\n", + "\u001b[33mBoss\u001b[0m (to chat_manager):\n", + "\n", + "\n", + "\n", + "--------------------------------------------------------------------------------\n" + ] + } + ], + "source": [ + "norag_chat()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### RetrieveUserProxyAgent get the correct code\n", + "Since RetrieveUserProxyAgent can perform retrieval-augmented generation based on the given documentation file, ChatGPT can generate the correct code for us!" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Trying to create collection.\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:autogen.retrieve_utils:Found 2 chunks.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "doc_ids: [['doc_0', 'doc_1', 'doc_4']]\n", + "\u001b[32mAdding doc_id doc_0 to context.\u001b[0m\n", + "\u001b[32mAdding doc_id doc_1 to context.\u001b[0m\n", + "\u001b[32mAdding doc_id doc_4 to context.\u001b[0m\n", + "\u001b[33mBoss_Assistant\u001b[0m (to chat_manager):\n", + "\n", + "You're a retrieve augmented coding assistant. You answer user's questions based on your own knowledge and the\n", + "context provided by the user.\n", + "If you can't answer the question with or without the current context, you should reply exactly `UPDATE CONTEXT`.\n", + "For code generation, you must obey the following rules:\n", + "Rule 1. You MUST NOT install any packages because all the packages needed are already installed.\n", + "Rule 2. You must follow the formats below to write your code:\n", + "```language\n", + "# your code\n", + "```\n", + "\n", + "User's question is: How to use spark for parallel training in FLAML? Give me sample code.\n", + "\n", + "Context is: # Integrate - Spark\n", + "\n", + "FLAML has integrated Spark for distributed training. There are two main aspects of integration with Spark:\n", + "- Use Spark ML estimators for AutoML.\n", + "- Use Spark to run training in parallel spark jobs.\n", + "\n", + "## Spark ML Estimators\n", + "\n", + "FLAML integrates estimators based on Spark ML models. These models are trained in parallel using Spark, so we called them Spark estimators. To use these models, you first need to organize your data in the required format.\n", + "\n", + "### Data\n", + "\n", + "For Spark estimators, AutoML only consumes Spark data. FLAML provides a convenient function `to_pandas_on_spark` in the `flaml.automl.spark.utils` module to convert your data into a pandas-on-spark (`pyspark.pandas`) dataframe/series, which Spark estimators require.\n", + "\n", + "This utility function takes data in the form of a `pandas.Dataframe` or `pyspark.sql.Dataframe` and converts it into a pandas-on-spark dataframe. It also takes `pandas.Series` or `pyspark.sql.Dataframe` and converts it into a [pandas-on-spark](https://spark.apache.org/docs/latest/api/python/user_guide/pandas_on_spark/index.html) series. If you pass in a `pyspark.pandas.Dataframe`, it will not make any changes.\n", + "\n", + "This function also accepts optional arguments `index_col` and `default_index_type`.\n", + "- `index_col` is the column name to use as the index, default is None.\n", + "- `default_index_type` is the default index type, default is \"distributed-sequence\". More info about default index type could be found on Spark official [documentation](https://spark.apache.org/docs/latest/api/python/user_guide/pandas_on_spark/options.html#default-index-type)\n", + "\n", + "Here is an example code snippet for Spark Data:\n", + "\n", + "```python\n", + "import pandas as pd\n", + "from flaml.automl.spark.utils import to_pandas_on_spark\n", + "# Creating a dictionary\n", + "data = {\"Square_Feet\": [800, 1200, 1800, 1500, 850],\n", + " \"Age_Years\": [20, 15, 10, 7, 25],\n", + " \"Price\": [100000, 200000, 300000, 240000, 120000]}\n", + "\n", + "# Creating a pandas DataFrame\n", + "dataframe = pd.DataFrame(data)\n", + "label = \"Price\"\n", + "\n", + "# Convert to pandas-on-spark dataframe\n", + "psdf = to_pandas_on_spark(dataframe)\n", + "```\n", + "\n", + "To use Spark ML models you need to format your data appropriately. Specifically, use [`VectorAssembler`](https://spark.apache.org/docs/latest/api/python/reference/api/pyspark.ml.feature.VectorAssembler.html) to merge all feature columns into a single vector column.\n", + "\n", + "Here is an example of how to use it:\n", + "```python\n", + "from pyspark.ml.feature import VectorAssembler\n", + "columns = psdf.columns\n", + "feature_cols = [col for col in columns if col != label]\n", + "featurizer = VectorAssembler(inputCols=feature_cols, outputCol=\"features\")\n", + "psdf = featurizer.transform(psdf.to_spark(index_col=\"index\"))[\"index\", \"features\"]\n", + "```\n", + "\n", + "Later in conducting the experiment, use your pandas-on-spark data like non-spark data and pass them using `X_train, y_train` or `dataframe, label`.\n", + "\n", + "### Estimators\n", + "#### Model List\n", + "- `lgbm_spark`: The class for fine-tuning Spark version LightGBM models, using [SynapseML](https://microsoft.github.io/SynapseML/docs/features/lightgbm/about/) API.\n", + "\n", + "#### Usage\n", + "First, prepare your data in the required format as described in the previous section.\n", + "\n", + "By including the models you intend to try in the `estimators_list` argument to `flaml.automl`, FLAML will start trying configurations for these models. If your input is Spark data, FLAML will also use estimators with the `_spark` postfix by default, even if you haven't specified them.\n", + "\n", + "Here is an example code snippet using SparkML models in AutoML:\n", + "\n", + "```python\n", + "import flaml\n", + "# prepare your data in pandas-on-spark format as we previously mentioned\n", + "\n", + "automl = flaml.AutoML()\n", + "settings = {\n", + " \"time_budget\": 30,\n", + " \"metric\": \"r2\",\n", + " \"estimator_list\": [\"lgbm_spark\"], # this setting is optional\n", + " \"task\": \"regression\",\n", + "}\n", + "\n", + "automl.fit(\n", + " dataframe=psdf,\n", + " label=label,\n", + " **settings,\n", + ")\n", + "```\n", + "\n", + "\n", + "[Link to notebook](https://github.com/microsoft/FLAML/blob/main/notebook/automl_bankrupt_synapseml.ipynb) | [Open in colab](https://colab.research.google.com/github/microsoft/FLAML/blob/main/notebook/automl_bankrupt_synapseml.ipynb)\n", + "\n", + "## Parallel Spark Jobs\n", + "You can activate Spark as the parallel backend during parallel tuning in both [AutoML](/docs/Use-Cases/Task-Oriented-AutoML#parallel-tuning) and [Hyperparameter Tuning](/docs/Use-Cases/Tune-User-Defined-Function#parallel-tuning), by setting the `use_spark` to `true`. FLAML will dispatch your job to the distributed Spark backend using [`joblib-spark`](https://github.com/joblib/joblib-spark).\n", + "\n", + "Please note that you should not set `use_spark` to `true` when applying AutoML and Tuning for Spark Data. This is because only SparkML models will be used for Spark Data in AutoML and Tuning. As SparkML models run in parallel, there is no need to distribute them with `use_spark` again.\n", + "\n", + "All the Spark-related arguments are stated below. These arguments are available in both Hyperparameter Tuning and AutoML:\n", + "\n", + "\n", + "- `use_spark`: boolean, default=False | Whether to use spark to run the training in parallel spark jobs. This can be used to accelerate training on large models and large datasets, but will incur more overhead in time and thus slow down training in some cases. GPU training is not supported yet when use_spark is True. For Spark clusters, by default, we will launch one trial per executor. However, sometimes we want to launch more trials than the number of executors (e.g., local mode). In this case, we can set the environment variable `FLAML_MAX_CONCURRENT` to override the detected `num_executors`. The final number of concurrent trials will be the minimum of `n_concurrent_trials` and `num_executors`.\n", + "- `n_concurrent_trials`: int, default=1 | The number of concurrent trials. When n_concurrent_trials > 1, FLAML performes parallel tuning.\n", + "- `force_cancel`: boolean, default=False | Whether to forcely cancel Spark jobs if the search time exceeded the time budget. Spark jobs include parallel tuning jobs and Spark-based model training jobs.\n", + "\n", + "An example code snippet for using parallel Spark jobs:\n", + "```python\n", + "import flaml\n", + "automl_experiment = flaml.AutoML()\n", + "automl_settings = {\n", + " \"time_budget\": 30,\n", + " \"metric\": \"r2\",\n", + " \"task\": \"regression\",\n", + " \"n_concurrent_trials\": 2,\n", + " \"use_spark\": True,\n", + " \"force_cancel\": True, # Activating the force_cancel option can immediately halt Spark jobs once they exceed the allocated time_budget.\n", + "}\n", + "\n", + "automl.fit(\n", + " dataframe=dataframe,\n", + " label=label,\n", + " **automl_settings,\n", + ")\n", + "```\n", + "\n", + "\n", + "[Link to notebook](https://github.com/microsoft/FLAML/blob/main/notebook/integrate_spark.ipynb) | [Open in colab](https://colab.research.google.com/github/microsoft/FLAML/blob/main/notebook/integrate_spark.ipynb)\n", + "\n", + "\n", + "```python\n", + "import flaml\n", + "# for flaml.tune\n", + "with mlflow.start_run(run_name=f\"spark_auto_trials_1686631558\"):\n", + " analysis = flaml.tune.run(\n", + " func_to_tune,\n", + " params,\n", + " metric=\"r2\",\n", + " mode=\"max\",\n", + " mlflow_exp_name=\"test_doc\",\n", + " use_spark=True,\n", + " )\n", + "\n", + "# for flaml.automl\n", + "automl_experiment = flaml.AutoML()\n", + "automl_settings = {\n", + " \"metric\": \"r2\",\n", + " \"task\": \"regression\",\n", + " \"use_spark\": True,\n", + " \"mlflow_exp_name\": \"test_doc\",\n", + " \"estimator_list\": [\n", + " \"lgbm\",\n", + " \"rf\",\n", + " \"xgboost\",\n", + " \"extra_tree\",\n", + " \"xgb_limitdepth\",\n", + " ], # catboost does not yet support mlflow autologging\n", + "}\n", + "with mlflow.start_run(run_name=f\"automl_spark_trials_1686631579\"):\n", + " automl_experiment.fit(X_train=train_x, y_train=train_y, **automl_settings)\n", + "```\n", + "\n", + "\n", + "\n", + "### Results\n", + "*Tune Autolog Trials on MLFlow UI*\n", + "\n", + "\n", + "![Tune Autolog Trials on MLFlow UI](Images/tune_trials.png)\n", + "\n", + "\n", + "*AutoML Autolog Trials on MLFlow UI*\n", + "\n", + "\n", + "![AutoML Autolog Trials on MLFlow UI](Images/automl_trials.png)\n", + "\n", + "\n", + "### Differences Between Auto and Manual Logging\n", + "Autologging is managed by MLFlow, while manual logging is maintained by FLAML.\n", + "\n", + "\n", + "#### Details of Manual Logging\n", + "FLAML logs general artifacts for AutoML tasks. Specifically, we log these artifacts:\n", + "\n", + "**`flaml.tune`**\n", + "\n", + "\n", + "![Manual Log Example for Tuning](Images/manual_log_tune.png)\n", + "\n", + "\n", + "- We create a parent run to log the best metric and the best configuration for the entire tuning process.\n", + "- For each trial, we create a child run to log the metric specific to the tune function and the configuration for that trial.\n", + "\n", + "**`flaml.automl`**\n", + "\n", + "\n", + "![Manual Log Example for AutoML](Images/manual_log_automl.png)\n", + "\n", + "\n", + "- We create a parent run to log the results of the experiment. This includes:\n", + " - The configuration of this model.\n", + " - The `best_validation_loss` produced by this model.\n", + " - The `best_iteration` to identify the point at which this model was found.\n", + "- For each state (a specific learner with different hyperparameters), we record the best trial for this model. This includes:\n", + " - The configuration of the best trial.\n", + " - The `validation_loss` the best trial produces.\n", + " - The `iter_count` to identify how many trials we have conducted for this state.\n", + " - The `pred_time`, which is the time cost of predicting test data for this model.\n", + " - The `wall_clock_time`, which is the time cost of this state.\n", + " - The `sample_size` to show how much data we sampled in this state.\n", + "Note that we also added these information to autolog AutoML run.\n", + "\n", + "\n", + "#### Details of Autologging\n", + "Autolog artifacts typically include model parameters, model files, and runtime metrics like the following:\n", + "\n", + "\n", + "![Autolog Example](Images/autolog_example.png)\n", + "\n", + "\n", + "Artifacts can differ among various machine learning libraries. More detailed information can be found [here](https://mlflow.org/docs/latest/tracking.html#automatic-logging).\n", + "\n", + "\n", + "\n", + "\n", + "## Plot Experiment Result\n", + "The `flaml.visualization` module provides utility functions for plotting the optimization process using [plotly](https://plotly.com/python/). Leveraging `plotly`, users can interactively explore experiment results. To use these plotting functions, simply provide your optimized `flaml.AutoML` or `flaml.tune.tune.ExperimentAnalysis` object as input. Optional parameters can be added using keyword arguments.\n", + "\n", + "Avaliable plotting functions:\n", + "- `plot_optimization_history`: Plot optimization history of all trials in the experiment.\n", + "- `plot_feature_importance`: Plot importance for each feature in the dataset.\n", + "- `plot_parallel_coordinate`: Plot the high-dimensional parameter relationships in the experiment.\n", + "- `plot_contour`: Plot the parameter relationship as contour plot in the experiment.\n", + "- `plot_edf`: Plot the objective value EDF (empirical distribution function) of the experiment.\n", + "- `plot_timeline`: Plot the timeline of the experiment.\n", + "- `plot_slice`: Plot the parameter relationship as slice plot in a study.\n", + "\n", + "### Figure Examples\n", + "![Plot Examples](Images/plot_samples.png)\n", + "\n", + "Check out our example [notebook](../../notebook/trident/automl_plot.ipynb) for a preview of all interactive plots.\n", + "\n", + "\n", + "\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[32mAdding doc_id doc_1 to context.\u001b[0m\n", + "\u001b[32mAdding doc_id doc_4 to context.\u001b[0m\n", + "\u001b[33mBoss_Assistant\u001b[0m (to chat_manager):\n", + "\n", + "You're a retrieve augmented coding assistant. You answer user's questions based on your own knowledge and the\n", + "context provided by the user.\n", + "If you can't answer the question with or without the current context, you should reply exactly `UPDATE CONTEXT`.\n", + "For code generation, you must obey the following rules:\n", + "Rule 1. You MUST NOT install any packages because all the packages needed are already installed.\n", + "Rule 2. You must follow the formats below to write your code:\n", + "```language\n", + "# your code\n", + "```\n", + "\n", + "User's question is: How to use spark for parallel training in FLAML? Give me sample code.\n", + "\n", + "Context is: # Integrate - Spark\n", + "\n", + "FLAML has integrated Spark for distributed training. There are two main aspects of integration with Spark:\n", + "- Use Spark ML estimators for AutoML.\n", + "- Use Spark to run training in parallel spark jobs.\n", + "\n", + "## Spark ML Estimators\n", + "\n", + "FLAML integrates estimators based on Spark ML models. These models are trained in parallel using Spark, so we called them Spark estimators. To use these models, you first need to organize your data in the required format.\n", + "\n", + "### Data\n", + "\n", + "For Spark estimators, AutoML only consumes Spark data. FLAML provides a convenient function `to_pandas_on_spark` in the `flaml.automl.spark.utils` module to convert your data into a pandas-on-spark (`pyspark.pandas`) dataframe/series, which Spark estimators require.\n", + "\n", + "This utility function takes data in the form of a `pandas.Dataframe` or `pyspark.sql.Dataframe` and converts it into a pandas-on-spark dataframe. It also takes `pandas.Series` or `pyspark.sql.Dataframe` and converts it into a [pandas-on-spark](https://spark.apache.org/docs/latest/api/python/user_guide/pandas_on_spark/index.html) series. If you pass in a `pyspark.pandas.Dataframe`, it will not make any changes.\n", + "\n", + "This function also accepts optional arguments `index_col` and `default_index_type`.\n", + "- `index_col` is the column name to use as the index, default is None.\n", + "- `default_index_type` is the default index type, default is \"distributed-sequence\". More info about default index type could be found on Spark official [documentation](https://spark.apache.org/docs/latest/api/python/user_guide/pandas_on_spark/options.html#default-index-type)\n", + "\n", + "Here is an example code snippet for Spark Data:\n", + "\n", + "```python\n", + "import pandas as pd\n", + "from flaml.automl.spark.utils import to_pandas_on_spark\n", + "# Creating a dictionary\n", + "data = {\"Square_Feet\": [800, 1200, 1800, 1500, 850],\n", + " \"Age_Years\": [20, 15, 10, 7, 25],\n", + " \"Price\": [100000, 200000, 300000, 240000, 120000]}\n", + "\n", + "# Creating a pandas DataFrame\n", + "dataframe = pd.DataFrame(data)\n", + "label = \"Price\"\n", + "\n", + "# Convert to pandas-on-spark dataframe\n", + "psdf = to_pandas_on_spark(dataframe)\n", + "```\n", + "\n", + "To use Spark ML models you need to format your data appropriately. Specifically, use [`VectorAssembler`](https://spark.apache.org/docs/latest/api/python/reference/api/pyspark.ml.feature.VectorAssembler.html) to merge all feature columns into a single vector column.\n", + "\n", + "Here is an example of how to use it:\n", + "```python\n", + "from pyspark.ml.feature import VectorAssembler\n", + "columns = psdf.columns\n", + "feature_cols = [col for col in columns if col != label]\n", + "featurizer = VectorAssembler(inputCols=feature_cols, outputCol=\"features\")\n", + "psdf = featurizer.transform(psdf.to_spark(index_col=\"index\"))[\"index\", \"features\"]\n", + "```\n", + "\n", + "Later in conducting the experiment, use your pandas-on-spark data like non-spark data and pass them using `X_train, y_train` or `dataframe, label`.\n", + "\n", + "### Estimators\n", + "#### Model List\n", + "- `lgbm_spark`: The class for fine-tuning Spark version LightGBM models, using [SynapseML](https://microsoft.github.io/SynapseML/docs/features/lightgbm/about/) API.\n", + "\n", + "#### Usage\n", + "First, prepare your data in the required format as described in the previous section.\n", + "\n", + "By including the models you intend to try in the `estimators_list` argument to `flaml.automl`, FLAML will start trying configurations for these models. If your input is Spark data, FLAML will also use estimators with the `_spark` postfix by default, even if you haven't specified them.\n", + "\n", + "Here is an example code snippet using SparkML models in AutoML:\n", + "\n", + "```python\n", + "import flaml\n", + "# prepare your data in pandas-on-spark format as we previously mentioned\n", + "\n", + "automl = flaml.AutoML()\n", + "settings = {\n", + " \"time_budget\": 30,\n", + " \"metric\": \"r2\",\n", + " \"estimator_list\": [\"lgbm_spark\"], # this setting is optional\n", + " \"task\": \"regression\",\n", + "}\n", + "\n", + "automl.fit(\n", + " dataframe=psdf,\n", + " label=label,\n", + " **settings,\n", + ")\n", + "```\n", + "\n", + "\n", + "[Link to notebook](https://github.com/microsoft/FLAML/blob/main/notebook/automl_bankrupt_synapseml.ipynb) | [Open in colab](https://colab.research.google.com/github/microsoft/FLAML/blob/main/notebook/automl_bankrupt_synapseml.ipynb)\n", + "\n", + "## Parallel Spark Jobs\n", + "You can activate Spark as the parallel backend during parallel tuning in both [AutoML](/docs/Use-Cases/Task-Oriented-AutoML#parallel-tuning) and [Hyperparameter Tuning](/docs/Use-Cases/Tune-User-Defined-Function#parallel-tuning), by setting the `use_spark` to `true`. FLAML will dispatch your job to the distributed Spark backend using [`joblib-spark`](https://github.com/joblib/joblib-spark).\n", + "\n", + "Please note that you should not set `use_spark` to `true` when applying AutoML and Tuning for Spark Data. This is because only SparkML models will be used for Spark Data in AutoML and Tuning. As SparkML models run in parallel, there is no need to distribute them with `use_spark` again.\n", + "\n", + "All the Spark-related arguments are stated below. These arguments are available in both Hyperparameter Tuning and AutoML:\n", + "\n", + "\n", + "- `use_spark`: boolean, default=False | Whether to use spark to run the training in parallel spark jobs. This can be used to accelerate training on large models and large datasets, but will incur more overhead in time and thus slow down training in some cases. GPU training is not supported yet when use_spark is True. For Spark clusters, by default, we will launch one trial per executor. However, sometimes we want to launch more trials than the number of executors (e.g., local mode). In this case, we can set the environment variable `FLAML_MAX_CONCURRENT` to override the detected `num_executors`. The final number of concurrent trials will be the minimum of `n_concurrent_trials` and `num_executors`.\n", + "- `n_concurrent_trials`: int, default=1 | The number of concurrent trials. When n_concurrent_trials > 1, FLAML performes parallel tuning.\n", + "- `force_cancel`: boolean, default=False | Whether to forcely cancel Spark jobs if the search time exceeded the time budget. Spark jobs include parallel tuning jobs and Spark-based model training jobs.\n", + "\n", + "An example code snippet for using parallel Spark jobs:\n", + "```python\n", + "import flaml\n", + "automl_experiment = flaml.AutoML()\n", + "automl_settings = {\n", + " \"time_budget\": 30,\n", + " \"metric\": \"r2\",\n", + " \"task\": \"regression\",\n", + " \"n_concurrent_trials\": 2,\n", + " \"use_spark\": True,\n", + " \"force_cancel\": True, # Activating the force_cancel option can immediately halt Spark jobs once they exceed the allocated time_budget.\n", + "}\n", + "\n", + "automl.fit(\n", + " dataframe=dataframe,\n", + " label=label,\n", + " **automl_settings,\n", + ")\n", + "```\n", + "\n", + "\n", + "[Link to notebook](https://github.com/microsoft/FLAML/blob/main/notebook/integrate_spark.ipynb) | [Open in colab](https://colab.research.google.com/github/microsoft/FLAML/blob/main/notebook/integrate_spark.ipynb)\n", + "\n", + "\n", + "```python\n", + "import flaml\n", + "# for flaml.tune\n", + "with mlflow.start_run(run_name=f\"spark_auto_trials_1686631558\"):\n", + " analysis = flaml.tune.run(\n", + " func_to_tune,\n", + " params,\n", + " metric=\"r2\",\n", + " mode=\"max\",\n", + " mlflow_exp_name=\"test_doc\",\n", + " use_spark=True,\n", + " )\n", + "\n", + "# for flaml.automl\n", + "automl_experiment = flaml.AutoML()\n", + "automl_settings = {\n", + " \"metric\": \"r2\",\n", + " \"task\": \"regression\",\n", + " \"use_spark\": True,\n", + " \"mlflow_exp_name\": \"test_doc\",\n", + " \"estimator_list\": [\n", + " \"lgbm\",\n", + " \"rf\",\n", + " \"xgboost\",\n", + " \"extra_tree\",\n", + " \"xgb_limitdepth\",\n", + " ], # catboost does not yet support mlflow autologging\n", + "}\n", + "with mlflow.start_run(run_name=f\"automl_spark_trials_1686631579\"):\n", + " automl_experiment.fit(X_train=train_x, y_train=train_y, **automl_settings)\n", + "```\n", + "\n", + "\n", + "\n", + "### Results\n", + "*Tune Autolog Trials on MLFlow UI*\n", + "\n", + "\n", + "![Tune Autolog Trials on MLFlow UI](Images/tune_trials.png)\n", + "\n", + "\n", + "*AutoML Autolog Trials on MLFlow UI*\n", + "\n", + "\n", + "![AutoML Autolog Trials on MLFlow UI](Images/automl_trials.png)\n", + "\n", + "\n", + "### Differences Between Auto and Manual Logging\n", + "Autologging is managed by MLFlow, while manual logging is maintained by FLAML.\n", + "\n", + "\n", + "#### Details of Manual Logging\n", + "FLAML logs general artifacts for AutoML tasks. Specifically, we log these artifacts:\n", + "\n", + "**`flaml.tune`**\n", + "\n", + "\n", + "![Manual Log Example for Tuning](Images/manual_log_tune.png)\n", + "\n", + "\n", + "- We create a parent run to log the best metric and the best configuration for the entire tuning process.\n", + "- For each trial, we create a child run to log the metric specific to the tune function and the configuration for that trial.\n", + "\n", + "**`flaml.automl`**\n", + "\n", + "\n", + "![Manual Log Example for AutoML](Images/manual_log_automl.png)\n", + "\n", + "\n", + "- We create a parent run to log the results of the experiment. This includes:\n", + " - The configuration of this model.\n", + " - The `best_validation_loss` produced by this model.\n", + " - The `best_iteration` to identify the point at which this model was found.\n", + "- For each state (a specific learner with different hyperparameters), we record the best trial for this model. This includes:\n", + " - The configuration of the best trial.\n", + " - The `validation_loss` the best trial produces.\n", + " - The `iter_count` to identify how many trials we have conducted for this state.\n", + " - The `pred_time`, which is the time cost of predicting test data for this model.\n", + " - The `wall_clock_time`, which is the time cost of this state.\n", + " - The `sample_size` to show how much data we sampled in this state.\n", + "Note that we also added these information to autolog AutoML run.\n", + "\n", + "\n", + "#### Details of Autologging\n", + "Autolog artifacts typically include model parameters, model files, and runtime metrics like the following:\n", + "\n", + "\n", + "![Autolog Example](Images/autolog_example.png)\n", + "\n", + "\n", + "Artifacts can differ among various machine learning libraries. More detailed information can be found [here](https://mlflow.org/docs/latest/tracking.html#automatic-logging).\n", + "\n", + "\n", + "\n", + "\n", + "## Plot Experiment Result\n", + "The `flaml.visualization` module provides utility functions for plotting the optimization process using [plotly](https://plotly.com/python/). Leveraging `plotly`, users can interactively explore experiment results. To use these plotting functions, simply provide your optimized `flaml.AutoML` or `flaml.tune.tune.ExperimentAnalysis` object as input. Optional parameters can be added using keyword arguments.\n", + "\n", + "Avaliable plotting functions:\n", + "- `plot_optimization_history`: Plot optimization history of all trials in the experiment.\n", + "- `plot_feature_importance`: Plot importance for each feature in the dataset.\n", + "- `plot_parallel_coordinate`: Plot the high-dimensional parameter relationships in the experiment.\n", + "- `plot_contour`: Plot the parameter relationship as contour plot in the experiment.\n", + "- `plot_edf`: Plot the objective value EDF (empirical distribution function) of the experiment.\n", + "- `plot_timeline`: Plot the timeline of the experiment.\n", + "- `plot_slice`: Plot the parameter relationship as slice plot in a study.\n", + "\n", + "### Figure Examples\n", + "![Plot Examples](Images/plot_samples.png)\n", + "\n", + "Check out our example [notebook](../../notebook/trident/automl_plot.ipynb) for a preview of all interactive plots.\n", + "\n", + "\n", + "\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33mSenior_Python_Engineer\u001b[0m (to chat_manager):\n", + "\n", + "To use Spark for parallel training in FLAML, you can activate Spark as the parallel backend during parallel tuning in both AutoML and Hyperparameter Tuning, by setting the `use_spark` to `true`. FLAML will dispatch your job to the distributed Spark backend using `joblib-spark`. \n", + "\n", + "Here is an example code snippet for using parallel Spark jobs:\n", + "\n", + "```python\n", + "import flaml\n", + "automl_experiment = flaml.AutoML()\n", + "automl_settings = {\n", + " \"metric\": \"r2\",\n", + " \"task\": \"regression\",\n", + " \"use_spark\": True,\n", + " \"estimator_list\": [\n", + " \"lgbm\",\n", + " \"rf\",\n", + " \"xgboost\",\n", + " \"extra_tree\",\n", + " \"xgb_limitdepth\",\n", + " ],\n", + "}\n", + "automl_experiment.fit(X_train=train_x, y_train=train_y, **automl_settings)\n", + "```\n", + "\n", + "Note that you should not set `use_spark` to `true` when applying AutoML and Tuning for Spark Data. This is because only SparkML models will be used for Spark Data in AutoML and Tuning. As SparkML models run in parallel, there is no need to distribute them with `use_spark` again.\n", + "\n", + "You can also use Spark ML estimators for AutoML. FLAML integrates estimators based on Spark ML models. These models are trained in parallel using Spark, so we called them Spark estimators. To use these models, you first need to organize your data in the required format.\n", + "\n", + "Here is an example code snippet for Spark Data:\n", + "\n", + "```python\n", + "import pandas as pd\n", + "from flaml.automl.spark.utils import to_pandas_on_spark\n", + "# Creating a dictionary\n", + "data = {\"Square_Feet\": [800, 1200, 1800, 1500, 850],\n", + " \"Age_Years\": [20, 15, 10, 7, 25],\n", + " \"Price\": [100000, 200000, 300000, 240000, 120000]}\n", + "\n", + "# Creating a pandas DataFrame\n", + "dataframe = pd.DataFrame(data)\n", + "label = \"Price\"\n", + "\n", + "# Convert to pandas-on-spark dataframe\n", + "psdf = to_pandas_on_spark(dataframe)\n", + "```\n", + "\n", + "To use Spark ML models you need to format your data appropriately. Specifically, use `VectorAssembler` to merge all feature columns into a single vector column.\n", + "\n", + "Here is an example of how to use it:\n", + "```python\n", + "from pyspark.ml.feature import VectorAssembler\n", + "columns = psdf.columns\n", + "feature_cols = [col for col in columns if col != label]\n", + "featurizer = VectorAssembler(inputCols=feature_cols, outputCol=\"features\")\n", + "psdf = featurizer.transform(psdf.to_spark(index_col=\"index\"))[\"index\", \"features\"]\n", + "```\n", + "\n", + "Later in conducting the experiment, use your pandas-on-spark data like non-spark data and pass them using `X_train, y_train` or `dataframe, label`.\n", + "\n", + "You can also plot the optimization process using `plotly` by providing your optimized `flaml.AutoML` or `flaml.tune.tune.ExperimentAnalysis` object as input. Optional parameters can be added using keyword arguments. Available plotting functions include `plot_optimization_history`, `plot_feature_importance`, `plot_parallel_coordinate`, `plot_contour`, `plot_edf`, `plot_timeline`, and `plot_slice`.\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33mProduct_Manager\u001b[0m (to chat_manager):\n", + "\n", + "\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33mCode_Reviewer\u001b[0m (to chat_manager):\n", + "\n", + "Is there anything else you need help with?\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[31m\n", + ">>>>>>>> USING AUTO REPLY...\u001b[0m\n", + "\u001b[33mBoss_Assistant\u001b[0m (to chat_manager):\n", + "\n", + "\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33mProduct_Manager\u001b[0m (to chat_manager):\n", + "\n", + "No, that's all. Thank you for your help!\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33mCode_Reviewer\u001b[0m (to chat_manager):\n", + "\n", + "You're welcome! Don't hesitate to ask if you have any more questions in the future. Have a great day!\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[31m\n", + ">>>>>>>> USING AUTO REPLY...\u001b[0m\n", + "\u001b[33mBoss_Assistant\u001b[0m (to chat_manager):\n", + "\n", + "\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33mSenior_Python_Engineer\u001b[0m (to chat_manager):\n", + "\n", + "Have a great day too!\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33mProduct_Manager\u001b[0m (to chat_manager):\n", + "\n", + "Thank you!\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33mCode_Reviewer\u001b[0m (to chat_manager):\n", + "\n", + "You're welcome!\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[31m\n", + ">>>>>>>> USING AUTO REPLY...\u001b[0m\n", + "\u001b[33mBoss_Assistant\u001b[0m (to chat_manager):\n", + "\n", + "\n", + "\n", + "--------------------------------------------------------------------------------\n" + ] + } + ], + "source": [ + "rag_chat()\n", + "# type exit to terminate the chat" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Call RetrieveUserProxyAgent while init chat with another user proxy agent\n", + "Sometimes, there might be a need to use RetrieveUserProxyAgent in group chat without initializing the chat with it. In such scenarios, it becomes essential to create a function that wraps the RAG agents and allows them to be called from other agents." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[33mBoss\u001b[0m (to chat_manager):\n", + "\n", + "How to use spark for parallel training in FLAML? Give me sample code.\n", + "\n", + "--------------------------------------------------------------------------------\n", + "How to use spark for parallel training in FLAML? Give me sample code.\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33mSenior_Python_Engineer\u001b[0m (to chat_manager):\n", + "\n", + "\u001b[32m***** Suggested function Call: retrieve_content *****\u001b[0m\n", + "Arguments: \n", + "{\n", + " \"message\": \"How to use spark for parallel training in FLAML?\"\n", + "}\n", + "\u001b[32m*****************************************************\u001b[0m\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[35m\n", + ">>>>>>>> EXECUTING FUNCTION retrieve_content...\u001b[0m\n", + "doc_ids: [['doc_0', 'doc_1', 'doc_4']]\n", + "\u001b[32mAdding doc_id doc_0 to context.\u001b[0m\n", + "\u001b[32mAdding doc_id doc_1 to context.\u001b[0m\n", + "\u001b[32mAdding doc_id doc_4 to context.\u001b[0m\n", + "\u001b[33mSenior_Python_Engineer\u001b[0m (to chat_manager):\n", + "\n", + "\u001b[32m***** Response from calling function \"retrieve_content\" *****\u001b[0m\n", + "You're a retrieve augmented coding assistant. You answer user's questions based on your own knowledge and the\n", + "context provided by the user.\n", + "If you can't answer the question with or without the current context, you should reply exactly `UPDATE CONTEXT`.\n", + "For code generation, you must obey the following rules:\n", + "Rule 1. You MUST NOT install any packages because all the packages needed are already installed.\n", + "Rule 2. You must follow the formats below to write your code:\n", + "```language\n", + "# your code\n", + "```\n", + "\n", + "User's question is: How to use spark for parallel training in FLAML?\n", + "\n", + "Context is: # Integrate - Spark\n", + "\n", + "FLAML has integrated Spark for distributed training. There are two main aspects of integration with Spark:\n", + "- Use Spark ML estimators for AutoML.\n", + "- Use Spark to run training in parallel spark jobs.\n", + "\n", + "## Spark ML Estimators\n", + "\n", + "FLAML integrates estimators based on Spark ML models. These models are trained in parallel using Spark, so we called them Spark estimators. To use these models, you first need to organize your data in the required format.\n", + "\n", + "### Data\n", + "\n", + "For Spark estimators, AutoML only consumes Spark data. FLAML provides a convenient function `to_pandas_on_spark` in the `flaml.automl.spark.utils` module to convert your data into a pandas-on-spark (`pyspark.pandas`) dataframe/series, which Spark estimators require.\n", + "\n", + "This utility function takes data in the form of a `pandas.Dataframe` or `pyspark.sql.Dataframe` and converts it into a pandas-on-spark dataframe. It also takes `pandas.Series` or `pyspark.sql.Dataframe` and converts it into a [pandas-on-spark](https://spark.apache.org/docs/latest/api/python/user_guide/pandas_on_spark/index.html) series. If you pass in a `pyspark.pandas.Dataframe`, it will not make any changes.\n", + "\n", + "This function also accepts optional arguments `index_col` and `default_index_type`.\n", + "- `index_col` is the column name to use as the index, default is None.\n", + "- `default_index_type` is the default index type, default is \"distributed-sequence\". More info about default index type could be found on Spark official [documentation](https://spark.apache.org/docs/latest/api/python/user_guide/pandas_on_spark/options.html#default-index-type)\n", + "\n", + "Here is an example code snippet for Spark Data:\n", + "\n", + "```python\n", + "import pandas as pd\n", + "from flaml.automl.spark.utils import to_pandas_on_spark\n", + "# Creating a dictionary\n", + "data = {\"Square_Feet\": [800, 1200, 1800, 1500, 850],\n", + " \"Age_Years\": [20, 15, 10, 7, 25],\n", + " \"Price\": [100000, 200000, 300000, 240000, 120000]}\n", + "\n", + "# Creating a pandas DataFrame\n", + "dataframe = pd.DataFrame(data)\n", + "label = \"Price\"\n", + "\n", + "# Convert to pandas-on-spark dataframe\n", + "psdf = to_pandas_on_spark(dataframe)\n", + "```\n", + "\n", + "To use Spark ML models you need to format your data appropriately. Specifically, use [`VectorAssembler`](https://spark.apache.org/docs/latest/api/python/reference/api/pyspark.ml.feature.VectorAssembler.html) to merge all feature columns into a single vector column.\n", + "\n", + "Here is an example of how to use it:\n", + "```python\n", + "from pyspark.ml.feature import VectorAssembler\n", + "columns = psdf.columns\n", + "feature_cols = [col for col in columns if col != label]\n", + "featurizer = VectorAssembler(inputCols=feature_cols, outputCol=\"features\")\n", + "psdf = featurizer.transform(psdf.to_spark(index_col=\"index\"))[\"index\", \"features\"]\n", + "```\n", + "\n", + "Later in conducting the experiment, use your pandas-on-spark data like non-spark data and pass them using `X_train, y_train` or `dataframe, label`.\n", + "\n", + "### Estimators\n", + "#### Model List\n", + "- `lgbm_spark`: The class for fine-tuning Spark version LightGBM models, using [SynapseML](https://microsoft.github.io/SynapseML/docs/features/lightgbm/about/) API.\n", + "\n", + "#### Usage\n", + "First, prepare your data in the required format as described in the previous section.\n", + "\n", + "By including the models you intend to try in the `estimators_list` argument to `flaml.automl`, FLAML will start trying configurations for these models. If your input is Spark data, FLAML will also use estimators with the `_spark` postfix by default, even if you haven't specified them.\n", + "\n", + "Here is an example code snippet using SparkML models in AutoML:\n", + "\n", + "```python\n", + "import flaml\n", + "# prepare your data in pandas-on-spark format as we previously mentioned\n", + "\n", + "automl = flaml.AutoML()\n", + "settings = {\n", + " \"time_budget\": 30,\n", + " \"metric\": \"r2\",\n", + " \"estimator_list\": [\"lgbm_spark\"], # this setting is optional\n", + " \"task\": \"regression\",\n", + "}\n", + "\n", + "automl.fit(\n", + " dataframe=psdf,\n", + " label=label,\n", + " **settings,\n", + ")\n", + "```\n", + "\n", + "\n", + "[Link to notebook](https://github.com/microsoft/FLAML/blob/main/notebook/automl_bankrupt_synapseml.ipynb) | [Open in colab](https://colab.research.google.com/github/microsoft/FLAML/blob/main/notebook/automl_bankrupt_synapseml.ipynb)\n", + "\n", + "## Parallel Spark Jobs\n", + "You can activate Spark as the parallel backend during parallel tuning in both [AutoML](/docs/Use-Cases/Task-Oriented-AutoML#parallel-tuning) and [Hyperparameter Tuning](/docs/Use-Cases/Tune-User-Defined-Function#parallel-tuning), by setting the `use_spark` to `true`. FLAML will dispatch your job to the distributed Spark backend using [`joblib-spark`](https://github.com/joblib/joblib-spark).\n", + "\n", + "Please note that you should not set `use_spark` to `true` when applying AutoML and Tuning for Spark Data. This is because only SparkML models will be used for Spark Data in AutoML and Tuning. As SparkML models run in parallel, there is no need to distribute them with `use_spark` again.\n", + "\n", + "All the Spark-related arguments are stated below. These arguments are available in both Hyperparameter Tuning and AutoML:\n", + "\n", + "\n", + "- `use_spark`: boolean, default=False | Whether to use spark to run the training in parallel spark jobs. This can be used to accelerate training on large models and large datasets, but will incur more overhead in time and thus slow down training in some cases. GPU training is not supported yet when use_spark is True. For Spark clusters, by default, we will launch one trial per executor. However, sometimes we want to launch more trials than the number of executors (e.g., local mode). In this case, we can set the environment variable `FLAML_MAX_CONCURRENT` to override the detected `num_executors`. The final number of concurrent trials will be the minimum of `n_concurrent_trials` and `num_executors`.\n", + "- `n_concurrent_trials`: int, default=1 | The number of concurrent trials. When n_concurrent_trials > 1, FLAML performes parallel tuning.\n", + "- `force_cancel`: boolean, default=False | Whether to forcely cancel Spark jobs if the search time exceeded the time budget. Spark jobs include parallel tuning jobs and Spark-based model training jobs.\n", + "\n", + "An example code snippet for using parallel Spark jobs:\n", + "```python\n", + "import flaml\n", + "automl_experiment = flaml.AutoML()\n", + "automl_settings = {\n", + " \"time_budget\": 30,\n", + " \"metric\": \"r2\",\n", + " \"task\": \"regression\",\n", + " \"n_concurrent_trials\": 2,\n", + " \"use_spark\": True,\n", + " \"force_cancel\": True, # Activating the force_cancel option can immediately halt Spark jobs once they exceed the allocated time_budget.\n", + "}\n", + "\n", + "automl.fit(\n", + " dataframe=dataframe,\n", + " label=label,\n", + " **automl_settings,\n", + ")\n", + "```\n", + "\n", + "\n", + "[Link to notebook](https://github.com/microsoft/FLAML/blob/main/notebook/integrate_spark.ipynb) | [Open in colab](https://colab.research.google.com/github/microsoft/FLAML/blob/main/notebook/integrate_spark.ipynb)\n", + "\n", + "\n", + "```python\n", + "import flaml\n", + "# for flaml.tune\n", + "with mlflow.start_run(run_name=f\"spark_auto_trials_1686631558\"):\n", + " analysis = flaml.tune.run(\n", + " func_to_tune,\n", + " params,\n", + " metric=\"r2\",\n", + " mode=\"max\",\n", + " mlflow_exp_name=\"test_doc\",\n", + " use_spark=True,\n", + " )\n", + "\n", + "# for flaml.automl\n", + "automl_experiment = flaml.AutoML()\n", + "automl_settings = {\n", + " \"metric\": \"r2\",\n", + " \"task\": \"regression\",\n", + " \"use_spark\": True,\n", + " \"mlflow_exp_name\": \"test_doc\",\n", + " \"estimator_list\": [\n", + " \"lgbm\",\n", + " \"rf\",\n", + " \"xgboost\",\n", + " \"extra_tree\",\n", + " \"xgb_limitdepth\",\n", + " ], # catboost does not yet support mlflow autologging\n", + "}\n", + "with mlflow.start_run(run_name=f\"automl_spark_trials_1686631579\"):\n", + " automl_experiment.fit(X_train=train_x, y_train=train_y, **automl_settings)\n", + "```\n", + "\n", + "\n", + "\n", + "### Results\n", + "*Tune Autolog Trials on MLFlow UI*\n", + "\n", + "\n", + "![Tune Autolog Trials on MLFlow UI](Images/tune_trials.png)\n", + "\n", + "\n", + "*AutoML Autolog Trials on MLFlow UI*\n", + "\n", + "\n", + "![AutoML Autolog Trials on MLFlow UI](Images/automl_trials.png)\n", + "\n", + "\n", + "### Differences Between Auto and Manual Logging\n", + "Autologging is managed by MLFlow, while manual logging is maintained by FLAML.\n", + "\n", + "\n", + "#### Details of Manual Logging\n", + "FLAML logs general artifacts for AutoML tasks. Specifically, we log these artifacts:\n", + "\n", + "**`flaml.tune`**\n", + "\n", + "\n", + "![Manual Log Example for Tuning](Images/manual_log_tune.png)\n", + "\n", + "\n", + "- We create a parent run to log the best metric and the best configuration for the entire tuning process.\n", + "- For each trial, we create a child run to log the metric specific to the tune function and the configuration for that trial.\n", + "\n", + "**`flaml.automl`**\n", + "\n", + "\n", + "![Manual Log Example for AutoML](Images/manual_log_automl.png)\n", + "\n", + "\n", + "- We create a parent run to log the results of the experiment. This includes:\n", + " - The configuration of this model.\n", + " - The `best_validation_loss` produced by this model.\n", + " - The `best_iteration` to identify the point at which this model was found.\n", + "- For each state (a specific learner with different hyperparameters), we record the best trial for this model. This includes:\n", + " - The configuration of the best trial.\n", + " - The `validation_loss` the best trial produces.\n", + " - The `iter_count` to identify how many trials we have conducted for this state.\n", + " - The `pred_time`, which is the time cost of predicting test data for this model.\n", + " - The `wall_clock_time`, which is the time cost of this state.\n", + " - The `sample_size` to show how much data we sampled in this state.\n", + "Note that we also added these information to autolog AutoML run.\n", + "\n", + "\n", + "#### Details of Autologging\n", + "Autolog artifacts typically include model parameters, model files, and runtime metrics like the following:\n", + "\n", + "\n", + "![Autolog Example](Images/autolog_example.png)\n", + "\n", + "\n", + "Artifacts can differ among various machine learning libraries. More detailed information can be found [here](https://mlflow.org/docs/latest/tracking.html#automatic-logging).\n", + "\n", + "\n", + "\n", + "\n", + "## Plot Experiment Result\n", + "The `flaml.visualization` module provides utility functions for plotting the optimization process using [plotly](https://plotly.com/python/). Leveraging `plotly`, users can interactively explore experiment results. To use these plotting functions, simply provide your optimized `flaml.AutoML` or `flaml.tune.tune.ExperimentAnalysis` object as input. Optional parameters can be added using keyword arguments.\n", + "\n", + "Avaliable plotting functions:\n", + "- `plot_optimization_history`: Plot optimization history of all trials in the experiment.\n", + "- `plot_feature_importance`: Plot importance for each feature in the dataset.\n", + "- `plot_parallel_coordinate`: Plot the high-dimensional parameter relationships in the experiment.\n", + "- `plot_contour`: Plot the parameter relationship as contour plot in the experiment.\n", + "- `plot_edf`: Plot the objective value EDF (empirical distribution function) of the experiment.\n", + "- `plot_timeline`: Plot the timeline of the experiment.\n", + "- `plot_slice`: Plot the parameter relationship as slice plot in a study.\n", + "\n", + "### Figure Examples\n", + "![Plot Examples](Images/plot_samples.png)\n", + "\n", + "Check out our example [notebook](../../notebook/trident/automl_plot.ipynb) for a preview of all interactive plots.\n", + "\n", + "\n", + "\n", + "\u001b[32m*************************************************************\u001b[0m\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33mProduct_Manager\u001b[0m (to chat_manager):\n", + "\n", + "To use Spark for parallel training in FLAML, you can follow these steps:\n", + "\n", + "1. Prepare your data in the required format. FLAML only consumes Spark data for Spark estimators. You can use the `to_pandas_on_spark` function from the `flaml.automl.spark.utils` module to convert your data into a pandas-on-spark dataframe. Here's an example:\n", + "\n", + "```python\n", + "import pandas as pd\n", + "from flaml.automl.spark.utils import to_pandas_on_spark\n", + "\n", + "# Create a dictionary\n", + "data = {\n", + " \"Square_Feet\": [800, 1200, 1800, 1500, 850],\n", + " \"Age_Years\": [20, 15, 10, 7, 25],\n", + " \"Price\": [100000, 200000, 300000, 240000, 120000]\n", + "}\n", + "\n", + "# Create a pandas DataFrame\n", + "dataframe = pd.DataFrame(data)\n", + "label = \"Price\"\n", + "\n", + "# Convert to pandas-on-spark dataframe\n", + "psdf = to_pandas_on_spark(dataframe)\n", + "```\n", + "\n", + "2. Use the Spark ML estimators in FLAML. FLAML integrates estimators based on Spark ML models. You can include the models you want to try in the `estimator_list` argument when creating an instance of `flaml.AutoML`. Here's an example:\n", + "\n", + "```python\n", + "import flaml\n", + "\n", + "automl = flaml.AutoML()\n", + "settings = {\n", + " \"time_budget\": 30,\n", + " \"metric\": \"r2\",\n", + " \"estimator_list\": [\"lgbm_spark\"], # Optional: specify the Spark ML estimator\n", + " \"task\": \"regression\"\n", + "}\n", + "\n", + "automl.fit(\n", + " dataframe=psdf,\n", + " label=label,\n", + " **settings\n", + ")\n", + "```\n", + "\n", + "3. Activate Spark as the parallel backend. You can set the `use_spark` parameter to `True` to activate Spark as the parallel backend during parallel tuning. FLAML will dispatch your job to the distributed Spark backend using `joblib-spark`. Here's an example:\n", + "\n", + "```python\n", + "import flaml\n", + "\n", + "automl_experiment = flaml.AutoML()\n", + "automl_settings = {\n", + " \"time_budget\": 30,\n", + " \"metric\": \"r2\",\n", + " \"task\": \"regression\",\n", + " \"n_concurrent_trials\": 2,\n", + " \"use_spark\": True,\n", + " \"force_cancel\": True # Optional: force cancel Spark jobs if time budget is exceeded\n", + "}\n", + "\n", + "automl_experiment.fit(\n", + " dataframe=dataframe,\n", + " label=label,\n", + " **automl_settings\n", + ")\n", + "```\n", + "\n", + "These are the steps to use Spark for parallel training in FLAML. Let me know if you need any further assistance!\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33mCode_Reviewer\u001b[0m (to chat_manager):\n", + "\n", + "Great! You now have the steps to use Spark for parallel training in FLAML. If you have any more questions, feel free to ask.\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[31m\n", + ">>>>>>>> USING AUTO REPLY...\u001b[0m\n", + "\u001b[33mBoss\u001b[0m (to chat_manager):\n", + "\n", + "\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33mSenior_Python_Engineer\u001b[0m (to chat_manager):\n", + "\n", + "TERMINATE\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[31m\n", + ">>>>>>>> NO HUMAN INPUT RECEIVED.\u001b[0m\n" + ] + } + ], + "source": [ + "call_rag_chat()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "flaml", + "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.12" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/notebook/agentchat_groupchat_research.ipynb b/notebook/agentchat_groupchat_research.ipynb index 8d27935ae1e..b01e35f8692 100644 --- a/notebook/agentchat_groupchat_research.ipynb +++ b/notebook/agentchat_groupchat_research.ipynb @@ -5,7 +5,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "<a href=\"https://colab.research.google.com/github/microsoft/autogen/blob/main/notebook/groupchat_research.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>" + "<a href=\"https://colab.research.google.com/github/microsoft/autogen/blob/main/notebook/agentchat_groupchat_research.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>" ] }, { @@ -15,7 +15,7 @@ "source": [ "# Auto Generated Agent Chat: Performs Research with Multi-Agent Group Chat\n", "\n", - "AutoGen offers conversable agents powered by LLM, tool or human, which can be used to perform tasks collectively via automated chat. This framwork allows tool use and human participance through multi-agent conversation.\n", + "AutoGen offers conversable agents powered by LLM, tool, or human, which can be used to perform tasks collectively via automated chat. This framework allows tool use and human participation through multi-agent conversation.\n", "Please find documentation about this feature [here](https://microsoft.github.io/autogen/docs/Use-Cases/agent_chat).\n", "\n", "## Requirements\n", @@ -33,7 +33,7 @@ "outputs": [], "source": [ "%%capture --no-stderr\n", - "# %pip install pyautogen~=0.1.0" + "# %pip install pyautogen~=0.2.0b4" ] }, { @@ -79,23 +79,21 @@ " {\n", " 'model': 'gpt-4-32k',\n", " 'api_key': '<your Azure OpenAI API key here>',\n", - " 'api_base': '<your Azure OpenAI API base here>',\n", + " 'base_url': '<your Azure OpenAI API base here>',\n", " 'api_type': 'azure',\n", " 'api_version': '2023-06-01-preview',\n", " },\n", " {\n", " 'model': 'gpt-4-32k-0314',\n", " 'api_key': '<your Azure OpenAI API key here>',\n", - " 'api_base': '<your Azure OpenAI API base here>',\n", + " 'base_url': '<your Azure OpenAI API base here>',\n", " 'api_type': 'azure',\n", " 'api_version': '2023-06-01-preview',\n", " },\n", "]\n", "```\n", "\n", - "If you open this notebook in colab, you can upload your files by clicking the file icon on the left panel and then choose \"upload file\" icon.\n", - "\n", - "You can set the value of config_list in other ways you prefer, e.g., loading from a YAML file." + "You can set the value of config_list in any way you prefer. Please refer to this [notebook](https://github.com/microsoft/autogen/blob/main/notebook/oai_openai_utils.ipynb) for full code examples of the different methods." ] }, { @@ -113,10 +111,10 @@ "outputs": [], "source": [ "gpt4_config = {\n", - " \"seed\": 42, # change the seed for different trials\n", + " \"cache_seed\": 42, # change the cache_seed for different trials\n", " \"temperature\": 0,\n", " \"config_list\": config_list_gpt4,\n", - " \"request_timeout\": 120,\n", + " \"timeout\": 120,\n", "}\n", "user_proxy = autogen.UserProxyAgent(\n", " name=\"Admin\",\n", diff --git a/notebook/agentchat_groupchat_vis.ipynb b/notebook/agentchat_groupchat_vis.ipynb index 1c619078f5a..0a7b984a551 100644 --- a/notebook/agentchat_groupchat_vis.ipynb +++ b/notebook/agentchat_groupchat_vis.ipynb @@ -15,7 +15,7 @@ "source": [ "# Auto Generated Agent Chat: Group Chat with Coder and Visualization Critic\n", "\n", - "AutoGen offers conversable agents powered by LLM, tool or human, which can be used to perform tasks collectively via automated chat. This framwork allows tool use and human participance through multi-agent conversation.\n", + "AutoGen offers conversable agents powered by LLM, tool or human, which can be used to perform tasks collectively via automated chat. This framework allows tool use and human participation through multi-agent conversation.\n", "Please find documentation about this feature [here](https://microsoft.github.io/autogen/docs/Use-Cases/agent_chat).\n", "\n", "## Requirements\n", @@ -33,7 +33,7 @@ "outputs": [], "source": [ "%%capture --no-stderr\n", - "# %pip install pyautogen~=0.1.0" + "# %pip install pyautogen~=0.2.0b4" ] }, { @@ -91,23 +91,21 @@ " {\n", " 'model': 'gpt-4',\n", " 'api_key': '<your Azure OpenAI API key here>',\n", - " 'api_base': '<your Azure OpenAI API base here>',\n", + " 'base_url': '<your Azure OpenAI API base here>',\n", " 'api_type': 'azure',\n", - " 'api_version': '2023-06-01-preview',\n", + " 'api_version': '2023-08-01-preview',\n", " },\n", " {\n", " 'model': 'gpt-4-32k',\n", " 'api_key': '<your Azure OpenAI API key here>',\n", - " 'api_base': '<your Azure OpenAI API base here>',\n", + " 'base_url': '<your Azure OpenAI API base here>',\n", " 'api_type': 'azure',\n", - " 'api_version': '2023-06-01-preview',\n", + " 'api_version': '2023-08-01-preview',\n", " },\n", "]\n", "```\n", "\n", - "If you open this notebook in colab, you can upload your files by clicking the file icon on the left panel and then choose \"upload file\" icon.\n", - "\n", - "You can set the value of config_list in other ways you prefer, e.g., loading from a YAML file." + "You can set the value of config_list in any way you prefer. Please refer to this [notebook](https://github.com/microsoft/autogen/blob/main/notebook/oai_openai_utils.ipynb) for full code examples of the different methods." ] }, { @@ -118,13 +116,23 @@ "## Construct Agents" ] }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<div style=\"margin: 0 auto; width: 500px\">\n", + " <img src=\"viz_gc.png\" alt=\"Drawing\"/>\n", + " </div>" + ] + }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ - "llm_config = {\"config_list\": config_list_gpt4, \"seed\": 42}\n", + "llm_config = {\"config_list\": config_list_gpt4, \"cache_seed\": 42}\n", "user_proxy = autogen.UserProxyAgent(\n", " name=\"User_proxy\",\n", " system_message=\"A human admin.\",\n", @@ -1029,7 +1037,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.12" + "version": "3.11.4" }, "orig_nbformat": 4 }, diff --git a/notebook/agentchat_hierarchy_flow_using_select_speaker.ipynb b/notebook/agentchat_hierarchy_flow_using_select_speaker.ipynb new file mode 100644 index 00000000000..d03157b6dc6 --- /dev/null +++ b/notebook/agentchat_hierarchy_flow_using_select_speaker.ipynb @@ -0,0 +1,392 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<a href=\"https://colab.research.google.com/github/microsoft/autogen/blob/main/notebook/agentchat_hierarchy_flow_using_select_speaker.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>" + ] + }, + { + "attachments": { + "e6173a72-fa95-49db-83c8-899608860952.png": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAwEAAAIvCAIAAACjrECwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAASdEVYdFNvZnR3YXJlAEdyZWVuc2hvdF5VCAUAAH9ASURBVHhe7d2JP5R74//x3991f+/7PvdZ6pxOJUVE9l2ykyVrIkuWpAjZyZrIvpRSWoRIpRQiSinaEOn83nyu5kxjOXOcYdK8n4/r4WE+c812DXO9Zuaaa/7fH0RERESahw1EREREmogNRERERJqIDURERESaiA1EREREmogNRERERJqIDURERESaiA1EREREmogNRERERJqIDURERESaiA1EREREmogNRERERJqIDURERESaiA1EREREmogNRERERJqIDURERESaiA1EREREmogNRERERJqIDURERESaiA1EREREmogNRERERJqIDURERESaiA1EREREmogNRERERJqIDURERESaiA1EREREmogNRERERJqIDURERESaiA1EREREmogNRERERJqIDURERESaiA1EREREmogNRERERJqIDURERESaiA1EREREmogNRERERJqIDURERESaiA1EREREmogNRERERJqIDURERESaiA1EREREmogNRERERJqIDURERESaiA1EREREmogNRERERJqIDURERESaiA1EtBqjoy8f9j4W0/sPH6RRIiLaONhA9P178XKs++79lus3L166cqGp+eq1m13d956PvpCO/lr8yRTb/e4hR6Klw8tAAx2NO+F/KDwpNXPdGqjnQW9ASASm/KJSaUh9Ou/cFdPr8XFpaL10dN7BPXjn7n387OzqxsHbXd34vedh7/DIs3fv30vzLTI7O9s38KT1Vgf+EhouXr7R2ob5peOWh9soFvvZsgppiIi+C2wg+p49HR6prmtMSEz1DQx1cPGytHOxtHfZ53zA2y/k2Ink85W1/QNPpFm/wPi/fvxdyQYyNLNb5wbyCwozsrD/FhoIN9/TNwiLa/0b6Oat9gMHg8WE6+DuHejuHeDpG+wXfCQy5nhaVt7lK9cm3ryV5v7ifs9DLLewqDhnj4P4SzC3ccQvxxNTr924Jc2xDDQQLsXQ1JYNRPSdYQPRd6ur+15icrqNg9t2XSOs83wCDh+OiMGEHrJ2cNums9fc1in+ZEpb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" + } + }, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Auto Generated Agent Chat: Hierarchy flow using select_speaker\n", + "\n", + "AutoGen offers conversable agents powered by LLM, tool, or human, which can be used to perform tasks collectively via automated chat. This framework allows tool use and human participation through multi-agent conversation.\n", + "Please find documentation about this feature [here](https://microsoft.github.io/autogen/docs/Use-Cases/agent_chat).\n", + "\n", + "This notebook is about restricting information flow within agents. Suppose we have the following setup:\n", + "\n", + "![image.png](attachment:e6173a72-fa95-49db-83c8-899608860952.png)\n", + "\n", + "Constraints:\n", + "- Team leaders can talk amongst themselves\n", + "- A team can talk amongst themselves\n", + "\n", + "Benefits\n", + "- By limiting team members can talk to team members, we bring focus to the team.\n", + "- Information flow from Team A to Team B is made more efficient to let the X1s talk amongst themselves. It is more efficient as agent B2 do not have to see the discussion within Team A.\n", + "\n", + "\n", + "## Requirements\n", + "\n", + "AutoGen requires `Python>=3.8`. To run this notebook example, please install:\n", + "```bash\n", + "pip install pyautogen\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "%%capture --no-stderr\n", + "# %pip install pyautogen~=0.2.0b4" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Set your API Endpoint\n", + "\n", + "The [`config_list_from_json`](https://microsoft.github.io/autogen/docs/reference/oai/openai_utils#config_list_from_json) function loads a list of configurations from an environment variable or a json file." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.2.0b1\n" + ] + } + ], + "source": [ + "import autogen\n", + "\n", + "print(autogen.__version__)\n", + "\n", + "# The default config list in notebook.\n", + "config_list_gpt4 = autogen.config_list_from_json(\n", + " \"OAI_CONFIG_LIST\",\n", + " filter_dict={\n", + " \"model\": [\"gpt-4\", \"gpt4\", \"gpt-4-32k\", \"gpt-4-32k-0314\", \"gpt-4-32k-v0314\"],\n", + " },\n", + ")\n", + "\n", + "# Contributor's config - Please replace with your own, I have replaced mine with an Azure OpenAI endpoint.\n", + "config_list_gpt4 = autogen.config_list_from_json(\n", + " \"OAI_CONFIG_LIST\",\n", + " filter_dict={\n", + " \"model\": [\"gpt-4\"],\n", + " },\n", + " )" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "It first looks for environment variable \"OAI_CONFIG_LIST\" which needs to be a valid json string. If that variable is not found, it then looks for a json file named \"OAI_CONFIG_LIST\". It filters the configs by models (you can filter by other keys as well). Only the gpt-4 models are kept in the list based on the filter condition.\n", + "\n", + "The config list looks like the following:\n", + "```python\n", + "config_list = [\n", + " {\n", + " 'model': 'gpt-4',\n", + " 'api_key': '<your OpenAI API key here>',\n", + " },\n", + " {\n", + " 'model': 'gpt-4',\n", + " 'api_key': '<your Azure OpenAI API key here>',\n", + " 'base_url': '<your Azure OpenAI API base here>',\n", + " 'api_type': 'azure',\n", + " 'api_version': '2023-06-01-preview',\n", + " },\n", + " {\n", + " 'model': 'gpt-4-32k',\n", + " 'api_key': '<your Azure OpenAI API key here>',\n", + " 'base_url': '<your Azure OpenAI API base here>',\n", + " 'api_type': 'azure',\n", + " 'api_version': '2023-06-01-preview',\n", + " },\n", + "]\n", + "```\n", + "\n", + "If you open this notebook in colab, you can upload your files by clicking the file icon on the left panel and then choosing \"upload file\" icon.\n", + "\n", + "You can set the value of config_list in other ways you prefer, e.g., loading from a YAML file." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Extending GroupChat\n", + "\n", + "\n", + "Custom Speaker Selection Logic: The CustomGroupChat class allows us to define our own logic for selecting the next speaker in the group chat. The base GroupChat class has a default logic that may not be suitable for all scenarios.\n", + "\n", + "\n", + "Content-Driven Speaker Selection: This custom class lets us select the next speaker based on the content of the last message, like \"NEXT: A2\" or \"TERMINATE\". The base GroupChat class does not have this capability.\n", + "\n", + "Team-Based Logic: The custom class enables team-based logic for speaker selection. It allows the next speaker to be chosen from the same team as the last speaker or from a pool of team leaders, which is something the base GroupChat class does not offer.\n", + "\n", + "Previous Speaker Exclusion: The CustomGroupChat class includes logic to prevent the last speaker and the previous speaker from being selected again immediately, which adds more dynamism to the conversation.\n", + "\n", + "Flexibility: Extending the base GroupChat class allows us to preserve the existing functionalities and methods while adding new features specific to our needs. This makes the code more modular and easier to maintain.\n", + "\n", + "Special Cases Handling: The custom class can also handle special cases, like terminating the chat or transitioning to a 'User_proxy', directly within its select_speaker method.\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "llm_config = {\"config_list\": config_list_gpt4, \"cache_seed\": 42}" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "from autogen.agentchat.groupchat import GroupChat\n", + "from autogen.agentchat.agent import Agent\n", + "from autogen.agentchat.assistant_agent import AssistantAgent" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "import random\n", + "from typing import List, Dict\n", + "\n", + "class CustomGroupChat(GroupChat):\n", + " def __init__(self, agents, messages, max_round=10):\n", + " super().__init__(agents, messages, max_round)\n", + " self.previous_speaker = None # Keep track of the previous speaker\n", + " \n", + " def select_speaker(self, last_speaker: Agent, selector: AssistantAgent):\n", + " # Check if last message suggests a next speaker or termination\n", + " last_message = self.messages[-1] if self.messages else None\n", + " if last_message:\n", + " if 'NEXT:' in last_message['content']:\n", + " suggested_next = last_message['content'].split('NEXT: ')[-1].strip()\n", + " print(f'Extracted suggested_next = {suggested_next}')\n", + " try:\n", + " return self.agent_by_name(suggested_next)\n", + " except ValueError:\n", + " pass # If agent name is not valid, continue with normal selection\n", + " elif 'TERMINATE' in last_message['content']:\n", + " try:\n", + " return self.agent_by_name('User_proxy')\n", + " except ValueError:\n", + " pass # If 'User_proxy' is not a valid name, continue with normal selection\n", + " \n", + " team_leader_names = [agent.name for agent in self.agents if agent.name.endswith('1')]\n", + "\n", + " if last_speaker.name in team_leader_names:\n", + " team_letter = last_speaker.name[0]\n", + " possible_next_speakers = [\n", + " agent for agent in self.agents if (agent.name.startswith(team_letter) or agent.name in team_leader_names) \n", + " and agent != last_speaker and agent != self.previous_speaker\n", + " ]\n", + " else:\n", + " team_letter = last_speaker.name[0]\n", + " possible_next_speakers = [\n", + " agent for agent in self.agents if agent.name.startswith(team_letter) \n", + " and agent != last_speaker and agent != self.previous_speaker\n", + " ]\n", + "\n", + " self.previous_speaker = last_speaker\n", + "\n", + " if possible_next_speakers:\n", + " next_speaker = random.choice(possible_next_speakers)\n", + " return next_speaker\n", + " else:\n", + " return None\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "# Termination message detection\n", + "def is_termination_msg(content) -> bool:\n", + " have_content = content.get(\"content\", None) is not None\n", + " if have_content and \"TERMINATE\" in content[\"content\"]:\n", + " return True\n", + " return False" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[33mB2\u001b[0m (to chat_manager):\n", + "\n", + "Find the product of x and y, the other agents know x and y.\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33mB1\u001b[0m (to chat_manager):\n", + "\n", + "NEXT: A1\n", + "Can you or any of your team members provide the values for x and y? B2 needs these values to complete a task.\n", + "\n", + "--------------------------------------------------------------------------------\n", + "Extracted suggested_next = A1\n", + "Can you or any of your team members provide the values for x and y? B2 needs these values to complete a task.\n", + "\u001b[33mA1\u001b[0m (to chat_manager):\n", + "\n", + "Sure B1, let me check with my team. \n", + "\n", + "NEXT: A2, A3\n", + "Could either of you provide the values for x and y? B2 needs these values to complete a task.\n", + "\n", + "--------------------------------------------------------------------------------\n", + "Extracted suggested_next = A2, A3\n", + "Could either of you provide the values for x and y? B2 needs these values to complete a task.\n", + "\u001b[33mA2\u001b[0m (to chat_manager):\n", + "\n", + "Sure, I hold the value for x. We know x is equal to 9. A3, could you please provide the value of y?\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33mA3\u001b[0m (to chat_manager):\n", + "\n", + "Sure, the value of y that I hold is 5.\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33mA1\u001b[0m (to chat_manager):\n", + "\n", + "NEXT: B1\n", + "The values we have for x and y are x=9, y=5. Could you pass this information to B2 to complete the task?\n", + "\n", + "--------------------------------------------------------------------------------\n", + "Extracted suggested_next = B1\n", + "The values we have for x and y are x=9, y=5. Could you pass this information to B2 to complete the task?\n", + "\u001b[33mB1\u001b[0m (to chat_manager):\n", + "\n", + "Absolutely, A1.\n", + "\n", + "NEXT: B2\n", + "The values for x and y are x=9, y=5. Could you please compute the product of x and y?\n", + "\n", + "--------------------------------------------------------------------------------\n", + "Extracted suggested_next = B2\n", + "The values for x and y are x=9, y=5. Could you please compute the product of x and y?\n", + "\u001b[33mB2\u001b[0m (to chat_manager):\n", + "\n", + "Sure, the product of x and y, where x=9 and y=5, is 45.\n", + "\n", + "TERMINATE.\n", + "\n", + "--------------------------------------------------------------------------------\n" + ] + } + ], + "source": [ + "# Initialization\n", + "agents_A = [\n", + " AssistantAgent(name='A1', \n", + " system_message=\"You are a team leader A1, your team consists of A2, A3. You can talk to the other team leader B1, whose team member is B2.\",\n", + " llm_config=llm_config),\n", + " AssistantAgent(name='A2', \n", + " system_message=\"You are team member A2, you know the secret value of x but not y, x = 9. Tell others x to cooperate.\",\n", + " llm_config=llm_config),\n", + " AssistantAgent(name='A3', \n", + " system_message=\"You are team member A3, You know the secret value of y but not x, y = 5. Tell others y to cooperate.\",\n", + " llm_config=llm_config)\n", + "]\n", + "\n", + "agents_B = [\n", + " AssistantAgent(name='B1', \n", + " system_message=\"You are a team leader B1, your team consists of B2. You can talk to the other team leader A1, whose team member is A2, A3. Use NEXT: A1 to suggest talking to A1.\",\n", + " llm_config=llm_config),\n", + " AssistantAgent(name='B2', \n", + " system_message=\"You are team member B2. Your task is to find out the value of x and y and compute the product. Once you have the answer, say out the answer and append a new line with TERMINATE.\",\n", + " llm_config=llm_config)\n", + "]\n", + "\n", + "# Terminates the conversation when TERMINATE is detected.\n", + "user_proxy = autogen.UserProxyAgent(\n", + " name=\"User_proxy\",\n", + " system_message=\"Terminator admin.\",\n", + " code_execution_config=False,\n", + " is_termination_msg=is_termination_msg,\n", + " human_input_mode=\"NEVER\")\n", + "\n", + "list_of_agents = agents_A + agents_B\n", + "list_of_agents.append(user_proxy)\n", + "\n", + "# Create CustomGroupChat\n", + "group_chat = CustomGroupChat(\n", + " agents=list_of_agents, # Include all agents\n", + " messages=['Everyone cooperate and help agent B2 in his task. Team A has A1, A2, A3. Team B has B1, B2. Only members of the same team can talk to one another. Only team leaders (names ending with 1) can talk amongst themselves. You must use \"NEXT: B1\" to suggest talking to B1 for example; You can suggest only one person, you cannot suggest yourself or the previous speaker; You can also dont suggest anyone.'],\n", + " max_round=30\n", + ")\n", + "\n", + "\n", + "# Create the manager\n", + "llm_config = {\"config_list\": config_list_gpt4, \"cache_seed\": None} # cache_seed is None because we want to observe if there is any communication pattern difference if we reran the group chat.\n", + "manager = autogen.GroupChatManager(groupchat=group_chat, llm_config=llm_config)\n", + "\n", + "\n", + "# Initiates the chat with B2\n", + "agents_B[1].initiate_chat(manager, message=\"Find the product of x and y, the other agents know x and y.\")" + ] + } + ], + "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.13" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/notebook/agentchat_human_feedback.ipynb b/notebook/agentchat_human_feedback.ipynb index ddf9921be92..93b3afdf62d 100644 --- a/notebook/agentchat_human_feedback.ipynb +++ b/notebook/agentchat_human_feedback.ipynb @@ -19,7 +19,7 @@ "source": [ "# Auto Generated Agent Chat: Task Solving with Code Generation, Execution, Debugging & Human Feedback\n", "\n", - "AutoGen offers conversable agents powered by LLM, tool or human, which can be used to perform tasks collectively via automated chat. This framwork allows tool use and human participance through multi-agent conversation.\n", + "AutoGen offers conversable agents powered by LLM, tool, or human, which can be used to perform tasks collectively via automated chat. This framework allows tool use and human participation through multi-agent conversation.\n", "Please find documentation about this feature [here](https://microsoft.github.io/autogen/docs/Use-Cases/agent_chat).\n", "\n", "In this notebook, we demonstrate how to use `AssistantAgent` and `UserProxyAgent` to solve a challenging math problem with human feedback. Here `AssistantAgent` is an LLM-based agent that can write Python code (in a Python coding block) for a user to execute for a given task. `UserProxyAgent` is an agent which serves as a proxy for a user to execute the code written by `AssistantAgent`. By setting `human_input_mode` properly, the `UserProxyAgent` can also prompt the user for feedback to `AssistantAgent`. For example, when `human_input_mode` is set to \"ALWAYS\", the `UserProxyAgent` will always prompt the user for feedback. When user feedback is provided, the `UserProxyAgent` will directly pass the feedback to `AssistantAgent`. When no user feedback is provided, the `UserProxyAgent` will execute the code written by `AssistantAgent` and return the execution results (success or failure and corresponding outputs) to `AssistantAgent`.\n", @@ -45,7 +45,7 @@ }, "outputs": [], "source": [ - "# %pip install pyautogen~=0.1.0" + "# %pip install pyautogen~=0.2.0b4" ] }, { @@ -74,7 +74,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "It first looks for environment variable \"OAI_CONFIG_LIST\" which needs to be a valid json string. If that variable is not found, it then looks for a json file named \"OAI_CONFIG_LIST\".\n", + "It first looks for environment variable \"OAI_CONFIG_LIST\" which needs to be a valid json string. If that variable is not found, it then looks for a json file named \"OAI_CONFIG_LIST\". It filters the configs by models (you can filter by other keys as well). Only the models with matching names are kept in the list based on the filter condition.\n", "\n", "The config list looks like the following:\n", "```python\n", @@ -82,45 +82,25 @@ " {\n", " 'model': 'gpt-4',\n", " 'api_key': '<your OpenAI API key here>',\n", - " }, # OpenAI API endpoint for gpt-4\n", - " {\n", - " 'model': 'gpt-4',\n", - " 'api_key': '<your first Azure OpenAI API key here>',\n", - " 'api_base': '<your first Azure OpenAI API base here>',\n", - " 'api_type': 'azure',\n", - " 'api_version': '2023-06-01-preview',\n", - " }, # Azure OpenAI API endpoint for gpt-4\n", - " {\n", - " 'model': 'gpt-4',\n", - " 'api_key': '<your second Azure OpenAI API key here>',\n", - " 'api_base': '<your second Azure OpenAI API base here>',\n", - " 'api_type': 'azure',\n", - " 'api_version': '2023-06-01-preview',\n", - " }, # another Azure OpenAI API endpoint for gpt-4\n", + " },\n", " {\n", " 'model': 'gpt-3.5-turbo',\n", - " 'api_key': '<your OpenAI API key here>',\n", - " }, # OpenAI API endpoint for gpt-3.5-turbo\n", - " {\n", - " 'model': 'gpt-3.5-turbo',\n", - " 'api_key': '<your first Azure OpenAI API key here>',\n", - " 'api_base': '<your first Azure OpenAI API base here>',\n", + " 'api_key': '<your Azure OpenAI API key here>',\n", + " 'base_url': '<your Azure OpenAI API base here>',\n", " 'api_type': 'azure',\n", - " 'api_version': '2023-06-01-preview',\n", - " }, # Azure OpenAI API endpoint for gpt-3.5-turbo\n", + " 'api_version': '2023-08-01-preview',\n", + " },\n", " {\n", - " 'model': 'gpt-3.5-turbo',\n", - " 'api_key': '<your second Azure OpenAI API key here>',\n", - " 'api_base': '<your second Azure OpenAI API base here>',\n", + " 'model': 'gpt-3.5-turbo-16k',\n", + " 'api_key': '<your Azure OpenAI API key here>',\n", + " 'base_url': '<your Azure OpenAI API base here>',\n", " 'api_type': 'azure',\n", - " 'api_version': '2023-06-01-preview',\n", - " }, # another Azure OpenAI API endpoint for gpt-3.5-turbo\n", + " 'api_version': '2023-08-01-preview',\n", + " },\n", "]\n", "```\n", "\n", - "If you open this notebook in colab, you can upload your files by clicking the file icon on the left panel and then choose \"upload file\" icon.\n", - "\n", - "You can set the value of config_list in other ways you prefer, e.g., loading from a YAML file." + "You can set the value of config_list in any way you prefer. Please refer to this [notebook](https://github.com/microsoft/autogen/blob/main/notebook/oai_openai_utils.ipynb) for full code examples of the different methods." ] }, { @@ -143,7 +123,7 @@ "assistant = autogen.AssistantAgent(\n", " name=\"assistant\",\n", " llm_config={\n", - " \"seed\": 41,\n", + " \"cache_seed\": 41,\n", " \"config_list\": config_list,\n", " }\n", ")\n", @@ -152,10 +132,7 @@ " name=\"user_proxy\",\n", " human_input_mode=\"ALWAYS\",\n", " is_termination_msg=lambda x: x.get(\"content\", \"\").rstrip().endswith(\"TERMINATE\"),\n", - ")\n", - "\n", - "# the purpose of the following line is to log the conversation history\n", - "autogen.ChatCompletion.start_logging()\n" + ")\n" ] }, { @@ -165,7 +142,7 @@ "source": [ "## Perform a task\n", "\n", - "We invoke the `initiate_chat()` method of the user proxy agent to start the conversation. When you run the cell below, you will be prompted to provide feedback after receving a message from the assistant agent. If you don't provide any feedback (by pressing Enter directly), the user proxy agent will try to execute the code suggested by the assistant agent on behalf of you, or terminate if the assistant agent sends a \"TERMINATE\" signal in the end of the message." + "We invoke the `initiate_chat()` method of the user proxy agent to start the conversation. When you run the cell below, you will be prompted to provide feedback after receiving a message from the assistant agent. If you don't provide any feedback (by pressing Enter directly), the user proxy agent will try to execute the code suggested by the assistant agent on behalf of you, or terminate if the assistant agent sends a \"TERMINATE\" signal at the end of the message." ] }, { @@ -370,26 +347,18 @@ "source": [ "## Analyze the conversation\n", "\n", - "The human user can provide feedback at each step. When the human user didn't provide feedback, the code was executed. The executed results and error messages are returned to the assistant, and the assistant was able to modify the code based on the feedback. In the end, the task is complete and a \"TERMINATE\" signal is sent from the assistant. The user skipped feedback in the end and the conversation is finished.\n", + "The human user can provide feedback at each step. When the human user didn't provide feedback, the code was executed. The executed results and error messages are returned to the assistant, and the assistant is able to modify the code based on the feedback. In the end, the task is complete and a \"TERMINATE\" signal is sent from the assistant. The user skipped feedback in the end and the conversation is finished.\n", "\n", - "After the conversation is finished, we can save the log of the conversation between the two agents. The log can be accessed from `autogen.ChatCompletion.logged_history`." + "After the conversation is finished, we can save the conversations between the two agents. The conversation can be accessed from `user_proxy.chat_messages`." ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'[{\"content\": \"You are a helpful AI assistant.\\\\nSolve tasks using your coding and language skills.\\\\nIn the following cases, suggest python code (in a python coding block) or shell script (in a sh coding block) for the user to execute.\\\\n 1. When you need to collect info, use the code to output the info you need, for example, browse or search the web, download/read a file, print the content of a webpage or a file, get the current date/time. After sufficient info is printed and the task is ready to be solved based on your language skill, you can solve the task by yourself.\\\\n 2. When you need to perform some task with code, use the code to perform the task and output the result. Finish the task smartly.\\\\nSolve the task step by step if you need to. If a plan is not provided, explain your plan first. Be clear which step uses code, and which step uses your language skill.\\\\nWhen using code, you must indicate the script type in the code block. The user cannot provide any other feedback or perform any other action beyond executing the code you suggest. The user can\\'t modify your code. So do not suggest incomplete code which requires users to modify. Don\\'t use a code block if it\\'s not intended to be executed by the user.\\\\nIf you want the user to save the code in a file before executing it, put # filename: <filename> inside the code block as the first line. Don\\'t include multiple code blocks in one response. Do not ask users to copy and paste the result. Instead, use \\'print\\' function for the output when relevant. Check the execution result returned by the user.\\\\nIf the result indicates there is an error, fix the error and output the code again. Suggest the full code instead of partial code or code changes. If the error can\\'t be fixed or if the task is not solved even after the code is executed successfully, analyze the problem, revisit your assumption, collect additional info you need, and think of a different approach to try.\\\\nWhen you find an answer, verify the answer carefully. Include verifiable evidence in your response if possible.\\\\nReply \\\\\"TERMINATE\\\\\" in the end when everything is done.\\\\n \", \"role\": \"system\"}, {\"content\": \"\\\\nFind $a + b + c$, given that $x+y \\\\\\\\neq -1$ and \\\\n\\\\\\\\begin{align}\\\\n\\\\tax + by + c & = x + 7,\\\\\\\\\\\\n\\\\ta + bx + cy & = 2x + 6y,\\\\\\\\\\\\n\\\\tay + b + cx & = 4x + y.\\\\n\\\\\\\\end{align}.\\\\n\", \"role\": \"user\"}, {\"content\": \"To solve the system of linear equations, I will use NumPy library in Python to calculate the coefficients and constants and then use the linalg.solve() function to find the values of a, b, and c. Finally, I will add them up to find $a + b + c$.\\\\n\\\\nStep 1: Define the coefficients and constants\\\\n\\\\nStep 2: Solve the system of equations using NumPy\\\\n\\\\nStep 3: Calculate the sum of a, b, and c\", \"role\": \"assistant\"}, {\"content\": \"use sympy\", \"role\": \"user\"}, {\"content\": \"Sure, I will use Sympy to solve the system of linear equations.\\\\n\\\\nStep 1: Import Sympy library and define the symbols\\\\n``` python\\\\nfrom sympy import symbols, Eq, solve\\\\n\\\\na, b, c, x, y = symbols(\\'a b c x y\\')\\\\n```\\\\n\\\\nStep 2: Define the equations\\\\n``` python\\\\neq1 = Eq(a * x + b * y + c, x + 7)\\\\neq2 = Eq(a + b * x + c * y, 2 * x + 6 * y)\\\\neq3 = Eq(a * y + b + c * x, 4 * x + y)\\\\n```\\\\n\\\\nStep 3: Solve the system of equations\\\\n``` python\\\\nsolutions = solve((eq1, eq2, eq3), (a, b, c))\\\\n```\\\\n\\\\nStep 4: Calculate the sum of a, b, and c\\\\n``` python\\\\na_value, b_value, c_value = solutions[a], solutions[b], solutions[c]\\\\nsum_abc = a_value + b_value + c_value\\\\n```\\\\n\\\\n\", \"role\": \"assistant\"}, {\"content\": \"exitcode: 1 (execution failed)\\\\nCode output: \\\\n File \\\\\"\\\\\", line 2\\\\n Step 2: Define the equations\\\\n ^\\\\nSyntaxError: invalid syntax\\\\n\", \"role\": \"user\"}, {\"content\": \"Apologies for the confusion. I should have provided the code in a single block without the step-by-step comments. Here is the code to solve the system of linear equations using Sympy:\\\\n\\\\n```python\\\\nfrom sympy import symbols, Eq, solve\\\\n\\\\na, b, c, x, y = symbols(\\'a b c x y\\')\\\\n\\\\neq1 = Eq(a * x + b * y + c, x + 7)\\\\neq2 = Eq(a + b * x + c * y, 2 * x + 6 * y)\\\\neq3 = Eq(a * y + b + c * x, 4 * x + y)\\\\n\\\\nsolutions = solve((eq1, eq2, eq3), (a, b, c))\\\\n\\\\na_value, b_value, c_value = solutions[a], solutions[b], solutions[c]\\\\nsum_abc = a_value + b_value + c_value\\\\nprint(sum_abc)\\\\n```\\\\n\\\\nPlease run the provided code to find the sum of a, b, and c.\", \"role\": \"assistant\"}, {\"content\": \"exitcode: 0 (execution succeeded)\\\\nCode output: \\\\n(2*x**2 - 3*x + y)/(x**2 - x*y - x + y**2 - y + 1) + (x**2 - 3*x*y + 2*x + y**2 - y)/(x**2 - x*y - x + y**2 - y + 1) + (4*x**2 - 4*x*y - 6*x + 6*y**2 - 7*y + 7)/(x**2 - x*y - x + y**2 - y + 1)\\\\n\", \"role\": \"user\"}, {\"content\": \"I apologize for the confusion. The code provided the sum of a, b, and c in a symbolic representation. To get an answer, we need to put some constraints on x and y for which x + y is not equal to -1.\\\\n\\\\nWe can choose any values for x and y that don\\'t satisfy x + y = -1, and then substitute them into the equation to find the corresponding sum of a, b, and c. Let\\'s use x = 1 and y = 0, which satisfy the given condition.\\\\n\\\\nHere is the updated code with the chosen values for x and y:\\\\n\\\\n```python\\\\nfrom sympy import symbols, Eq, solve\\\\n\\\\na, b, c, x, y = symbols(\\'a b c x y\\')\\\\n\\\\neq1 = Eq(a * x + b * y + c, x + 7)\\\\neq2 = Eq(a + b * x + c * y, 2 * x + 6 * y)\\\\neq3 = Eq(a * y + b + c * x, 4 * x + y)\\\\n\\\\nsolutions = solve((eq1, eq2, eq3), (a, b, c))\\\\n\\\\nchosen_x = 1\\\\nchosen_y = 0\\\\n\\\\na_value, b_value, c_value = solutions[a].subs(x, chosen_x).subs(y, chosen_y), solutions[b].subs(x, chosen_x).subs(y, chosen_y), solutions[c].subs(x, chosen_x).subs(y, chosen_y)\\\\nsum_abc = a_value + b_value + c_value\\\\nprint(sum_abc)\\\\n```\\\\n\\\\nPlease run the provided code again to find the sum of a, b, and c.\", \"role\": \"assistant\"}, {\"content\": \"exitcode: 0 (execution succeeded)\\\\nCode output: \\\\n7\\\\n\", \"role\": \"user\"}, {\"content\": \"Great! Now we have the sum of a, b, and c. The answer is:\\\\n\\\\n$$a + b + c = 7$$\\\\n\\\\nTERMINATE\", \"role\": \"assistant\"}]': {'created_at': [0, 1, 2, 3, 4], 'cost': [0.022019999999999998, 0.03305999999999999, 0.04019999999999999, 0.058589999999999996, 0.050969999999999994]}}\n" - ] - } - ], + "outputs": [], "source": [ - "print(autogen.ChatCompletion.logged_history)" + "print(user_proxy.chat_messages[assistant])" ] }, { @@ -400,7 +369,7 @@ "source": [ "import json\n", "\n", - "json.dump(autogen.ChatCompletion.logged_history, open(\"conversations.json\", \"w\"), indent=2)" + "json.dump(user_proxy.chat_messages[assistant], open(\"conversations.json\", \"w\"), indent=2)" ] } ], diff --git a/notebook/agentchat_langchain.ipynb b/notebook/agentchat_langchain.ipynb new file mode 100644 index 00000000000..e5359d83862 --- /dev/null +++ b/notebook/agentchat_langchain.ipynb @@ -0,0 +1,704 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "id": "ae1f50ec", + "metadata": { + "id": "ae1f50ec" + }, + "source": [ + "<a href=\"https://colab.research.google.com/github/microsoft/autogen/blob/main/notebook/agentchat_function_call.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "9a71fa36", + "metadata": { + "id": "9a71fa36" + }, + "source": [ + "# Auto Generated Agent Chat: Task Solving with Langchain Provided Tools as Functions\n", + "\n", + "AutoGen offers conversable agents powered by LLM, tool, or human, which can be used to perform tasks collectively via automated chat. This framework allows tool use and human participants through multi-agent conversation. Please find documentation about this feature [here](https://microsoft.github.io/autogen/docs/Use-Cases/agent_chat).\n", + "\n", + "In this notebook, we demonstrate how to use `AssistantAgent` and `UserProxyAgent` to make function calls with the new feature of OpenAI models (in model version 0613) with a set of Langchain-provided tools and toolkits, to demonstrate how to leverage the 35+ tools available. \n", + "A specified prompt and function configs must be passed to `AssistantAgent` to initialize the agent. The corresponding functions must be passed to `UserProxyAgent`, which will execute any function calls made by `AssistantAgent`. Besides this requirement of matching descriptions with functions, we recommend checking the system message in the `AssistantAgent` to ensure the instructions align with the function call descriptions.\n", + "\n", + "## Requirements\n", + "\n", + "AutoGen requires `Python>=3.8`. To run this notebook example, please install `pyautogen` and `Langchain`:\n", + "```bash\n", + "pip install pyautogen Langchain\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2b803c17", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "2b803c17", + "outputId": "2e12aa3f-e46c-4b82-cc2e-1495f70a2961" + }, + "outputs": [], + "source": [ + "%pip install \"pyautogen~=0.2.0b2\" Langchain" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "5ebd2397", + "metadata": { + "id": "5ebd2397" + }, + "source": [ + "## Set your API Endpoint\n", + "\n", + "The [`config_list_from_models`](https://microsoft.github.io/autogen/docs/reference/oai/openai_utils#config_list_from_models) function tries to create a list of configurations using Azure OpenAI endpoints and OpenAI endpoints for the provided list of models. It assumes the api keys and api bases are stored in the corresponding environment variables or local txt files:\n", + "\n", + "- OpenAI API key: os.environ[\"OPENAI_API_KEY\"] or `openai_api_key_file=\"key_openai.txt\"`.\n", + "- Azure OpenAI API key: os.environ[\"AZURE_OPENAI_API_KEY\"] or `aoai_api_key_file=\"key_aoai.txt\"`. Multiple keys can be stored, one per line.\n", + "- Azure OpenAI API base: os.environ[\"AZURE_OPENAI_API_BASE\"] or `aoai_api_base_file=\"base_aoai.txt\"`. Multiple bases can be stored, one per line.\n", + "\n", + "It's OK to have only the OpenAI API key, or only the Azure OpenAI API key + base.\n", + "If you open this notebook in google colab, you can upload your files by clicking the file icon on the left panel and then choosing \"upload file\" icon.\n", + "\n", + "The following code excludes Azure OpenAI endpoints from the config list because some endpoints don't support functions yet. Remove the `exclude` argument if they do." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "dca301a4", + "metadata": { + "id": "dca301a4" + }, + "outputs": [], + "source": [ + "import autogen\n", + "\n", + "config_list = autogen.config_list_from_json(\n", + " \"OAI_CONFIG_LIST\",\n", + " filter_dict={\n", + " \"model\": [\"gpt-4\", \"gpt-3.5-turbo\", \"gpt-3.5-turbo-16k\"],\n", + " },\n", + ")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "dd1cda81", + "metadata": {}, + "source": [ + "It first looks for environment variable \"OAI_CONFIG_LIST\" which needs to be a valid json string. If that variable is not found, it then looks for a json file named \"OAI_CONFIG_LIST\". It filters the configs by models (you can filter by other keys as well). Only the models with matching names are kept in the list based on the filter condition.\n", + "\n", + "The config list looks like the following:\n", + "```python\n", + "config_list = [\n", + " {\n", + " 'model': 'gpt-4',\n", + " 'api_key': '<your OpenAI API key here>',\n", + " },\n", + " {\n", + " 'model': 'gpt-3.5-turbo',\n", + " 'api_key': '<your Azure OpenAI API key here>',\n", + " 'base_url': '<your Azure OpenAI API base here>',\n", + " 'api_type': 'azure',\n", + " 'api_version': '2023-08-01-preview',\n", + " },\n", + " {\n", + " 'model': 'gpt-3.5-turbo-16k',\n", + " 'api_key': '<your Azure OpenAI API key here>',\n", + " 'base_url': '<your Azure OpenAI API base here>',\n", + " 'api_type': 'azure',\n", + " 'api_version': '2023-08-01-preview',\n", + " },\n", + "]\n", + "```\n", + "\n", + "You can set the value of config_list in any way you prefer. Please refer to this [notebook](https://github.com/microsoft/autogen/blob/main/notebook/oai_openai_utils.ipynb) for full code examples of the different methods." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "2b9526e7", + "metadata": { + "id": "2b9526e7" + }, + "source": [ + "## Making Function Calls\n", + "\n", + "In this example, we demonstrate function call execution with `AssistantAgent` and `UserProxyAgent`. With the default system prompt of `AssistantAgent`, we allow the LLM assistant to perform tasks with code, and the `UserProxyAgent` would extract code blocks from the LLM response and execute them. With the new \"function_call\" feature, we define functions and specify the description of the function in the OpenAI config for the `AssistantAgent`. Then we register the functions in `UserProxyAgent`.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "qCzNbbVajvpc", + "metadata": { + "id": "qCzNbbVajvpc" + }, + "outputs": [], + "source": [ + "# Import things that are needed generically\n", + "from langchain.pydantic_v1 import BaseModel, Field\n", + "from langchain.tools import BaseTool\n", + "from typing import Optional, Type\n", + "import math\n", + "import os\n", + "\n", + "class CircumferenceToolInput(BaseModel):\n", + " radius: float = Field()\n", + "\n", + "class CircumferenceTool(BaseTool):\n", + " name = \"circumference_calculator\"\n", + " description = \"Use this tool when you need to calculate a circumference using the radius of a circle\"\n", + " args_schema: Type[BaseModel] = CircumferenceToolInput\n", + "\n", + " def _run(self, radius: float):\n", + " return float(radius) * 2.0 * math.pi\n", + " \n", + "def get_file_path_of_example():\n", + " # Get the current working directory\n", + " current_dir = os.getcwd()\n", + "\n", + " # Go one directory up\n", + " parent_dir = os.path.dirname(current_dir)\n", + "\n", + " # Move to the target directory\n", + " target_folder = os.path.join(parent_dir, \"test\")\n", + "\n", + " # Construct the path to your target file\n", + " file_path = os.path.join(target_folder, \"test_files/radius.txt\")\n", + " \n", + " return file_path" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "COlL5_98atDs", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "COlL5_98atDs", + "outputId": "24ce236d-8993-4a69-99e2-65453574d61e" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "user_proxy (to chatbot):\n", + "\n", + "Read the file with the path 'Test.txt', then calculate the circumference of a circle that has a radius of that files contents.\n", + "\n", + "--------------------------------------------------------------------------------\n", + "chatbot (to user_proxy):\n", + "\n", + "***** Suggested function Call: read_file *****\n", + "Arguments: \n", + "{\n", + " \"file_path\": \"Test.txt\"\n", + "}\n", + "**********************************************\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\n", + ">>>>>>>> EXECUTING FUNCTION read_file...\n", + "user_proxy (to chatbot):\n", + "\n", + "***** Response from calling function \"read_file\" *****\n", + "7.81mm\n", + "******************************************************\n", + "\n", + "--------------------------------------------------------------------------------\n", + "chatbot (to user_proxy):\n", + "\n", + "***** Suggested function Call: circumference_calculator *****\n", + "Arguments: \n", + "{\n", + " \"radius\": 7.81\n", + "}\n", + "*************************************************************\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\n", + ">>>>>>>> EXECUTING FUNCTION circumference_calculator...\n", + "user_proxy (to chatbot):\n", + "\n", + "***** Response from calling function \"circumference_calculator\" *****\n", + "49.071677249072565\n", + "*********************************************************************\n", + "\n", + "--------------------------------------------------------------------------------\n", + "chatbot (to user_proxy):\n", + "\n", + "The circumference of a circle with a radius of 7.81mm is approximately 49.071mm.\n", + "\n", + "--------------------------------------------------------------------------------\n", + "user_proxy (to chatbot):\n", + "\n", + "\n", + "\n", + "--------------------------------------------------------------------------------\n", + "chatbot (to user_proxy):\n", + "\n", + "TERMINATE\n", + "\n", + "--------------------------------------------------------------------------------\n" + ] + } + ], + "source": [ + "from langchain.tools.file_management.read import ReadFileTool\n", + "\n", + "# Define a function to generate llm_config from a LangChain tool\n", + "def generate_llm_config(tool):\n", + " # Define the function schema based on the tool's args_schema\n", + " function_schema = {\n", + " \"name\": tool.name.lower().replace (' ', '_'),\n", + " \"description\": tool.description,\n", + " \"parameters\": {\n", + " \"type\": \"object\",\n", + " \"properties\": {},\n", + " \"required\": [],\n", + " },\n", + " }\n", + "\n", + " if tool.args is not None:\n", + " function_schema[\"parameters\"][\"properties\"] = tool.args\n", + "\n", + " return function_schema\n", + "\n", + "# Instantiate the ReadFileTool\n", + "read_file_tool = ReadFileTool()\n", + "custom_tool = CircumferenceTool()\n", + "\n", + "# Construct the llm_config\n", + "llm_config = {\n", + " #Generate functions config for the Tool\n", + " \"functions\":[\n", + " generate_llm_config(custom_tool),\n", + " generate_llm_config(read_file_tool),\n", + " ],\n", + " \"config_list\": config_list, # Assuming you have this defined elsewhere\n", + " \"timeout\": 120,\n", + "}\n", + "\n", + "user_proxy = autogen.UserProxyAgent(\n", + " name=\"user_proxy\",\n", + " is_termination_msg=lambda x: x.get(\"content\", \"\") and x.get(\"content\", \"\").rstrip().endswith(\"TERMINATE\"),\n", + " human_input_mode=\"NEVER\",\n", + " max_consecutive_auto_reply=10,\n", + " code_execution_config={\"work_dir\": \"coding\"},\n", + ")\n", + "\n", + "# Register the tool and start the conversation\n", + "user_proxy.register_function(\n", + " function_map={\n", + " custom_tool.name: custom_tool._run,\n", + " read_file_tool.name: read_file_tool._run,\n", + " }\n", + ")\n", + "\n", + "chatbot = autogen.AssistantAgent(\n", + " name=\"chatbot\",\n", + " system_message=\"For coding tasks, only use the functions you have been provided with. Reply TERMINATE when the task is done.\",\n", + " llm_config=llm_config,\n", + ")\n", + "\n", + "user_proxy.initiate_chat(\n", + " chatbot,\n", + " message=f\"Read the file with the path {get_file_path_of_example()}, then calculate the circumference of a circle that has a radius of that files contents.\", #7.81mm in the file\n", + " llm_config=llm_config,\n", + ")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "11cc4e60", + "metadata": {}, + "source": [ + "# A PySpark Example" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "Y-ozf9EFCegw", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "Y-ozf9EFCegw", + "outputId": "db7b73a8-6129-4dfb-9d5c-ac3536f310d7" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: pyspark in /usr/local/lib/python3.10/dist-packages (3.5.0)\n", + "Requirement already satisfied: py4j==0.10.9.7 in /usr/local/lib/python3.10/dist-packages (from pyspark) (0.10.9.7)\n" + ] + } + ], + "source": [ + "%pip install pyspark" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7iFp-Sm4CYq_", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "7iFp-Sm4CYq_", + "outputId": "2e1a2a70-53e6-4896-9232-63db6d097d63" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "+---------+--------+------------------+-----------+--------------+----------+----------+-------------+------------------+\n", + "|longitude|latitude|housing_median_age|total_rooms|total_bedrooms|population|households|median_income|median_house_value|\n", + "+---------+--------+------------------+-----------+--------------+----------+----------+-------------+------------------+\n", + "| -114.31| 34.19| 15.0| 5612.0| 1283.0| 1015.0| 472.0| 1.4936| 66900.0|\n", + "| -114.47| 34.4| 19.0| 7650.0| 1901.0| 1129.0| 463.0| 1.82| 80100.0|\n", + "| -114.56| 33.69| 17.0| 720.0| 174.0| 333.0| 117.0| 1.6509| 85700.0|\n", + "| -114.57| 33.64| 14.0| 1501.0| 337.0| 515.0| 226.0| 3.1917| 73400.0|\n", + "| -114.57| 33.57| 20.0| 1454.0| 326.0| 624.0| 262.0| 1.925| 65500.0|\n", + "| -114.58| 33.63| 29.0| 1387.0| 236.0| 671.0| 239.0| 3.3438| 74000.0|\n", + "| -114.58| 33.61| 25.0| 2907.0| 680.0| 1841.0| 633.0| 2.6768| 82400.0|\n", + "| -114.59| 34.83| 41.0| 812.0| 168.0| 375.0| 158.0| 1.7083| 48500.0|\n", + "| -114.59| 33.61| 34.0| 4789.0| 1175.0| 3134.0| 1056.0| 2.1782| 58400.0|\n", + "| -114.6| 34.83| 46.0| 1497.0| 309.0| 787.0| 271.0| 2.1908| 48100.0|\n", + "| -114.6| 33.62| 16.0| 3741.0| 801.0| 2434.0| 824.0| 2.6797| 86500.0|\n", + "| -114.6| 33.6| 21.0| 1988.0| 483.0| 1182.0| 437.0| 1.625| 62000.0|\n", + "| -114.61| 34.84| 48.0| 1291.0| 248.0| 580.0| 211.0| 2.1571| 48600.0|\n", + "| -114.61| 34.83| 31.0| 2478.0| 464.0| 1346.0| 479.0| 3.212| 70400.0|\n", + "| -114.63| 32.76| 15.0| 1448.0| 378.0| 949.0| 300.0| 0.8585| 45000.0|\n", + "| -114.65| 34.89| 17.0| 2556.0| 587.0| 1005.0| 401.0| 1.6991| 69100.0|\n", + "| -114.65| 33.6| 28.0| 1678.0| 322.0| 666.0| 256.0| 2.9653| 94900.0|\n", + "| -114.65| 32.79| 21.0| 44.0| 33.0| 64.0| 27.0| 0.8571| 25000.0|\n", + "| -114.66| 32.74| 17.0| 1388.0| 386.0| 775.0| 320.0| 1.2049| 44000.0|\n", + "| -114.67| 33.92| 17.0| 97.0| 24.0| 29.0| 15.0| 1.2656| 27500.0|\n", + "+---------+--------+------------------+-----------+--------------+----------+----------+-------------+------------------+\n", + "only showing top 20 rows\n", + "\n" + ] + } + ], + "source": [ + "#Starndard Langchain example\n", + "from langchain.agents import create_spark_sql_agent\n", + "from langchain.agents.agent_toolkits import SparkSQLToolkit\n", + "from langchain.chat_models import ChatOpenAI\n", + "from langchain.utilities.spark_sql import SparkSQL\n", + "from pyspark.sql import SparkSession\n", + "\n", + "spark = SparkSession.builder.getOrCreate()\n", + "schema = \"langchain_example\"\n", + "spark.sql(f\"CREATE DATABASE IF NOT EXISTS {schema}\")\n", + "spark.sql(f\"USE {schema}\")\n", + "csv_file_path = \"./sample_data/california_housing_train.csv\"\n", + "table = \"california_housing_train\"\n", + "spark.read.csv(csv_file_path, header=True, inferSchema=True).write.option(\"path\", \"file:/content/spark-warehouse/langchain_example.db/california_housing_train\").mode(\"overwrite\").saveAsTable(table)\n", + "spark.table(table).show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "iLtSTHoJD7Jn", + "metadata": { + "id": "iLtSTHoJD7Jn" + }, + "outputs": [], + "source": [ + "# Note, you can also connect to Spark via Spark connect. For example:\n", + "# db = SparkSQL.from_uri(\"sc://localhost:15002\", schema=schema)\n", + "spark_sql = SparkSQL(schema=schema)\n", + "llm = ChatOpenAI(temperature=0, model=\"gpt-3.5-turbo-16k\")\n", + "toolkit = SparkSQLToolkit(db=spark_sql, llm=llm)\n", + "agent_executor = create_spark_sql_agent(llm=llm, toolkit=toolkit, verbose=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "VzqNYlVjCqQa", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 608 + }, + "id": "VzqNYlVjCqQa", + "outputId": "dd4de772-7b0c-4650-d106-c83d4593158e" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n", + "\u001b[1m> Entering new AgentExecutor chain...\u001b[0m\n", + "\u001b[32;1m\u001b[1;3mAction: list_tables_sql_db\n", + "Action Input: \"\"\u001b[0m\n", + "Observation: \u001b[38;5;200m\u001b[1;3mcalifornia_housing_train\u001b[0m\n", + "Thought:\u001b[32;1m\u001b[1;3mI see that there is a table called \"california_housing_train\" in the database. I can use the \"schema_sql_db\" tool to get more information about this table.\n", + "Action: schema_sql_db\n", + "Action Input: \"california_housing_train\"\u001b[0m\n", + "Observation: \u001b[33;1m\u001b[1;3mCREATE TABLE spark_catalog.langchain_example.california_housing_train (\n", + " longitude DOUBLE,\n", + " latitude DOUBLE,\n", + " housing_median_age DOUBLE,\n", + " total_rooms DOUBLE,\n", + " total_bedrooms DOUBLE,\n", + " population DOUBLE,\n", + " households DOUBLE,\n", + " median_income DOUBLE,\n", + " median_house_value DOUBLE)\n", + ";\n", + "\n", + "/*\n", + "3 rows from california_housing_train table:\n", + "longitude\tlatitude\thousing_median_age\ttotal_rooms\ttotal_bedrooms\tpopulation\thouseholds\tmedian_income\tmedian_house_value\n", + "-114.31\t34.19\t15.0\t5612.0\t1283.0\t1015.0\t472.0\t1.4936\t66900.0\n", + "-114.47\t34.4\t19.0\t7650.0\t1901.0\t1129.0\t463.0\t1.82\t80100.0\n", + "-114.56\t33.69\t17.0\t720.0\t174.0\t333.0\t117.0\t1.6509\t85700.0\n", + "*/\u001b[0m\n", + "Thought:\u001b[32;1m\u001b[1;3mThe \"california_housing_train\" table has the following columns: longitude, latitude, housing_median_age, total_rooms, total_bedrooms, population, households, median_income, and median_house_value. It contains information about housing in California. I can now answer the question.\n", + "Action: None\n", + "Final Answer: The \"california_housing_train\" table has the following columns: longitude, latitude, housing_median_age, total_rooms, total_bedrooms, population, households, median_income, and median_house_value.\u001b[0m\n", + "\n", + "\u001b[1m> Finished chain.\u001b[0m\n" + ] + }, + { + "data": { + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "string" + }, + "text/plain": [ + "'The \"california_housing_train\" table has the following columns: longitude, latitude, housing_median_age, total_rooms, total_bedrooms, population, households, median_income, and median_house_value.'" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#Starndard Langchain example\n", + "agent_executor.run(\"Describe the california_housing_train table\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d94d45a9", + "metadata": {}, + "outputs": [], + "source": [ + "# LangChain direct tool usage instead of toolkit example\n", + "# from langchain.tools.spark_sql.tool import (\n", + "# InfoSparkSQLTool,\n", + "# ListSparkSQLTool,\n", + "# QueryCheckerTool,\n", + "# QuerySparkSQLTool,\n", + "# )\n", + "# debug_toolkit = [\n", + "# QuerySparkSQLTool(db=spark_sql),\n", + "# InfoSparkSQLTool(db=spark_sql),\n", + "# ListSparkSQLTool(db=spark_sql),\n", + "# QueryCheckerTool(db=spark_sql, llm=llm),\n", + "#]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "r7PFvDS7Ev-E", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "r7PFvDS7Ev-E", + "outputId": "53d9c45d-058e-4e37-ba73-556591aaab42" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'name': 'query_sql_db', 'description': '\\n Input to this tool is a detailed and correct SQL query, output is a result from the Spark SQL.\\n If the query is not correct, an error message will be returned.\\n If an error is returned, rewrite the query, check the query, and try again.\\n ', 'parameters': {'type': 'object', 'properties': {'query': {'title': 'Query', 'type': 'string'}}, 'required': []}}\n", + "{'name': 'schema_sql_db', 'description': '\\n Input to this tool is a comma-separated list of tables, output is the schema and sample rows for those tables.\\n Be sure that the tables actually exist by calling list_tables_sql_db first!\\n\\n Example Input: \"table1, table2, table3\"\\n ', 'parameters': {'type': 'object', 'properties': {'table_names': {'title': 'Table Names', 'type': 'string'}}, 'required': []}}\n", + "{'name': 'list_tables_sql_db', 'description': 'Input is an empty string, output is a comma separated list of tables in the Spark SQL.', 'parameters': {'type': 'object', 'properties': {'tool_input': {'title': 'Tool Input', 'default': '', 'type': 'string'}}, 'required': []}}\n", + "{'name': 'query_checker_sql_db', 'description': '\\n Use this tool to double check if your query is correct before executing it.\\n Always use this tool before executing a query with query_sql_db!\\n ', 'parameters': {'type': 'object', 'properties': {'query': {'title': 'Query', 'type': 'string'}}, 'required': []}}\n", + "user_proxy (to chatbot):\n", + "\n", + "Describe the table names california_housing_train\n", + "\n", + "--------------------------------------------------------------------------------\n", + "chatbot (to user_proxy):\n", + "\n", + "***** Suggested function Call: schema_sql_db *****\n", + "Arguments: \n", + "{\n", + " \"table_names\": \"california_housing_train\"\n", + "}\n", + "**************************************************\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\n", + ">>>>>>>> EXECUTING FUNCTION schema_sql_db...\n", + "user_proxy (to chatbot):\n", + "\n", + "***** Response from calling function \"schema_sql_db\" *****\n", + "CREATE TABLE spark_catalog.langchain_example.california_housing_train (\n", + " longitude DOUBLE,\n", + " latitude DOUBLE,\n", + " housing_median_age DOUBLE,\n", + " total_rooms DOUBLE,\n", + " total_bedrooms DOUBLE,\n", + " population DOUBLE,\n", + " households DOUBLE,\n", + " median_income DOUBLE,\n", + " median_house_value DOUBLE)\n", + ";\n", + "\n", + "/*\n", + "3 rows from california_housing_train table:\n", + "longitude\tlatitude\thousing_median_age\ttotal_rooms\ttotal_bedrooms\tpopulation\thouseholds\tmedian_income\tmedian_house_value\n", + "-114.31\t34.19\t15.0\t5612.0\t1283.0\t1015.0\t472.0\t1.4936\t66900.0\n", + "-114.47\t34.4\t19.0\t7650.0\t1901.0\t1129.0\t463.0\t1.82\t80100.0\n", + "-114.56\t33.69\t17.0\t720.0\t174.0\t333.0\t117.0\t1.6509\t85700.0\n", + "*/\n", + "**********************************************************\n", + "\n", + "--------------------------------------------------------------------------------\n", + "chatbot (to user_proxy):\n", + "\n", + "The california_housing_train table has the following schema:\n", + "\n", + "- longitude: DOUBLE\n", + "- latitude: DOUBLE\n", + "- housing_median_age: DOUBLE\n", + "- total_rooms: DOUBLE\n", + "- total_bedrooms: DOUBLE\n", + "- population: DOUBLE\n", + "- households: DOUBLE\n", + "- median_income: DOUBLE\n", + "- median_house_value: DOUBLE\n", + "\n", + "Here are sample rows from the table:\n", + "\n", + "| longitude | latitude | housing_median_age | total_rooms | total_bedrooms | population | households | median_income | median_house_value |\n", + "|-----------|----------|--------------------|-------------|----------------|------------|------------|---------------|--------------------|\n", + "| -114.31 | 34.19 | 15.0 | 5612.0 | 1283.0 | 1015.0 | 472.0 | 1.4936 | 66900.0 |\n", + "| -114.47 | 34.4 | 19.0 | 7650.0 | 1901.0 | 1129.0 | 463.0 | 1.82 | 80100.0 |\n", + "| -114.56 | 33.69 | 17.0 | 720.0 | 174.0 | 333.0 | 117.0 | 1.6509 | 85700.0 |\n", + "\n", + "--------------------------------------------------------------------------------\n", + "user_proxy (to chatbot):\n", + "\n", + "\n", + "\n", + "--------------------------------------------------------------------------------\n", + "chatbot (to user_proxy):\n", + "\n", + "TERMINATE\n", + "\n", + "--------------------------------------------------------------------------------\n" + ] + } + ], + "source": [ + "\n", + "# Now use AutoGen with Langchain Tool Bridgre\n", + "tools = []\n", + "function_map = {}\n", + "\n", + "for tool in toolkit.get_tools(): #debug_toolkit if you want to use tools directly\n", + " tool_schema = generate_llm_config(tool)\n", + " print(tool_schema)\n", + " tools.append(tool_schema)\n", + " function_map[tool.name] = tool._run\n", + "\n", + "# Construct the llm_config\n", + "llm_config = {\n", + " \"functions\": tools,\n", + " \"config_list\": config_list, # Assuming you have this defined elsewhere\n", + " \"timeout\": 120,\n", + "}\n", + "\n", + "user_proxy = autogen.UserProxyAgent(\n", + " name=\"user_proxy\",\n", + " is_termination_msg=lambda x: x.get(\"content\", \"\") and x.get(\"content\", \"\").rstrip().endswith(\"TERMINATE\"),\n", + " human_input_mode=\"NEVER\",\n", + " max_consecutive_auto_reply=10,\n", + " code_execution_config={\"work_dir\": \"coding\"},\n", + ")\n", + "\n", + "print(function_map)\n", + "\n", + "# Register the tool and start the conversation\n", + "user_proxy.register_function(\n", + " function_map = function_map\n", + ")\n", + "\n", + "chatbot = autogen.AssistantAgent(\n", + " name=\"chatbot\",\n", + " system_message=\"For coding tasks, only use the functions you have been provided with. Reply TERMINATE when the task is done.\",\n", + " llm_config=llm_config,\n", + ")\n", + "\n", + "user_proxy.initiate_chat(\n", + " chatbot,\n", + " message=\"Describe the table names california_housing_train\",\n", + " llm_config=llm_config,\n", + ")" + ] + } + ], + "metadata": { + "colab": { + "provenance": [] + }, + "kernelspec": { + "display_name": "flaml_dev", + "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.9.17" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/notebook/agentchat_lmm_gpt-4v.ipynb b/notebook/agentchat_lmm_gpt-4v.ipynb new file mode 100644 index 00000000000..d3ece5c66dd --- /dev/null +++ b/notebook/agentchat_lmm_gpt-4v.ipynb @@ -0,0 +1,766 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "2c75da30", + "metadata": {}, + "source": [ + "# Agent Chat with Multimodal Models: GPT-4V" + ] + }, + { + "cell_type": "markdown", + "id": "5f51914c", + "metadata": {}, + "source": [ + "### Before everything starts, install AutoGen with the `lmm` option\n", + "```bash\n", + "pip install \"pyautogen[lmm]~=0.2.0b4\"\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "67d45964", + "metadata": {}, + "outputs": [], + "source": [ + "import requests\n", + "import json\n", + "import os\n", + "\n", + "from typing import Any, Callable, Dict, List, Optional, Tuple, Type, Union\n", + "\n", + "import autogen\n", + "from autogen import AssistantAgent, Agent, UserProxyAgent, ConversableAgent\n", + "from termcolor import colored\n", + "import random" + ] + }, + { + "cell_type": "markdown", + "id": "7e4faf59", + "metadata": {}, + "source": [ + "<a id=\"app-1\"></a>\n", + "## Application 1: Image Chat\n", + "\n", + "In this section, we present a straightforward dual-agent architecture to enable user to chat with a multimodal agent.\n", + "\n", + "\n", + "First, we show this image and ask a question.\n", + "![](https://th.bing.com/th/id/R.422068ce8af4e15b0634fe2540adea7a?rik=y4OcXBE%2fqutDOw&pid=ImgRaw&r=0)" + ] + }, + { + "cell_type": "markdown", + "id": "e3d5580e", + "metadata": {}, + "source": [ + "Within the user proxy agent, we can decide to activate the human input mode or not (for here, we use human_input_mode=\"NEVER\" for conciseness). This allows you to interact with LMM in a multi-round dialogue, enabling you to provide feedback as the conversation unfolds." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "b1db6f5d", + "metadata": {}, + "outputs": [], + "source": [ + "from autogen.agentchat.contrib.multimodal_conversable_agent import MultimodalConversableAgent\n", + "\n", + "config_list_4v = autogen.config_list_from_json(\n", + " \"OAI_CONFIG_LIST\",\n", + " filter_dict={\n", + " \"model\": [\"gpt-4-vision-preview\"],\n", + " },\n", + ")\n", + "\n", + "\n", + "config_list_gpt4 = autogen.config_list_from_json(\n", + " \"OAI_CONFIG_LIST\",\n", + " filter_dict={\n", + " \"model\": [\"gpt-4\", \"gpt-4-0314\", \"gpt4\", \"gpt-4-32k\", \"gpt-4-32k-0314\", \"gpt-4-32k-v0314\"],\n", + " },\n", + ")\n", + "\n", + "gpt4_llm_config = {\"config_list\": config_list_gpt4, \"cache_seed\": 42}" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "57462351", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['openai']" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Remove the `api_type` param as it is not needed for 4V\n", + "[config.pop(\"api_type\", None) for config in config_list_4v]" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "e23df0dd", + "metadata": {}, + "outputs": [], + "source": [ + "# image_agent._oai_messages[user_proxy]" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "67157629", + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[33mUser_proxy\u001b[0m (to image-explainer):\n", + "\n", + "What's the breed of this dog? \n", + "<image>.\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[31m\n", + ">>>>>>>> USING AUTO REPLY...\u001b[0m\n", + "\u001b[33mimage-explainer\u001b[0m (to User_proxy):\n", + "\n", + "The dog in the image appears to be a Goldendoodle, which is a crossbreed between a Golden Retriever and a Poodle. They are known for their curly, hypoallergenic coats, which can vary in color, and their friendly and affectionate nature.\n", + "\n", + "--------------------------------------------------------------------------------\n" + ] + } + ], + "source": [ + "image_agent = MultimodalConversableAgent(\n", + " name=\"image-explainer\",\n", + " max_consecutive_auto_reply=10,\n", + " llm_config={\"config_list\": config_list_4v, \"temperature\": 0.5, \"max_tokens\": 300}\n", + ")\n", + "\n", + "user_proxy = autogen.UserProxyAgent(\n", + " name=\"User_proxy\",\n", + " system_message=\"A human admin.\",\n", + " human_input_mode=\"NEVER\", # Try between ALWAYS or NEVER\n", + " max_consecutive_auto_reply=0\n", + ")\n", + "\n", + "# Ask the question with an image\n", + "user_proxy.initiate_chat(image_agent, \n", + " message=\"\"\"What's the breed of this dog? \n", + "<img https://th.bing.com/th/id/R.422068ce8af4e15b0634fe2540adea7a?rik=y4OcXBE%2fqutDOw&pid=ImgRaw&r=0>.\"\"\")" + ] + }, + { + "cell_type": "markdown", + "id": "3f60521d", + "metadata": {}, + "source": [ + "Now, input another image, and ask a followup question.\n", + "\n", + "![](https://th.bing.com/th/id/OIP.29Mi2kJmcHHyQVGe_0NG7QHaEo?pid=ImgDet&rs=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "73a2b234", + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[33mUser_proxy\u001b[0m (to image-explainer):\n", + "\n", + "What is this breed? \n", + "<image>\n", + "\n", + "Among the breeds, which one barks less?\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[31m\n", + ">>>>>>>> USING AUTO REPLY...\u001b[0m\n", + "\u001b[33mimage-explainer\u001b[0m (to User_proxy):\n", + "\n", + "The dog in the image is a Siberian Husky. Siberian Huskies are known for their striking appearance, which includes a thick double coat, erect triangular ears, and distinctive markings.\n", + "\n", + "Between the Goldendoodle and the Siberian Husky, Huskies are generally known to be less prone to barking. They are more likely to howl or vocalize in other ways. Goldendoodles, being a mix of Golden Retrievers and Poodles, can vary in their tendency to bark depending on which traits they inherit from their parent breeds. Golden Retrievers are often quite vocal, while Poodles can be alert barkers. However, every dog is an individual, and their environment and training can significantly influence their barking behavior.\n", + "\n", + "--------------------------------------------------------------------------------\n" + ] + } + ], + "source": [ + "# Ask the question with an image\n", + "user_proxy.send(message=\"\"\"What is this breed? \n", + "<img https://th.bing.com/th/id/OIP.29Mi2kJmcHHyQVGe_0NG7QHaEo?pid=ImgDet&rs=1>\n", + "\n", + "Among the breeds, which one barks less?\"\"\", \n", + " recipient=image_agent)" + ] + }, + { + "cell_type": "markdown", + "id": "0c40d0eb", + "metadata": {}, + "source": [ + "<a id=\"app-2\"></a>\n", + "## Application 2: Figure Creator\n", + "\n", + "Here, we define a `FigureCreator` agent, which contains three child agents: commander, coder, and critics.\n", + "\n", + "- Commander: interacts with users, runs code, and coordinates the flow between the coder and critics.\n", + "- Coder: writes code for visualization.\n", + "- Critics: LMM-based agent that provides comments and feedback on the generated image." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "e8eca993", + "metadata": {}, + "outputs": [], + "source": [ + "class FigureCreator(AssistantAgent):\n", + "\n", + " def __init__(self, n_iters=2, **kwargs):\n", + " \"\"\"\n", + " Initializes a FigureCreator instance.\n", + " \n", + " This agent facilitates the creation of visualizations through a collaborative effort among its child agents: commander, coder, and critics.\n", + " \n", + " Parameters:\n", + " - n_iters (int, optional): The number of \"improvement\" iterations to run. Defaults to 2.\n", + " - **kwargs: keyword arguments for the parent AssistantAgent.\n", + " \"\"\"\n", + " super().__init__(**kwargs)\n", + " self.register_reply([Agent, None],\n", + " reply_func=FigureCreator._reply_user,\n", + " position=0)\n", + " self._n_iters = n_iters\n", + "\n", + " def _reply_user(self, messages=None, sender=None, config=None):\n", + " if all((messages is None, sender is None)):\n", + " error_msg = f\"Either {messages=} or {sender=} must be provided.\"\n", + " logger.error(error_msg)\n", + " raise AssertionError(error_msg)\n", + "\n", + " if messages is None:\n", + " messages = self._oai_messages[sender]\n", + "\n", + " user_question = messages[-1][\"content\"]\n", + "\n", + " ### Define the agents\n", + " commander = AssistantAgent(\n", + " name=\"Commander\",\n", + " human_input_mode=\"NEVER\",\n", + " max_consecutive_auto_reply=10,\n", + " system_message=\n", + " \"Help me run the code, and tell other agents it is in the <img result.jpg> file location.\",\n", + " is_termination_msg=lambda x: x.get(\"content\", \"\").rstrip().endswith(\n", + " \"TERMINATE\"),\n", + " code_execution_config={\n", + " \"last_n_messages\": 3,\n", + " \"work_dir\": \".\",\n", + " \"use_docker\": False\n", + " },\n", + " llm_config=self.llm_config,\n", + " )\n", + "\n", + " critics = MultimodalConversableAgent(\n", + " name=\"Critics\",\n", + " system_message=\n", + " \"\"\"Criticize the input figure. How to replot the figure so it will be better? Find bugs and issues for the figure. \n", + " Pay attention to the color, format, and presentation. Keep in mind of the reader-friendliness.\n", + " If you think the figures is good enough, then simply say NO_ISSUES\"\"\",\n", + " llm_config={\"config_list\": config_list_4v, \"max_tokens\": 300},\n", + " human_input_mode=\"NEVER\",\n", + " max_consecutive_auto_reply=1,\n", + " # use_docker=False,\n", + " )\n", + "\n", + " coder = AssistantAgent(\n", + " name=\"Coder\",\n", + " llm_config=self.llm_config,\n", + " )\n", + "\n", + " coder.update_system_message(\n", + " coder.system_message +\n", + " \"ALWAYS save the figure in `result.jpg` file. Tell other agents it is in the <img result.jpg> file location.\"\n", + " )\n", + "\n", + " # Data flow begins\n", + " commander.initiate_chat(coder, message=user_question)\n", + " img = Image.open(\"result.jpg\")\n", + " plt.imshow(img)\n", + " plt.axis('off') # Hide the axes\n", + " plt.show()\n", + " \n", + " for i in range(self._n_iters):\n", + " commander.send(message=\"Improve <img result.jpg>\",\n", + " recipient=critics,\n", + " request_reply=True)\n", + " \n", + " feedback = commander._oai_messages[critics][-1][\"content\"]\n", + " if feedback.find(\"NO_ISSUES\") >= 0:\n", + " break\n", + " commander.send(\n", + " message=\"Here is the feedback to your figure. Please improve! Save the result to `result.jpg`\\n\"\n", + " + feedback,\n", + " recipient=coder,\n", + " request_reply=True)\n", + " img = Image.open(\"result.jpg\")\n", + " plt.imshow(img)\n", + " plt.axis('off') # Hide the axes\n", + " plt.show()\n", + " \n", + " return True, \"result.jpg\"" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "977b9017", + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[33mUser\u001b[0m (to Figure Creator~):\n", + "\n", + "\n", + "Plot a figure by using the data from:\n", + "https://raw.githubusercontent.com/vega/vega/main/docs/data/seattle-weather.csv\n", + "\n", + "I want to show both temperature high and low.\n", + "\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33mCommander\u001b[0m (to Coder):\n", + "\n", + "\n", + "Plot a figure by using the data from:\n", + "https://raw.githubusercontent.com/vega/vega/main/docs/data/seattle-weather.csv\n", + "\n", + "I want to show both temperature high and low.\n", + "\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33mCoder\u001b[0m (to Commander):\n", + "\n", + "First, we will download the CSV file, then we will parse it using pandas, a popular data analysis library in Python. After that, we will plot the data using matplotlib.\n", + "\n", + "This is how we could do this:\n", + "\n", + "```python\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "\n", + "# Step 1: Load the Data\n", + "url = \"https://raw.githubusercontent.com/vega/vega/main/docs/data/seattle-weather.csv\"\n", + "data = pd.read_csv(url)\n", + "\n", + "# Step 2: Parse the date to datetime format\n", + "data['date'] = pd.to_datetime(data['date'])\n", + "\n", + "# Step 3: Plot the Data\n", + "plt.figure(figsize=(10,6))\n", + "plt.plot(data['date'], data['temp_max'], label='Temp Max')\n", + "plt.plot(data['date'], data['temp_min'], label='Temp Min')\n", + "\n", + "plt.title('Seattle Weather')\n", + "plt.xlabel('Date')\n", + "plt.ylabel('Temperature (F)')\n", + "plt.legend()\n", + "plt.grid()\n", + "\n", + "# Save the figure\n", + "plt.savefig('result.jpg')\n", + "\n", + "# Display the plot\n", + "plt.show()\n", + "```\n", + "\n", + "When you run this code, it will load the data from the given URL, parse the 'date' column to datetime format, then plot the \"temp_max\" and \"temp_min\" over time. The resulting plot is then shown to you. The plot will automatically be saved as 'result.jpg' in the current directory. I will also submit these instructions to other agents.\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[31m\n", + ">>>>>>>> EXECUTING CODE BLOCK 0 (inferred language is python)...\u001b[0m\n", + "\u001b[33mCommander\u001b[0m (to Coder):\n", + "\n", + "exitcode: 0 (execution succeeded)\n", + "Code output: \n", + "Figure(1000x600)\n", + "\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33mCoder\u001b[0m (to Commander):\n", + "\n", + "Great! The code has successfully executed and the plot was generated and saved as `result.jpg`. \n", + "\n", + "If you check the working directory, you should find the figure saved as `result.jpg`.\n", + "\n", + "Let me know if you need help with anything else.\n", + "\n", + "TERMINATE\n", + "\n", + "--------------------------------------------------------------------------------\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgMAAAE9CAYAAACWQ2EXAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOz9ebRl11Xfi3/mWnvvc25XnaqkKklWX7LlTjbuBdiAMeCAMU6CHSeExyMJbwSSN8zvB2QEXsYAxm+M8NKOxBBiTIwdetvYYIyNsWxjbMuN3Kix+lJTjapU3a2q251z9l5rzt8fa+1zT5VKcklWc2/d/dW4qnPvOWeffdZee8255vzO7xQzMzp06NChQ4cOGxbu2T6BDh06dOjQocOzi84Z6NChQ4cOHTY4OmegQ4cOHTp02ODonIEOHTp06NBhg6NzBjp06NChQ4cNjs4Z6NChQ4cOHTY4OmegQ4cOHTp02ODonIEOHTp06NBhg6NzBjp06NChQ4cNjs4Z6NChQ4cOHTY4OmegQ4cOHTp02ODonIEOHTp06NBhg6NzBjp06NChQ4cNjs4Z6NChQ4cOHTY4OmegQ4cOHTp02ODonIEOHTp06NBhg6NzBjp06NChQ4cNjs4Z6NChQ4cOHTY4OmegQ4cOHTp02ODonIEOHTp06NBhg6NzBjp06NChQ4cNjs4Z6NChQ4cOHTY4OmegQ4cOHTp02ODonIEOHTp06NBhg6NzBjp06NChQ4cNjs4Z6NChQ4cOHTY4OmegQ4cOHTp02ODonIEOHTp06NBhg6NzBjp06NChQ4cNjs4Z6NChQ4cOHTY4OmegQ4cOHTp02OAonu0T6NChwyrM7DH/LiJPyfHb4zzW46cbInLW79n+/fHO5Zk6xw4dNho6Z6BDhzWCSUOoqqgqzjlUFREhxoj3HudOD+idaVxDCHjvAYgx4pwjxkhRFIQQEBGcc6cZVjNDVTGz8fHb50Vk/L72s9pjTL5n8tzbY7TfqX3uTGM+6Yy032Hyb8D4+595zh06dHjq0KUJOnRYQ5g0tiEEHnzwQW655Rbuu+++sVGEVUPZGnFg7EC0jxcWFsYGeGVlhRgjZsbhw4c5efLko4wtMDbwIQTuu+8+YowMh0P27t3LiRMnUFWWl5fZv38/o9HoNOehNeitY9Cey+LiIjFGVJVjx45x+PDh056PMT6mg2JmY8emQ4cOTx86Z6BDhzWEGCOQDOGHP/xh3vnOd3LTTTfxB3/wBzz88MOn7bRbY9oa0daR8N6zf/9+3vnOdxJCYDQa8eu//uvMz89TFAUf+tCH+PznP49zjhDC+PPa9zvnWFlZ4Vd/9VfZt28fTdPwS7/0S/ze7/0eZsbHP/5x/uRP/uQ0I90a88ljtQ7Nb/7mb3LnnXfiveeTn/wkH/zgB8evn4xotN+pjS60x22jEu25dujQ4alHlybo0GENod2ZA9x44438o3/0j3jd6143NrRN0/D+97+fO++8k507d/ITP/ETiAjvf//7OXz4MJdddhlvfetb+exnP8tf/uVfsry8zEte8hI+9alP0TQNP/iDPzg21sPhkI985CPccsstbNu2jZ/4iZ9g586dAMzNzXHttddy22238ZKXvIStW7dy4MABmqbha1/7Gt/7vd/LHXfcwZ//+Z9T1zU/9EM/xHd913fx2c9+ls9+9rOUZcmb3/xmNm3axF//9V9zzz338NrXvpbZ2VnuvPNOfuM3fgMR4Z//83/O3NwcH/nIR7j55pvZtGkTP/mTP0mMkd/7vd9j69atbNu2jX/8j/8xZVk+a9elQ4fzHV1koEOHNYof+7Ef413vehc/93M/x3ve8x6Wl5f5yEc+wgMPPMDP/uzPIiL86Z/+KVVV8YIXvICXv/zlfPnLX+aTn/wk119/PS984Qt5xzvewRve8AauuuoqfvZnf5bv+77vA1Jq4HOf+xw33XQTP/MzP8O2bdt43/veN45MOOd46Utfyq233sptt93GK1/5Sqampti7dy8PP/wwl1xyCf/pP/0n3vjGN/LjP/7j/O7v/i7z8/NceOGFvOY1r+GCCy7gP/7H/8iFF17Ii1/8Yn7iJ36Ct73tbagqp06d4u1vfzsAf/u3f8vNN9/MjTfeyM/8zM9wxRVX8D//5/9kaWmJv/3bv+VVr3oVP/IjP3Iap6BDhw5PPbrIQIcOawztzv0HfuAHeMUrXsGDDz7Iu9/9bmKMPPzww+zZs4ff/u3f5vjx41x88cXcfffdvO997+NlL3sZIsLBgwd5/vOfT7/fZ/PmzZgZRVGwdetWqqoa5+Vvv/12HnjgAd71rnexuLjI9PQ0TdNQFAVmxktf+lLe+973AvAjP/IjqCqf/vSnERGqquL222/nAx/4AADD4ZBDhw7xvve9j61btzI1NcX8/Pw4xD83N8fc3BwAr3jFK7jiiit4wQtewAMPPMDRo0fZu3cvv/3bv83y8jJFkZalK664gpe85CUURfGolEKHDh2eWnTOQIcOawhtztzM2LNnD1u2bGH37t1ceeWVLCwssHv3bmZnZ/n7f//vY2aUZcmXv/xlXvCCF/CWt7yFu+66a+xMrKyscPLkSebm5uj1eszPz7Np06bxZ1177bUcO3aMn/qpnwKgLEt6vd74+a1bt+Kc4xvf+AbveMc7CCHwjne8g7e85S1s2rSJF7zgBbz1rW9l27ZtrKyssGXLFg4cOMC//tf/mrvuuouPfvSjAPT7fRYWFhgMBhRFQVEU41RIURQ897nP5b777uOf/bN/NnZc2ooEEcF7P66K6NChw9ODzhk4B3Q7kg7PFCZLCW+//XZuvfVW6roe5/Q3bdrEH/3RH/E7v/M7TE9P88M//MO89rWv5bd+67f4b//tv3HRRRexa9cuLr30Unbv3s1//a//lZ/+6Z/mTW96E+9617t4wxvewM6dO9m2bRuvfOUrOXbsGO9+97vp9Xr8wA/8AFdeeeW46mBmZobXve51zM/PMzU1xVVXXcUVV1zBDTfcwK5du/i5n/s5PvzhDxNC4Iorrhh/zn/5L/+FXbt28YpXvALnHG9605v40Ic+xIEDB7j88svHkYmtW7cyGAy44YYbOHjwIP/rf/0vnHN8//d/P7t37+bqq68ej4f3flzG2KHDM4GNVsYq1t1dj8Jj1Tt36PBM48y5+Hh/P5tYz7kICz3WZzzW+TzeZ5zrax7r2Od6Hh06PJPYCHOycwbOgjPLnWBjTIYOHTp06HB2nO82oEsTfAuc7xOgQ4cOHTp06JyBx4CqMhgM+MpXvkLTNOO/P5au+rfCpLLcWg/GrIdzbHFmeHqtY72lntbj+K6H84RubJ9OfLtj237XXq/Ha17zGqqqeipPb02icwYeAyLCqVOn+LM/+zN+9Ed/dDw5Whb0402wMw3/wYMH2blz51m12dcCJs+3aRqOHz/Orl27AMa69msVIQSOHj06Hl9YWwvrmXPh4Ycf5qKLLqIsy9MkhdciWuni7du3j0sS2/m/FnDmgn/8+HH6/T6zs7On/X2t4uTJk4gIW7ZsWXNjC6fP3cFgwOLiItu3bx8rT661851EXdecOHGCiy66aPy3JzoXzIw/+ZM/4aUvfWnnDGxktDfBtddey/d+7/eO1c+ezOJy7733jpnRLdaiUwDpJtq3bx/XXHMNsPZ3A6rKvffey/Oe97zTGuSsNbTjeM8997B79+6zyvGuRdx3331cccUVZ22QtNZw4MABNm/ezOzs7GnSyGsVR44cQUTYvn07sHbXBBFhcXGR+fl5LrvssvHf1vLYNk3DQw89xO7du5/UutBu/L785S+PHbXzvUdG5wycBe1EaJrmUfXNT1QJbbIb3NmIiWsNk41uzuxetxYxaVDXauRlEmc284G1Pb6TfQbW8nnC6ffm5DivVUyO6Vof3zMjF2vZ8YbT76knO7Zn9us439E5A2dBK3RSluVpE2k4GrGwsESIEROHiWCAM8Xx6JBZewNJ2ePw/EmcGd6BxYiT7AyYrB5nosb8zPa1Z3aHa4//WGWQj8dRmHwOTr+xm6bBOcfRo0fZsmUL/X7/qRvYpwFnG5+1jslrtZbP+WxthdcD2tRWGtt27q+98293m2vdEYDTncL1IAD17a4Lk42/1vq1earQOQNnwaS3bmYgSiSwtHKS3lSPbdObMYTWxj76ZjYmF5/NmwNlWeDFshOgGIYhKA5UwVaN8tm6uU06BpOf175ncic0ebO2j0MIlGV52jHOfG/7XIyRpmlYXl4eOwNr9YaY7NjXYi2d69kcsTNb9a6l8z0TbWh08p5YKzhbdK093zTGgCgg+W6UVd9gfIvKs+InTBqptTi28OjxbcfWe7/mjeTZoppP9HzbY6x1x+epQucMnANUQIE6BuZmZ/DWIBioAQa+AlkdymTm29XGEBvhNaZ1xxmIIzpPxBMRCiRFDbLsakvYa/O0rZFudxHj85roQ9++Psb4qNaykwao1Z2H1RB760C0mvAti3Y0Go2P0aHD+sTEQm45emdnzudufnfo0DkD5wAxj1iBxWmiTRGcR8Qg21yHndb+8cylJRQOKR1OkpuACc4cJUKJ8Pt/8Ifcccc32b9/P9dccw0ve9nL+Ht/7+89Kgc6ifb31nFod/2tYf/whz/MN77xDf7dv/t3zM/P80u/9Ev82q/9GldffXU6xxwZmHQMJvkC30pRrkOHtQ+hdchXQwKT6TwH3bzu0AHonIFzgiOCi5TFEMcUXnwy6qTNhok8erMxgcamAMEZoErhJacIUhTh7f/k7Rx55DC/8Ru/wS/8wi/woQ99iF/7tV/jkksu4Sd/8if59//+3zM7O8vS0hLXXXcdt912G69//evZvXs3v/mbv8mmTZuYnZ3lZ37mZ5iZmcE5x7Fjx3jooYfYu3cv3/zmN1laWmJxcZFvfOMbfPSjH0Uk9ZK///77OXDgAM9//vP5yle+wj/5J//ktNB75wh0WP/I9+r4f62D28UEOnRo0TkD5wAxwZuAehopWGoCX7tnHyMT1IGnoJyIDaRFJ+/oBVYapSoDPYtce8lOdm2ZoydCYQqmKIxTAHv37uUzn/kMb3rTm/jYxz7Gd3zHd7Bv3z5+6Zd+iU996lOcOnWKf/pP/yl/8Ad/wMUXX8zCwgK//Mu/zLvf/W7uuOMOXv7yl4/TAa961av47Gc/y6FDh3j+859PWZZs2bKFV7ziFXz+85/nk5/8JG9+85v52Mc+xqc+9Sl+8Rd/kaqqxm1n12rFQ4cO54oxTzdzfJTEn/He4wycSOcQdOhA5wycIwTMgXlAGNY1X/ji11imoBHB/AzBJobS0o6/hdcBU25E1QzZ8v3fxa4tc+k1mo4t4sY78KWlJfr9PnNzc7z97W9n9+7dbNq0iR07drBz5056vR4XXnjhOD2wdetWNm3axEUXXcTCwsKYNxBC4EUvehF//Md/zHXXXUeMkeFwyB/90R+xfft2tmzZwvHjx5menmZqaorl5WUuuOCCNS0w1KHDE8JqwQ4AQSCo8ODBo1x88U5mSs/GoIZ16PCt0TkD5wBzipmCayhpuLBX8P/89D8AE0QgioE7o0vbxOPRyCi9o3CZXyDJWVDvMEBDM3YGrr76ajZv3syDDz5Iv9/nuuuuO03wpSUDxhhRVe666y7e8573cNddd/GDP/iDp72mLEt+5Vd+henpaf7wD/9w3Cd+cXGRAwcOcOWVV/L5z3+e2dlZ3v72t/Onf/qn/PRP//RZ0wJ2RoVEIkbmhwJdwPXxcObYPYG3tZDT/2ATx+tG/vGQxkwRIrAwHPG7f/B+fvKn/inPvWQH5bN7cusabQR0PP8yPcPax3RRl/WEzhk4F1iRZrj2MSuR0hPNMEnTvcAoTlu5Tw+vqzR4X1KIIKaICQ6PaxcqcWzfvp1f/MVfZMeOHfzbf/tv2b9/P9PT01x00UX8wi/8Aps3b+YNb3gDzjlmZmZ4xzveweLiItdffz3f/d3fzQ//8A+zc+fOcXXAW97yFqanp5mbm8PMePvb386WLVu4+uqr2bdvH3Nzc0xPTxNj5OUvfzlTU1McPHiQsiwJIZzxXSKYJ2Y9BG9ttUQq28JcZ5HOinaMDPC5xiT9K+24UvDYzkJONU2UxMmkQ9CFuIF29BSxBohn3ImrHqvLPJ35pmSkLo2ldcSBs+FRFZhYTn0aZmnmNgY9DGc1ggcKsADiUHNn7o86rHF0zsA5QsSABodS4PEiE8uMtA+AdM9IW79s4HPlgEMQ8ROGFMDhvKPne1x66aUAbNu2jW3bto0/u5UA7fV6Yz2ASy+9lP3793P99dfz/Oc//1G7+Z07d06cu3DxxRePf3/Ri140fjwpKnPFFVegqqc5A2IKNKg42nZNLv/diOk3cd16+phYdQYSqb0NTLfOgIPHC1aPQ93tDqydN55o4De6LbNU+ptEv2qwkFxUI03NXEkgOEoBdY6VYhtOevSebMRmg+D0wFRes3J55tIocOvBeV522Q5mbYC5PjiPaINJQXCO81/N//xC5wycA0xATTBJimZJKqi9MSz/3Z11RyJAaQO8Fog4EA+SixHF5eXoiS1IbVngpZdeyiWXXPK0Mv7T7rNAsu/vzPLCayAFiuvyro+BFC7NfJAkL0VBjTPN+jceedzROzMVMFEiZ+Alp2o2eLWHAIqnlj5BylRQKI9+TVtNYGThLjpX4DExjv49mkQsGMdPLvLuP/kkV/3cP2Rqpoe4Kos8ZV2TZ/yEO3y76JyBc8TqLSFn/A7gCTIx/eX0h4ZLi5AISLsTzByAcb3TuW/xWv2BZ0Yzvt35C4UZQkQsYOIZ4qhFmGUsudDhNLQugOX0UIPXEVgDlCjFWBnvMZMEmSsgGCaKjWtYFafABlFHOxPj+08MhzHCMXA9ailzMiAb/TPeNI7mjctmn7lzXk9IKZREJra8aRlvb8yIBstaMTJH7XsEEaaAQjzg0npgtuEd1fWEzhk4B4glToBYu8i4FBvI9tujFNZwNi8aYCgF+F52BNJ7nAhiKVRslp0EO11T+0xD30oLn80RmHQQzvb75N9aHYGz9Tg4ezmhTJRLRgwj4Ln30DGCK7j+oi3dTf8YsGzRLedbW59R1XLG4PHHbTWQHXJIvMBM8GhyKqxM0aYNiMSlSNTABuGeh+fxVZ/tU8kgqTw6ajU2aN10PQcoOSmYuC5SkFwvJZijKaahrLj/yCkOzi/yuuuek9xbSeyMLj6wvtA5A+cAySkBRwQMJZFnJnhd+ElH4DSDKkQcJo6omXDo0sD7vMv+3Oe+yKFHjowbl1x11VW86EUvGksQxxjHhr9tJCQi43rp9JGnG/b777+fI0eO8MpXvhJV5cYbb+Q1r3kNt956K9dffz1btmwBOE2K+LH6k6smX0URUIc5zxDhxi/dzvGFhhf80zdQ+G51PRscafxwHjVhYJ6Ax4nDWctFeYyxE8YpBiyCOGpLrPgKoeR0QuFGwyqbPbKsjj//228Qg3HNtqvxcpalTbKCODwDEbXzAy3jIoqjMUdj4MWzEj3RlZgpX7x9D1+65R5ueN4/xudYaGENSO/ZPv0OTwCdM3BOSNlFwfAWcCaUMQKKuOQxB6lOf/kECl2gCgGTEnUF4HJ6IDkJuy7excpgxHvf+15+/ud/nuXlZT72sY9xzTXX8LznPY+bb76Z4XAIJDLhHXfcwStf+Up6vR533XUXCwsL7Nq1i+uuu27c6OjGG2/kE5/4BO9+97u59957+dVf/VV+93d/l+3bt+Oc45ZbbqFpGk6cOMF3fdd3MTc3B5wlMmCJJxCiED3U5llcGlLOTbEUjJW4kc3R40PMQA0nQm3CIAontWLkCnoCPgI+p4oewy7Z+P8Ro2BosDCMbCkzh2MDl2+1RYMQiVKyYD1ODCLeCYKiCI8a2qwB0ulpnQNEMEsMoQZhqYnUQE+EWoW21dpQHStaUQcoSw8oRd44dSGY9YMujnMOiOII4lEcYgGpT+KGh3Cjh5HBA7jlPRSDhyZ+HqRYaX8eoFrZAyv3I4P9FM1JCh2lTLIIUHLllVfz4he/mO3bt3PxxRfz8Y9/nOnpad73vvfx0EMP8Z//83/m8OHDfOxjH+MP//APWVlZ4T3veQ+HDh3iP/yH/4CZ8Z73vIe9e/eOlQydczz/+c/nq1/9Kl/+8pd51ateBcBf/MVfcOTIEX7/93+fW2+9lT179vDRj370Mb97asikCGlB+OpdD/LO932QhRBoxBM0px/O8l6b+Nm4UDCjMfjs1+/ib750K0Npl8nwmCSt02Btl0tYHCn/4/c/yr6jJ1Ep2OiLrQigETVjSI9GCtoxP31ULaflxhVyE888+mejT9w2ImDiCMCxUyt85OOfZrlWAsIoKGJKYUodjWEURk2q5AhA522tP3SRgXOAAiqSjXckLBzjlhv/At8s4Jpl+i4gWo9fb5NMJVLRgVazrPjN7H71D7D56pcAVSKXSSLotAb8oYce4tZbb6UoCmKMLC8vs2vXLl7/+tejqkxNTXHDDTfw1a9+FTPjuuuu4/Wvfz3Hjx/ngQceYPfu3UAKg77mNa/hk5/8JFu2bOGSSy4Z/11EqKqKN77xjZw4cYJPfOITjyk9bALicytPMw6eXOa+4xFv4JxnRIm2PIUz35v/3dDmShV8yl0fOLbEgVOpEyRtFcDjbZ4se+viwFK+VhD2Hh9QZwdh40a62+ZgAq7CaebQ+BKVEieeEkUyidNZBAKNCdFlqaE2JW4QJy6FP70saINO4MSGEoMGOFE79h0fEDSlSUcxgCTNlKDGyAl1oxR5LBM5ZkMO3LpF5wycA4S2th7AUcxu5gWvewNQIzSIKrgzSFyTxnW4CFUf9XP0Nl1My7132WmwiX7mO3bs4LnPfS4/9VM/xWg04uKLLx5zBJxzeO8py3JcXrh371727t3L3XffzfOf//zTSINbtmzhRS96EVdffTU333zzmEDYkhSLohgTEtv3PdopEHCJCtTDiEWfpWo7swiFwMAK1DbwmvktIL5ARagQ1BwjN50cKcCcH1cTnPW9tHUGHhOPCPQsMvBzmBSkjtMbcweWxqYt7e1RYlQWaGKklpICoRdHBO8JlPSsARuwotMMzGPtpLVcOszqHB7f6xt8QqsmbYHl6Hh4aMzbDCcWltg6vYVhGKEopo46BIZiNGqUJrmSwG/48Vtv6JyBc4C3dFM4IiYFVFvpX7iJVm0LVxHdY0lsGKycoPCA66O+R3RF2uNldn4IkX6/zyte8Qquvvpq3vSmN/GBD3yA7du385a3vIVXv/rV9Ho9Lr/8cvr9PlVV8R3f8R0455ibm+PjH/84L37xi8c9CNoUwQUXXMANN9yAc47BYMC2bdt48YtfzJYtW3jlK1/J9PQ0IQRe8IIXnLV6YeIbTDxOPOH2CY2KmwjBjqsZ6OSKJ1nrqQRbnmTVxZnv2Yhj+RgQAWv5PBGP4lHEPBO1A4BDXY/gBOdWp2Qr5lRY65blVIKsHn+jjraIEU34my/cxnv/7gEWlyJ7HjnCFTu3YDGMI6AhRIIqQeM44tWpY64/dM7AOWDM5iaVdkXXI+QYriH4XGzYTv7Ts5XC0G8i9ipCbkxUAIWAt4hYpPCe2dlZ3va2tyEivPa1r+V1r3sdqopzjre97W0AvPKVrxwb2x//8R9nz549POc5z+Ff/at/dVrZIMANN9wArJYjvvGNb6RpGi699FKcc/zYj/0Yzjk2b97MJZdcclpJ4rdC+qz0OIaG1YbMbvzdZTIxu5HlitsdpoC4jUz3e+ph4sYROMn3oDfN92IrEJZG3FzByApqAmYBQ1NpZw51OyV5AC45CJZDA48XuTm/ke7pBs+9B4/w8FCQco5HFgKKoRpWZYljRNVogo6pFh0Zbf2hcwbOAZbTAzGbfQGck3HKMf21OdubIEcAhOQAJJGUdplxmS+QcsqTZX7k3x+rlbCIcNVVV/Ev/+W/HJcgnhnqV1WKohg/VxTF+Ln22MBp721/vpWqYVRDswOyStYyzATTVE8vrYqZbOSloa1BTY6aiWQy4JNzC9odrW5IA7UKyyVsrdlxgDPFstOeNq1ZJtuMBuHzt93HntBLjcI09TAwi3g8WL5vomG+5WNs3Ly3AGoGTtDeDIsExALHVxpCGrh8DYQQFbW03qRoCxOhlQ7rBZ0zcA5QcWnii8NUEY2UAoxzlgWB/mnvkfFNYThdpIr5/Zb6EyTxjlRNkJyL9L5WNyAdQ0779/TjC71ej16v95ivP9djne35NtIAjJfdiVcTo6E2eTwhIsQssuPUKJycdowNiYnx9s6RfKccjH5Sg5Kz5RuTKnAGTh/ARCAsaEzwIhTmxy7XUlA+9sVvsjS3bTUyQFswLFjy1xAnSVejzTJs3ImLuFStkgjUHueMwbBun037HYEQNI1hy8Mgp8M27NitT3TOwDkh1yv7guFwiJOKwiXzl5yBdvVYRbtWmxkSG7RRxDk0ghRVlvj0E+vNs7e6n6ly2DQNdV2PIwln5REYbc+SvNt1yRmQFDEoRVAb7806ZLRlmK3z94TsjbWVKrZa/sYTOcD5jahGFEeUgkEA7wrEAg7HyIyjI4dsqmh7iqTQgKAiBAfBUreIQjyEJrURgY07vuZAUhq00AYnMZGlgRiTU6tGThuA5p4bCRt10NYvOmfgHCAYhQib52ZZOHWKkwt1zgK0neSWs5Lc5HvSM6rKyROn2LJlC87l/CXLtO9uQ23PNtrUQAiB5eVlNm/ezObNmx/lCKS0QPpXc6jQslsUgYePnuKrN3+DH/2h1+WdsK2Bb/ftoE2APDbj/5whSQEvdbVkQrp9sq3V43+GjR2CJ/LB5x/SfXTGIDhPE42Hjy5w08338GPfcz2bp5M7qsBy9PTwYIpZKjtEk5jWUlA+/YWvcvnFO3jp7ivxVqSLdb4qa9pZxi+HACe/sQMKi1RW400RDTgganIEglpKGaoR2jRBjgy0Dus4siipSmP8+Bn4mh3OHZ0zcA5wAmZKWfjUWtidLhXzeOZcDeYXBmy+YEcq5aPtBgaT7LJnc22fNPjD4ZCVlZWxUmHeiKbaYcCpohIZ4BhZiZCUEWM2bA8eOsWNtz7Im37gteBkndfB2yr3Qzjtyp2rC5cMvmIoNUYtnhjBOc15pLRCple4Mas95qV68gY1JEcWUij73M/ifER7bVI0wICY2uaxZ98hPvTZr/I9r3kem6amkwXCGDaRniWWT8xdRp1LI73cBD7ypXt5w8sdL7/yMgRBvRvfoecrIhGvHnNgWV3VxAMBo6CtvXRmVKIE9TggmEMwFE1N2rSkQVCLYI5BLkeuomZSpmAmOCPP942tnrkW0TkD5wQZs/ThHDZlOYzbmnnRQOlddioAcclIjg/07BrNMwmKrabB6nOOKIaY4GPECKwYjKzEUacGTpL6xQ+lYN5fgJPzpVHJqvnXid9axkf73GNDEGpEjKEZI1cQA+BrkBK0AB8xS3LDhkMs57AlThij9ImJtJm5GRuamJnurTQbszAYSiUwisZJP0ctDodDUbwZsWlABdWCOL4Ha4os7HxSdjBgGmcrBN8niqd3PlsrheiyMyCgEnDmM6k5OQOJC+gwKSg9DLTEAxHBqxFRavFYKKiDohKQUPDg/Ck2TU9xSa8PIRDLIjlfOTKg0jY/P58HeH1hY68mTxLyLX7gXKZ4S7JZD/GynMzIERIsImoQFfeo5kZZqfG8kSPNV9VWG097DNeSJs7Utn2c4yTGtY1rsdVJ2pEheFFK6uRymFGglNacJWaUP+98Gd6nAGemUSIQpN3Vp7nrIKcHGAcVnIFohcsGzmGoGHglOkPX/H357WPSALQVTgGh3Se2RcMAvapKgmWAaU4RWps6NFRjGm0n/Nlf/jVf++a9KfjlPG1Ckdx4y3HmutHh2UbnDHR4fAg5zBoRLFdTaCobDElY6PxdM7Ozlh2CtFRaLpnU3NL68a1yrtHALHUtNM1FceIZ4hgJDHGEvPgqgjrAwmMmAca9IDayQzDx3Vtjn3gYQjBoJpQ/2iBcqohLY9deOZWSkNVDU39Rzektd3on0vMRkrutSkoDSi51HgLR0k4+qtE0yXD3er1xZ1PL/6ql+8FU0ahAilot18aIikYZV9SM57K1LaQ6rCV0zkCHx8c4Tq1jzx4EVcNUUn325MstSR2bnFMLnjUPy5GOFMBZzVOrGmr6mMTCiQOA5TbWlrpVWjQaFe47vMB988t88f5D3Hz3AUZa8chKzZ0HjhIV1CrUTq9S0fH4P13feB3BHEl9cDUlZxjBoMZz377jBEtubO4xippLVT2qBBH2LQ+46/BJajPMIqUIaEkRobQJzsh5htXkl4EYkeQMrNSRWx86yFDTPIuxdQZSP5NWW0TNMEnzUHWVCm0iBBFqKwi+PK3nw+oHn59jut7ROQMdviXaG7kNGao4ahxBCmplNXRIfnxeirWM95bZQfBEyomKkMd4lxkmEKLQKMSQ+AG1CH9y45d5119+iXd97FZ+/6++zIlB4JYDx/i9j36BmpJwBjMB0o7svMrCPGm0u00ZR6eSM6BEM5ZGkT+/8avMLw8ZGDQGQQqCeRCPqtIAH735dn7rzz7JySZgSOYY9MDcWCzsfEWrg2KWOg2aCvsOzvO/PvQ3LNVxbLJDkk6lqqpxZMXGTqmmlIEqURUzRzSozWHOIX7SWWsxqdfaYa2gcwY6fGtoDpCboCYE8azUkRPDSOM855/hPxvaQixHMGGgxoDcrvXx30ZUw3JXN4dgMe3DHlkY8sig4ZSf4URd0JjxyJKwLL0sXc1ZhdzaDevZG0dvPEwaGzNQ55Gqz6mRsoIwNOHEMKKuSokAtbE6Zk3FqcYnEaeioBFh0YQVMj/mfEXesZM2/fkfR22OE9GxNEpzy0xpmiQ01Ov10Ng6o6kigLEjplmBMKdp9HQhjXFHE0mOtHamZ82huyIdvjUMci8yGoNIwZdvvZ/79h+iFrchlEfT0pjCzQG48XM38+kv3k78Vm90afe6MgrsO3CMGNI7IkLjShpXMKIESsSEE4sjVuoaLEC01brsifMYV3+cB3kYO+3HVj2dc8IkWyAdRFxqqRtwxHKKxju+fs8D/NZ7P8LxxRHRJInjmFEaUIPWjiQ46KlF+Ksv3c5nv/kA5vx5O7db3kSb5msNezBYGAYWBzVgmEbqukYwqsqjuRmRqqZ/x3eGoTGiksqM8zRPV+YMkm36vPMxeri+sSFKC1tp3Ztuuom77rqLSy65hO/93u/l4MGDfPrTn+bqq6/mO7/zO8dhsMn3qOq31Ok/l89vmw6tB0y2NG53EN6MBiPgCQj7jpxiJRPqmVi/U677mVPIa8e2ffztXKezQdqwqKQeE470ne8+vEhZxbEk61nPjVUnQkNkcWUZEc8ywoxAVRT4keHMsSIeFeHkwgqBklodM1nwppWuVhi3izZdTVk8nUtqO/+fjrFtYxtpV9qG+7N5yVyJx/3I8fxqSzAdIaQ56MURJLmwBx85wS0PnUSndiGuRE1wlrqQVt6hUuZ3K4MmcPDhI1xx6Q4ahN7TOLqTa036rs+ccRQzPAoutUNPoubGUjQiMwxCSEJiQRiIUrBM2RNW1DNUIChmQq2CV6hcEiAaKQxMIeZGRmJgNaKKuaIVNaSw3NnlafrO3+66cC4N2843bBhnIMbI9u3b+c7v/E7+9E//lKmpKT7ykY/w5je/mU984hNs3ryZ66+/HpfJRa0aXyvJ+0Qnx+QEbNX9Jo+x1ibb5PmeuUgpitdUcjWy5NWPYsUQo5QCl9uVRlUaVXA57CpgwZDi7M2WnqrzLsvyNGfrqf2sdKxgSZbVNOLEs+jnmK2mxzufx/rEYIp3UDpH1eux0hiLZszWDahRmcOpMir71MCJpRWiVAzxqb2u0RZlJXqcJZKcmubvaU9busDMxk2sJv/2FH4CQO4xODHnTDBnky953EOI0yTSpA6jYHHoIChR0tgW5QzL1VYMTwy52VhUsECIgeg9NVBIugdWhhC0aL/w0xZ8ObMp2DO7JhhiSnQF3qCydJ+PVKibHstBWagDFoW6LCltGacFCwYDUmmtSyojeHP0SqFWWGyU+WGDRqWpNUd7RggFCgSBCsVbDdJ72rgv3+660NqMtbZOP53YEM6ASCK67Ny5kw984AMcOXIE7z39fp9XvepVLCwscMcdd3D99dejqjz88MN85CMf4dSpU5w6dYoHHnjgCX9me4OrKkePHn1U06C1Nsna863rmlOnTo2dIl/4VJMdAwNvnDi5TAiBlcEQzBgORzz4wD7KsgCUI0eOsbS0wgMP7GPagzcdhxKfrvM+cuQI8PTsrCSzphspKK3BORiocGphGYvKnvsfoP94NdPigRFLTY+lwYhB7fnybfdw5IG7Obo4i/clg+EQryP27d3P0cOHGTXK/n0HGLACkvKwhhCk5OjiiNFgyKFDj/CAn8dZ2z3u6cHhw4eJMVKWJTHGp3iMlaRGlyIfzkj6DaSQvYnkxMzZ4SiJ0eGLIadcj0EduOehExw4chREGAxG7N1/kINHjhMpiDEwWF4ihoaDR45zX7XCiYUBK8MRDx+cZzAYcHR+iWPzJ9m+ZZb7H9hLpc1jfv63i8XFRUSEhYWFcavxZwqtiHgjPbyma+CI7Nu/gonj7756JzceP8QPv/rlnFwcUViJjIbse+hhPvOVuzl68hShqXnk8AkWl1ZoTHhkfok/+sjnqYsZlkbGieML3P/AQTaPjlMWJSvSpxFHaTWFNcQckXk6EGNkfn7+24rsmhkrKytrbq1+urAhnIHWO5ydneX7vu/7mJ+f58EHHwRWO/tNTpjt27fz1re+lUOHDvHxj3+cSy+99EmFmVqj3zQNF1100fizJtsHrxW05zsajRARdu7cuZomMCgwBhLYNFfjiyK1Ri4KisJzySU7KYoCwbjgqNLrHWbnzouY6xUpovA0rnExppzmJZdcgllqE/xULqqrzoCjsIDGSC0FVe8Is7OzXPacS+k9jrOTugvWzK8IRdXHGoefmuLA8SVs9mLKosCFSKElOy66iLK4F9PAzh0XsKu/ZaxLZQhRCqr5ZQrvuGD7dnZdPEshT99caufurl27xm21J53ap+ATgKRZEZ3gtCCKoAKVJgGgx80SaCptc1IzZUJvaoqFuuHEygriNlGWnot2XcTWow0q86mToVPUCXPbt7HjOTvo3b1Ir7fAJRdupigLZuam8VWf2ZkpLr3kYnpPozjO0aNHERG2bduWHG/vn8F1ISWegqR7NElcRzadOEww4fDCgCPzS/wfl2zHV7N4W2HHdEmoA1Y6ejMVhXds3jzDzOwsbskoZ2c5eP+DxNlZYjHNppk5du68kC26BTHFyj7B5WbwFjGePvJxXdeYGZdccsl4/X+i60LTNPT7qRvt05MmW1vYEM5Au8u95ZZbmJubw8yYnp5mOBzyhS98ga985Sv8g3/wD8bGu9/v0+/3iTGO2wQ/2YlgZhRFwfT0NMBpUr9rFVVVMTU1NTauBkgMSFGNC+m892iMCAW9Xo+qTDe2E8E7R9Wr6PeKrEX+9J1re6NPnu9Ti2ToPYInh8w1LSxFUdCrqseVrG0rEKpoiC9Tn0vvsaJCi2RqnAdMcOKJllpDV1VBr1clXXfLDG48pfdUpcc5T39q+mm/gdsIWlEU47D2U4XEDUhy3eoFZwUngxI0Ml1UUHzrrpdqQDCmJPUbGOLQssRi4ngURQlVH/MFGgYUXhk5YSAFiyZI1UtjWTh8URAQhlEpK0+/V1I9Zd/20aiqdPTW4DyzxialmDwOn+/RGGOSJXYlQ0qW3RRFVWKuwiiYK9P1H5ggXsAivdIRMVzVwwpPKCqCn6ahhytKoghWTtErHDiSjgOWFQifvnWwXWf7/f6TXhfKshw7v+e7IwAbxBloQ0VHjhzhq1/9Ki95yUu44YYbeOELX8hNN93Ed3/3d3PdddeN8/pnToAnugieLazUTs5ngyz0rXC2nHB782j2iMU5oJXfhRBidp7a7yL59aneeJLWJqm26GnB5LVpz/kpHds2DJ+sMSJpPjVNs1p6Jmcn8bXGDlKvgWgpHNsK4CCp2YuZERWaGBg2ilpBbRBwpGotyS1jkviRqSYFuDOV3Z5itLuhSQf2qRzbCIk02DLaDW66/X7ufuA+/u+3/D0Mw8nZ3YH29YjhnAeFBkGKgmFbyBabJDFsRjSYKjyhHhKd5+9uP8CXbvoisuNKYkhti0yNxqCOqYTW5Xn7dIzv5Dowuc48YzitSiXPUTNCiARzDIPDXD83JUrS2aWkKNlAfb4vNEkQC/iyoFYhugJ1nhqhFsd7P3gjb3zNC3nxlZeuSj6TtEqezkZFT+W6sJbW6qcTG8IZEBGKouD7v//7KYpinJ+79tprufrqq8cTpw3VbYSQ0BNGW71lSX0vxvCokjeBMYP3/EYil57LHJnQZku/ayQ0OpY1dq6t3oBRiNTmCVakrpAiNJaiEmWqKcwtkG21DC8Vbz+dX/ZpQ2vQxSQr4MHhxZq98wtZLvhbfC9J49Hu+Uw8tXPU2Tn1mnpnaIip3W5sQJTahL0nhgwOHOHabZfjfA5Xi6PBUUewmNX51unYfkvkeWO57EdMcOIIUWlMGI4Ur44yGkYgFkZZGSbGYOTpBz2tsrUsCuoGYjRibDCMpSjsO7HMQgg0TvDS1o48Wkyrw7OPDeEMQKuMJ+N/W4fAez8ONbflKE9tXnRtY2zQLW97H9PA5Z0/hpkSQjytfrh9+7ich0fvPNYnHn3eZhBCoN3xPx4mxyHtghVtIs4Ub4HC+bHOex2UUUxh2qOnltnzzQPUMXLVZTvZ/ZwdeFutKhgfdR0PbWsasBQtccBiA1pN50x9cqLa8kyx9l35OVk9UFt1Mb+wSKOp9NKZUghEjfSrEldDXTfUOJapCG6KUXBZVCc5WI0JdUwO70ZD0mhQVI1REygiiVxoAfVQVGn0RyPPVITWXUqpUM9oaDR1RIsBURsGwDIlAxGCwGpHiG9dJNLhmceGcAZE5LQd/2T488wc/uTzGwUKOGtAiqTQFmtMG9SVOCJiPjPaHWYRNc/IlBdfPkNYCgSgR2olW6ugIowUGlLneFi/zlVrdp2t7mWSQyQ4a5KBepyp4lKwm4DitQaUYRRqqfAWqWJITG5VQgygMHIVew4d5wN/9lmGxSz/+AdfxHWXbqdECBgRQaJMlBSuz7laWJJqtkIoAXUQzTMMPVwmmqXZWYyjK9I6oJL6PKR8t0dFKeOIpcVAoMITUY3UBl6V7792M43OcfsjNX0/wtQYaEFhijUjGgOLkRCNUWDsYKzTof2WaP0qD2CKCTTiiBYpdcBS3MomKVl2KU0wpZFe5VBxmAZidkybCGYFcwxYCLCgBb2mgRhogrEcHY1KbvpkxBzH8RbhvJQtX79Y20y2pwiTRr/913s//n3y+aeajb7Wsbo7Cyl3LYk01kRlqErQ5M2nNkWtM+CoVbnu0rlxANznjm9RU1Y8WKr9Ti7BOt4HiBBFWskfIEUGTASJ8XGXMiFHAxCCGd6SKR+qMHI9sIgnpv7xZmhUnCkBz7IKx5nhiGyndhUlEW8Qc84VFQzFZP2OrUNxEokOirzRb5oIMo0TpZA05jlDkjARjRIEyV3xogiVNogKJn0cRjCjBogNz9tivOCSCwixwDU1XhVchWid52uuHIlGEx0uUxfPX1OVvp2Y5rltNIBqxNuAZS2IzrMkKY0z3dT0S5fXgSYRYcVo1FD1zLqG+do4OnQMG0UoiNEI6pLIUL5/4phAGFjHU/e8xMaxeh3OitUFbzVFMAyOv/q7r/PAsQXUFUwuia3wTUqteECT129NcgjiiMJqCsta5PYtBXvXPLIU0/h3JancnUve88xXqCpNNNSEqIK6aswBiJZ2w0sLCyysDDFXIGZUPjXXCa61hYrlnvDrfUE98/RT+iU9Y1agVKnSon2xtB0x038iaVebSGkQxaG5PDGaJq6ASnb+hSaE1HETA1/QaGq5iyU53Rhzw52znNt5CREQn/sFCE1OE4RQYzFQCLgwZNob0z6luYLlnhxZ1tkAX/S45/79HFsccPD4AotDJQQjhBxFaz9u7NSdv27WekXnDHTIBms1ZLdUN/zpjV/mprv3EeUMydBMYIsxKfG1PLZ2x6ZqmDmCOAICUp1HZKHkMClJf/3x4wKPhkGuGjCiJXJg9P3xrrcx2Dw7RVV6TtaBxhwWa3ouSUAPRIgITiMmp1dsnA8wIMQ4DgNEhLrtcGerLXINl3pnEUHSWCRHIKWoFEDaypZUqeG8TznxGFBT1Cyx3tXlkLcRNSYCnComZ7qA5yFaEqGkZF4j0GgidYYQcd4hGtnc87z5Da9mrvDJGQDqJMy96gxUPQ48cpzl4Di6WLMwMupohAAacvzQ2lXm/I65rFd0zkCHNAkkMaq9CQ2eU24LB1eEUZysQWp3ZKkm2XuPkXZhSEmgYGCeJXo8ND/kjkcWOTpY58upcdru2ywtlo1CNJdTLHZ2+dIx4W2CSilCExx1dNTBc2xxRB0Slz6YUYoyN93nyIIjUmCWWsQeXhxw56FT1DG1eGk0IOfh7io0DeJSiH6pCTx4ZJE6l1LmWABR2hFVTNLfg2ZHwQwv4CximdUeYkBcykPEzHRN5YbCwiASJbMTVMe9NVIZ6HmMPGfNEnH1yMkVji0MGTQBnCPGQAxKSYoIXHf5hVRiiMBCIxxeShE/zVEUX1aoeCIe8z2i63H85IhBo6SSGcFCQI0cmTn/5u56R+cMbHSM7VRWR0RRYMXP8ZmvPEA9SnKsuVx+HAWIMeKLJEgUESyTD1fUc3jg+O9//En+P//pg3zq1n3rfFE9rR4ASGHlqGmXnnb7uirQ9CiNCUthfbNk5Jxn1CjH5hc4Mr/IngNHOHny1FhroBTFYs2XvrGfBp/0HdTzN1/8Jv/59z/GsVMjDE+diYlyHt3CQkoTtGN45579/NYf/Q0Lo5iezOWslr91W/pnIkQFSN0HXWi4+uILKXPb3BhjLh9M0YLkPEROLQ/Zs+8Rmlw5IGLEuBrBOe9VaLNjq97xic9+kb/53O2MYsroN01IkS8DH2umXOJnmHPcdOs9fPH2h9J7czqwFaVqDxwNvn7HvcwvLNOoy/M/3TtKyjB0WFs4f1aSDk8KKa9PrhYArwEsMpQejfQQi4CNMwXG6g648ClUmBbmdHePglK7PocWI0vFFo6N3Lp2BsZ6SuNKvsyiVsvtcG1sNR5dhdK+qTU2DsQxagLBhCZCdL1EZAWaqBQWme73WAmC+QoVGNWBhVjwSO0YqKB4GpIwzvkWx1bVcXnqyBzHgmc55gJDtzq246qCyVa4anhVZhx87yufx/ZNfRQj5CgWwpgTEEJAipLlOqAuKT+muZ17QWyASLaagqS2xSNzrASojSyJmeZZqjQyvBleUurqVG0saa7wyJuDXlng8ju8BZyDlQhUfQKGuVVeh+a15rwf4HWGzhlY5zBO37ue+Ze2Dnj8kwmAiRK/ysvWMY1Qca6gsaQX5iQdyyaOrplk5J3DYXhTsBqPoqFOLO9yiqGV1ObPj5DgOIecx0KE5WHNQwceGY9JjCl0ajahBCCkfHeOHIjzREv13MGMKB6Xy16jJb14L4b6ithGIUxYqI1RMUWDS+RDWgLjOh9bm3BIM1rfa6DCQCrUtTnn1dbY6T0CeMzaLLTg1Chjw4xEXGyIlp2BIhFho6VKlyYEVATxZQ5bpwhCiDr+/Mk5f8Ypr32CYcvjae95Vsm/k+qHIas21Qq1JYGsJgTEO1RS91EBChHE0utHeBpfpcqCvI5UVZnWDgs4AhCxsqQmHTuaMRiN2HfwSCrjFFn3U/d8Q+cMnAdoF8h0YypYxDRilnZZqbxqGVigsSz8oasGS8XSTWyRKAUBqCTi4yhFAXSFFYNRzL3ic6vTyslYSY/cgcxCwGtNKPsoAe/aYPr6RM6OTJCesg5FGPGpb+zhnX/2GQZq1M5h3kEc0BAZGpg1ECKiBaUJhQpmnlEw6mCYBYgNYg2xTHK4JiVTlSAsYwjeG8sSGEVhpmkYBCgc9OMQk7iuSwvBkTo+AJmYFlRwZkQVFmqfStNiRByY8wiWytRMgBLT1O2wp8bQeWpXUvkAbpRjViBhROWSfG7EEyiJIdIEAfN4Ui57ZEVycuMQi3UuhsvljdnotT/KOnAIFNBUUTEwozYFXQJtGAEBQZzgDVasx4qWiDZUZZUIhDQpqheNwhmb5qa54bLNTIVhSs3gKDWk8SgLHENm1FEyReOVaBGxiCg48dxz8CS//r5PcXRh5bQoT4e1gc4ZOA9w1shAu/MX4VSjpEbCQxoSaQi19iWZBFdDdgZqPIU1eIsE85gGTkVlBJnCZQTzVD5p62OgksmEGilpaPCJ3BVHz8aQPIWQ5AiIjB+bJefplPZ4eFShzo1L2tDAMCrzdcBQzBnmJQkVOTDvGQYQXyBqlAZeFPWJKKjqKSVSuBrLRMUFVzJfC1YHFprISoj0SCHX9c0hTOMqmpxYBUK0ZMCA5VqI0UAjgqCSlitngSwwkJQvzfAKNWBFCc0inhFCqnaR2FC5lv7qUUpiE0E8ThzeQmLT45NOhjWYhTMMfnunZNaCrZN4lyWCX9JRMtCGiHGisaT6KOAxGlcwsiJJOOMRHF5CGt9gOCIzUyWvfe7FzEo7IoIzTetJWSDS0DOPc30al8o+vaSNh2CMXJ/9oxmWRs263iCcr+icgfMAZy5KZoBzKMbCcsPvffCLHF+MCFPj3vFtc51cIJSMXe5QaNGQ3OO8jp6R9vngJ27l63fvJYhLxCIBn5vItHl0BExjzucCuLS4nxeQcSmfwVhCuE0fjEumpOKbDx3mf3/4CyyHpJU/dMpAjFAoeGM4GuLM4c2na+Ac4nLIVYSyLMeMzSgz3HTbQb50zyFOuCk+fcdhTjTCUF361PXtDTwq0RE0jrUERnVNHOsCPNb7E5/FBLyA1xFb+8KO6RLRQBNTuWJRZoKbpAhBCIG2+VSbfjCEEBUTn5pEnflhbQguub1MzPw1B4PkfEqamwWCNwfS4+Cpmvd8+HOMRk2mDae0X1MHokJRlEl+oE0iCoh34BxFWdBEQzKvYJRdrKmiwsxjXvDOVlM5ZyCEyKgJXYpgDaJzBs4btIuS0DbHieaYX1zhq/ftYymAWpWeb3eUkzekywqDAhpTZCFYwZI6loLjC7fez95DR6nVo9n0eZc+NYiknYe1zkCuFRefWd7nHzRXCCQVN3B58TNXsueRk3z9voMsBkfAgbRcAKVw0NSjdA1ciqYkJUyXOQOJmd1yOaKW7D94ghOjyKJ4vnbffkbOo5rKQNf7mmqszsU2b99GYUajlKZaJWk+2vAKqZNe4wSLSiWRH/6el/PiKy6iLIQ6Jl0HX5RJaTRHspqY5XAzp6Pl1oRoRClpJLebPvNss2Jf+7NmIakrZJp+RgV4FUwLHllu+Or9+9HYpO+ghppSx0BQKEo/9pPaWIiI0ETDFSWIw9TAhJWs6zBTeIwiOwOK2JlSw5IpDCnSc7bOrh2eXXTOwHmC8Z5V0n7fLNX/1wZLlNSuQKRcrZl3xqTOWuowniIDGgNmkcb3OToILCPU5SyhKHO4UcadIBVhUeFkHRhq24UuhQbJKnvn223fcjHEOVxRkWlsya6I45HFIaNyhpEJlTmqRuhF6AXo4RmuDFBf0DiPOYeTidbEGK7Np5rhSTtesfS5MzN9xCIepVj7WevHxfjMZfX3mHPcZskx0FSYPlHWMQFJmgArCseGAXwfJ5GLt02zpXCpeU6EUdOqZRretcQ1N3aaAWJOmwUTghTU4lkc1dRZIKqtpwfGCpxr2Z4lLhC0Y+Y1P/IFKyosUSWRpjaNYJ5RjCiGL3K8QAoaI0sQC95nCUyNlCJoVI4NAsEiU04SH0MMJwFnKXIgyHic1LLse9aD6LC20DkD5wHae7715slyrEYSshk6T2OJDVxCNvmrUc/2tlXAxAj1AHHC8WHgPX9+Ew8cOoVUMwRzxNhS6RI7PiB87vYH+V8f/AyDoAxGpJ2WJpLXeXnPW+6CieB9CWTTYkpQWBhFBupQB0RSK1h1VJQU4jl5apFgKccdSfoDIHnMbNwbI8ntBjwBb4FKI5uqCq8RjQHNojHrFtIarIREZdHxjjTa6Vn7MxHNaMTzzQcP8j8+8BlOLKceGpUXegKIoxHBlxXOOyzG09I7q86IoJqdEYORCvseWeB/f+CvaTQTG3EpcobLEYV10GTHVh+Ys3FWSXO6IOKS44NjpI6RpnLVohCcGA0Few4cZ3HQgKSKF4dROqPnFGeOj33xLoahoYeilKhPktqrMavV6oXVoZcN1QhuvaBzBs43WBsjSOmAJkYaLBOxEmEthVbbnU5iY0/mnkMzIhAYes9dh47yyPF5fFGmaENM6m6OxBkI4vnGg4e45aFHWDGIrkxiJDk/cD62gjUy8x8Qlxp/uhxbEQfDOkBRohFGDhYNlgWG+PT3rLjincsORdLNTyFyoyzTLhaEIEYQTQ5bgJIScRUjHAP3rVsorwdMTj+dKMsM8fH7WqgII4EHjhzni3c/zGKoCFKkklcTVAqCGnUTcM6f5gy00a3WYsaQrmsTFfM9jpxa5u779zEyI5AaITWWGPjRHCapVHGt0ghbPlDr8SdHP4UHRA2njhphZFAj1HjqKEQTyiKlCWrx7D10DHUVEYdzgiPireb6667isksv5KGj84yahr4TjBLzpAoik9PSL2DEEHPZrbD+E1znHzZEC+MNiXQv0sSIWkw8ANUkfONazQHGRB/LpMCUT22IknZdKyH3mndQ1yH3jU9v8k5YHhn3Hw2on2YEDIOmxi+qqQtcdgbGtc200Yv0v/WzJJzu1GjetYovwATJ7XbNUlveGCPDwYgPf+0O+pu2sNwoC97RmMfE4TVCk8ouvU+cgRRtUIoi1c4jRnBCbQ4osWiExhHpsaAlf/fNB/ju3Zeyud97NgbkKYbkyIDhMqflTGdATnuUeCp37DnMA0drRr3N1FpSUScirIG5gn0HTlCHmNMEUDjB4/IuVcb58ERVcARN0sajAFr0Uv8I4IG9DzNdVlx+yY5EHUBY06Xylts7m4BLtURGciq9Kl6NYYj83dfuIOIYREdjSmNQ+tRpsKHi0PFBUmh0hgWl5x1OA5unCuaXFC17KMZUlaMlzqVCjwmOQHvntDoc6fKt2ZHbsOicgXWOlgOQcoTSUgfx5ogktTui0QTAJ5Pl1ecFV8dVBxJdVhsThlqxiGcqKqUrGEhBzzU0TUmtjuD74EqmCuHUUDm8/xTP2yyp1lt7RJdK6QoJECNoZMl5ZsMAXJG0z83nHuftF1mji8PYY2oNUxJiieowSTulFFpJnd8KDIInmmPv/ALv+qubWbI+W2b7zO24hJ6LqZGT8xQWcFbTEyhlioCC1JS9Hip9Lt/i2H7BZr5x/woqJV5GNBqY9g2HTgz568/ewjX/Ygubd65PZyANbcvIT9e/VqFvRjCIdQQNSRtDk8aAOcXwaDCGKL/zkb/j60eM2pUUbkBPRyCeRmBQK/cePIohFE4oCWwvRmzZtYt79h5JSnkWUfMMLLXzjZpkc00cS66f0g4Gn/jaPUxPTfF/7trBlJFKRmWNO7PZ6BpGYTUNOcVEYOgalkY1//kjX0asx2VXXE0TlREVc84wrTm1vMxX7gm8/MoL6FUe3wghNDgvvOjikq+cAkJFL1Z4D4UMcaEgyjRmDY4UoalDSi/UJqgGwvkXLDwv0KUJzhu0OVADYtvrjaYJmCpNBHNCdO0i3LIEwIh5t5N2EyMriUVFFSLOHCMpCGFIUCOKw6RCnGOmcKhzNK7CiVAqNCoEIROJEhNcgSUDLGDa0NaUJ6ztFserUkOaHIIccVFL20JpaZhCq4QPJPW2gQkLtpklt40Rc5k7EFOrWHGIREQClSgxwCAq0LB1rocz4eJNnlftvohCHOY8ilKHIT2pCSosyWbiur+Fc1KgbR6Ui10V0BCTgaYNLRuRmOZY3rHPR8+im0JwFDaktIZUkplSVMEcqFKKUGrgsi0Vl++aI2qSzfWkLpvDmC5sUEu8mRipfQVAabAkfRZ9fyK0tT4sWooHpHlZq2DqiChapM3DfLmVeXcBBMU0EMUxW5Q4IlEjQ5vh8ou2MFWCxEBReKp+n11zFV4anBV4LXCFo3ANFUZqb5Q6ZyQScTqXUVQQS9UhHdYc1vtK0uGxkEOZw6ZJbVxziC4ZttP3Mw4Fl8JEDqUOgSQ0bDQKdzx0kuXGYa6kCWm35kWZqoq0s2oXc4yQm/ZEjRhCo3BsOfD52w4QXIH5YjXPLSlHvra3V4+GkZn/jxKeyXyNXHJ4LoxpkwKcxxUVt957GMOzYxNM6QoFkX6RhF3EjKIsaZpWWjdVHZxPy6rlOdt+qdiWvhloIrag5vj8LXvYd2xl3GZ4EqvkNMMs8eBVI6Uz+s64YMpTmdIrJKexYiqxs+RupEZJbXptlaAZo+Ld5HK5yjdYixDIp+eIeEbq+cw39nCqDsRglFqM1wiVJHt97OQCR46u0J+aGkfyw2iF6SrH8Fx2SlUpC0/hchdTMbwDCYHCNM1XbBy2TIRQYVg3iMjjlop2ePbQOQPnAdpbarw02moV9CBEouUGLI958xmNaxnxDUvDOosOBRorufn2h1hq0m4LQCxSoPRLn1rFZhJA6oOe2sCmtvRpB3dgfpEP3/glhlqgLfFKIHPGn55BeRph2GmlZqc/N0Ga/JZrnRAslRYawu33PkzEc93F23nNC66gIrBjs6cqBNOQar1DwGcdAp8bHJ0vaO2D0ZYWNjkaIDQATmjUeP/ffI7P33bP2YdXVjNOYllQWANehO94/jW89YdewbbK0NEQJ8K2LZuZnZkhNOmNIaTITYir5YZGetx2PlwvNkw0VRBFERYb5Y/++jPsP7mIqkNqzbl9cmIRjp9Y4NDhY1RVlTpwamSm73npdZdR5PiM+ZRi7BeeMldkqEupngrjFS+6mtKDuGzwBTSXLS8NhkSTMY+ow9pC5wyse9jqT8vMsyTrGoA6M3hXW8M++kaMeJYg36TKycEQiwY0BAqGWtBIRR2EGBQnUPrcvARF8qIQohI0Tp4RjRor6tBiijiuW87TbtxLYX0tDpLrzMe7nPTX8fOTFRRJUGg1SuB9qhQYl4CLoyrBOSW6KYI5Lt3W4wWXbsFZZPN0SeXBiVEWJUGz8AupfLMVeGxr39c72rFLBjikagCEFSBYkiBekCkODy3pEZCiAS6XZ2KMyYJmEUwJeVd/+UWbeeHl25hGqXwiGW7bupleVRBCmoZB02c0IaK5NDZGUHWr45u33Wt71rY7c0MMAp5h0WcANKqUeMZtSnA06nBFD0WYnknzC4zN046rds3g2/taUhqnckaBpYZGznAOKoxrLprCaYORJYeN1JALWFwajK/XuvGoNhA6Z2CdI6m3JQb7uJmOSlK0A5abFKJTnaz9PR3HF4b85U13szyMqCkLo4iFRJpTPLW53K436wsIFLklrOEQ77NRMlQNzZEJJO0IggpNFEYxVTNYlnpNjWTWQb32mTDGTkC7y5GJ58ZKa+SFz8CsFRQ6/ZZzAqUohUAtJfiCvoMpqxGBwjtKSWFXlw2Yz8YONEdg8rmsM6fqTIzZ5/l7hBhocOw9usTnbrmPWiMgDIppTtXhjJmThZvMKLJoDiI0UanVUIECY1ogmTzBOY8Xyc5dMu5Nkx2QkNJcms9Jo61qFKwXSNJQTJ0GIFIQxBFa0uY4gJXu0ZCZRmXpxkWTJUqFUbjWGfA45ygFiry5UJeiMaUpPQFPhKzfaJLKFRVYHgwT14Z1d8dvCHTOwHmCdicuyfXGOUfU3KCk3TVOKJJNYv/RBf74k19huQ4E5xhESf0JyKWIOKIq4MZiO4Uv8s44CbaIS68Z1U3W2Sc5A2qEEMEcThxB23NoK6H9o85nrcOwsUBQWxe/+tyqVLGRIgNt69g2mjAJZ0ZFkimOUqJSUgKVJSJi4YWClIf1RYGJJIW4vKDHCWr2+SDkMv4OBnVUGil58NA8n/7KbZikedWUfZZCohq2r09jnN7an0rLWhMCUYyRQlEWODNKoExXhqKocELWeLDx9Zyemc3teVPgSjBCDGee6Zo2aCmXn4xyabkhliYHPZoS2/ScpJbYIbcvRjxF4cbSzYUFShRvyRlQSWmtAsNjqaujBxGjMKOy1FVSWO1W2nZySGkCxjobHdYWOmfgPMJk8C2qcWJpyPIotWddDV233c1XX29lj7raxMoIEE+UAi+Cl7Q7ct5R1yOiKisrg7Sr8j7V0+PyIu0Y1kk2tvAlJi4RCWNAQ8SiMhoFjh49QRNbAtH6aLSTg63j34ykfgfZ0Zp4leWxbiMBbYpA8+7zzAips0BlDYkSmDQIkotkmDjEOXzuE+992oKJ92PyYoi6ej3zZ41/Tv+oNQ/LjuxYvlagwVEb1FLlCo4klLPSwNLy8LQ3S9a+mKpWXd5TS9nJypEDb0ne2XD4osRJVtKMq07dzPR0dnRb3kDLuVlHELC8QxdNcsQuO+IRJdN+8xqQqihU0vzyfpWEmQTG9LS1JUkKJzfezFL/A5Jj6yWltGBifckXY9QEJEe3sibRxFxtU53rc+6eD+icgfWOlm2lAbMRtabbPGL8xz/5PB++6T7MemkhtSRt2zjSYhCaFNaXkkI9o9EQpaAw44XPmeHiuQqREaFZYWWwzKHlwP1HlxFtmCodjaUQuMTI0YVlvr7nIdCaygnqZ9KOSmsGWoMo39i7wP/vfZ/g2NJyoiyZga3hyIAlDoWRQqxmAqYMEUauj0SjCCmEbzR4HRHU04jHs0IJ9Mo+Jp7GHNFSqLqkoZTkHGwqAtc/Zys9VSJ+3PExlMkgFSKURG54TsVFsyWCUHpH1EiDY0ULoAYbQQMjFNMRGDSslwU1RYrSDjKiksxYrYL6hiie6KZw6kCFMgz54r0P878/881M8EvpqOSIwrTAjDhe8tyrufPBoxxZUqoycT0QIxQFCFRFoLIRBXBSPLWVVCEyLStgkcb1URVUjVFOgRUkcpzLAsVrdYQNoZYeKg7zioniJI2fRRBLUT0fPX0dUuNwFHgapsuGiGcqBl58xVY8AtbDiWOzKaKG+YKrLt7OlEBhI6RwDJgmVj2Ci5jr0SuMC6cLYjOg1MiyelboAw6xhsYixAYdDYjRMALGAKzutAieBXTOwDqHsJorbjQwFEFcgRk8eLLhkQGopAZDbcsRg5wfLGgkBfQkBowGE6Ew5eXXXsB1l+/CkXQBwFhoPCPp4SzgNBGEvDicwbAxjiwOMI2U3mFSphpxi9QaiBjzwXFo1GMYFZHV/fTaziCmXYumhwhZq975VBUZc4MiIlgkZOa70OAk9x2Q5AgETY1yqiJJvuIcl+3cytt++LtBBySht0T4irnG3TlPKfATb3w5O7cmB6vwjhiVaMIoQjL7SSsikhxDcsRifaypq9e/bZ+lgKngNFWnBCuICCPAeceSlexfDOPvZzg0GqVLDtR0IVxx8Vbq6Ki1wMnqx6hLfBcvgb4XvPMsRIf6ksKMvg/JkaUYcwaavHuVdlfbkvOe0XF6IhCwlpOjOW2Qkxvj6BGIOgptEo/ABGeRygfMHFOl54aX7abwHrMSBKY0Nc8S77jhZc9l19bNVBIRwPsiXT1nRINdF27j5S9+Lt4l0nFyiPMYopgIGtNcrV3ufIqCrb8Ko/MBnTNwHkAskX9Wgufh40uEXLpnuLyrMprUjwxRhwUA4VSEe48tEjSmskA80QRUmS4cVS4hbEPfMRgWkmpbv0wLrGlaCCJCEEdjUJUFEtOtHRWaYCzVxsETS6k1rAngM8nwWR26x4ec/Zc2yyHIhJa+SymWvOPSlnyW0zOqSox50XRuTCQUydUZRZny1z7FXFM+PNXIG9ArHVXhEIuU3qMxjtMwySIKVqy+Dwxva3t4T4eMg1ztSXsVfOOIAaI4TtSBWw4dZyF4oMh8llWktMzEETN3JaUPVpkqkP7mBKqqRFU5cXKBEHOaqyyT02w21pNoQniUZ7WWxzaR/5I4puGJ0kovp5y9WhxXY6hqkn7OY1/kCphogvi0WYjGOI3gRPBAz0OhNcRIqZHpuMgMEYmB0oFqUthMxGLBYkOpg1zyWSAI4kqOjwoeOjmkyXEzkHXIJFr/6JyB8wAmabG85d4H+O0/+AtOrYwy2QeiCFEiEU0h+ego86rwudvu4T/8wUdZGAyJwEhKgqQ64NLBJTvmkBBSpAHH8vIyczN9Lr5wG17SKiu5rrvBUUtBNMn65U0qK1IhqOPIyRU+cuNXGFAQTBBzSbVP1leznbR4pscpR98qEPrkDJCa2SQC2kTHNkvCT5IJgN75RMR0DueyKcykwGTQJ+os8m6q9IIXoyxSdYia0cRI0uVxjBxJ9U0cSEvkWh+xASCnjCcIkSq4KEn5Esftew/y7/7HX7D/xAjTVOJ2OiQT3/JvMlHVMX51fl4E71InQ1Xl7z73JZpoSVK6KLIIUeIMRE3cjFa7YzKtsWZhhstEvZAd9UT9NdRi5g0YbSIsTohoeZ+qDwqfxkgt7+Lzodu5WQA9a6i8Y8eWGX741ddx2Y7NFAKVEywqU1VJaGqiOQiRKg4xU2pyQzPxfPQLt/H7f3UzEUEpQNz6mrfnCTpn4DxAK4m70CiPLDashFW1wbRjTfKqJrlLXq4qOLZcc2hFGDY1wRWsmGM5pp7ys2XBVbsuoFeWqEu93+vhgIt2bGXXRZvolT7XA2RhFlexXCfNgqpw+GwSo0JdN8Si5GQTGOEzGatdUNcXhBSFF5FxT/u0oLpEAAQaJREoYZUMlSsMnHd473NzovT3wgEak1NgOh4ZJzbxGqNwUOTKA8tldtHSOURzLI5dCQ9iiMUxB2E9oBWvSjtyw0KknUlEOLVSc4I+IzeNmJ/Ymss4KuCdpw0PmNpY58FNhAzaULkAU72KudlNqKX0mjhP4Qu8S45eE3KaaEwmJBvFVtd7bToEgiEaiSqsKAxUiJI0LixGcD4lDyTP5VSjiheXSICmVKTeIoX4nI4kOZqWxtULTHnDe8+OzdP8Hz/6ci7e1MMBpXOUhTDTc6wMhwwjqEHPRUZqLGlypswL9x9f4OhA80imCJusN0f2PEDnDKx7GK3Wf+0KRtIn5vCw5B1lYQaaan7NJbfeCZjzNDKFFCW1q/jK3Qf46y98k9qSyljpUg12VAHnWF5aole6xDZwbVe0XOLmSr5yxxHwPbxAkXIRKaQeNeXSvSfgQFMI22G0wijrCZMCaq2xjyRZ1/seOs7+g8dRHHXLQLe27K2NFEjiEpBC+m1mF9O8CObrJ5Yfp51a5YXSGYUIaqnSY9gEoGTYCO/+8Kc4fmIZXIHi1/bO9SwY5//zWKkZIae4fFREPCM3RbReCiPn5lGtwYeUGlgtN8wsd3GnpQhS183EiK/KgumZaUxcIttlwygopmnHHM2omzjWIkjO39qODBigFhkZ/Pmnv8EXbrufplX/VKMt90sZu1T5k6IqiaDqYmDOBy6YLhEb5YtjOeok43RBYUpR9iiAzQI9AXEFhfc4lJlSaJqakYFKgfeeg6cGvOvPPs8jJ5dpzDi6MsJ8SZUKE7Ashd7hmUXnDJwXSAIfEc/IivEi6HPDoiIYxEQoi87AZREbc2AlIRq1lNz98HFuue9gdgbcWCDIEKIaGkNqAStK2coXoykPiefI/DIqnsIZzkIOs4JoIjBFyeLDZokot07liDUz88alfOSiDoQ9Dx7g1NIgydfm8Otp742a1CC13V/KOB3QmpcUcZkMbeewrBNKL5SFQ2NqS9sokHkYX3/gICvDSMDTIOvNx2oHcTW14mDoArVFqhgoVFAqxAqcKSopIuZ90rCA1jFIh3NZIdJ7xzh5MPGcAM4ZvV4i3Gre6Y+Gw/FFTodN1yznc/IxVh2ONQsnrJjypTse4O4DRwiUCA5TQ9WludPyV0TYsnnLeFffLxxvfv13cNXOTRTU4/JCEZDsfEmej1V/GkiiQ97ApGBmdhaPMdfvMRyOqElRQ+dL9p9Y4i9vuptH5hcwEVbqOsXVVJNaogi6DqfvekfnDKwDpDWy/f+k8WlvmFwlIKkXgObIgMtNQ3zaJqT6bDNiFgVxgFNhaEJtQnCeU8NIyAqGSTPfpfSCeETanamd3rQlh1ClKCirVIIkFnOaIMfRLXdPM0M0M/DWQRi7PTtpmWgkkaV252I5L5vCx5aZ6qnNsVqqe4c2U51Dz82IUZOqNEqZkCY+0zHItd5pLKGQ5BAUvk0PGI0q5hyjKIykpIlGsKQ1/2y3hV6dn5MzePW3Ni8/+WptiXuAilFLpDbFqaZaefM4k5wYyA6Vc0guF/DZyJtZmr+2Ssq0CffKieCc4ERxrj1SSriN6nos3W0WiQajEJMRNWgMmny/rWVEEkN/2TwjFVQ8Ii7NX0uiZJJUl1LKZKoHBqXzeIFLtk4x5RQ05PRVauYkLc8n8y6qXj9f3QZnSYF025bNlESm+yXD0YhhE1FXIc4ziMKKm2NgiWMjzqXmRppImhFyGe+zOXobD50zsMZhkw+y4UwktVYS14iuT9+gMkcjjpDTBl6NwhpG0jAUx0337ufXP3gTx4YNhsMDRwdDfv8zdxE0EPCcWGpwGnL4OqKi+TN6BHNsscVUa+0dA3FEX6DO6PuaKR/pl0IoZwBhR18Y0aOuFY+jcdO4OEoa89lZWMtoDZdTodBAAzTmETXE1aiLSOlRTYpsjRnLRQlASY86KMZKKsWyPqVNoTKk1w80/T5bXMOVVSZ5iaeWHiIljkTMakzYVBU8d1Nk2hk9Z8kZQBnRTwarXskto8HFkuASybBP2/Ph2TdYltRlUldL0txNE7s1V6nyJE3vHkaVGtpYxHSKb9x5gqF3jLyjIFLJSto9xgLF0SsFE0XFM6dJiCggxAa8TFEVTSotxAimiDRUoaa0irIUzIHH4SRS+pod27ZgplQ2QmPg9uOBAwMPdTrPD39jD7934y2M4lq2VoKTglItjR0ObERlkRWNmDQ4VVxcoqZCVSlYBAJTLgmKeSc4XyCuSj0JNOK1pkDHJZy+KJgr3WoKUgLeKZfOGJdONRQ9oW6SboRUJTMWiA5Wij6/9ze3cWh+mSjGUAx1BeaMwiLeZDWa0+EZQecMrAPYox6tMqTb9IAzw2VykyaRUNrLG32qKjh0fJHP3PYQy3UYv3sUlfsPLxJCIJhjeVijMXV5a3P6zmIO83tKlz67qlL5ldcRiDBVwlzfMeUVDZGLNk3zD17/SkqXdtIu5wydNakZTN4J25qegun8UsRYGUHKfRoEDbjCM1BYUWgV8NQ7LAbUcnBVFVOoxYH3FFZz2WbHJRfNcd1VF/FTb34tLiQN+CQKlUaktAZD2bltjv/vP/uHXL5zO6UIhU+tY0eW1AqJIbWgBVxMOzZH0itod2/PJibn7pjlf0ZcK2ev818cZi6H7BWs5MSCUosjZNKa2IhohqnH8BS5kZNppNJRUhiUHGMRoXSBQmwcd9H8WsyldJek+dnzkZ6MeO1LL2O2l65jY8JD8ysMo8OHVCHz9T37+eIdDxHWeFRLcBSWGgUlhn5EVGmyOiZqCA0Bj6lR+LQJKIQ8j1I0zFzSxDDSdPKSS2GdIL5gqvSZRwE4Q8TYvWsL/9ePv56ZvsNCBE1NzPpe8lpScOtDR9h3YoHalTCOoDWkriodffCZxlpeiTtMwNoFzgxvRtH2DJ/oACgGaMrtpWx8QZDEkI4xYqaZnX62T0iSwnWjNFGRzMoWlMIaKpIqWShmEYGZqqSHMd0soCHgXcHczDT9AnrUzPqGa3ZNw/AkMXePczm0HSxJ7Zq0pm/t7gDUjETCdpwaRG65Zy/LjSFln0aNpVjx9XsPEyyZmh6RQoxBFG7ft0ytFUE8g8JoXMN0bLgg1Gy2iOiACy+YpkLxcZnChuQAPyJKQaQUYceWGUrnmOpXeOfwRcX+g4dZHgaaTFJUVdrsSwtZKwuqCJYbAhWm+PFJehi7PzBO3I8rMFb/bLlyI/2e8mAxy+t6n3gqBQ19b1kxz3L4f5Q6bJpATAyNgFB7D5mQ6bIhqpww7SLb5ypKawhU3Hb/EXr9Hj0L9Lzmio/EF1njWYKM1aqX9DhLYwMhV71oTPdl4X1Kn4jLZNZxkixdD/GIK8AV+MqjkipjpnvVuBJApABVZirHxVtmmHbgsiQ5ZhRFEnISERpX8vUDCxxZTmWKYkPE6nSeImt5WTgv0TkD6wA5c7xa52sBsSQ2Gyb+nkqy4ng7ZuKIkm6+GJOR8f5MOQ9DLTXQqQOoczS5eiB9luEtUFlNxBOLKZxFNvUdF8xO8Q9f/wqm+1P4smRmuo8FxYvhtM50pUBNWtB9rn0OGOrWbpOisT5AzjurgrmCu/cf5b0f/CsWozLS1MnxyIry+x/9OwYxcSH6Lu3KhxE++aV7GNQefEEolaDLvOA5O3jrd72SzbHG0RAFfAE+N5WJzlGTVPKcpDaxhRkeTeIuZYkvKxaWVmhMaHK5W8znPK6Fl0xHXAPewCrzXvO8TZUQae7mWoqx2ISuOgOT/H9L81Q14jLpTS2VcxZOqCQy13N87w3fwUy/ytEBxWxEIclRI+biFQy84Iqkw2++IEqFE0fPKXN9UBUWhsJf/d3NrIxGlDFgGmkAJx4Rv2aTXJNaDUqq6GlNu1rSTTCT7Ez5PHfS2pApBJmn0l6B1hlwiHeIU8oCcELhlOnKJ53DfD3MoO9SqqpnEWJNbCKgFD6RNTEYacF7PnonB086JIJIqkCy3PewwzOLzhlYF1ilCSZELNYEhYHBQJM0bTPOYba0rYnypyyOs9q9cBVpgXSZfOYYhRwZaJ8XkDgE5zFX0LPIjDRs7ZW88VW7masclSheGppmlGOJHtfz1HgWY8S8T+u8RoIqcUzuXhsGq8WZ7YDbaEoQYWGkDOlzciX3ERCopWDoekRJLGyvSq8s8b0pRlJirkq7SBtRxiUu39bnu156LZU2SGyIpP7y4sildCVDUkoFTcoFnrQc90q/2gLZp0U8hJDa0URFxws8jxX+eYYxSRzMISltQCM1MCAJKSuSw/6aIltC6sYoq5oBrWhTQsonJ9EaR1l4KqdsmfK8+qVXMFX4VOliioilLo+SitbEDK+RHiM29R2OVH1RW0kdklpEVQgNFY2bIpZTqCRjNVTHChA0RdvWkjPQdsWcbFSlBogRQkobqqU0kpLSBkkQLLccV8sVFkZVFDlNOHF8UtogjIb0JFJJIrT2qNlUapqjTlJXQ+eoHDhN1UerVTUO531OG1rSJilnGIQ0y2tKapumsa608NlA5wyscYi1YVPLfAAgC87UwFfvP8qeQycxSWG7NnyZee/jUJ/l0FzLa59EqnFPO4iII5hA1m83EULO9YspBUKvHjDrAyUwh7GdJTY1C2wrDN8sp12uc2ghzNfCXQcXqCnwrkgSupbK4iSnPNYi2rJBh6Z8NLDcRAaULIwiznt828SorU+XVv7WJZ12U6QQCots1obp4QJTtoK41ELOtep44vAWKUgVBA7wMTDrEg+kFczxhcO7VFGQehisli5qjgqMnZicL382IYlykhtnkZ3QNJaPLAz53G37GEQbNxlKKoxtdUYiP441A1SJY6pBuh+iZiGb0uPjiJ7V9CQ1E3JtAsocuBIdazFFtpTGBbbArqpmWpLaJtlJcGFAJXknbalEc0UVlR6nmOYzdx7kxCAV7q41tHO2fQzkDYCBZelstdxVs5XVlrGz5pxL3QidZEnrVVaHABYD1AOmdMQURoUxKw1zTvExXS/D4fAUkqo8vHfgPKOmIZpRVgUajFY/snHp9UcXaz5x+14+dssBFkcxi2qtzbXhfEXxbJ9Ah3NBvpnb8igDnGeI8P6/+TLb54QX/MSPJOEby4QoDG+ayThp19CWtj3K/kpquZvCiY4QSeVG+fMa12MmLiIWmS6MH3z1dVy4eRYibJvu8X/9vZcwGg7YtXM7+5ciH//8rUQJeAfHFlc4PL+CFhegweXWsDnpYYZYsebW1VaABVLuHk3kqZVhTa2eEwsNVa+H1ksIYVx+pgbBHOJLqtLjaVBx9MWxe8c23vqyl7Bjy5DgI0029N6gksgPv+6V3D5/C30NVAYv330xF2+pqFqDboLP1QRlIYgGvCuJIeT8eVuSl/Lz47D7s+oP5MhAlp7O9X2oK3jo+DHe88EbuerCt3DVRVtXdyXWtn8mOQiyWpIZQtYVKDyWQ91qwky/ROamKOshRU5HiaQKAaJDiirJbAs4G/HqF17F9k3b2DQ7w2zl+Js7DjNrK7z0mp288fqXsKn09J2xbCm0XZsjuln2LTq+9KefZtRs4SWXTT0bA/q4ONMRIEsIx7asN8tlqxnmXCr7dalXSVJvdOM20G2qpoUABZHnXXUJby5K+jRgwve/6sU8Z9schTVEq2h1SVzmOKk41GUJ8qLANTnpqREpHCKBQo09Dy/z63+0h8Lm+J//+vVccOksXYeCZxYbwhmwp2D3+VQc48kf74zQdSbeRREWGmFOXa6Fzvp12tLyNIv7tO91j3K22y6GiW/QGjRLedG8uwwUmHM4C0y5yHc875p0m6ox5eGHrr8M51JXvksb47OfGzKioczH1aJHExQvRcplWy57U81Gwp7STcC3e60CwvLygLnpfvqeOckZQkQpWVyu6VcFI1OcRMQSeU8xGksiOL3C8DT4oqJU5RXXXMkbX3Utex+8jYASnNEzqExxccCrr7uYKz57J8VoiSmDKy7YxOXbZ/FmiUyF4J0k0ScPWMQTiZpC52qJGGYTzLsUJf72Aq5njuWTGVvJ52etQRJHrcaSVpwcRFaiMevTrrXtkJm9gRTlysYsBMvNhSqkCS2Tj15VsOPinRx98P5xtCXvdUEdzpWoCMEZLjY8Z9s0z9myLZHWqPm72x5kiiFXXNDj+156OSeWlqnikL6UNCGyuBJorODYyHFCp/BW4osiBzqeuoD2k5u3q9oJy3XEYUz1SkytVQ5OqaOkO8zKSFhp0uMkC55C8oKm6gCSsuCqE5Y+xZlRELlgU5/vfulufFzEpODlz7+cMipoPXnZUtqLFGEM5jk5qKmbJp2T5oibgbOawgpq67FYXEgRp4g4HGF1PLLeBrbq2z6ZkXqq1/DzDRsmTWA55xhCIMY4ftw0TSqrC2E115Y7zLXveTKTaPI9k/m8J3HmQEoPVCQiWZAeIExbpCjL1N41awsU0gNc0iDwimoPL7OYGiNxTOExFWqFEUI/1pg4nOYyJBcJNPQc+JgiC1NxiWXmKDBmGSSCoACFIKL0HJQI0w5mRRi5TRRSUAGiHqeOTXYK0RVGUlBo0tin8FnH4MmjvUZP+v3j/wcgEs340oEVfv33P8WJUUNNRfSeQmKq2TbH4nDI5sJTiE87TjM0pgWzEcfWqRHXX+zxgKNg2Ctw3ug5pdRAXx29WKOmuXRrmj4OXEWQpNSoDlwiWSCWShMraZiRIbHo0ViZZkMmxWmMePFYDDk8HycM45OH6reZGTehsFQ6KSZE10MsMiWOxWKO//TnX+MvbzmEWJMa5/i08KsmXkbpIwUrNDZNHQXPkE1VwQxDAqk1tjPPbG8WMU9BbjEdjRGKFlAZTOcUhLg+U0AlUFnAmzIoZ1kuZuk7YxYoJHWAHDjl8KDkq/ceoSxWOHxwPys6Q00iyH67QZdvf2zzcYCRBt75sVv448/dyhCQ2CAWwCIxpLB/wPP+rz7Ep29+gKiSWxZXFLqC10U8fUT6ucFZD1EYmdCoB4mIJpLhnIC6KZyrmMaonBF8heRW2o6A9ykSWTohWMWHvrSXpjYqrwwbj7pWLltpvGGuBOtRFYs0opj1aWXWG4Ng0CpVJHLvtxgas297fNv3bxQnYkNEBgDquuZ973sfe/fuZdu2bfyLf/EvWFxc5L3vfS/Ly8v80A/9EK9+9aspy3I8CUIIeO9PCxufCyZJaJPvVdWJ8PMTOF7+cbnPt7kCi0qRyT7pNcmLDyE1B0JICmuuTK1sJZXzibZdzKCOipPUnrQ00BAwMcxBmWsQBXAaGZWb8c1iWmByblvJ5cEpXZjyrghW9FMJnAjel4SgXHrhVu6fDzSadeLNxo1SVg/wxGG5XKl9/ETHNf1rmVuRvtPe+RXuPrRA04ZXTfEWMVUCnpHBdDVFNteJzBbBqRFD4PrnXsrrXrWbW+/cyzAGmn5Fr8ohTxOcOcRIRl8ENY9oknROodW0+DkDLGIuicH2nNGXGnGCLysaS9fcSLutmB3acbY471qfyJicObbe+7Pmop/I+IoazgewFBUQU5wJjS956ETNfY8sYnJBVvRrGzyllFVq9xwYacWSetSVOPH0y5KAS2kTGjZVM/SyA2W52ZMKUBRUZUFBVu8Uj7cGJF9zk1TBocpcz+FNCQYjCmJR0qhwahDxLhBGAcpZxI0o/Oqe/Mk6BW1PhScztu3gZmoFUZU7D50iWj/zM2zMNxJJpD1VeHhxxMmVhl6/yup/JdgyXtrIDJSFIaEe6wykPF6q+0DAqWJS5DUpYCTia09rEj9Zx8qbTgRcycGFQOFLRJSlYeqCaLmhlorh1aico7CVxI4yDxYRZ212ibbS5FxHva2cUtVV4u054tt21NYhNowzUBQFb3rTm5ienuad73wn99xzD3feeSdXX301r3rVq/jv//2/87KXvWw8gZqmGbecnTTi54rWMLUOQdM0lGVSp5tcAM7hSHkRy0LElsLxzhKhsKxKlAYRGI00Hzt9fogR1UhVGYM64ENERTi+Etg0o6hzBCkh9yFomibfNIZ4j4YcAnU9GhVKcRRVhVqbzVs1OONzNUntdosihfVMMRNm5rYQjh3DiaeORoyau8m5id35E0d7jdpzF5EndOOPDVY7zmYsLa8AiaepmvQRkFSXra5kWBvV1Awiyah7E2JIaRZRZXOvYlYD/cEJqt4WVlC8Jmci4hlGI/iSkQVGQSmFcX7cSO1yy8y+X5VlNQpRKsmruqZxVVJ5oaoizo3LDJ0ZiII9+eBfuyDWdZ1C8094bJP2hVme75oX/olYr3OOlcFK6tkQJbfShaCK847SCzIcMYrKwVOBFfP0p/osDU8RIngL9K1h2gbM+ggxZK2NREJTBV/0UHMoyRHx2YGK5lHxmEambERfAmJGUGgoCZZEjpqmyY6RI8lJN0A/EfG+jfBAGy1sI1uTDZfObYDHs3Zy0LNIlhE0YiLEaLnU1NE0iSCgUnB4MRLx4CtUIoVEvCklynRcwpumNFN7TaKm1EIiZOT1aFIoPY2rttoXMab1QISmCfh+Sq8cnz9FNIdKNvgkd8M5h9ck9BhjpPDp8/1pJaatC/b460U7piGE8d+eyNi21+bJR3TXH9alM3AuF+dsBnfbtm0cPnyYxcVFLr30Uj75yU/yoz/6o+zYsQOA4XDI9PQ0999/P3/8x3/MwsICo9GIPXv2POEJ0ToDqsqxY8dO8/6fKF/ARAlSUmqDMxi5Kcq4zEg8dRMYDkfcdfcDzM+fJMbI3r37GM2XNHWDlx7eAscXaxaDYxiU3/yDv+ZlV23nZLGJ4Mpxz4BVZyBy6NBxYj0CcgMX78E8R4/Oc8+9e1LYF6PQhiAlhuBpOBErVpaX2Oxg374DiMXxsQ1PVOXQkZPcKwsp6iD+26qCMzOOHj06XlSfsNOW9vW4XPteU3Do0DIhBPbuP8QJr9Cs4BwcOX6KQVBOLi6zddqjYURR9BkOhjz40CHqasDRw4eJ3jE4PsMrr9rF8brizlMrLBw7wZ49D3Hs+AlGtpflYc1oVPPAA/uomgFaViwtLSM25IEH9+JCoIo1hUgqfXMFw1OL7Ng8y3BhOWm5S8n8/AJ77j/AgWOnWBkMeHDvXubiPL1cChq/zQ3OsWPHqOs6icU8id2SGDhzRD/Ex4qhKxAbcPC4p24avDgOHT7KfXsqHh5WDEcNDuOhfYcYLi9x5QVbWJiqOTZ/jC99/Viqblk+yUWbKpaGA8LiCbZevo1NbsCVO2Z55ODDHHnkEZwpJ48vIghLSyvc/9BexCIlkZ6OiNLHpKQxY+XUIjPS0NOGB/bcz0PNVG5dDEhyhmLMxFsRfOFZXl7h/gf2MRUHT3psl5aWADh16hQhhCc8dyUTM1Wg0cBoNGL+RMOe+/ezOS7QGBxvPFGNU6dGhBgZ1Q1qMAzKX3/+64waTzBo8AyXhxADh/cd4MXP2UpYXuT++x5EwohYD6iHKwxGDSZFIhhrQEi6JkM/RS8usn+lZDQa8cgjJ7iPIUcGwvLyMqMwDc6xQuTAoUdQtpC1MhHL1QWZ5Lxv3zEuXD4FrsFbUqNQEZSSFIdrtw+PPV4xRk6cOIGqPrmxzRuM5eXls2iznJ9Yl84AnB5yV1VWVlZYXl5m06ZN9Hq9XGKXy8Pybub48eP8zu/8Dm9729u48MILmZ6e5vjx41x++eWoKt57VJWrr76aX/mVX+HQoUO8//3v57nPfe6TjgyoKvfddx9XXXXVOAXRnts5HglDafCUpHzwiIKKhpHBpttWaDxc97yr+Mbhh4AHuOqKy7h06xRVdQ+sGL2yYGqmx9y2GRocBxciLyk927dNE3Purj2nmZkZdLDAlVdczHBlGezBFAyPiSi3fetWrnvu7rSbJaUuEqExPT4RhJkvHub5VzyH5111Mf1iL6aRzdN9CreCU8dFF27lec/blXLcZog8+d1rjBHvPddcc834OzzxUHaSwCFlO7nxwJ0URcFVV+zign6PUiKKMffQHTi/RFl6dl7gOFjBKRPK/gyXXLaTqzcXbHlwkbJwvOaFV/Gi3Vewf6nh/3nPJ3nOzh0899orsXtHXHn1lcx98T6mpeC5uy9nWoTajKn+XmbdFLuvvoJShFJjXvpShcDV1xovj8Zf3LwfJ4p4x9zcFNde8xy0qKh6FZdeegnX7r6QyprE4pKJjn1PEGbGnj17uOyyy6iqCniiKYe8BVfBfI2opxaPl8DSnmOUxV5AmJub49rnXkvvlNLv30+vKrjsORezuX8n/+RHrgfn+X/f/WkODg3nlJ3TkR967Qv52NceYjjo832vuZaXX7KZffsPcvm2aWbnNoEZXzt+F6Ue58JtO9l9zVVUXvAopQVMqpSHFtixd5HLL9zC93/3y7iw57DFETM+sljXaFbvdE5SNYMpGGzZvIlrr7mcWffkQwNHjhwBYMeOHaetU09oeHPgaBQb5r5wnG1bHdde8xxmtUGd45GVSFHcx9R0D+cGq1FAFR5ZrClnNjEY1uA9m2YrbKHiFdc/nxe+5AVsqVxWBjRWFhc5eXKeSy69DCS1PE5VB0mqfCQFfRsxtaBU1b1csnMLz3veZczMrzAz+zBuQSgqz+zmWXT/Eub8OPTfFjcagrqC3twcV1x3GWD0aHA6Al+iUqVNh+Uia3ls81XXNfv27eOqq64CeMLrAqS1ZW5urosMrAeYGTfffDOf/vSnOXXqVAotFQWXX345P/qjP8qFF144fm1d1/zyL/8yO3bs4J577mHnzp18z/d8D+973/v43Oc+xwtf+EJmZmbGr081sskjfMIG5rTStPTvmcd6YhMzL+cmKWcHOcSaUwKaA2cTk9blnD8IrvAcGQoueIKUjKqSRgr6tqoBrprCn/3NfYajpXGuOO3+a/o+UGqgRPHS9h2HMQe11TAQwQvMTicVuJJICMtsKtNxkh462QHIYzF+/xOHc268kD5RPsZq5tHGRrflM7R553atb0VuIDk9m8tIFRbwZY+hOQ7ML/KcrVuTUfdCBWyrHIs9oZCAF00cCsnktTCEMEjcjPEJpbCrc2m31PaXT+kDoy/CrEsGrS3NjFmwKGocN65arUYUHE98ETzbGD9ZrksevHFlyth2SjtnSddeks6vZc0GSKVsF1bQ6xVM+TqpBHqYshU2F0mQCQ3MFMKsF2YciPM5Hw09McpmiSmJlBiZrQI58NzqNxSmVA4Kl2ZzZcpUPc+M38GSekajmt44KpJnjOVxlifnak1GCp/UmjCZNpf0i+Tug9JOXHEpopEbECtG0ETKCwi1lPRdysur9/jcjdSLsbXyeR+er3m+Rq7tUcDqdzdj4h62bNbT+JZlSdM0DIbK9FwP8amxenpFTJGFLEjRmCRVz+UVDi4NcV64dMrjcGCtlkcSsB7rrj7GmLUbwclxfTLRgY2EdekMtHn4GCMrKyu8/e1vZ/v27fR6PZaWlti7dy+Li4vs2LFjbCy89/ybf/NvGA6HlGXJ3NwcO3bs4Od//udZWlri8ssvf+I5u2cZKQ2rhGioMi4ze1Sxkyv48u2H2HHBkNqEppihocBp6lcAQoiR5eUBs3MFTrJYCFB6YccFs+w9NmDKK8/ZuZV2OUgL/OnZuzbkN90zvAilBC7cNs3Fm/uUOkIp8vWjXUG+LRLW0wHNrLzJ79U6W2IKoxU2V5t42fMu40uHjSPH5/mzv/4sL/6Xb2ZFlU0+Kds5Us7Zu2zrSD3bC+DVL9xNGRqKc/nyZggxXRccThVRxSSRMDWfc8z1+Sm83TpZT8MAPYWwsYFOrPiW72KWDHMpMOVBnGPkpnCVUbqG0vksfwslyeksRNE8OyPClc/ZydU7D9C3IZVrs9rp89oQs2tNpdg4v76lX/GG79jNZ/eNuGfeaJqaas3N0jMgSScAOf3ub2Ig6qo6ZYpuZK4Jwpyk744rkpPvU/lvD1jNzbvVD+HxiZNpc9LG2/7/7P15sGTHfd8Lfn6Zec6pqrv17RWNxr4RJEBwgURR3CTKMiVRkiVbu/38/Oywx3/MiwmHYyY8MzHv/TcR8yZmU3ikpxmPn2VZdlimRC3UQpEUQHEFCZIgNmJtAN3ofbn7rapzMvP3mz/yVN0LUBRJUQQFGsm4RHffe6tO5cmT+Vu+ixGCJ6XMznjCYbeK8zK/byIJpFQWkmWieJDARoJf+89/yokTx/hn738bVc/L6Y3a6aVM/0bfjlfjeFUGA8C8rH/ixAm892xublLXNQcPHuTuu+9+CQtgVpq//fbbAebtAOcc1157LbAXBc5e92/akK9RqTLbU2LLvdTwHvOmHNZVUzPe6ljbnhajkdCQ+x8UyyAB7xw5F2R+dh7niqTrUiO8843XcvGTz7E0MN76+hP91mD7NoS9iMDMsNRSSymtBmf8xN96E9esrPCBT36lAI60oPSFGXZ8L7vYA2T11wd/5arB1x/74IO295nM5lvO3rXQywWnDnLH0eUhP/72H+DJ3/w8V9a3ubK1S8ZoleLyNucZGN4ZXsrf1QxJkR/9vruo+8+v/X2av//Lr1CgGMdI70iY58CxWeCSTYt2P3tbeP+S89ebZWwvGbOs/dsxXoJrKwdQMvZVQ2aBwCy43APDzQIaE8F5T/I10Q1YaBxStzhfFQAafRJsWgBvs3IzcOsNR/neu29gNN3CWUKl7t+2/ynbu8hyvwtAcrkK/JO/+14u/PaDPLt+FTUjuCLfO8t8vz5wcGbJPDMN68145p/7Wxv7ZmkO4hPnEcnz9zCDLhW1T+1BnClrr65Yriu4Qld2IsWTYNaqsH0KgNLrl8yf+b6sP4voZSZd3D/NfVUNK2qZg6oc5jiHc/0alVm9ouB8zAvqHFk845i5sDlGRrulyiMO6YGD/5VU7L8j41WrMzDL+J9++mlOnz7NI488wlNPPTVHPO/P8J1zhBCKu1kIpZTdl8FDCPPv7f/+37TRF+H3nZblX5IaHZ7OwCqh09SXSWcCQ5FBVTKlTmrIymR9jal5JuKLkp15snWoDzQE8It4JywE5Xrb5K5FQapdmgPGSKznbEWUjg6YHT8tDifC4XyFgzIpBj9mHKhggEGoWJIdWiuaB8VGNe8zJclgeb55fruf+7JhFQ332fEfKaJIWTxTnUGVSmCSTVEJRBUGVcXBCg6kMdlqcDVOIaqn8QGnLSZGFkeTMkthQiYz9gdQ7zhMYuh6kad+Doc+EwU6Zg+mgKY+8y+begQaH1C/WIITLwRgqkaWjKoQUCLM+7lFEcnogITNidvxq2tIf+1Ds5IssmOOP3j0HL/zuVNEK9LZKqVcXGkEXKGXpY6gmc5AtMNnCBLomsBS3OUm15KqgARotEVyxjnIuaJOiaDj0tqiWPGu1MIwZNQyGektcHTvULPMxDmsEipmlYKWJSfcYFMWcoIgXLM8QtSjllAXibOo6y8Zph2tZk5udfzf//grvLi5D2xo9jUD/G94bgFIiI2Z4kgukKX0+bN41IRnL2/S5Ui0AvZtoyfJkMpagiQcjpCgoXgJ1HUf7kiP9ifR5swW4HsV0sIAiEAkmyMBVR5DLo6FlU7mAfWCRQ6xTZaKTMWCJJyrSK4mS6DKHq9C6qmeCyq4ZLS+BtcwsMJ6MucIKBUGFjCpXqsM/DWPV2VlYHbgz2gjDzzwAJPJhOXlZTY3N7n22mu55557XtIr+qsAAP/mDJlH2nt5XPn/rNabjRQvOHtJZaBseHUoUbX237SciFlok0OkGJSYFfriwVFFN57QeOOmG67hf/uPf5obF4es3HYDVRCWQigVOudwNsUIpcxoHhWoK8d/9/f+NoeWGrbakjHUZHzlqZcOcE0QnBaNBNc3jffujO377yvzpMv+A9HK/M10/rPMytjlcrIZGSFlJYgwcI6RF8Q3dNahQKdCcKUnrbN15wdoVfdWLLHQEaUoOmKZbA0ixS3Oeu0AN//8gWhC7RSzSCWBt991Hd/3QstnHn0crPC/izFNCdScQZzZ0IrNp/PlK/obOM++9fntcScqwkcfeJg4Vf7e224sPeKUcOKL2pzsUWIzwtjAnBBEqJxDHLzu+oPcc/0q29sXCc6IKdJlqFzRZCjv5MiUgKgy40ffdhs+tuQ5Ja3k6AWxUu53EgEpNLZy0YnGV/y9H7qXC4tX+J3Pf5nvvetadr+8ztbuFBOd40f+0qEJQuD82jq/d/9DvPvWZW5YOcFfy9qefRxTsDTX/Mja6wuIYCZs7Ezouo6UFVErwa4EvLU46/0IKCiKYurkelxHjyXC472j7rEGJZAqIZNDcWqop1QPrFRXknh6lQKGteN973oLf/Kfv4KT0vYp6oNl7xZz/d5T/j2oIjYzAnPzamF5JopiIhT7829bReu/0vGqDAaAOV3krrvu4sqVK/PS/9raGsvLyy85/L9ZMZpXy9ivmKim5H5OXp7vNVUoqmqmPfpY6CK0EYTy8IsPuDzlYB3ZSpsshcxiFbjp2ApL0Xj38QpHpspSTF/U8GlMkATVCCjGPR7HiWOHCBLZnLSIZbyUDV7qmuWFmpAzNTMg4azEOJOr7YuNtleQfEXvnBkx9nM7K09IOaT3t2O8OOrgWVhYRG2H5Gt2DNps+BBACvwqiBD9kLEbIXGdpek5vLsRFcGlK2Dg5Gj/IV2/6e2FcuqKyqN0a4gfMPQ1x5dqbjgQ+JLEAqpWsGxInh1offldXCmYS7nvXgRnReLXekzBt31uzZBemco7YZKKJC0I3kHWiEg9F6DKPtC6ml2K46X3QqiEGuXQsnCwbol5SuVgNyqpHlJLOZiyC0TX4CjCTrUZ141KxWZ2DaWwtRdQW49IL7gBQGbgNuW6o0tcf2ibkbQs15mFxuPH5d58I4GU+NnK7vUwXgK++1bnta8eSbF/rjBqYhEOs4LXMQeTdtr/eA8gzHu8ezXFOd8nV7OvvWKxYCgVwVoW8xU2pAKUTCDhaaxFdAJ+RHaDMila7L2LCFp5zSOrQ4Z0VBTtCKeRRiYkkV5qu8yLIyOWC7f/lVmdr41941UZDOyn4Wxvb/MzP/MzDIdDRIScM2tra1y4cIFrrrlmzjD4bh37hTFU9auiZQHqUIBsMxtjEyFmiLGvM+RMMmEgys2rws6ZbRrtEBUqhuCFUZpC3iaGQyXbM2XtmQcgJQ7e8yNAjSf3vHLw5GK/K+B6ilsVAk3lcJrnVQ5DEMvzsqTQW8/2GcgrvSGYQYqFUz6/TGY2u/1XNpyD4ByDYUDN2EkV//nPnuCp0xu897ZDqBTM/wgrCHcvrH/5z8jPPYPdeic6OsjOlz+M+CGjN/0U0Sqcr7Ac51kr0mNFttc4+7nf4fi9P4RbrAl+iUYySaUI51gvkqLWA7NlnjnO3AuLSU9fcSj7L3910uE3MZ99n3dmUBW87+dVegaEgvStGhFahckk8dsfeYitcewPqAIQrEms+o4uGAHh6uYODqN2Ai4TKQ6bo9mNVBiQcBiZClPBZGYIDYgwI2/6XvwGBXzpUVfAks9UaZfVhRGjatJnp/TiN19nyOx92PONYK/uNbtNf5UxLwzgEakIBjWJrDPVzFIRiikiTkgzgSPVHqMimDLfR2dup3vBQGHUqHjyxgUuf/qDNHf9KPS0zCygVtQcjcJOcBkG3nHtgYalyvdun45R3bDaaKmKOU9tkRplm7qIQUlgRhksfhtGlr95uK3v9vGqPSVnQL9Tp07xe7/3e4QQqKqKyWRCVVX84i/+4hw4+N1WGZjnjT04Mufcq31ZX+Kefd8ByqCqSsRtCq6U86KWgAAD74wsgVuuO8FPvOMNvPmmw6wsNqWs54yJcwyswhEwr3jbQMTYOfsIzXQT7v4hECvcdxy1d33ZEbIKyYQmJRakZVDBWB27FPpdbYZZJnlPNMEbNH3gUsqBzJhTr8zcWsmehF65jdmmWw7e1M9xcMWmNfQsgc2Jcv+XnufsZkfV+7oDNJbwGqnIdKe/yMLl55H2Kn60wO7Jz9C5RRbf/GM4Kc4TMlN3NAXxiHbEjecZf+U+4uvvoVm6vqhRWib7hs7VtGq0sWzKqnneEjATLBspCJ0qjUiRi3Y9gGvetP72Ta5zHpUyg66nqDnXAyf7YGUmoZz6Q+Dy1pjNx9a4YbFiJjFTC9QS+Yl3fy9dTry43hK7zOIwUEkpaJsYaEfIGbRGpEA0ESkqkprBBaxnZkQEc0YgMZSuUBVdaTV4AVGjkczRlQFvvOM6/uiz5/DM2BtfX4CpZ9qV2Mu7uSbA7N+/lWH9fLUINVUR7MmRzldMVKil6H9Mk1A3TV+KLwEZbma1PbvOPRxSFap5a2y2lvL4At2zn2bljntBr0cC1GgJ4i1gplTS4lzD0aXA/+Ef/wjXDAeEnhp7wzUHeNdbbuWpi9uIW+C6Iyv8g595F7/ywc9w9uq0AG7Nei8F6MyRJOy1Cb61qXptfIPjVRkMzACAZsb73/9+3v3ud7O2tsbOzg4HDhzg0KFDc/nU76Yg4KtHKf3PqXD7Mo/+2whC4z1eIFt5uJVi5JJSj3i3DFIzqAOHGk9eqAgOkPKQRmeIeYY6wuIW8dJnaY7dSaUTFvIGpVY927ZtjkpVhOwqTDyLTFnNayyEEad2lE88c4nrl2recHgR8cLFrQkXN3e54/rDxeDoO0gd0r4hrDMueY+3yCrMpHW9CB7DmVKJMU3G1a7UQ8JeOAZWOqwVmZGug22ATXHWMsibOE2ItcAiJoHCGOgPNzxiLT5tciBdxZuVMrYIjbVUkrm0lbgyiUxNekBeuQez3DGL8NSFywwXRly7sEAlhrmCtvdzNPi3Zx6lL2285OXnh1CPcMehVqxzyz+Xv2epQKpC94PS30ZZbSpMGs5stNTe0eSWyvU9bJcIk3N0G1dojtwDdYOIx0xJl59BnOJXrmN8/iQLh6/FRkfxmmjSlKFNCf1czG14razD4IxB8Gguvhxm2ksef0OTUPrps6dS9u7OtzqiCV86eYHX33iYOngUePHShAtbE1YODEvbJQs+hH5VlMhk1oOnXNo+DZQStEjfx/AuIDqlu/g0h+JFqtMPYNffgbgF3PZZ2q2LDI6/Bdp12rUnGB59K5V33LQ8pNGyC6gZIy9cs1Rx8kLEec/SwHH70WUO1HDeIskG5eC3ooNwdiOyneqXzuFrEcG3fbxq2QSwBwxcXFzkpptu4q677uL48eMMh8M5o+C7Oxiwoo+u+wllzLRr5g9QHSq8CHN7WCd0KdO2CSeup6oVh7FGOwbW9diDgKAMGfcv38Dmec7f/5tYN8XSAGc9bYi9MKC8bdlQo1QkcVy/2vCjb72Vxjk+8qUz/I//9pP8+99/ABVPxPPgE8/zW398X0HBQw+MeuV3gFl2bZR5lRlewCDmHmWtew0MMcWRSGrsxL4dUjrgRZdfAuoqglBaHzIr20tf9WjBOqA3ktoXDJSQogQI3hK4BqgQg++/8zg/eM8JXjhzjkeevURr0NoMYV7aLCIwTolf+Q+/w598+oE5a6Pg6XkZePOVH2aQCaj1AlR9H1ysl6l1hXWQoM+wDW9K6IOYxox33HULg0FDFoe3yPbJz3P5Mx+AuDXHIahm1r70x+w8/lG0u8wL9/8meuWpIumsie+56xb+1tvfQu2k763PhLRm2ICelpfy/MLtG6gMGPufyq/++7c0d8DmNPHvf/djXNidkCnVvideuMCfff4r5B6QGTOEambTtO/9BWY+JmpG207ngcFeoUAg77J9/kmq8UXyYx8mb13FWcf2kx/n6p/9/5AUiee/wrn7fwOsxaTqg2HrX0JwZjTaUjtFnKeRxJI3hjrl2sOr88ptCAFfDXjoyXOcW5vOxadeG6/MeFUHA7AXEKjqvHWwX5Hur6JX/0oO+6qvl/2pNPlf+gv7/zCrDDAT9pT5i2n/uUNVKgNqhepm/bzEno3hNCOiRYHNMp4E4sh9m6G27ZJFqlFNNljevYAkUFugmMPObIteCvqxPstKCMdXR/z0u++mEsc2Q9bdAa62ShEXc2xOM9vRzTff2Uf8VulXf9mYlf9n11wOfiP37m26j/5l1us4UMxqpG8wezEkR1QCSeqi4rYvG45SkM8OSNREaUCq8vOu7iO30q/x+48KS2ARXI25umSrlsE6vCpvufk4f+vuaxGBjWmLzg6yvkpUgINGMrg6UXajvkT4dWYy8+0c+010So9cimth//dSbnckg9wHMtJXUjBXfCv6NWx9y6gIztAHr8Z733Y7wyqQe8OhKq0zGp8HiajQF/UjC7svMIznQbdZHj+P232RIIXn/oYbruE9b7pz7rQ3y/n3lDT69lDu+u+7vambRd77vvZ/7vmPzRbEV0353nvN2nzRZhiDvX8rtr26928YYxO2UmB9rESRQi9uRqxtj2kpFNWoSgj7V9bMobO//VI0RdRAxOal/V7wFyES4g6VtixMz0PuEEks6VUO7jyDpS3qyQUOTE9jeULHLDmQ/j6VN/YopgkDvFNGAXyecuuNh8va0MyRw4eLJqGr6HpjqSR9KUNeOmWy7xO9Nv56xqs2GHDOzQ/8ruv4T//pP/Grv/qrnD17loceemgeJLwawIOzB29vf9kPNipl0oyCtaWnhpGtwyWDNKHFgcLYBaZuAVAkJVrXkFGkbvDSYsBEBlR1TYxTJmaoRYIqgZbackEFOy2UIoOyRA6Ufq+PEMdY9Jh1eL3KbHPOPUBtVh9wJAylyi1DU5xUxWJWPJV0uNzRekd2hU2grmHilxgBggNX92oy386Zl/kBWSSec6kAmC8qbbEIp5ZqvxJTRMlkMhZK0FkRcQptWMKyZ8kmVL6QtUyM6OBgvsiSjokM8Nqh1qF46qzU1GAVkpVDskXNhCmQrz7BzqO/T5quo+N1qjTFP/Uh9Cv/ETe+QHSwKDBQ4eL2BEtGYw7JLeY8wTwRwQeYuIPk3ICH6IrMb0D2dK2/TcPEyCRI4FTIwbNZLSK5uOMlFKOlU+OzJy9wbrdFmGAuEkODBUflYIG+miEBc66AIFXpXMdSrdR0OFGiLKF5gEUgCUmEiMNborEJZg24AYvdJfTis+Tcor5mWY1VPOYdnSutlRKPRLzL+BRIpoS8Bo1nLAfI2uDVILZYbLEUS7CGUrQyyhNd4IrF2XJWTdqD6EF0wgzloxrZjJmPnbzCpUksoNDc0qoVjIJNCyMod+yYcf9T51jvYLozLrbL3mNMcAGeurTFx09eZaKOEWBtxszjNVKbgnrEAp0sFjAxHrPMclWAu8WurAj+uKgEEzINWQUkk5tFMg7RNdqdddz2ZeK5L2M541IRQks9QDM6YYrDOSGniIqno2BjljSBCbVGRt4wqbAU8Ro5tSt8/sxWqdD1gZn1a0G+gcrMa+ObG6/KYODlet5f/OIXSSlx/vx5zIz777//q37mb+4odrPOCj94lq1aSVPnUfxci7v/vrqaDkeykmfN6HiiBSBoWjLc4FxveqO4DF49A4oDYUyFanb7Tcc5enAJL8W+dXYNwixzrvuaeIJcBGLIEadjTNO+zyJ7COq5aHH/IPeAOnGOnKY4dP4e5SF3ZPN7Yjvi9yGcvk1TD3vvMQ9hoDVPcqGY1Mw16fesZks3vAQq7773DRxfGWKa520SnSO0YVh5/s4PvJmbjy4RUketLZK7ki2pYTkXARVX8ePveCM/+957qXKiffERLn3k3xDXnqF99kHcdIOdBz7E1Q//OnnrQpHgFY9J4PGTF9kaJ0wqsto8uJlVPbLUOPw+n4VUpnSfD8C3Z1jPwPBznn9ye64WipE1EVX53T/5NE+e6oNLKcejuBIP+tlkzmoKfcks9wV9mbdFPA4hiPUVlFTkni2WFo1zmGaCdVx69AGs2+x/x/c6BYonUVthwJgERDMD4NDSiH/0U+/hruuWWXARyR0t0EpFxBeRH90LhXtYxLy6NfeZeNn87NUPCj7l/OV1fu0/fZQLazvz3n0SIfbVkBnqf2OS+e37HmF9Eum6VFZeL/KVvedTjz7PBz/2ELstVMHPu25OAE0F82LFddBppHhjZoY+lwBm1rLRjNMp4st1eNuBtEuiIuMg7iJpiuyssfHYp6l0imiLh5Jk9C01nEedJ6VImAX54kolQhyCUXlfqpG9ANGjz5zhD//8ob2JnM8aL/n7a+OvZ7wqg4G/aMxc1U6fPv2qqAbMRtneEtJ3y4vYzf6jX/vtxZUDsjdTac1zJRqtG/ZlYfCa8NoRk6H9wepNGDkIJkiGJmdGIojVtF3Amee265a46cSRAmbb7yA4q/HtFe5JsSu91tThcsRSN2tOMD/U+9Kq0qvMzUBLAM4zbTs8Dj/bcKCUV82+MTGXv8YhfRvGcCCBcVI22kwXhmwlI/W8cwNSKvdotiED3HHdQW493DCgBTPU1UUxTcCZMhTjXffcyrGDA6TboMm7SJoUGiaGsw4TR2fCm265hnfecQ0DWnza4kh7mjB+jqWdk1Q2YZB2qNt1XNwpOg0+EN2A6Bqm5onUZOf78i64/lAtwYFRAYHSlihemN9e6mZh9wm7aky1LFJnmRmexAx8qOliYtJlVAotzolDtJfI3Yd0/4uWxuzAhDLfQRJVtwmTi1Q6LlgLK2FD+cQRy4k6biJ5C0F6+WhDtDDoGzoQiOJpBEY65qB3vO+tt3PrEgy6dTKJC51yPilbPrDeKdn7vsUgvXzu/NJLQvKyqd7fVDPoS/WONiaypr4dIGxFZayUYM9KwL29O2UjJjpXRMAqwGdBZMB2gqupeA+AYzhYKBbiZjR1hWAEMQJt/9XhLeElU1Uzf4O+RaYJp9tEb8AUPz4JO6cImshJye0Yl8c0eYwfX8RPL2DtGlhCdLqHwBBHp4LGjiq3BAGcw4d5+E/d1H3rIiChJuaS0Mz0Gb56gX0Ti/G18XXHd0Uw8OY3v5nt7W1efPFFPvzhD/NzP/dz3+lL+iaHzeU7e+VY9g7h/tDoDyv6cvzzF9b5v/7GRzl1pcO0ANycZVyOPPjoM3TO43pxlcpDdiXr9XTUPpNcYNdKT3bkoZHMoPL95ru3a8lLestGTi2ODDnita8UzIBoMgNglQxJ979GD6rDebqYkT57KhnZHj7ilcQMzj5pyYSEpI77P/s4T56+wNVp4pMPPUHb+9gXYyyd/+LMbXGlEm4/UtPomNrRV0DcvG9fWccCHXnjHOnSaZhsEC+dLfdUBKdt6ZcLDFBCHuNyKqArm5DPPkZ88WGcGN7awtXOY7BEdJ5OKl44d5Xnzm4TXUWyvYKqm/VsmWnz7R2pZa19uzEDkHD85h98gvu/+ELxqrDc96TLGks5kyggy1KW9jhXGC5OejfJPrN+yWvPW2l769WJ4aabyMaLXPjYb5PHlymVBkd0DdkykjvU1QRtkW5cmDVCv3Y9Yr5U1yhr8drVJe68ZpmRwRBjwRLeeZ7bEf6P//aj/A//5kM8ePoS//o//D6bbe6xAX0V4GXT+xeFXXvBQMmQiz5Fb8pjSjT4dx/8BB/7/JNEfC+DbEzajm0FDQ1dG/FWqn7JHF96boOPPvgsrTq6lBHvC9DYjOGgoQoO74oDYMFVyLzyIqEiUQy9TUAJYB2dA9Fduk/9R67+zv+LfOpRSB2p28WnKcE6ltnm/Bf/hNOf+n2wSdEzca60eExIUnHdkWXuvPZgobGJ4HxRPnQoTVXUCJGi52EuoOLKn1+i6/BaFPDtGK+eFPovGV/4whd4/etfz9//+3+fuq7nVYJXwyibsi/gPjWcnxeh+1G2zgIvK4pylcDmzpgvvXCZdQ6yfGDABCFqkZ89s77FxBmp73FLMDrvaL1jsQEfOiYoYwCfGHgj5I6q33z3Sv2za9xzGTTVIhqUO5x2iHbst/TZ+6XCQya1xWFPM+ZcyWZzf1z1JfikRooJVYfOFEdfoSHzz1YOgEsbE3ajkFzD2UtrZDNc/7lzSsUTQ/d0KyoS73/3Xfz+E59kMxkuRoIvLZ5S7kyIGF3cxcddLE3Q6S59TRch4SRRSVEIRDzmPVkDLRVh9xIy3kC9Q3rRKOIaaqkU+51nMo1sbLVEc33oWEYpHVufoTs6A1VoxJWAcy5V/O2qDghJ4Nkru0yWOjR1eCu8/1k7CnGkLEQtRkDiK8QlpO+3zziHqvklr5w09wH0HiwOrNAL0ybtxWfQvINIEeWJrkbiBNMprR/Q5A66DtPe8Mk5yIKjaN47TTQmvOX2a7jzxh9jofZEQBTUL3A6LnDhwjpH68zzV8ecurLFJGYONAH2BdAlrp+Z+rx82EvPNSmZsviKaFKsqc3x5Jkr7Gblb7/jDTSuVFvamEg2C6lLoKc5o1Jx5soOJp5rVkvQ1TQDuu4qqpmmqZlMxlQhMEkBDQOyC1SuIhulHQB4zVTiCjVYMzihymP82QdZ0CUCd+F1gqYxaCSIQ1xLOv8opApsTOIguwY14C0TMN7/zrtZzIlkineOyimuD9IaX4zTrNeGUBxtBDM3k1vcN3X2bcYT/dc3viuCgQMHDvDLv/zLvPDCC4QQuPnmm3nXu971nb6sb3AIm9HotDgEekqBXfqsRwkIeQ7S8yS8FRnVcTVCo2dKxcVpZmIFfbsWK9ZakOBAlBCgQ9DgOXxgyDBtspVbJjHjdEzjjdoVUJeTPdzC/uFmfTvLRRxEY/nKaV863/+OGWKRGmMoETcvSAu4UFTfxJF79rXr2Q2FJmm8ck+5zS/b+pJ6tDLnJqFk97PEs0d1e+/mPWCkXPtCUzFymciUoY8sVMXxsVCmCo8AQHJEdO+4VhGyCziUEr46kBq0g+k2KoLfuID4Qm0rQIAMu6fIaUzjiu9Dq4muaxFcYUKUVy9VDymbZieeragQE0eHFYj0FLBv41yLMEnKtltmlwEOK2V7CgiMnmaZVIjZE7WsD5GME8U5+5oCPdZnyHvtqRmTIuGspbFdhEhCig8GCRe3sfZKEcEyg5QIeQedXoXFa1FX98A5w43P4FxFMzxBNagQ6QMpE0LsSJUn+xFT1zKxYlitL2kNzGoye5f/1dilr6Z2Zi1+AG0s06MIm1ozSjVrE+XIwFHPAn8V6MGFKkaUTHaCaMCoyeaKdHY1IPV4l6au8U7w3vU02eKlEdSoTVgMxR+gth3YvoRrlqlSh6SI04zLuwyIsPUsITdIbokqBDfA547leBHLAZteRIYDvCxStescSJcYpY6V4FjwgU0V3Kw1YYnaZYbeqCSTTMlS9Emi9k6XX6NN9Nr46xvfFW2C48eP85M/+ZOsrq5y4MCBV11l4A8/+Qi/8aFP0gHSH6RYoeEk2ZddAEYuBihAdIXStzZJ/N9+/U954coWnTi++NxFHj61QbYEKBWCJ+AUbjq8wi0HF2nX1xmvXeXOE0e5/fprqZ2VCF3+or13tmkZaO4z/ohoQlPkpcXnHqRkHcuDwN23nuDw8gGkBxI5X7jjWYTclyoRSDmRc0L1L6gyfDuHFa4G9D3uAmxATHr53jK0bxV4H/aAqcAM6OgtslIl7rnlGEeXF3rRJI8RMCtVHXMBvGcG7FM8rVsoIDbrS8xZmV5+jq3HP84wb8LpxxEn1Nri4hhvLe19v0leO8exxQHHD9QES4QeqPny+QumiDim5vjs4yf5f//mH7PV9tK7ufv2brEGDz58ki+fXMeGw8Jj76sb2pfTjdKeaSOlBO4cIq4EDn2wVYoX+47V/l6U6lMPqC0hc1+QyXiLJXAFnHU0eQd94tOMH/lzKkl4nSJpjF78Cs99+FfQyTmctZAjpomNz32ArSfvh55+2EtAcdeJo3z/DYscSlepcof2pfhS5dqv97EXaGrPo395MPDywndRuSwU0PG00E0zYMMVHnzyHB/800/P2xA5Gz4ZLu9ZV0dy72VRIRZQNWLO1HVTwK8Gg0EooOLgCJZYbhx3nDjMME255dAK1y2NGDKmO/UlLn3kX2Pb50kXzzKIU5x5jAaqBsZXcXkC2tGpZ8KoAJYnV1iIl3j2E7/H9rMPsNhe5uRH/heOxxe569giCxhkJUsRkRoFoSJx63XHWF2qcRrna9mcJyYlZ51XgF46Y6+Nv87xXREMjMdjzp07x5kzZ3juuee4evXqd/qSvu6Y8YWzwen1CU+fXdsTgtE8B3lFg6kVdsFMUGaW9WlfJNztIqeuTpgmR3KOzWi8cL6UuMGoDEKGoTne8frr+YX3vZ3GMkti/JO/+y7eesc1OM2E4BErVqd+v4mw7UkcF8VDAe2z3Nzteyx78xstAcuBofDf//33cOcNh2coQdBCXVIpG1imOOruZke2IrO752s/q0bsca6t/0z7f+IbmOx9AMUiGDMDK86si+mrFNmYg/9mRQExnavOBS/MW6wmcwEfEeHEwYb/9S+9hyMrI9S09DklgPMFxFYPsGrQv2pB8rd+WAIKMmIdSEvcPk+zfoph3qRp1wmjJbAOEaiIDHbPEyaXueHwkJ//8TfTDBwpd3iLJNXCN+/R+9pjEyRUXFjf4ssnL7Dd9jiPfo3tP75s3//KHXvpkTX/+Zdz6/s1Yv38JjMmBhe2JozVkfC9iZLRCUSR/j6XzK/TTDIQ11MIpFDxnPRNqJ5dY2XaMTNCSvOr8xghT8BasgOTohboMNAxIW0xnF7Ab5/Gp12qvAvdGrLxLOHSo4htl065ZSRnhtvPM+yulBaCFKaPV+P973gD/7v/5t3cddgzpLBCciyfWeaVCu3nqchra3/N9KJSX4sWV/wayu91MfW4E2hjZkLD1c3t/tUhZsVpWZOtwdQK/XiGL/LmURU0ZwbBoVb68gtBEQ+V8wRTllzLnccCCzrmx97xRn7wzTfh0hXy+ikGVx7CdAPtCo5FCLSyQNcskyxhFkGVrJ4oDdZ1VHETn7aRzTP47Wdx4+eor36Fe19/mH/0k+8oVUUnxEIaQVRZHjj+u7/3Pdx8fLGfQytVRxFaFSY2q63NdpkyVwmYWBHbynMthtIWey1U+ObHd0UwsLq6yt13380999xDXdecOnXqO31JLxkzSN1cS8ASmhOtGpfaxDMbRudHOC3WtrhBKW4aXBpHPvDpZ7g4LoeuJA8C3iBocQ/zMqXzy4SuKZmI92xu7eB0ACLUQ09tipddDsiUhSB0oaIy4+jAs+TAS00KNfjMQtzEpS00T1E8QmJqBdsgpkzcAppbvEV83i1gI8oDqVCoQ2FA5YQba8eKCNlXOISBeNAKYbuYoET4w889w5+eirShxuI2ZpGEgcWyrWrETMvrW+FxF2rZLKf/RkYiY0RA04TOlC5HMkUWV7LizBirxwLUfky2VAKqPEZzRFJk5IoYkBfBzBUzXOfo6hFL0nJj8Ih3tL4uGaVlTDtcd5VJdZA0OEZOimalsv6KDCCQ177M+hN/UHjruoJR40TJw2uYhiV2qhNEBFHDn/woEnc44Fp2a2FLHLXucKVL/ManTvLilSlIYUOodjhtCc6xVh8lOo8TBV8zA3zu/+qRLBhKkr6S0fvY7+2yhpH7v6Z54JpNUU2cHUd+5eMv8LGTU9QnFnymVseUIR948CRPXt6hNqX2nmlqaaVQDCtfAJ1RBOeUSjJjKVLawSKtGVNnDAKc0AlOjASEyTbD5z6Ku/IE40HAQouL/bVPNklXzxNIhMvP4bqrOF1j8vgfkbaeo8mGRIfKAmB43YaUsC6SrASrLmuhy1VwcKFiZfEAEhtMAztTYSJVwUGYYL2l+NhCsU+OjlbKLJXR9VO4Z1Q9CzxVFXprYczT5MyCtez6JbowpCHTiSPFFrNMCg33PbvJ73/5PJZg1E0Qgc5lpuIRFznquqKCqVOuC5kknqoZoLbAAT/mmoXAQrVNUzkGuxfY/dJ/ISUjMUDSFoSa1CwDkeABKR4aSRwpCS4ZwRS3cZpq5zypywx3ruLzGvHMQ4TtC3iU1RqSBBxGg1F7YTEY1/hdbmtg1UHnR0QLDHSCpZZNBvyXz53k2auT0pajmKAZnq+cu8qvffY5fuNTz7E2TSiJIsJGz2h6bXwz47sCM7CwsMA999yDmbG4uMif/MmffKcv6aXjLwhTXa8Yd+nqFs+evsiJA3XvzbOnLCDAi+cu8Ru/+zHuvv5nWVk4hlKsccW5XlUw4cioNOxhrGYuZaVTf+zIEjddd5yrZ87SBKi9R1ECSuNhao6WARKUXanZ8Uc47JfBfNloS3McyR0pTsoB127jLBFTR6MtYkrqGQR13/sWIJjNy7jSg+SKq17CDNpk/PmDT3LywpA3HOlT7j47h1ID6V0AisKk2ysX71Eav/7Ui1nBBfQbbVbFxPUlyR7NJr7vo0aGwyJw01FQ0BFDpcg6R9jj7Ft5iMQlKqAxiJRSr6MIrwiCtWPcoWtJOiqkSylWrbXtgkUsK9Mrz3LxoY9y/Rt/sFRITtxFvHqB6vrX4/yYcV6i1gq5dInxsw8x+L5NRhrAGiaxJsuQMxPPlx96lNetjjhy5HChqVqmdsKorjBX9dlpAUTM1CRmWWj5UHtHVKmQZIrj/V7Lavb9ly7v3vxIlasbu/z2H32STT8sv6sZh9Am4eMPPsbhm26ArCwMqtKLtgBquKQMxLPTdXhxc/JjMCVoLusH4+ZrD/O/+W9/kiPLFUaCPGH75GcZrj9JyJ7kPJZiaZ1sb9Fub9FoxtbOUudM7TrOPf84SwuHClMnxZ4P70CFzjxVN6XWDvVhX/Pf8F6oq6pUhkyYRiv9+WxzC+ksnoRgThi3IL7XrDBDZFb2/uqe3J4LaWmbiPPUdUWXin+Ik4KwTdoHx87xxa+cYjpNpOQ4vHqA9U6YtolOQTUxcGU3OXp4le9/y+18/OyD1A6Wa+P977iDt544yBtvu4aRV2z9LNsPf5zR3e8n9/bOOlgkH1xFzj0NGFIFZNx/1txCGtMsNtj2BSzvEvyYSjYRU648+WV052qhEWuHd8UsqhHhH/7oOzl2eIXX3XoLJw4s8uyFbbJ4Yo/dcOKYJuGjn3iIwz7xhne9rrw/hXL5xAtn+PU/fIzVBO99w99hdTDga0zra+MbGN8VwcCTTz7Jr//6r5NSYnFx8VVBLTRV8B4oroNuH5e29D2N3JdDW6l6YBu0OpPrLLrqtQvk3p0x5XLAgZJTOYRFhIF3HDu0gjt7hhCq0rvMiVqUkc8MbEKtExaoGOSOq35IJ4GhTghpjPm69Gfby9S6Sey2YXIJi+MiZBK3yOEAGgZFuc+Bs+qln5e+OC4zyFehjHUIu9kRLBdUue0TG6KUB8fi8EAljj0FBsWZ23cwfd0ZL8FDn+Qm54jiaERw1jE72Iocs5ZeMJ4tg0pqdtFSNXBVoQS6Ht8hRqDYs+JrTErm0l9xqSxoB7klugY3OAB5DHED08iiL25z5jLVZI0D7VXC9EWUHfTED7HRPcOB5ethfJ62bRg5sAtXCGkX360zyoepckU79URZ4cK2sWU1uyZ04uhm2IWcCT0AdW+l9QXX+RTOAKDSBwpGZUVXolcomJf2y3Dz+1raKfRtHsVSqX5JX6LGFdZIsYI2Yi/53ACinklr5CQEPD5nKjyOCucqAtCkjoEGKssgnsUm8KY7joIb42jAJ7ytUU3XqCJMnQPdwKV10nSDKgBZcXHCwAXInsqMKk3otEW6TVzcACm0vpQzVR7jbBuxZQqTv8yRd1BXhbmjZoxbLQBdLYe8qhExpgKjZCTtW2D7noX9/33JKrViM1wAo46JAaHCS1daCL2SYcxaWlpWaHttKgHJ4cNHWDt7sagq9I6moQp4EQ4eWOLowQHOEgOvLLLL3ccPcHxYc/DGYywwRmip0zY+bRc5aBVSGJAWj+HdBYbsIM0QE4d3DtMxYhPcygHC9nOIr7HJJg2bSExUeRexCZYTnoi0l8n1MbwLfO+txxAyR1YXqXOmckaVp8SwwMSaEoiKMI2JudT6vv+Pvqazmih7eiD7n/fXxjc3XpXBwMtpOiLCP/2n/5Qbb7wRVeWBBx74Dl3ZNzZMte8fgpqSct7r2RaAcM80LgIy09mhApy9us4nH3+G49ffVJTEkFKsFSk8+J7rn2ZcQKAJEFA0Rbz3OOcIZAaiVJOrrD96HwfaZQ7US0we/C2Wj95NbdfSvfB5po//Kf71f5vmxnvZfvjDDM8/xiCt0z32ceTqWbCG9tRjVHeeQKF38uslQ+nzyVkWTV8Z6OmDirHTKVOtaPIunhElv+7zQREurm/xkS88y4+/824ONRXzUEKAWVb/NR78v+hfBcA5nnjuEi9c2uAnvu8ORmKA6zfX4lIXqsA4V/z+A6d4w/FFvvzoaaYyQKq672dLn4H0KukOoq+J0tu7UjrWXkC2LzJ5/PM0VYVZi119nitf/iijPGaaG9QNyMHhJmPq9bPI6YcIVWK6cCNbK56lhROYDMlhSHZTzA9IO1epLj6FlwMISpsyiYonnzlFao3UJgLC2lbHNAvmPVUIc3ncGW5hL42afZJioESPp3DWO/XN/eWtX3G92ZLN4KO9boJRVA29x1f1vHeee0lB8zVZIpu7vZy4RZJU5GrIl586Q2xbfHDFZtkFKGQ/Dg8CR0dN34M3aoHgFJUaswpEqWRKpWOcDXHWMn3sw+SNLWT3Ikw2sBDwpkQa2uoAuAY/uUq9e5H0/BcZn36RwYk7qQ6fwCZbpJ3z2NppqqNvLDGn69ewQSUZJ5loNeNUgtiZgZWK5+mzl3no2Rf4++++l0m3Rcp7eptfc1+gP9y1+I20wEc+9xTnr+z02gfFXtijdAqGJ2ajwtFGw8xRO9/33RVVI6nNzYdqL1QOKit04olLNJKpewlrISM5UUui0klZDeoIYchOc5xUH6HuJrh6BFQkC7g4JVkkNUs4q8nViFo7rNtBc6KylpoCzIxXz7Lz5MdZ/r5fwtdDKk2YGA1Qe8fIKUdlk00R1rUpdF41gi8tmLIj9qgMESbZiK4m9gJNc27J/irXa+MbHq9azMCsnHbhwgU+8IEP8Kd/+qfcd999/P7v/z5f/OIXv9OX95cO8b4ApaAHRdlMkgejtBCkV5IzKZx35zwe4+zaJh/6zKNc3m17ulPG+UBWiCnPAUhms83ain6AdohmqqrCC1QOvu9Nt7MQ1xk/8sek8QZeMvGxP2K48zxBd9l58RHcw79Dd+Fh3Pg848//HnrmMeoQqc49SjO9hEs7tBdPIlbAXJVOkbSN5UzUWeC2dyxXvhxI5f4Z06jgAu97+60s1UVLfi7ninDm0hq/9dHPcH5tA+9mNsm9sA8vfe2/aOz/iXlbwQWePX2OP/n4g+y0HWaQxNMZpKzFMEiEtXHiDz7xOH/+6Ivc9/nH2Z5mxBXchO8lU7MIyXmyVMRqgbEKQoQ8JRqAkncvMH3hEQZVX5VZf56dx+6jiptkGYF4FEOiUo+3SScfwZaXGd75dk6862dpbn4LnVUFMFoPyfUimDE5/xzmEp2bEHUXL5Hp5gZMI406KnM8e/osm9O8J2RlWhDaCJ0VWp/a7Ftzj75ZfFAAfOKZGnTzKGEPyvry2Vc1FE+nMLWiyCfOk9TAB7IayYw2eTJKqJWxJnZc4PnLV2DgcQ1YACrBidEY/OOf+xF++n3vBinVneICWSG2UDwC8rTfzAx8xmSbfPJj2LP34TdPEyxCaABPNzpG/UP/AFs4iGvXGcQ18qkvMf7S7zE9/xikHarpVfTSU+ycfQIp0oB9WCMEEbzkgmkRYX2nJVIqdA5BvPDIM2f4zEOPl/Vhwsz5sKzDr7EvULQCZsZrUYQPf+YhrmyPqVwBxmVTvCmdlvoTLpCsF1I2Cg1VFbEehW+UPr8mgii1wDBA44VoDjdLDiRgVmOuIaYIaQqaitmbBA6+8QdZfOMPFl2CapHsGlL2uDRBScTmAK1bhLf+CO2hG8Fy0dXIRebY5Sl5+yLjr3wSxleodAquApkFqMrrbzjG//mf/Rj/6G/dxYDct1ILqDf36dFcyEwMH0JhoIh/iZfbXzbHr42vPV61wQCUCHoymVDXNV3Xsba2hveeX/qlX/pOX9o3PvoEXm0vGDBgJvxjQJbCW/ckWvGss8h2dpgPpcfdbzYpG/TedynbnPdcC7gci4GOKU4gSObEkRFD1xJ0wtgqdv2IYFPEWiReRdImIe0yai/ibIvl7iIut8jSAYJNcdbiHPi8A+TeEnYN8mU8HYgVfMG+Hp7vJWZFSrCy27bUleddrzvCyKU5H3oWDCQcOzIowDkMXjJPX19Ody8YKL87e93oAtu5ojOIVIxTQblnHF6KwVWrnrEN2UyBlpqkpc3hmIkzzTAN5XOZhCIalXeQvF6ommZIGjOIuzTDJVRqfLfGUncB0gRTcNMXqbtzyHSHoRZq287qjcjKdQxO3IMsXAMIQRIZQRcOkOshVfBEgeQU6BhUivTyxpvTyFaCsXmSHxX9fC1+EG0qjpStGRPKoZOF3lZ5Hz1OIJswzo5dM6azIKFnmry8Q1MqJIGUYWxC50bs6R7OpKod5io2dqaICEsDQcVoTUjOESqoXARtEad4B0Eztx0bcXSlmWMdFAMJaBRc3EHa0zQJzDVQGd52GY1fZHF8Dh/HmASiNagEpn4RbngzMSwh010qSYTpJVbbU9TdFdAJTDYY5DVCewVSzw6QXjcxAxrxrrCB1ncmRUWxj6AMoXM1ExqiOLbHE3ChgF/7mZozJPaPvi1YAIgFGDn2CyRXFXaP9Godlom57AjWqxZ2WjAGrihklTaBFSEz7x1OjDp4xMBbRxMguap3Jp29f6nEeMv4dptALoA8HLZ6K/HoHWi9QPZDzDfUGG58GWxCG0ZQLeGvfSPt4CBOEmF6FfPluZFum6pbZzFehfYqki5irqgMloqIsTpsePtNh3jD4QEh99RKtRIIyJ6i6b7pmglbv3b4/zWMV20wMPPAvu666/gX/+Jf8MM//MNUVUVKidOnT3+nL++bGkppF+wPCIB5Bbc4eBZd9UTg4lj47ONXUOeLgcmsNZDSPIjIWec6/wEYNgHVhBMprQKUSgxPLj3duItoKlawccrOp/4j1bmHyL4hXngR0oSgLVEGtIvXYOLJeJKrCojIGY6W7acfYPuxTyC601/7/CguSGApoj2j4RA1Y2cyYby1xuFaGNiUbLqXmVJ8GjpXCu9iOs9K87zM/Y2OvU3DgIxnVwNThJ2o/Jc//HOu7nR02VDNeB9oM0QXGMeShamWioCTXpWQ0r9tMIYkGpRalfGph7n8hT/G5635TTQz/PJRWr+AtBPqtFNeL+0w/dy/58on/w0yvopYx0Qdk4UbQVbQ6gDqhwSsSOh60DCgdQPMD1A8WI0oDAcV6oVtV/NHj5zh//mhB3nw5BXG2dP1mWMyoculMvDQV07yyS9+hSlGEunvlZUVKWX+E56pCH/8icf4ynPn5g2Q2X0QmOM2jFJFOL8x4YN/9gTTggjYF7wJ2RxJHecuXkFMuX51ESYT4qSlMsdAjcODmkGONGKYFmGaBgjSg0ApwQuUoHb64v1s3ff/pdnYQKwBMQapI4zHuC6RcyDWS7TVIs4XO2JcjYYBmhxdBrQj5A2cdlgb0dQV+uH55yHn/hkr688ZHDq4gmlCDa5u7hAVco/gLaFZYKIVO63y4oVL/TM++7+vPYp5U1FXPL+2y6Vd6xH4isqshaO0sZcsBkw8bdLSEgiCWXHbzFnJqlS9hbmoMqxgWDkcWuzM+/vtKWua2OLaTVg7Q9CWGb+k9Qdo/SodNVYvkcwxzNvY45/CX3yGUAccAfUraDXC513c1ReI6siuKZoEO1cJ7SbdxWfZ/sKfFOwMOhcudwaNKbVBpgbrK03G3mftj31HaX16S3jLX5UWvIYY+ObHqzIY2OObg/eekydP8oEPfIAPfehDPP300zz66KOv5NUw20D32Nn0G+RsY93r0tq+Q6zfbxHK4ZZf8nrFyXAPslX+nKUYqDx16hwxg/gKtdLPbS312TOkRN98KGXNe15/nMXRAB8qZm5kVej10w0W2qss5Q3EEtpt0z70ewxOfxrBmGxcKfQ+ESbmicPVwhuvFxkcuhZoUU14S1x9/hGuPvUASFvo4s6jPahOrIjNOC+853tvxzvYnXYsjGqOrS5SkYoOQS/7Vw58QWXWNrB5lWH/AfOX355ZgLVnOGR9ANVq4Sp3WXng4afZmOR5K12cY3c6JabMJAlJ+mCKEoSquFIKzS2NKgPNVCSCZXZeeJgrT30W0Z15zz0RyKODRLeApoxoJCvUuk185mPokx/BbZ0uoisrxzl2z/vALxApADxNhVKpzTJp8RCDG25lkgw0IDrCtKKuajIw8YHPnN3mg194lk889GwxLzLft2CU1EWiGc+9eJZHnjlDm8umyzxwm+nqG+JrJjHz2UdO8uLFq/Pv04sulTW8ZwWtwIvrUz77yHMQGkyKnHZZliXTi1nY3h3zupuO877vvZXahJCLFsbIlH/8d97NHdcdpeqphljCM4Mr9u0J6zd83SVeeYj0zJ8zbLcKHiUlQgZyETPKuWLhru+necP3oTkSpCBagg/QJcK115NjQjQW5cm2LZ/SlK0Xn8TSFGcJsTGzCtg73vJ6Dh1cQcyYTCbkvsVUKiZGl4xpgmlMbGxslWc/v6T2x0yyGopGQbRCY8xaKJxnzl3g8tYY8xVqBTA4+/WYZV6ZMSuiXZ0q3lvvU2KghcIaiq4zg6bmwNKAf/6LP8qoKS2rovKrOMqaJE3xmtDpOo6ExDHBOZLUJGo69dh1tzG48VaCtFRbZwhbl2iaGqe59xPweKfY1hV0souJQ9KEPNnAa0vaPMvOsw8i3TZCLu+j07KHWp8cuVB8E6yn/paySf9Ql/VZ3F51nnDMdwLh6+0Kr42/YLwqgwHnHN77ORju0qVLvPOd7+S2227jp3/6p1lfX3+Fr2gmPfPyeDQjxFIatVLeS0BLid59LxMiZkQtjAF6C1pTLX1OEUQyag7JA0CpbQLO42ShVHPzgEZg01qqHKmSEpND6foHCq5Z8fgAdR0YmOGdoo1H3TKdG4IN8LlFrAUtfV6fdxhYSz2+gl18Cs0JF8c4CuLeaPCHbqS78jQ2aaHLjOIOzc6Lxc1MQbIwNaVKu0UspfaIb7l1GWpfBEPMA1WFmMdppqVUSqZWaI2SMt6s9NZ9qTaEXrRkthF8rWEUFLsRyFqWu+vTtDZDpYaoY1wdRIAmjxGpsBBodUyMO5zZnLIVRmAtPk7QHIh+QG6v0J79LNJt49wiY1+TJLM8XWeFHfAOW38WW3+O7Cu0WUBDhaaWEMdUccKg3cFypEpT6M4xHR5gZ/X1DA+/DSQh0uLTLjsM2W0WGC/ew/rwJjh0DW07pcodaE0OiywOjMU4ZrnbZjus0toyY1tCaHF5SqeGyC5hWih32Y1o6wWCwcBKDzzhwFyfEBpOlUBiUxqyBZxBKwMiYW51a1T0YsiIdDy1HtmqDuLTLiZCSLtYbkGKRn0kkJznmkHmhpUBravBFcT9gJbXH3GMXFeCScu9CFFCe+0DM6PqlfokePy0ZpQrxG8ibgKpI6vQhQO46RjfbiLH3sz04NuIwfVgwCUazYStK8ixw8Q8JUWlkwVk6wKim6hrGNplZHoBWX8ezn4e8hrd5pNcX+2yujig0UiVdnAIXZdJkgiaGU9akqt77YGS/WruwyWzXnDHcBKBKWKJRy+2vLATSR5ij6DPODqrSAzmbS51nt0M3mecQlBBcmIzR4bDSGcelwRywmcYhjxPQgZeeNuxIY1lnFqR+fWD8rBIpqWjc8u4tIuLLXr6YYZEnBUdjolbhuWbuTK4kZ16kWCJgVvEh2UIHnHK2A/YcgfIkzFH1h+j0V3MMu3uBpomNN0ZqjwG8aXSECd0Zx/GtZdpfSBJwrFR2FaxtEHEIsFAzEjqezlqQczTut43oo8CRKxvlr42vpnxqgwGgD1JWBHuuOMOrr32Wt70pjfx7/7dv+Otb33rd+CKXrb4ZiytWZfaiozvS2sEpQTmpJSfMfCzviRAn9nP42Fz/e/13bO+3+ecA82oJq47cpAgQhuLf7toAeIsWMtIWxZcybDUDakEgrWs+Jb3vOVO7rzhKJVEvEUqbXHW4a1jmDZpH7ofF8eQplioUbeAXXc3HHkdu+fPs/3CY7jcUlvLZOMi22c+j2OCOkofWkrk75yy2sC1CyOGbkTXQnCeWlwBQWmJ+CvrGFC8Aspn72ekrwzMMtevd088Si0ZMe1NhkrNoZQWE1mgFaOVojTnNLJA5L333MhSVqrUcenCObrpmKVaufuWowwl4SyTdq/wlU/8MS5NcLgC3pKC9nYWAeXS5/+YzY//NoOFAYPFJZx4fO6o201ct4Mbr+OnEW+O7MDd+r0s3PFubLQMriFRYX7AgbvezYE73sHC9feyeuv3YqMjdO2U244v8P57b2JRWt50w0F+8u1v4I5rVxnoLhVKUiGYFREZExJGNCto7GR0VpDmhR/fGyHZrA4z8zosv7u3zm2e7e95VPZoFYNHnn6O6Kui1IxROcgpFpyIKqogOGoH1Qw/gpGlGC0JMKg82YzODYq+Q18dmEk5zzcuy1jXITFiJLKvQCrcNbfTDg9DHCPtDlKNGBy5idisMrzmRnxYwgvkGLHhEtNJob8RpzDdIHiH+EFpD+SWrSc+x9N/9ttYd4Wzn/8gk5OfZ2BFCMy5ct0J6am90HaJqXqm2VBXgatKoOU8JsUtVKQHCfe/9+9/6z4+9tlnijAW9BWyfat5tvgBjQmvud8DHeNpi+EYBMM5x5GDBxBXHP+KkaYjhNIuWHDC8UNLNJQDdq+6ZmCpPCN5it+9xObn/wSnBbHjBqsc+p73s3j8bhZu/2HCPe8nVquor3ALB5m6BhPPyq1vo7n1nWjKsLtOJQZpSjveKM/upOBpTAvziO3LnPyz32K8dhIved6KGnqlto5A7iXae83SfeqgZU+Y1U3ltarAtzBeldTCl4+rV6/inOOnfuqn+JEf+RGapnlF33//kSTzsrQgOExmj1pRzXNlB+21dWZ+hEolJfKeLeS9vvk3MsoDUptx3eoyVy9fYmqlp19rBIxKW2pLDJyh4mjDKl4CYmMW8wbvfOutqHdsfr7DWS5oX1UIjnroSNtnkF6oKLuKsV+hue1t2PLNjDRTjZ+FfCuqiWCJuj2FkyljGeFI4Hp1QhLX1pFblge4TiFD7YTKOTppSAbBEqIdTqT3ZvirPd5lS9Ei8qJS+uJWzFCk7zMW6iZEieReMGdFOn74rhUee2CJkxevgm9pnFJpx9vfcg3PPPIQjUUk7eK6TSCBJQZ+JuLjEU2gHYOdF6jHp+iO3EFYPYaEESIB122jMgRaQgy4lYYoDXLLO1h9048SQ4WJowMaN2T4uneDB5MjDI9ey8ZTW1h8iiOjCf/kvTfy+NMn+Z6bVnjHG+6g/chJnjn7CLhCRws5M1HHjnqSNOxoAfhNCbSqvZ7F7CB72QFUilVzams5+HVPq0AigscTEBUsCylCFkMtEcQ4sLyIc6XdkTMgRTyo8g4n4B0UoJonuYCJsDSqydMJUABkbqbWZxDokDTFV4tgGZcmeG9YNqIfYFWFHr2FePYUozQuzpnOE665gZ3mWpavuxNXH8BXBfPi3RKqghcIeRMSuFCTU4R6VIKNzdMM2ysQdzgYzzKeHMKnE2RqhvWQZjRgkvunuddUiOYYx/K58IFoQhZXAse+Bajl6cfMM87QWihWxSZoHwx4K8Grqey5esYpo+DYyUWPZBojGgIDZ/gUuen6Azxy6iqT2BKqYrRU+bLhB4ybjx9g4Aq2QCnhVYEjpPJlSqU7rKQO5UiRrl48xsotP4P5AcM3vA4OHmLnsQcY1DU6WGJbPI1vWL77R9EjN6Mn70dUyDkS8hhrt4jZqOMYpwUDVCytpyxOz+GnFwhMKZbTNceXRywYbOy0BfCK4Eyo7LUD/9sxXrWVgf1DRPjd3/1dHnroIZ599lnOnz//Sl9Bnxu9dJROXNG46xuczBz8Zv2vomsPXvb+7avNY/bi4L0tmfmf1BLihJATSzZlFDKX1jeYjKcsWUc2JWlFzDXmhOQdU7+CygAoB39lU2rJcwpPMc4RxvURYr2EkOikKVlkCIXf6xfRagQ2oTr9abrzXySKI+RElUtZNFMcx6AgyxtJLE9OUV15isoK9ahyRuc8rTRkLeyJJ17cYH3czoFi38owHBMJPHb6Kmc3x0UG2VdMqbiym1AtcrNF2txobMqCg7oSsm9QV5e7Zsaooc/8MxI7GiKC9lrvqe+nB3waY2nMwDao0wZRKjQsM64Os+0Pl/USaiRYsXjdXWdn3JEH12L+SDFyot/3zUE4iPpr6PwQCyvUgxXc5efpnn+Qo37KQFsODSuWfXHpqyWSxCHeMyLzwoV1Hjs9IVJzerPj6fNbTAXOXt3m9MXt8k4v52dRggS1fbi3/VgYlIJ576tZ6rBU9C5UtKDvNdNUdQ8E67X3tRdr8g4R6dsNxZjGXI2I4+DAsbL9AuHMw7isdK5mikNyh559mJ0n7oN2i5mXhzQNmVACStcQrfSRcrtFt7VWNAvcApsLN7ETjoCMyKq0YUTnD+FcjbOEXX0OGV/C1QtEqqIroRE/ucpAJ+BqQrtF6LZBFV95mrpmMFzk4uakBzcK057mm1PGW1njhSIHiPbBomHmUQKTJERqXDPqqaqu1+oQvCY8WsCXM3ZGalmtXTFLsoRS/AYqVSpLVL7FnDBpE1Ud+qqjzQP62pV9pjQyZ3dQQRNqDpUGUSXYGHx57pMb9etzxCQso/WNTPwB0A71hRXiHFh9DK2vIfdaCOID7K4h21dR32DduAQXM3VLUUZ5E848heQJKkJ0Q4KvMRzJ1axHz2efucznnjnHtCCqX2sE/DWP74pgYHFxkcFgwP3338999933igIIX0ps2esJAj0gSIj4Qv8zmWc39GY5BcwWipyp0Zvo7C30WQig/V/a3LufWSkHmhniyqN8eHHET7zzdbztrhuZxpalUcMv/tD3cmRxxFQrsgyJDrxXmtxSVw1YRxZfSnCayVLNNerS6BByz48wPXgH0Txx6QT4mV97oToNV1bwSwOmz36Sq5/4j0hwBFWSHcRpoFKossNYxExoJHHcXeLsg7+Dd5tEHeO9I2MMtKU1ZUccv/qhT/GF5658PfD1NzAc0TxbWfm1D3yYP/r0Q0QJRN+wGWse+PLz5ATOGrpYONV3v+4mRpUj+sykqmldQ3I15kPvSUB/qClOu9LXFqHyVgyl1LD1i2yfPknlyj1NMkBlSFq9lYW3/Dg2PMy0WUEOHAdzSJ7iBgepj9+KuEAgUpEZAXUQ8CNM6rIOnKd2DcOtM2w+8kmqvEPt9qkvpIS6Ym3tnOOtt9/ImUvrPPjYBdrs+PgXn+D3PvZltlrHUy+c53NfehIVhxP/skB0r+aaVUlWlklnhWVQ5K6LAl5nvQSUeFLf5h/VgUqEOlT9mt4LBlxW6lAcIJ3MrLNLGT0AP3zv7bz32sj2x34ZmVyh61sbMGX62Ee5/LH/hW7zDODpopEXVonNAcJdb0OWVpHcFbtk7UjtDlIPkHqV1Tf+MAdufitQUYWArRyjvv4eVBpMM+2Fp9DdcyQZEMNymQWL1C5D7kAGqBuRsqcSRxWUxiVGA8cnH/gCKRWjqE57gJ8mgnUMQpHe7gxizmielsC6B7Z2GSbJMUkKEoia6XrssbeIWBEaanFEPJPplLe9/mbuvfMaGp9ZGDUMQmAojqCJJpR7EGOkCh4zpa6KM6kTwzlPlIqWPkCxDtIWabyG8yUw6cIiJo4kVdmDpOhxzFIfv3iEg7e+EcEIAjUJlxNZCpAV50nmiqfJ5mWadhtGB9A4RXKH5F2KVqPHk1l77gnyeJ0Bxb1UvafLsKsVD52e8j/9xkf5n37jD3hxc4vk+mbpTP75tVrBtzy+K4KBG264gXvvvZcTJ07wi7/4i9x+++2v6PvPsaxzeC+9RDBEVTanuTxQUmPOvSQBMyC7ms417ExbVMIcTS8vewdgnr1KX/IWJ+CNpMp1hw7x5htXedsdh7E05cTqIj/7zttY1cvkmAmxxZMYxUvcOj3JNZXC9HJvRgNYMfogFx15W7qW4dv+Lmn1ZmKbsOtfh4QKEUPEYQTcyiHs4AkG7LAweZ46rlGbkvMIMWUwvgJxAlb0BWqLHM5XWI1nccQC/BHHSt7huulzbHWRy9HYlBGXO0d6Obn4r3R/hCnGlU7YUUfs+7sdNRvRcXG7Y2ING10mhhHfc8+drFSBwbChs1DuSd+nDgLOErmbIqkr1QAR8OEloKVB3sXFnaJM12utC0o7Osro+/4uHL6BXA1J172FXb+MhoblE2+iOnAQXJE4DhQ7V0epOBSB456GRc3QxlTtZSqJ1LSE4MGg1glZKtR7BpXj3luXkeCZqgcCa9PYgwA9nQQ6E/SrMi2ZYzOM0jFKJpgPjJMxThTfAw10KqxPM7sUCd5WDZ8zhxcXEMvUVclMc7b+qxxI3hdJPy9FBnqmgdEIvOnGw7zndcusbD6Ba08zbC8zIIIkqrTOUncOpxuAFsGfpWu42lxHeMuPsrtwI9os0+GgqnHOsGoI1TLXfM/7GBy9E3xRQKyOXI9bvZVsRdhrxBi2L2Bhke1wEFfVkBMqnlpKAN9qIHYdVdphwJjloAwqZZoSQmGotBnaaEy7WER8qprNTlmPymYsLbx525A+2OqFw1SKIVciIKbUvlQ/k6/YiJmJCetbY95z9wne8fpVlodwaGWBATDMSoVSuCOlnVO5EnKEvi1TgjyHuhqkrCkf12DnFGHzBZpUwL/J1aV1pG1pW84YJJapTXGDIc3tb8VkiJijyr0+orgi8a1K9gNaFSRPaUY1unwUv72J1ynsnsHyTlGl1Fyos2mDweRFFnWL4EBRIp6rredC17CmAybsg2v3rZRvPWl4bXxXBAOPPvooX/rSl3jooYeIMfKhD33oFb6C/flUTxUSR1TjyuYOH/vUF7g6jqgL5Fkk0JcIDIgELmyO+cgnv0Si0LRmkcDLFbe1X/WlOkDRBxdj0AyoUBZFGHkQIoshszBe5/xHfo3DfsIdK8IyW1z+7H/iPe4xbnWXWf/M76KxBc1IHtPolNBt4awlV4vY8DrwC+TxJrawgvR9ZQtDNCyCLeLdMeouM9q5wMLpL1AsWiLanefc/b/C+NJj4Io1scstS7rDSp6CDdlqB9RhgZVzD/HG+AgffeQyv3nfM9SSyH029Fces9aMFFia+dBvHn1lg8ynH7/I/+U37+fFifHv/uBLrI2NUV2zYMZIhQohkAnW0dAxFOHa1RFLtSB5jMstEMAVEyOjZGSNTfDtFm32QE2dJzidkKhJg+O0YRGpK7pDd7O+eisbfokYThRktxhliy50wuIPCGjxFijcxxGC0cR1nCirdWaxcQTghuWKrLnHomQWg0eckKhQM9Z2d1FX1NuShF7X/WsPpajAJYWI8GefeoDPPvoErQlQsz1Vfv13P87Dp8+zY0ZUCEk5ceAAHmjqprjxURz9HMXoJ/jiQ+FEQEuAEKTI5Y7YJe+sM1GYnnuIC3/8/8A2nwIXmFbLqBjoGJspPa7cwMbqG8iD1xGv/34mS7exG1bQwWKJNuoh2QeSX0XdMiXTdeTBMuIP0iwdKpQ4nTA59TQsHEQP3AIyKIdadtRpF6ZrSJqwmDe5ecVzeEGo85jlYWC0uIA44fLGNs+cukgKQ85cXuPUxTXGfoEP3v8o//q/PMBv/MmnmLhREZzqSZk5KWpKTBHrLcA1l+B8WHucE05d2OZ//s2PcW5jh81xy9GhZ0kiQ99RuUjtYGU0xJsWFVPLBFEqX4KBInraVzJ7BdQaqPMO46c+ydUP/X/Ij93HUDeopaVg9DOh25iFhr28eFWcKhzkwRE6v4owxGmFybAPBrYLJbYa4UfLaNeWZGOwiF66RJW2Wf/0B0lXnsflTIUieZfu/BPkxz7MLaMxQ+mo8hSnsbRdfFMwJczwQHtNU30tGviWx3dFMLC1tcUtt9xCVVWsr6/3G88rOWbAsf7oltkjV7L39UliN8/6hbMMrOe9G2WjlsBTp8/1dsAGvapgoR7ucbjVwPVGMkbJpASHC0IlGY/hrWwANZnQrhHOPMg1i4n/0//q73CoydjzD/BT9ww5OtrEXX2GOk/L4ZgTdW6punVMrOjJuxofhGEQlpdXwTnEfMkSqyG4BZRlyIJrO8L6C6AtLu9i3WW6F+5nuv0Cktbw1pFipAI8HmyBmGqCF4aXH+VY+yKPPrfJo8+dp9IJzjKxs1k3sxy0VmbO+gxnr4M9+6levMlyaa6Y4bWY9NTez0MryRlvkVNrm5yeKluh5rnLm2xPIrVzDExYFEeTWhrrpZwtcXx5xL/8Zz/DzUdHELcJOgESJhVOHAFDnCEWce0OOVnBEFhRB/QY0TeoK6qSo9vfwXU/+9+jR28j1ysFdS59GX6+psphbbMAUjzWv4a3Fmfwr/75z3Dd0WWCU971pls5uLSA73Egje9xKihkZXvcoQgxl7J+plQGZjLQc/EhKwVYp2U+U2+W9cK5yzz9wpXCe0cYd5EvPXOaC+sbJDWmqfg73HHjIY4fWsWZkkxocwHR+lAzCB7nAkjBDUDfQ5aSzYp2qHNs0NBdeZH05H2k7TPgAl29SBaBlBBaTDPhujdw4Ht+km7pdRx51y9w6C3vw/wSUg1oQ4OFIWaORF1kfDEwh69GuNFhlm64A1wostpxF3/0Oq7/2z+HDVeLNK8zRKdIt00Tpyzmdf75L/0tvvf2I9QB7r7jBhYHFWKwvTtmfXsHy4ntZFxqA9Eqzq5PuP/R0zx+bpupk/n9dBgpK1GNLhfWULHsLkyPn/rbb2V5cZGrG9s8+OQp1qYdHcLisOBDTJVBHWiCcdddt3Lw4AqSIsGsqGk6Cu2zD4AMwYkDJ1QWkTxm98LT5DMPMRifRoIi0x3qPCnYhjzu2VD9BiYNM2UUqw6QqwUwhxLIMig4AOvADFtZZeHOe5BuinPgwrAEf3GLyekvo+NLzHQWBi7B9llurtb5ybfdyaJ2NDYu4VIfLGlOBOglzcvua1D2KvZXt15rG3yz47siGLj33nt5/vnnefjhh/m3//bf8iM/8iOv6PvPJISy9N00KRF/kEI72vEjLk+70j/MsfDcKbrcmDFiF5yx4xqyFNtfQZhq4MpYcTSoCFMPbXIMfIOZkKWgcZ1V1I1nILtkpzjxRDx1E3BVpu7d4w4tOZxfpO4m1NU2IhsEVercliJ0GlBrRRPPsuUWqQ1Ex6jPSL0KS0fZZhFjqaCBnQIRfIcJZNcgzlNVVUFn54aRDZB2CusncbGjVc+0GrArxSMhpAmjdIbUrbHhDzAdb5Esc0WWyG7IUDOVZSZmTDNzFDKuoKgxIYvRiZHzhJRbOjOMSNKiGS94BmYEV9PZkBYhJsX5TJIBXS6KD2oVKbZ4l1HnwRm17VDlzNgto9QsinB05KnaS8j4CkPdRLZP46nABlRxkxg3MV8RpmtUaQs3WGTqD4KMCv2ShOCxVEN9BLf6PXTDGzG/iUlEpTAcJPvSXuk7y1lAzJfDwiWyGMmgMrimDiwEEGtZrmtGqoUa6jLaBKoItU2o1Oh0QMzC1rSEsVMTYh9kOlVagYT2AK/EMGckd3RWDrAYllkbL+KcoZJps3BFlhHnacyYEoguMnSJhbxNY1OmvfGOWqSTQCOZTMD3ZkQ+OLKHKLngUqRGtWOgO4TsMKlBlsmaWNIrDPMlZJyBSE4TWLwJXb6D6EawcD0yWGUx7hIGAy4Mj5PrFaoEwUqVBDxBhrioIEPCwlE6bbDsGViLVAtw5PVElrDNJ8ndWaahgRyo0hCdbrLabHFUI1OUA94I0ylQDqoh29yYTzG1zEZ1mGWLeN1l2y2yzQEEyN5xZZpp28hEMztktjtPoyN2W2U3FZrtLctFWyRhXK0Oc2lqTDWiHsaupg2r1FIxdFOaoZCkBL/SgxMrZwxdy9AVHQlTQVRJLuO3zxfgpwqeXYKfkkbH0VzjUsYssBtK86Ppk6zCPGkhT9F6geQzDGAi5TM1eQtYwbSiHSwgS9dBSnTe7xkp2SbDvIm3CAZqAUeHn2yyGNc4inE8XWbJTrHhl0mpKkmPVHgocW0uwZJiRCtS2n3T5TV04V9hfFdQC5eWlvj5n/957r33Xg4fPszrX//6V+y9+6Lz3t9mTVaKoYqIsLbT8gcf+Qzf89/+cL+twzwOMyPYTN52FlYUmtdzZy7yW3/4OTTvM/BUqH2hhClGcA5vQhWqUsJ3grhSpwjBIa705MUSaEQ04VxA6gZchboB2k2Z8YvNBDfZYe8dHVItsFuNWFm+le6G97Jw7A3YrlCtvg7zNSIZE08RNa0waQqO0tUFPbxxistfeYjV9x3llkMrPOcjjbSIjal0k4W1h9jd+DRDO0A33uTF2FFpS5uFQc9qyK4YwFg2nJ/JsPY9zKSICa5IBxZBl5xxLtD1fO4qp17aVlhQw2vpU1cWmXHpDcgpleqNgAue6Ae0boFojsXFRRqBoUZ2H/044Yn7cFvrnP/sHzDSn6a2a0hnH2Hz5OdYyQ35wnO4i0/gBkVDnr4cn3GwdC2T7Y6FELAwgtU7YOVaRAYEjAj0N48+Re8zoVJaKtxxQU1wmkGhkj6z9gK+IfshW7lCfTGzib5GtGTe4zZz7tJFvEacZryVtWhiPSYF0KLDoCJEMVqMDphgxJRKZcAJaxuRrclMsGgmYGssNo7XnTjAtCvmSFFh0kZkkFgKntRFajGqXrSrWEwXcyI0IapYl7G4QcMGznbx2qLdlGAta08+zOEbbi2un26AmetpZyVIMDHi8CD14PWIGyKSEQsgvogcOSutI+fIoaFrlvEHF0nnW1K1ysAq6naNjU9/EiTjXAVxG80TdnamBLfIWn2I7McMamizQzCGFnlH9TRHDqzS2JRgEUeDuYqpes5eHnP+wgZHnPE/f/A+7r3nLu6+6w4qHdNox7jLfObRU7z5jTezUivHRoFrlgMXdhJRKn79A59gbZypBCqMoJmRV7xEakoVwAm04nGupvaem48sccuRVQZieOD6Zc/b/CnO3/d5Ru/+CXwe0+RYDtyqQSfbYEp2A6IfUJv0iqhl7yq+CAO6sMR4+VZWh8eRm9+OGx3F3AhbuI7tG36Q6dHDLI2uQ6NgrilmY5Ygd8W/JJWgwlsshlBxBzdZ48Zqk/X0JGfzGit6PdIOSwVQ/Fztcl4xQ+jSPuwWr3EP/yrjuyIYePbZZ/nVX/1VbrvtNu677z7e8pa38PM///Pf6csqB5U4qBd57txVOnNUbkYT3O9S2Bv4sEfaMhG2Y+TM2i7QlD4ghmWlqQJTLVG7cw6vUNcN5isQV1zVLNME6/uxkSpv4m0bi5fxxF51LJAlFMR7XMciWG6RnYTXbi5E46Rm1wkHlm/jxI+9GWsCC3e+gzi4iSTbpdzZDEELalnqYdE3z1tFYW16lnTlRaTb4J7bbuHoG25i+/nPIXWHpQ2OT56lnj7JgLsRhO1WqRDapNggFEfADEkVm8/fjHDpUJ0BiKpyzWqAR1WYIFRS+tQ+lDJ4PVOok6owH/pqDmbEGEu/tfdwGFORXEOtHd93z+2MgqfKG4yvPE2z9gxNavFrT1GnF1gJR3CbTzLcPYUPq+TNM9TtRXT1dYX/Lg7vA+Iq/I1vIK3tgGRUhBve83NIaMBGOJQKPzdxecm+1l+nONe3phTJW0XLwbbLunIDsgmZipyVJZdZ9ImL2SMSqAR2orI9mSCWcL34iyFMe0GcqQlDJ0TnSCJ0FCR8MivCRRrnm+/upCXlmRMhc1vjlaHwk7/wA3z8c0/zubNTzBw688bIGWcRjxGcFaEbMXChN+5WJCk+Gz6vMah3EVqIgrXFbEc3noXpJWoSOFdeqy9nm8COH+IP3Mod7/yHyMIRcC29WAOIkENGqoJbUFfTDlZZuuf72LqySTM8hmXPUKb46fMgi0h1GGnPIW4TmxrSTalcZJgnjILSmSc66DBuTKe4JWxzJY8Zpk1qt8SWH5LNs7E7YXtnh0MLNSe3HMuTAbdqIqQdyB4Jy5wfC3fFzLvuvp4333KMf/Dj38OT//5z7EY4e2Ubv3SogAJRvHaMgoAv8IiZmZM4JaeWUeX53/83P8qRBirtUKm45ZoV/sd/+INc/c//knzlKE17lkGKEFaQegHlEkgm+SWiWwEriP9yywWzooMxPHwjN/7YP0eaVU782HFscIzIEHfgOo79/P+A+sTWV76Al4D3DS44IGPZiiBZipDHRUchR1wc4/OUt9yxwsoLF/ji7nmWpuegXiqrorfSlh4nMGNebW9PgME8OHhtfPPjuyIYePHFF/mBH/gBfvzHf5zz58/zW7/1W3PvgtmQlzuEfTvHS9hZQmee0CySZC9rmvVnysbpihten+mqFETy1GBsoZQ1Z7oEmgnBY21BNjtXAG5N8CXwEGFYBQaSqUVxOBqJtC98HtldI59/nLB7pWwYOZXMME8YP/ZnNCtHGcgUJi1NSj0iuCDmq0oLaHB0Da0kFkaLCBVOC5XIRgeh67AU8V7RU59n0m5Qj8/juooB25gmgnTULhFCYGMy5svPPMudeZvGJVSFMRVTGSA2JWsmxrLJfu6RM7z12kMsVYGZHOE8pGoa7n/wce65+VpOHD3Q++7CZmvc9+hTvPuNN7NUObQK/WElTKRm1y2ylNv5DTMg59yDJMH5UlJubMIquxwdniiYgDQmjC8Tuk3UPKvpKovpMgvdKbrH7mMxTWF1hGycIYgyXrqesR4DGWLsgCW0XiK6CnzJTlNzrKgTqiASCS7TiSfYVz+kMxS1iOHiNuMnP0n9ugXGVx6nOnAN9epbGXqj0sjhsMvSpUe5gfOczgs4V7jqVyeZzjWoTOjEk8XY2G352FPPcfv1Jzh59iI//uZb+/61FOlHFWaiA5b6HjSlX5vxTNpUNmhATGnEWA6exjqcQdbe0tiUBZ9pSL1TYmmvFXxb6P9bmBGDNIWNM0ycYzEsgCyj1lBZx2jjMdJjH8Gtn9qz7gUgYO4AO4s3MBjdggyuL+GVmyB9EI0Dc4q4UqsRMVQqdLBKDIssDZYQa0hW0diYlD1BW9ov/DF583mGOoLnP83t6xtcUmNYKSkndhHGBBIVw26NZd1l0XYZNoGpBXCeNvvCBnKeMQ3mAi4lOhO2tGYiDSHUxOg4MvAsiHCk9lTek9tMckPENUWXoSeUhirgXTEDzuJBPKvuCrhdRhiHhw6viqky9UIl0DRDFnUTe/R3qdYv4XPHZHAHdXMI48miUjk4Sttci0iFWJoHgI5QKnBSI8PrMfEwWpmzf0QCunA9Jh1V8zC53cFJBb4EEVEroquKqKC2xfhME9olshpOtjmYz3FQNhn6zHbX9Tgaep+Kwk4xypLc2trBODgPA17rEnzz47siGDh48CC/8iu/wsMPP8zp06ep65pf/uVf5hd+4Rc4fPjw3MvglR5z6ouv+pCdXvq1fL+U/QXvAk48we9xxQUw54pjmVRoHwHHmAhVjbVFJSw4IZjSFCUjHMbrbrmO6w8tUvUmOZLHjB/7M3aPnmPhhc8yatdBi4pbo1OqvMX4sY+iR25kMW2BTqlcD+yyIp1Eiji6IiIkHrwjZAVJZD8kLx6BtUsgDqdTqtMPEM8+wpApOl0hWkQp5GczpcMxTnBpfUw8uECXGqIbMqUhSQMSSV1X1Nwk8MAXH+cX3nELRw6vMJs9AbLADvB7H/8MMX8Ph4++BSeGeM/zV9b57Q/fx/fe9kuM/CKd870VasUkF1upUl4el9J4/8pVXfctHqidseon/OP3vZn3vPE4TosMr5vsYilhKKNul0Heprv4OWz9UVznyJJAxyRq3K3v4NqD96IywNTwlsiu2E/jS4bfhUAwIWihZzkiX80l6T95H9g6IMQNrnzudzm8eJTLX/ggcuNbOfqeNzCwKXWa8P03Nwyf+UPuaVZ5pD3GNDdoNeTKzpSkDu8HjK2mE+GxFy7zH/7si/zAG7f4xCPP8oN331x67AkkC9oVnKmkQI6OrAVD0KVMFs/2tCVjxY3RQS3G0EETHG1saZPhxGPtNj/9Y2/kTTcfI2rJ5X7sh17PeGq0V9bwksFV5V4whYvnaKsFshtQSUW0jGRjuP0c3af+Mw3Dvj3iynMiDVRHuO29v0S9sELyIwilPO6ckbLMn0sVAxKe3ON9KsQ3+CpAs0B14i701B/i/KC0WJ7/En7gGFRKOvd5rrt4luN6J84JFos8cSVg1YjgNgm545ZjC6zecIRnz28VCmWoyVIorh5lsVunsVV23CJb0lBLCbJahcobNcai5OL4KUaWmsbXZPEkPPiGuglMQ9UHVoE6BP7lT7+dOJ5woPGE3ILUxbWSQpFNfhEVT3ju8zSaIRxE7nkfrdvBnfk00ddUb3ov1976diwsIlxlBm6e6UOAkkONB1L/2ef7n3gcjsq2cYyppCH5muw9WTxdCa0hTYvOitRYLs+7WsQL+FCjoS5UVh+K74BZaWGoFUlnVSbtdF+bYP9/Xxvf6PiuCAZuuukm/tW/+lfFTU51fvAvLS29shWB2dgHJHAieOdwUjIfN2tn9aW80nf1iBVJ3tIKtjk/waT4jkfnaa3wl0MzIG1uIhIQFB93WayKsGnAWPSw2kClxQUQgzqtk/I6K/ECphNapdAJNeKJLMeLSFzABUfuhKxCzBULbkgnQzpZBmvxYoT5g1bsaRJF5jZUwyLw4gO1blNRfN5tMikHr69AMtm6coB0mSgLTHKA0KDZkVNGQsk+tUdUJ6mIdOS+Hz3zMJzRnZI4JlIzkUAUobIiYTvBM5FAEpiKkKsKjR0JYzg5x/H2FK2coA3F/dJS6Vn7PhBy4jCNjHzL9992hGNLNU4NzUqObcEVAC6O0bzNQtximLewsETswV/qArZ8gsUb30j0RbzFYWi9wpQa3LB0YK3X9hfrJWuNYFqAnV9zeRku7nIgniNMzrPavcgk34Qn0Qh4U44sGDesn+Nwt0utd5C9o01CdIGFQU3bTklWMq5OGtb9EjvZs+lGhWWgRVYrxoxKIKowVU/yw6JNIEKXC2Zkc3uXWZdGrJT/Z0XdZBVZGoQtXLvN644tcMvRBc5e3sK1W7z7dUcYbyUePH+SkLfADYim1MOA392hGdW4uAbdGSo2wdVUKVHlK1BfA74iZ18krBE0jBiduAdTpQ2CNzCtyuR5g+xQt4iGGqRoSUSpsbBQ9AnEUOfQ5RuIsoriWVioCetTptUJ/MqIrBNW20tcxwq1QBZHMBhpoqFDreAIhgFWBg7RgoRXqXoDIg8WcXGbToVxWKaeXOFYu0mnx+nkGBIazJRRsQBFxEgJgu9bHc6jObM6UqZSsDA+dwwt8wO3H0dxVJIhT0i+poghG1W8QtYdrIs0CJgnDxepX/c2xmcfA6vJoSIv38rSdW9hZ1xh5L656co+Jj1rR4oQmadXIcwRfCjPpyaca8EiyKDfAxRvDq8J0hh00FN9Dcu5YKRyLJLMviht2DyL2pdJiZCt6CcUauFrgcC3Mr4rgoEQAg8++CAXL14k58w999zDz/7sz86Feb7TQ7DStzYQZpbGRcc8G0hf3qtCoZs564VYKOTCKBUvXNxm5/IlpqkCXxeN8t6da6EWGge1K6IitRkLPlNbBDNa1xQLYTJBJz16vEItFNCfOLzuYjtraBjQZaOTBls4Tg6rtIs3sV3dXB5kFFFPchA8WF4ogUtVl/zKLzIaHYT10svvqkWqq1fxeVjCG4lonlCTGaRESJ4qT/G6y5AJIyaMrcLMiOpozZOlSPDMDEn2D0ehYmEBLPTCPD20yBzRAhF4+tIO59Y2uGexQbJxs77Ae0fP8cD2ApfCIiFU2LQrQYDbM4BKeBBHjeJnPcocod3G5/8/e/8dbFly33eCn19mHnfNs/XK++pq341GNzwaniBIiJRIUSIpaUaGknY2OAqFYjW7G7uxG6F/JmIjNjSzIcaGYldmNWZFSZzRiJK4Q9EAFA0MCQ802pvq8vXq+evOOZn52z/y3FfVABqOaFQ31b+OV/26+pl78p6T+TNfMwNKoq0JTCmbMSZOqGWNWBwkjG5g6ZgakiUGiCpqMny+wrRcAzcEDeQSUgdGoCanIPm167dIBm4PbRqKOIZmlyru0GqLkqiJrZSozcliTWGSY2YS9fFomLI2XGa99Z0zYcSJpTUZbVCarm0fUFqNtMbwxade5KUHFxhJzos3dvi9L7/Aj701AfhslrM7GnfHRdq0bcI64hUuXFlnZxawogxMyyINQwJFbDlgp6zh8X6DJ7eeYedpZfGetzElUPQXcHu7LI/WaX//f6QZHqG9+nmKbIU2BDLdwpuSPBsQggFNRltJgb9HNGnkJgjEAkwAPFEcTbaKyXK8lFAuotUKuCE+6yXHPAO4ITH00UKJpUXIaKszTCsPzrCsY97hnmFn9xq7MWNvOuN3Pv0Vpq1P96/JESPkJnWErAZmNk++n5KcM29OhX/32QtszwIPmys82NvgDybC159f4IEHhqgYMpvAvIaQOp0aOrhuoGcDCw62/R59DayVylphqIKndTk1ya2wEaUMUwZRmHzhVynCDfrtNnVcxecLtM7RHy4RXYVojykO1ztKMKuEhDAlzsF5mjqX85RcUVQjrQgFLZG8a+lnXSfEIbaPcQ6hJo8edVNsvUHz1HO4egdTZOCnSDtNQMIwIyeQ6YxMa1pNPzONW+eA3JSwNiGNMOa1353f9d948SciGfjMZz5Dnuf8jb/xNxARer3erVZqJ9kbY3xNuwS3YG3M5wMdmC1iwgwpkuea4hHS3FuIncBQRpQMY+ZYgojReYs4VenPXFrnyevP4E6+jTJ3qFh8iAzKgl/4+KN89cIIvbmJ0cTx/oU/9xGKzBKmz+JJzmax26jTBp0y7qjJKEVo8ZM9ZOkgPjrk6L0svufPMsuGLJ57Gwv9VUy+MIcQ7UvPpiu1qDWoK6iOHkSO3cPs+hPgE92w2NsilA7RKVARY8PyoMfpYg22PPcfW8O+XGPjFOtrMuNRlCYGZlqSRHa+ddYvmnQYYsJVk6liO1Oi2JWpXoRnLl5lc3MLThzAq3J3tkW+cI0n9o5xU3rgClpRkBbtpE6NAUwSFDI2I5AcANWP0WaMkJwQIzU/+o6HODR6Af16S/GW9xJPPcrsPzyLC2NiTNWTEcWKwWtOefAs5977EyAVaEytceaHGNBJ/abLNh1bYo42mcNMIUSTrLHbBNATjQRVahVaKalND+96NOT81T/9Tp67sssnvvAyYoWlwrBLwMU0jTWSWBk+RiSkVmw00BqYhsgL19d58uI1ahHWR3v8wZMX+egjZ/Ex0s8MTd3gFYIaohoqTZ2p1vW4urHFykKfv/hn3869K44zRxewGji6ssD/7q98nFOHFilXDP31o2x+/Q9YPH03TYBYDIGWKniar/8WIe/R2JrssZ/CP/sScuNzCQxre2n0QnKeNCZRQsS47g4l4RDwiHgwjpUH3g/W4HEUp97CiYUhmmnqZmXJLjw7egrWTjMZXSaYBH7snXsbs+kFbAxUYZfF8DLTG0+jtsfVcc1vf+0yb8uGODtiFhTrCnJnyJklWqwMUEljgFpynrg65aXL68hgmdPxMh89KTx9reWZmzfQ/ABtJI0aXU7QGque6WiM8Z5MFcKMd91/lg8/eJpDPcPf/tkPcHRluP/MJN2KDKtTRJU422H3U/+K5XiJbLZJPPJ2yoc/yOjLv0klluGpu5kuHGNw+iz5ifuJtofqOFkJ76P1kwaK6faAtFeFlLwa0+mlCFYc6oYEcowxiLEIPiU1zRgZbbLzzOdZCmN8HCB+jMYZ+BEujCiipQwN0cg+e0hJHVN8TW4t/YVh8rtAE77lzfi+4k+EzsDdd9/N5uYmzz//PM899xzXr1/HmCQ3Oq/0vPf7SYH3nhACIYT9v4sx7v/d9xrz229/1t/V9KJKFVqs32JKpJVIQ5JxVVGMTvGaPMun3nZ8cro5fWSGJUqJEWXmcmamoFWhZzwBh0pG30Tee3KJ0uXJoEQUS+ChgwPOrvTITKTQSTKNCRO8KgVTCA0Sa4x6rIKYHMeIthyiUhAOPoyc/DClzcirA5SnH4NsFSs2iZUAhgxDoDUlWiRTl1gtMuudZ+wyMuMZ+B1sHONdQQw73Sol576sEJaGltVBQessTZ4TpYcjBwthtpV07jWNQL7ZUy/1VxqEkc2YGoMJDW3wPL3Tsj6b4XzDi+tjdtsGR87FWc7T05Z2a5O12UWUbRwNmanwpiCLDTYjdT6kJfM1mQ9kNnUm/O4VdPwSRlvafMCMBozhAbfDAXOTkCv1kceJBx4kqGBCQKIwNQWYKQUNweRIb4nB8QdACjAlSeuwB+RUgJHUvlaSeZQgWJUkTiyQeBIB7SqwuhkxM4uY3Q2k3oQwJjOSpKE1I5gef+meko+vbDOkpY2OYebINEOoadTgbSDzhjGGLAgNhu1RQ+0h0z7RDjD5gNwHcpmyZ5dREaahZs3NiG1DS8RjsdGytPUMrh0xtgNClnGknPDT967ywTNrFHlJKzm9zPHYyQMsFgXD4ZC3rNUsjK9AqDFUUAzxZUPjcvJoqNoxQg6H3kpcuws1hn6WRjtebFeB5ki0CA4jQl/SjFwcYHMsBQZHtvYQbuUBSjHo0nnk1IdBSjKN4PJ0mC4cZXTwbmq7QOYKJO4hB1ZA+kmSURSkwm2/wKq/ytVZZNf0KTSQNTuY0CLBk4cphe4QpKPxAjWRKBW7sYcvCmzbshgmHLJbDJ1QyJjYNYZmIdGDbVHgJBC9x4ZIJBKdcnwo3HtwCbd9hbceUNYGQnCOXCM9BdWAuf4ZfMyICMN4DakboiuRg8eQU+9CtCR3Q2T5DPXwGM2BRzELh7rnvaE1FRaDSEzjAACxZJJGd0YyCgxImfAZnfcK+UEyqbD5BDEFEi216xGNRX0klzHGCiZkyGybmVFiqBGriC/IgrBjF2ltReU9RZd6ZGGGITAYrqBtGjPM5ebMm62B7zn+RHQG1tfXuXz5Mk8//TRZliEiPPDAA/v/f67lf/PmTW7evMmRI0dYWFhgOp1y+fJlFhYWWF1d3e8ifD8ht38mSTbYiNCrSk6trXJlGhGF3NiOBmsRtdigiK8hTJGYsukoBjRgYiSnIZB44l4N+EiZpSoTAs46cmOwAjOb04rDkhDZRWig2Uj6+TFi2rrrWgRMrNEwAwndvM4g2iLWgkSkqDr6YcIOY8wrDuJbzgmKqCc6g5R5p5vQUmqNDVOQfjJ2wXWARpMq6tjidIrThJsIg1XCyCQkf0dNU42dmuS3eE+6X28JmLbBxDa174FZFP7B//eTTPvLbDHk7//TT3Lq3jPMzAKfffoaOzd+l49uXeG+xQryEhFYMlNMuElfRqx2R2zCDTi8NRgL+Wyd67/735EPZxiEkFVp7bTFjTaIs5302m2Oiuu6FTl0Vb0Qkc6LfV9DQLr1lVuX9UpEdDcL1W6toaN8JmOfPCShG0JLRqR+/gvUX/sdPvTwQ9z8oysU7QQXJpxZGzCQXU5c/g+8PTvAHzWRJdtPfQZNuvMhegiKD2lEsTWp+Qf//ov8yPs83vUppUnUtBCZaYa2TQK6BSUvKtoww8TIIOywajdov/x5wtnDLNjjZNpy8vgRBlWOi3H//p3fD04KIGLaMabeS8mAnyHOEMRiFxaRzV001oj20DzDmXRvSNHDWJcAbXPzxf217dZT5nftbQs93/40raWYDEyGGjtvC4GrwObJSMmmjpwal7Q7Qpv089vIjRefxoZH+b3PPsPGpIUc1DrKMGHhxldQs47DMMlXgYxCI/0YO7ldRxEn1GaBKJZMG1rJuZkdhnxAQcuhMvLRe5f4rRfHbE/gQw8eYqFXctfaAh996Dj9IsP4CRc+8c+pjh5l7fE/h5IlNpDkqN/hwm/+C0786GmynsNpi7QzmsERimMPQbmQnFMRIIFbxeS3deRiWqPuntxntHzD8zhH8+yPRFWx2YCYL6A2wxS9bi/RhI2KNVY8lGX6fVs3cLaCqExlQGtKMm3phT0gkukMC9TARqhoNKNfOho/ZZ+RkigK37xnvBnfNv5EJANN0/COd7yDH//xH8cYQ57nr/j/8wP+05/+NP/yX/5L/upf/au85z3v4Zd+6ZcwxnDt2jX+zt/5Oxw/fnx/XvzHCb3NUbAsMh6+5xyXP/t1DAZJuq/pwJc8bU/qEZ0S1TIBDJZKFEfAhilKgY9QR0vbRBYGfapsk9oHnLWIMRTUpMclPbQpM2/Bj5AItvWYepZoYSjGj1E/wkhkzhyTGFMJpRGxt2gPt0NzvsXVYqxFy6Q45keeiilWk5BMIKcxGVEjJqZkxMTkkGjiDI05XoF7HoMv7nY6DKFrd4MP3+mhFkIbICjBe8Rm+Bi5vFuzVbdMshVCO2bJF8ykBwaevLrJu3oVE3pMpSKYnKqwbJqCsRsSjNBIqqxULdGaVFX6XQajJ8AMGZucKiuQ2V7CeYw30HovXZ9RIoaZ6ZOZBis24Rg6Bb/59FfnR9O36WzebleVOkadZDAZjelRkTwcgvcUsaEMG8y2n+Gvfuzn+fqVPYQxIRtw7z3nqXoVK6NnWMXi43FCmehpUQU0rR8xEJrUiZkF5QW/wnM7DYN+xkNrgvE1rVoa8g6XobQ+4voLjOuGViDzYw6HaxyePE/Yu8zh6ghLZsqH33me3EnCeCQdSCDhQ+YHN8GjMaDRI6HG5AWtW8WduA/d+wKEGY30qIoKY5N1r+8t45wjDcLifhvZfBdjwfmc2XaT7+gKWtvrkgFBpUyqmkS8GxLtQrL3NRYbkuWV0iLtiNLB9a1dWlOlpN44bJhxrHmJE7Mt+nIPeVHRCw0lTRJI0paoSStAjaGVHKcNUYRaSg72LdbPWOpF/tZPPMDX/z+fYZJZ/vLH7mfQy3jk1CHOHz9IT2pktkG18yR2OIUwTWJWmlRCbdyhGl/FTm4i5VoqDsIM89CHcI98nDj1YBI+Zp+8ty96dftqfXeR8H7JVUOKirpcpXI9QrVIND1cbJPE8WwL4xtiWWGLFeL2C+SlgXaaWKziEi4ijvHWEcXSIkyB61PIpWUprCNeiSR5Zun2njfje4s3ZDLwjdV7URT88i//Mn/wB3+AMYa3ve1t/MIv/ML+/xdJVJiPf/zj3Lx5E4DJZML6+jp/7+/9PX7t136NP/zDP+TYsWP7jARgf2Tw/XQLkj2xktzuIjMfuLg1pr8yRKJybTQBgZFCi+JDy8Qbnt4cMapbzi+UtArRJJWtNhhGNZiZ5+jiIj0HY3xKOkTohV36YQQ3n8EODiHlMmoykD5BMmxocM1kH89g2jFxtoMS8SYnKDgxYC1zTf+oSZLWiuFVl0CF4BZozQGabAp+RNVVVWoLpiwgWpO3e7B7FY0PI0g3HpGEGI4Rn6+AnUBsMDYnotRqkVkDJOwHOgcq3dqWGiyX9yI73jFudV8vX4xLiG0xkJVM6oAxBU1b0ytL6u77+3HKsr7IcpxxQYa0EglGKOtdjs0usOJHWBkmi1SbAw2uDfhiiGNM9G2ykB5voO0uXpOCXpSc3WyNoAVLklFpgJj49DEqmdxmff3qi7v/ZySxA/axAuSM7TLDrE9sZ4SYjGlMmJLpLhom9HWKxAYXpgxnzxFvHmTR30TU422FKwtUTAI1kpzzokLbpmcmKsxU2GwNa/4aZyYb3Nx5gPW9GmMM41YS6yMGTNFnc7TNE9dGTKTCqCfTRPdaLGAx7LAcG/KgqBG8FIgmu2IlJpCfGjQkTwyNgagB7R1guzyPG57H589ja2XXHmHolrAuo5WMWXmIvsmxGgidJ0VyYezgl6/6+KbnU0mjKDSgpmJqFkDy5HGBxZBse6fZMmN7iIHpY8Rh6inEFkukJ01KlOjRmGkH+IObexMyA0vTKyyGIxCvcIAJRXueWbFELQVNLAkmeU346MhjTRlmnPIvc3oyQ+Lb0GzIkgbW3IyLYcyCaCfOZKiMQGgJuy+g4+uYeASjoRPTyhCS10MZx1iaBM4lI8Pgi0PE/Bhxdp3aDNNoSufMBen2sJT0zR1Tb+1vr7au3cpqQKJHTUaTL1OYkpgvMXGrDNsNbKxh5yo0U2IxxLg+RmsyP4XZOv36BiU5pnMmmWnBtizxzI1desMB9WiTo/EqJ8eXGISTtzqKQsLPzF9/1xn+XuP1AD7/YcYbMhmA9EYlgRjhoYce4pd+6Zdo25YjR45805sYY9yv1OeV/2QyoSgKyrJkaWmJa9eu7ScCL774Iv/iX/wLdnd3mc1mPP3009/zjTG/AYPCaDzi4taY/+af/Sr/5Z9+L5bIL//2H2GKkur43RS9klMHV9iabPBf/9NPcPHmiP/83Sep+n0aMqIYdifCcxdvkk37nBgYcm0woWE6m/Lk8y+xakcM+zUX/s3/g+zU2/DH3kF0Jdn1PZa8sBB2E73KJwe/uHWDvReeJPORvFgmOodMoB4n9vN4fYMbTz5NYxY629NvHVmsaXWRmTioArIwZXNrShkrJBtQL95NsfMMZb3Fxqf/A+LO0I53CW3LZDaibkpmmxsMlo8QYkwzVicY67i00TLbeRkFZrMZL758Dd24kcYepOpvYgr+9e9+mcvjkksbY556+llaCvxkRMwNISRHxmYyxoXkVBi1xpqWQhsOt9f4wMoeV/cu8UfhnUg94cqFy1Qbv8c9l3+Hs3o312fHefnFS6i/TNVW9CfbNFoS2iQHraLozjUwY7xkTC5fZRKOE4+9lbaZsrXXcP25ZzDec/3mJo08Rx5aorVEtGv7f3MISTK5MWlKWoYp1ggNlnI6Iq7dx6y5jPXXCTs7ULeIzRhvbHHjxZc4f2SB066muvoy1Ze/xNZTv0cxvsFiZSnHDWE0IgbP9vYOTz93gQuXrtF4ZWu3ZuaFl16+Shn3+PyXJ7xdn+Ju+xL/5FOOC34N8TN2Z5EXnn2Bjes38GGFF282/Df/4++xZ5Y5LAMmpqK5tsV4ZYO3nz2AbN3gwpNbNHbAxDkg0IvJpW9ie1TtLqs3N9F6xo1nn2a0s0nZz5gcfi+jbJkwOEYpOf7w27i57sn3ZuTZAtPyCJdevsbVrRk7ewOuGQGpUM1Sd+xVsgFDoJUMEIqYxi1ZvQHLp7ly8SZ768/RBM/B3RFlq1Aeoz65ymQn0t/cZmW2RWxbrChZnCH1jFEtTKPDqceEGZ9+4nnucQsM8ynHq5bT+hxnBsrVSy+xt3QejbA5iTgZYDSmZzN4Cr/DY1yk94Vf50Ie2Vx8gDzucveKxZ0asn79BmxdRkm0yL7fxH3ul5F6xN7ujN2vP8VWtUffp70ob16g1zRceu454mpLz5RYydneqnn5uSvY6U3ypbO8dOEqhoCMp8j161x/+lla20MmG+w0hvF4QkabcC8xvOraKgkKa/yUHru0ISNujan7DebgwxTXv0jRXkFefhasMqsEaRw901Giv/ppBpvPsNJb4rHzRxn2TvCpyw3b0x7/93/62/zv/+IHmd28yDtWxjwsF9nYjHz96Wco1UOIRHFsbazvY8S+12RARGjblr29vTtDT78D8YZNBuYHfAiBl19+mX/0j/4Rk8mEX/zFX+RTn/oUf/2v//X9r51niE3TUNc1s9mMsizZ29vj5s2bPPvss/t+BiLC6dOn+bt/9+9y7do1fvVXf5Vz5859T6JFt1Mag8IXN58EVzIzGcfOnqYw0H76GWYYjh49yLEr13n3e+7mN//dHzAt19iUAumvcOzYMmJeRjotdXUlTRDOnzvGky9e4OZOYHFhwD3nz/D4fcfRdo/RP/vv6Q9airuOEKWiyddpMkPma4QM4ywxCEWvwBcZLuvBgeOYQ4eoP/9JGB4g7O5QrR7k8N330dIjc4kJ8S2vVQNy1ymi8agEbK00z32S0ZeHyGCB1Y/+PNPP/ivMC5+hkikLJ4+z8SWDTD0Hi5atvZq1xR79U/cgX3qOzCio0HhFi0Vq9RjjKcuSE8cPcffaIlk3s1SBjaBo/2maSWRxeYm77zrDzEO/dOxo6vZ6UUJdY6MQJRAlgHiseso45UB7hWm7SItDyyFHTxzmkFtkvblKpcfoW8vDp1ZZtgXXn1rGTnfJTI/QPwJ767gsxxhPGwONG9A7eprl+9+NfeguJHg0XyHQx0THSJ7lzJmTVGrQLIExv10yIDHQmgRezGMDMTDDUZjTmHuPMPv314nPbuFcILMtbRBYPspd95zn8H1L5LsXaV9agN3LDCdXmLgBj957D7/2BeXQakWROfr9PmfOnOTSdoM3e7SmJLiKE6cOYcUzayOrdoNj/iKj8Dgz6TFgRuEMd507zaEXt7i0k9Tl9oKwQ5FYDBEOHehz5MG7ePAtD7MQW1wIeFPQmIhIICPx0Uc4enFMe8nRMGHh+CLmekn/9MOs3vOngSkzs0574evc+5N/E/oHqUdfJoyusPy+n0GH5whXLlEtLrA87HXAzLzrprzKc0qbQIdYilh3Sosec++9RCmJdpBMo15apN1cZOX9P8NysYq6FaY7X4GNl7F5gbZTMm0Ylg6bl0TjyHRGrlNaUzJCWa5y3nbsDDe//jscbQKrhw9TLAw44K+xFQ3RlSzZhgqDFguUFlaaGxyfPMXqmmP1xDEyPcgv3H0fRhURQ6VjnHrEGzQuMPrCmDET7NIKB+99CwfzZaqYjLyYWLY/lXP0+GE4dJKbktHaBXqraxw6dxrhJNk9J/BuDTNdZ+MLQ7KDhzhy1zkaCsJoSLY14cSJ42QE1OUdSO9b37uBpAjpwhjxN7n0+UX6S8scfOv74f7DbP3P/zeyi9fJ2xmtZISlg+TVceIVJTdCslqrOVpF/tafezd7y2f53/6DX+Pzkz61G7J4eJlBv+IDJw6z9uIf8cLgLu46fxcDaYnBMGsCZe44deoUwD6Y/LuNGJPCa7/f/75A5W/EeMMmA7fP9p966ikef/xx/vAP/5Ber8e1a9e+6evbtuV3f/d3+b3f+z36/T7Ly8v8yI/8CP/tf/vfcvDgQd72trft0w/nB79zDlVNWurfA5bg9raUESiMQ4IjhKzTDzDUrWVjBi9eWKdHZJmWXqzZ8YI3PcBiQ+KAi1WiKkEcddOy0DcMcwOhSXQ1o2RS443gujay0Qk6uoK98QVc2EXa3SR2EyMiDtM2uBjBVDQsYNwKrV0AqTCmBApEHFaSl/qrDrYVcEndLxDpWw9ZiVdHoIDiIHv5YVRKrBEwlsyPyGY3WPGXWGwyTJjiektk1mI0pA5BWfDS9W2KJl1727b7YDAR2X85mSGBERFM9EmR0QE2ow45E02yuZNZS9QyUTKNwZukr+Bj4in0qSmpwVSdipqgWZn8CyTHbT5LzEb0mj36k+eR3n3E3jGCeRZrA2Y2xpuALwZYW+HzAdHk5CEQbYZoEsRRm+Eyh2nmHhQkO9lvfSOBJNfCJKeflB+NcTRklNkhdHgYiS3F3kVMvYUXg7d9DMJQGiSbsWkH9MyArNnBlgMOTZ7lRFxlYO8lhhbpaFvbe2Nadew2kbFmPHV5m5FUBGloO8vnNkJjk4Je5fcQa4nBU7pIZSJ1CJ0wVWCgexQbT5D7d9FmFd5kOByOgJlepN2+jjv8IBjHwFhMmBAm1+nPrhMufhXZvQL5uyFbAumj+QAtFyBbSfNwV+LtAlocQm2ZsBkuT92abvQh3wB8fcXazg2ZkDQqV4M3fYxNDnlzBovLK6ZSEd1hKI8mrIdzSAz4oDixOEJS0osJ0Z7jySXNxUsT6Lfb5NaQSwIFP3PlJseLAQ/o84zUcSMeYkl2yU1gmi3S4Ji4RayfwLUvki/cR7a8hkgg95uMzCoQqC99CWsrsgN3UTkFv4FnTDQ5mXSDKEnPnRCR2ECYkhll5hbIJZBrjXcLtPY4ikkiPp0vhrEGJwY1grUG5ywmJEr03IjtW0Ug4aKM2DQodRnG5agZIOUpJmaFUgwiLUhOaysiFbkoGpJGg9oeud/F3vwsB6bP8Vb/FS6Fs7Sxx5dfHnO1rbB2Sj5dh5jwI0YixtIVMLf28O8HCzYvON/sDLzOw/ukb//CCy/Q7/f55Cc/yZe+9CX+4T/8h7znPe95xdeKCHme85GPfIQPf/jDr/j7j3/840CnQNcd4vN/O+f2RxHfS9z+M0S1o9gYGp8RPeRZkuN49qUbfOX5dT7+6Cl6RPJ2inEQNRDaJtGcTMMsWHyMNGT4tqXK4dyJQ9zcbXj3fccZmM5UKCap0VwSan/3uS9Qf+Z/ZimOwHswDahD8hzj9/C+JT/9CObEY2SLfZoLL9PKkP7xt9A79VA3b/wO1y6ASSqAFgFpQGfo4grLD30EFk7TO/Mu4pUvEUKTzIu0xYzXOVNd45JWYALGVFhafGa5+8wplhaFT3/lWfqmorCpw5J4+tpJrs6BeCkZyDGY4IGkgTANMPGCV4cj0vhIr8yZhUDQDOY0PQWrnrPFjI8dhnvf8hAHbUDaEVVsqKRm23uuf+k/cmixJgsTpNlGBgZz6lFmF75EVdQ0kym6cID+Pe+kPHyWmYBqRhTXbYoJyzXnQ2NtB5r7dujBDhEvHQf4Nq2FpOjYg2IRIriNF9B2G2NXQRWjdQKL1tsUvsbEFml2qWLkwMX/wNuyd3Ow8jx49khC82tkc2uHEBpmbcHOuOYf/vNPsOMOsmyEhYUDtDHDxcDhlYzpXgXthBpooqeygdIKbe3JdUzmd+j5XWZf+g3MPR/DHD6Gt6ZTqIvMbj7HS5/8nzj7p/4u5cqhJDEba0Zb1xnWW8w++c/xUsHbf45oOjaGyQmSgSsJQYlZH4oeGO3EhRyiiaCbdDW+DTZT0t0jdHReMSgm0UElsWKMJCCrIgSbEW2PSJGsclXS+4lJlboqTbTU413WqsDawiIyu4IzUOqYKo4oXPr5tSn5V7/+B/zFnyz4wMEpN7f2uFkv0csakiTcKgAAkfZJREFUSqnxtqAxBeN8FVzJ7u/+T8ymBzjywZ/DadJKKFDY2+al/98/Yen4OQ5/6BdQss4hcZbYDmnAhqFKGiNBQKfQ7OGynOK+D5MfPZ8kwlG8cWmU6EoWHnwcu3YqGUhZULG3knFjby3ht4kkoW66G7+F0CZ4s+snHQeBaAvys+9i+f73oWGV5tlFXGih8TRU5GGK/8yv4Pe2+GDvHr5ws+RFzvBP/s0fIkaJ50GzitpDUMVjcbTJC6Or6L+fRMAYs48d+08l3rDJgLVJk/rZZ59laWmJv/bX/hrvete7OHToEA899NA3ff3tFf83/pxXi/n3fD+Zody2cYuAzyyNrVIlkYFkwsgU+KzHdizAKSEIM8kIMqL2nl0RAh5rU6t2ZiqG0tA3kUfvXmX94sv83KNrDPxVsIfI6l0cDW52kaglRqFqrmPiGFohOqENBeUgR5pL6GiN+qGfpvfwT2PjDvX6CL++Tn73O7CnHu8q2u90pQGVFoOj0gZcTWDCxsJRDr3jF8GtMnigz94Tv0Y2vgzbTyTZJRM5OHuO0p5lJspyXdETZVoIf/axk5zKR3z+KxMWDh7DNHvUuznqk9NdkLybSSY1RzUWH0BjqoC8RqIRmukEp5FcI+B58K5DPP/ii2xPcyoC1gi1rcDkrOkG712r+eB7zyR1tJnS93uc8M+zwxqDsEs1HTHCkbNIky8xvOvd2Cd/izhbZ5pFxr0THPnQ34biDD1RUN9VZGkTVaPkndIfWQLffcdtyiSa6PzAAigE5oLVUQvabJlKLyAayQyUs22Y3SQMzyDuMEXwSS3RFag19NsNlnSHfuH4kUeO8tmvXqLQlsZ7rDaMmhZE2TW9RI6sI4cXS/yuowiRt51z/C9fs0yiY9NDkIa+KSlcj20juLjN0OxiJWDjmBgcubEoLYYpYgZYcSyMnkPCDjrNkKKfRiDRURnLQvsSuGNIXqBGwU9R7eHtImQGB0zLw4ytYUE2UFllZjOMcYADtd8W65IezaSpbwXQHCNQ3s6VU01g2rygweIkgUV9iNQBbF2jUTGhwRnLThxCvcfd1Yxz584x/tqz+GhxNuAJDG1DFWfUZoVtLZminGgushyXUXMWbzJ6OsZESzSGqk2sHGm3cONLRAJCD+wqmSpx7ybL9QtYM0AmLxG1YmxXsDYBVlsMljFQogpWK0K7jgtraP8I/ff/daiOgTgyBCeSEohyjerRn2dOM7QizMThjGDlFhfm29FgHAqiqGSIyfAEQvBYMwUipcww0rLjDlM+9jcp7n4H2kzY/OJbWdn4Mvl4I1Fd44x8eh2ZbHDI9Vjxyzxb3sUuBathh0WpGZtFtncbdiY1YdBjRZvkxvnHZIbNv//NzsDrPLz3+6DAf/yP/zGHDh3ar8ifeuop/tJf+kv7X/uDQJJ+Lz/jG7/XomQSUU2ZakRp1BAlQxV265ogykgMI9NDdIemgamWeF1M+X3rUYTcQM8KklkOV5Gw8TwXvvyrHH/Pz2MVnB+x99X/SOi/nWq6jiHNmdXmzOwCDX1Mv0fYfYk4vkT2sKAmR6UP1SHiIKNxy2CKjtPuEXHfpgxIqPhkm+oRcsiPkS/fD6aPmgAmjVnCxhW2PvGrhI2LiaNtNaG2swLyCiclh8M6h+weJiuZymo6+aKh1gzfbT5zlUa0RjT/pj1pjtIXTUemx2AViEkXzWji+4eupY0qmbYc6meUqlg/YnTlOap2h/euDrBcpNe2WFMnHnw7Sd+XDVBbpU6Lc0klzhREcd9MH0xLxW0cgv0l/b6SzfkfmdCagjIMgYDEmtnLX6b9/CdZec8axDq5Tyr7r2X+60rrQGtMDEzI2bSr7GqgaR2VcdQxR0Uw1JRSIyL4qOQZRI1cuDnif/nEE2jtcYXFZomi2vMN56opuUxR8rQxqxLm7k8qoJDpDLP9LDc+9+ssv/0nyId9IBB6B4ijHYItEJcSP0xJrA4hgzFIcszz5Qq6dAZsL3HgVTFJ07Oj7nZMou96QW/7D1WUnCgtZuUoLN4FpkSJWBWIU8zus4g01FkG4nGxZqwFq7mj8sI0CpGUlMSoLBfJM6SNATGJC2DxJL0+MDYh/G2sKeI0daFiRDRgtU7dHhmCJBOnGKY43cVuv8jG7/4K1eQyIk3SWjBd18nkeBFQQzbbZPTl36b/6ApTt8CC6WFM/solkC51leIb9rHbFkikG7G8+spq3FcUQVggWzpP7C+hUkFsyF2JBEWzDFssEqVCnWBWTtHuvICb7iTdiOghNFj1OE3MDR8V68BpSHoVsWV7NuW///ef4eEH7+YnHjqKyuyb3+L/RA717zfekMmAqpJl2f7N+pM/+ZO8/e1v33+zy7K8ky/vm8II5BKRkDblGqGONsncqkfqXfrO0go0kxEDnUBdYT1kXvFZxrTxCEphIpWxnD99jPsOfwxz+XeYfP23CI98EGMHSDvG7V1jdvGzLKz08G2bnOJsTv+tH4K2Yrr1PNVsk3YyJlOfjixTcfi+d9HOaq5tNwSxXfYfSLzjV8MMGCBVVWhEpUd19J2cXTmXLI/tDNNEEKh0yt7VJ+nFKc6kOgdxiOsTbQ62Yll3WXUjoi2RaKiyiJvWjEJLUO3auaTXI8kS99s2L0QI0STKYZyiMVBlhnvPniNb/xJOGxyBhX7BsbfcSx5rqK8SbjzFkF0eziLbbUUWV5CmIQ9TTL1HRgOmJNgKQ4FxOdY65o4SiaP+WjtlKuoisnKY3K4SL34ZkRFmeoH6yleR2YfB7yQ9BwTRxE4QSda3ReaIMRBEmCDMyMnCFK+Q6ZiplEl4iSkDJskEyESME2yMbLSBL7xwiccOOFrjwHpaY1gJylm7g5UJgSEmTjBa05J3yYEk3+MYYO8C/qnfZnb/+8h7ljxzZPe/m/ClDVpTph41QrAVvXveSf/MvXjJcOpZOnEfS4cPEbNVfEydItGQdDM6iun3/w6kJFStpbrrMU4fepSYDYkEHA6NNWa2jkhB68rEKPENe90oZRgmbEUlqsFJhNhy39kDnDYP8ttffGF/bCSqqfonYp0jw5H5bfphh8LvJWovPiUCYQfccucnAkEbrJ9Q7l1hd30XVzSUVUbIyiTfCyBFoiBqS6Y76I0RzDbRfNhJNb82ISJJRE2UaIecfP+fBwLRlEl4y1QIjt7SEvnCUgJy2oqD7/szjMYXCaMv4hRUAxIajAaMUU6fOsnvXe3smI0hmIJSW3Znns9+5SK21+fHHzxOMPl3fI1vxivjDZkMiMj+PGh5eZnBYMCJEyf2gSKvt1mPoGSaaG2qyjjAyBuiseTthKGP9LMCTw8mm/R1QggLFHGKYUowBZNZCwiZUUojLGYGkznGcYdlfxMJU9rg8D7QpyaGDVRzmmgoVAgmI1s+R9NYwmidfrGMsbtY57piLcf0D4LzzHbXkzacatJS/7bHbQJoOY0EAYtF3DJ2uEArQiRl79EYLC1Vs0Fhkv2ykjT5ndGkfJcXNFlBbgr6YZej7Ysc8udYiFeZtTUaA14c1/emtAr9Kmf3tpd2q5C59ZdWBMkczhsKqRP/29ccWVtm77pSiEdiwBIoXMDoGCYvU06vkIddlvwmC3KYVo7imhkSWwgzstiCQLAlzvRQmyM2209W5rgGc5s18msRIReavEcoKlSeI5dd+rJNVl9CRhfQehOnEwIGq4rEhF9RhMzCLjkNOaAstzd4sP0aG7KC4Hm5OIsiOCb0m5uJxWEjVpRKGyZ5waQYohLQaNA4ozU9HBnDOCHYFiEdmrS7RLtGxKUuUmiJatDQUoQRxjoQw9RDb+EwYgqMq5AsJfYNkJWr2GKYqn5jkXKZWC3Tdq1sqy3SIQWivGr6+t2Hpp8WiwNYegQxBGlxamhxBHEYFfKYqGwNFh+mrPgLFO2VJAFOINcZNrZkYR1jdslpUwtcEhvHdCBXsUk7NGt2WfQbFGGPqEk/wsUpMrmIDo6gtur0EZQ8CsVkj14zS4DjfIkQe0Q1BAFiwI4vou0WYiJFDMj4Jpl57fdIMZo6OMZghoeR2CR/DwJik39F6gomK2VRB71T7JglVkj6Z2iEkMYzjsCJI4fhigexNLagFegRqX0klCvgLJa5A8ub8b3EGzYZmM/6H3/88Vf8PXx/gJHXMpTkRIgkNP8zF7Z58dIOwQt9qTmxfBDJ+uxxkFk7wQIbatmTyE5maYxje3cPK5BZS5EZbFdtiLZkEhDJaBrPXMXfEvAxmQmph5gJmh8gaKCVnFCu0roaLVdS/SSGSE4rJgHemLcNv5UjwG3XJiTVPZL5kRHAdepr6crBGFpyohoK2nSg2hIXI7lOsVphvCfmlnHWo8gc+uwneP/SSxwoVzlTbDG+PiH6lmeub/H3/4ffZBTg4bfcj4+zZG8KhBj2MwKdzzRDw2DQg70tji1XvHhpA9GGzCR6ltOWzJokOkNNnGyy8x//LeX2JURnWCvMYsYufSrd7iSPLdKVdtGVaLYE2XZKBn6oQiWJnaDGpc6KOFDIwwy//ix7n/hl2slNhtMtojicsRA9IaZmeu4c2onrVNFzd3yJh1ae58lml6nrc3XqmUVDaWcszG5g2ymOhr6F0ws5T+1GpBqy57c4kMHJpYpndw1tTGa3wTikHnH993+NhfIkcmYVr4JVj5mOIIRkSy1CknUW1PWxrodRwdgMXIHp3k1vCgzZ/n0ZsdSkztvcAjp1uc33Ipb36mG6UY8Zolky2BGSKI8MjlC7Q1TNBNs2uMKAgSxucpqnaW58ETEZudYsuZZSZ+x++t+RTTaw4XBihkACKPoZYiKqHeJ/usmhbI26mdEYR4nA7nXWf/Ofs/TB49iV40TJ0aAYbxFfU4nCZIZWp4lxgMEQVYnbV7jxm/9P1h5+J0FcGm/VOxTm1fUXfiAhgAaMBFRyWrVkndUxpM5jRg6uSPblapLvSXaQbPl4AjyaLAGH2xrTTMlsw6HVRUo7YhYDKppEjUJLiBFb9AltQGLAdaOXN+O7j9fXqfk9xFxV8NU+Xk+hxiWNe000ufW9GaOZxxJ5/2N389f+3AdYosZmlpnJKOIOjZ+x7XrUeX//sFMgy/MOJNWp/GHxkqGmwIQaoqc1BcngNImfOEk4BWJBIPHBg+2THz6DPXT3/sYEYIjksU3yrJLkQL+b2jbJLCecQTTJNVBUcBSIGlo3oLZ9ojjIctTm2OjpmZbM2iSHq56+bjMM2yztPsHf/vh9/G8+fJ67w/OshI1kRbw15Qvrylc3lM9cGPHczXHnZf6tFcMKE7HtiOOrfX7knXfjNIkNOTQlPbHt1NWSbKvSsnf5GVycMjdAa21FG0Fmmzg/IZicYAswQuMKfLFA66q0sYnZBwy+9g+XgFTJQdL5pJ8QHdYLxWwTf+FTuJtPYJnRKp2yXFIWFHH0M0Pf7zH0O5RxylG9zsP6FPfwEndnGxTaYtVQScNq3KWKnpwZh/qOv/sX3s9C5ikJqGk5XYz4xR9/J0d7GWJqJq4gRkuuNXH9eXS2sV+1ox7GO2R+gjZ7yYAnrENsCJIneWAjYBL4zGhNpp1fo5gEYuuYFgZwSqL2pV5Th43obKz/WKubfmfEJmodJJVEKyw98D7M0lmC5CBKKTOqZoMeE46aDWTnZbJYU+mE08s5eRiTXfka2faLqTOGEEJSPSydwZo02jAoRZxywIzJ4gxfLSJFiZtuYS5/CW02kDDCximqNRoiNIHYzpKMs+kToyWjoQobyOga5tqX0a0bqXPnZ9jpJvbVKJc/oFDm+o4NRrUjaWryIUCZeFBbEsQl8ygxqWCyA4Yn70IEoslTghSTw6vRlgfuP83pIysU0rLgN1ny6+S04Bu8RjYnwlgF6XxK3ozvPt6wycAbKdTYhKjV9MA3AOKwRA4OHGtsMPj6f8fx+gtU7XXeXlzgRP0SMQgL9Q5lO+qaguDyEqzFI0STE01JI2m2av0eLkw7a2IDEfIwgdgmVLTNu4Q9QDbA9w+g5QEgVSgGyLQl0xnS+QgE7Hfot2qq6qJ0NiGKSkukhRiRmIE4GukxpkdrS9TkkJVYIrkqaodonpNFOO9forr8m/QmV1n2I8rZ8wx2X6QUz+996WU+9fyYLbvMLF/k5RsbRLEJS4Ci8Zs3fxNqBk5ZG+SslpZcApk2OANiDBbFmk6CNQTQSC4tMTTErtKX0NKLY/L6ClmzRSsljRskcJYtCVkfigFi804StQMvvsYjgvSbqnTkuVlacy3Bl+SxYcB1qrAOfpZeGwLeY0yaw1c2sNa+zAlzMylaxpZhHFH4XapmAxsaCIqNM3r1NnloqYxnaIXTizkHC2WFKege7uofcqLd4AgTMjNiIqkSFF8ziCNcHLNP9tNAM9qi57exL32Oyu9in/4d4u51Ag6RgJhkiY3JQWuctp3ufMI9dGB1MhSrTaKuIQRJyYAlJCW97zshSIBYM9e4l9g9I12KUR2FakidKU3m6MsOJ8wGZQzYVumrJw8zKp2R1VvYdo+h36DwO6maRQjGpk5G9GhI12yMkNPQ0wlGA9pbTDWu1vTjJu3my2y//HUIu8AExIM2BKmJOURrUG2gucbka7+BztYRP2E28wgeW2/SblzGu16Hx3htIglnpz1oXrqI2s7AqKBus+S86jKCSc4QFkGjSUkggZBVaJbj2+SZYXxN30SGOZRxzCm9TnHti2TtLjY07I1HfPGFLZ7anCUp9jfje4o3k4EfQlgCwVoa0yOq4NuQOpmxJbeOsP0c40/9vzgx+xpr8TofW7nOOb1K1QSW46SbOSb0rOQmOQuqJgAeGUFdqhK0xgaPiykrFvXY6BPSWgIiLSvH7+HQWz8CeYWnJJqs2y7jrQ9NLfb53Pu7nb7O3cZlHyEd0480FQfe8mGWPvxXsA/+eHr4Q2R1WPGuh+6CvCRmwoFewc8/eoT+s/+OYrYJ7Qwz3aCY3MRQ828+9QT/9vefwEfH1GdMJg2hMz2yUWk1dSRUwUUIUtDgePTeY/ylH32UlUHJo3efwsUmgc1EiWLJneBig4SQHNVig2Q5IeshxvDeR+5myc4ws21MmKZVMumgOvDQh+mdegfGpBn8vDuS9Nx5TTuxadEzTGw6z9aWaDIwDoLHhRmuc0kU36GrjYMYuP/cMQ6uDFjce5az9gainiAZDd1mbBIltuz1+PH3vIVh5jHaYHwLUVkqCt5+5giVnzCUmvzyHzG78gR9ZogxTNtIlAyxFhOm0AFVIYA01L4m93u4l75E0Www+tInmF5/HkubWEHGJryHcYgK0plX3b6oAvvzdro7b59J8gNZ+E7AC0A6h8RIMvEql9HeECTSmox+3OP8sMW0NUoOATJVjhYtZRhjrcF015Z1Ty4I2tZ84JG7WFg9SBsl2ZCjCSlPTO10W6Ci2OjZvfQ1Ln3+k2i7A7RgWiCJG8UYUAtIIOytc/0P/y1xfBMDtNNRUmMMU5rNi8mZ8dXErn4AkbpjaX8ySgfk7CwlY8aJd32M8sF34aOg81FkDGk0IyVRMtwj74WVI2ntNeKsQbQht0BsOZHtkV/7Mj1mHFpdYK/2XJ/A73/lAqFLQQQS7oD57tbRRflOWKj/9OLNZOA1DkFZCDdxMmImC4QoxLpFTcAJWCkhKlnokUehp57V6Q28Rowq2zJgZjJsEIo4JS8bykxw7QjRaaqYokJ7jSA1iFA0IwppMKYmNR5zkIj6XdyhR+DsxzDWkLcZaEgPoySnskiG7w46SRPS73iFiAV3iwtvKMgpwLm0C9g++T0fJXvX34JH/yaNc9ig9I1waikgErBZpIwTzh9bYaW+hNe9pI8QLINmxIKbciNfYCZCGWdE+njN8QFiSBXblJyWRF3LYsSECMZy7kDFR84WrNnAvQczrFiC92RhAs6wUBnKdpQ2qgBWWhpbwMoxiBkLQwuhQY1DQ4vTujO1c9gT78Mc/SCVDVTMQHuIRmppCa/5niMYY8lVMTHHqDKxhpiFRPLQkhgrkJwqTtLmb3JyPHcdLigLSzm+zlpzCdSg0aPG4WNkpqn93SuVP/Ouu3BMibbFYmkko8qU959exAksxJajzTVy2cFbw4RljBRof4VGSoxRVApsIFXxssOsU8OzoSaTGkuLCTvkMoa8T+P6lA4sDiRPdLqOWaC3d6vEopKDFNCBJLuGNPMj6Ptc2vR7cR2Xxu7TbQ2gLie6JUpyVEtsVHpxzFBGGFPTWoMaw2p9maGpCcYRJSPYHo6AEyF4yAh86FzO2kKPgd/hgL9JbBpUbepeZRYN0olX9emNn2PRX0ZMQ4yWKGkGX0SDbS3BZbQI4h09v4VITRFbTH0ZCQbNFnDjTVyc8Fo6+yXvQwFTgEj3uU3JaF7hTj5KOP3e5AQZ0wAJMwN2CDJgz63gz3+AdnAc8TUqGR6DMQGMMLMDSq1ZCzdw4llZLGhtTh0DwXsaBE/WPXtJWjhBuLktGXgzbo83JIDwjRRC4MDkWc7H6zzZLhJU2W6EmToWdMJQJ7hQ4zSQERIf21W8sOeY7UFjKlQUrCMGWDCBYu8ao0tfYnDPPYTNCwzjHvErv0WsG/IwwRpFrj2J3b2afMux+JgRbdG5+ZVoN/MWuVVLwbzuEm7ttt++LyB8I2z7ld8Lc3ezLAEJ7RI7do2y8AQx4GtstgRYjLjUxtaUluBjOqQIrPYzqrphEhwGmzjIGLQ1tFowyh1RIr3o2dqbMQ173MvLHHYtQzlDuPpl2uvXyMMpNlhk6gx961nwm2g7RYxFQkf/jAGMQ1yiJyX3tYg2LXMJW+mcGUUM2AzNe0Sbkcltq9mBK1+zEGFKn11ZZCEvEs/epG6Mdwuob7GG/Q3x1lvSsUQ0otMR2qY5rsYIIVI5yzS2lO0OB2cNxfomxkBjSoLJ03166Yv0Xv4cGk+BaqLPEYFARsQGj0gaO9VAlGQa1Fz6KpObX8O2O6h1BBUsDRAgNsSoxPwAW/kpbLlGlVfcXmferj7JbZ9xa9W/4fPvd1AjfOOtrfvyxXQSzqCux0SWKbIpTIWi2aYMY5y1qApWkp2uuCzpfXR4BlBmAcTlhBtP8sgkstg8xSnzHEUmhBZ6ziX6n9iUlMeITHfJotn3s1Bu4SdEDLgcJSBhgo0t6hOWQNpkkT6r1ghtnZ7/13CIle7/b/z5Ml9IMDltdpC97BAHrMUTUeMQMmK2wGb/LEv5UWq3SG4rIoHYJXfRFLRSYCSNNwUFjVhr8Tg2a/jtz3yZkweWiR2uZK5gLnrbVb++oGV3PN7sDLzWoZHF0XPczQUW/SZoZBqSGIlET25CaudrIKMliw0Rx8vbkUvr2wxlQhYaGjF4k1MC9fWvc/2P/j1MbjJ69ouUfof2S79O/PoncNoASrb5InLpKxhC4uLny8jaiU4P3yV6khOM+B9QS/VVFwA0YBG8OLKVwxz4yF9htnSCViM6m2CzEjGOiCPWDRIFp0rwKaPPq5KDlWHZ73Xt/YgzAUTwXmg1ozHp1JMYubY1YruteSS7wE8NnuZgvIG/+EWaz/4PxNkWbTagUcuBYc5f/rMfYVAmmhhioB4jsU1UQVek0XGHJdCmQWNEjXTJAAn9DTRuiYkWabdBcCr7+i2vXRiWTjzA8ff9eWK2CJKAdIrFnbiP0F/99loHqohviL5JVE9NPhc2zih1xrvvPcbPv+MY4wtfQ9t2ny1R0rL9tV9Hnv6NNKYhYk3ECBgJHF7IeeyBuzEx4rr5uEqO6ITJk7/O7IlfJ5tcRSkJJglaGQ2InyHi0IWTrLzvP2PxsT8Dea+7hltJ1p3cw+VWNoCKwxy5i9X3/wzTwSliiHzoLWe55/AC2lE453eJZHnqYnSv3hAJXgiqTC5+lbdNP8VH9LOcNdeJbc25U0d433sew1iXhJ80jQJkvIP1UzQKEmPqZonrXpJB8wK0gbCJ1RaaZLNMPSIWfcoP/DRx9TSN7b2mY4LvGOKoTjzMkbf9qSQzTovHEdTRO3iGsz/2X1CsnCfYYSeKZjDqsbEhM6nrM2eZAOROOgYVvHyz5lf+199hr6nxOh8rJUBpwi7c6bvo9RlvJgOveSh53GNBxth2hAueIraUmrj20RZo6ulSSUPPb2GbvQRs273B3c3TrMVNghGmpo+oo6xv0NMdiB6nqcU61F0GYRNRUHIyrcl1QlRLaytmxRGoDpAeDEOwOd7q/jzttbx+IYKCRwjVkOzc+5mWBwhGme1uo8UQbEFQQZsZKNhQQwioRly/YsnUrDRbZKoggdx2ICxNFL9e06DBcHVvxiY53qyw0K7zQPNHrI2eIAvbDKeXycMe/XaLvNkmM8rZB8+RSUBdmZDZfoaJHu1obQIJ8BUDEnx3PZIYGGJIjUfDSA6wpb1udm+Sfeu8DHmN9h3FUCwcpTrxVihX0ahYTSYyHLmbNhsSO7W//TJ3XiJp9xM0JJW3rtJMQyVPXyc8dGKRx+46kjZhDeTtHn2m5HiKdpvKb+KjYDp1OBElt4ahixwY9lFbEmPCT6g4tN2jt/EVVkbPYHcu0rphZ4iT5sWiIZk22SXK+z5Kec8HwFZpnednMK99w+XV4pVMJaF1Q2bDU7h7HmfsVnACj5w7xNGVEjqw8H5PwyaPCu0UEQ2KCw0SA2Wzx8HmIoeaCzg/xhpYXXKsHF5MwE9rwU8QbTH1Hq4ddwPwNOJLiSxEY9CsRLUmbL6A9TXSzpJgz2QTU/Xg9NuJyydRW3LnDsSOpzE8RnXqMVKDWgkYouSY/hrl+fchLpmXqa8xEinDHm73AothhzzWzJteRoRckwKkc5ba9KjdAG+ytCbdvS7z50DnH3fo8l+n8WYy8EOI2EHqVCz4SBWmnFm2vOvBMxw6uAzWISKcOjDksdPLrJoJfSb4F/+Qnzmyzk+er6jMlJD3iZpjphtp3h0txrnUHowtRsBrUvJSLKgQbQmH7qK8632Y8iDGgI1KlJzgbPre1zD24V4xbTxRHJodxtte2rTGO+hwBWyRKFztFPUz8jCFUBNpUQsHy8gjh3oM8hw00C8TRa72EeNn3DOseOaFG/xf/vGv8OzmlKBLuLzgEJdZufoZ/HibgOOuY4v89FsPcsiNMKFF4oycNukFGAvNGIcn2qxDJCsSAxpSO1JEiKppfi0GJaLiKI6+hd7xB9KZ2+kuROI+PfG1CAEwOeqWCaZKVWQIII5YrKLi9g/59PWvHN8ASdBF0yRVY0iHvtasVcLp1V5H6bMQW6o4ogwjoire5kTjaFWw2uCYgUaMRBZ7FmcMsnyEWC5BRw0LW9fQl7+CW38Bt34RhgehY70ASFsjvkZMRjALtG6IGpfmzGK6rrPuv/o7tZfvU5gP3UM4/FbUrGBcyWJhOLk2RPwEMZLa2ETECMG6ZNzTPW9WFG3GWIloG1JBYHK8KZKxWruNCSOcTc+3jLeRdoprJ2TtKCUbMXa6/yaNtqwhFhVhssvos/8B00yhnSVmxc2XE5WxOIzPl9A5u+SOLGD6Q01BMBWIxWC7IYBFTUYrPVQclaSOqdGWXthl47f/BXdXI04uOqKGxEIQknSWH2FjizeO1hS0MaZ75Btswm89k292B26PN5OBH0IYkrrYNDgaBfGeDz50kv/Tf/Y477tnAdPu4NTz2L2n+C//yk9xbDnHhBlLcZNH3AX+iw+d5v4Vn2bbajCTbfAziDnWZcToUcmT1oDNUi0uGdo55umpt7D4+M8RyoMk7TQlWkN0tjvwXssTqwMYapKLdYBKPz2kzS5ZM8aWfbBdFu8n4KcUfgf8CPVjYmY51Lf8nb/8ExxZHQCBMnXwmU4bFquCDz12kr1WeHFPaWJAfQ2uINcJw+2nCe2Yienx0NnD/OJPvYdFO0uqbmFEbJLlK0ERP0mtdpPvJwMaPBqTiIk4R9T0fs6HBBHL8v3v59BD7yfOBa+izrHzr+2hpYEgGSJzsJSAccR8gO1aox2kmm9SZVPtFBVDNyZI6oKFttxz8gDvfugcVUw6AJKmuWTW4I3rOOBKVMi1ST4DGshzx/lTxxEgHDhNWD2LEUFiTWhn0E5AJK3akdMY70mkVIOElhyPiE+iRZLIgZGuitNXpgB3trAzLD/yIwzf+nHE9shjzdpyj5N3nUkc/jhXPEiYGTHutnFHSrxGs471006JNqe2A1rJO1VCj7QTNEoSUatHSKix7Tglytg0uhIDNkdFMS4jugINM8rZtaSh4WtEW/I4Tlbk2QqSDe7svGVeqe//pyWQ4eKtYVD3JTgJiEBQg4k1+e4FfuYD9/ETj9+XMC6S6MFZmFCEMQXJ1t2rSV0x6EYpt/1qkX3tljfjVryZDPxAQtNG9S3LFSWPI3qmoRHH9WmkwbBg4Qg7lNc/BfUV8jjFtDtUmceJ4k3SBFhoN+jtfI1DzUv0dYSNgTjZQv2U4JXMgiVJuwZyxCiOlmTZYjHaUmfLUB6nlgxoU2vYWKJzaJIXes0iCbKaBDKjxqlPs1aJOD8hjy2uN0gHmBG0mSRaYrODmW1DnKBETL1LpeME0NNIVaT28mRvSr+oyPoZsRgiOiALM6psB9Eao4Zh2MVMN5lFkDCmkCmiShnGsHWRTCK4nISSmyY1QuuItuNS+BaNSf6aqpdAXV0yEMSmjkK2TOOWE7NdSBv1Nx+/P+BQiHX6VDowo1hihIBLQD+5DW73TaJMKdGJsSV26o1WIrmN5NpSmppq7wJZu40ArVpmUlBjcXgqHUMMOPVkmvTjrTUMeyWCATtk7JYTSFWbNG4xllY7+mMxTNVgVEwE3bhJ7scYnZKZFtPhvvWVL/l1ESpCyA/hs0MoJokK+QkiBmtzCAFrkjqiagIAqxicy8iyjKhwfRyTKmA7SutHMsyyGgkmxyg4a4mqiZZIhGaC7TRAkgGDSaMEEcQ5NMuTwmaznXwafAPqcTrFEFHTh6zokts7tZjajUoCjkBA8KrpeSUmvwaAbhwXTEHj+gQVCj+mL1OGVhFjiAquyJB2Qo8ZphmTjKltwlXQwXi6zTlKp3gp8pp27d6I8WYy8McO3f/nlhQuhP2NTMhVydqGTAOf/eozjCXNlOO1J7n8r/8+7dVnUktxfDMJBJmMVmz6CRKZfPbfcZ5LLPp1MttST6fQNGhsMdlcpCVDaQmH7qI99U68yzFEvDiCWwRcV5MkipZZPYdbu/+HI84hpF1x38fM4NbOovkSxmVItpA2M4mJxx8UEwN7L30Nf+V5VAVfjxi/8FUWs4AaR5Eltb+6bhMdzkKwkcIUhKbFtpsMTQtqEjhz9wY5oYMTG6IPxM1L1J/5DUwz6VhoSeLZxhngwFapqgstLkxQAtpbAnNLsMXQmSU5g5oCoVtPsUg6El+zmG/llgCmSzw6vjnZEM4+Tr10Js1nxRDE4svF5CKpAUKL1ZYQEs7Axhk2zHDRQ/DE8QaTz/0qxYXPQzMjZH1WBj1OLFXQjlPHSz2IwWhLpg2VtLiiIGhIyHbXw4t2IlQBo5Eo4PNFtLe2jzg3REbPP4GMNhICv9NH+HZi2Hd2Lxe82PScGoshUpikKBiaJgFMYzrYpuUacfFY6tQdOEOWlVhgu05aIS7OWHIzylxwcYrvL1HTh1bJjEkOfMETxSCtQIyoJsxMWx3AkBGdpckqjAzIwhS0JVoHfobTmojibYGKxR66F7dymtdSdOg7LB23sER6G2tjbsyt6akSUJdGniGSGD7GYbTFxoAxlrh8DJaPcFC3+Oi9B1nOFA2BJqYiJJKSsXkeLPMO07x4ezP2481k4AcSHYNV6XR2BC8koxAVfOxhtOL+Y0vsTm4yMYoVS9HukE9fpm0neHXks100KrU4EE9BErgZ7LzEvbPnWWtfBDvBREfpIyI1jbUEEWK0WBr2lh8i//j/lbB4GPEtUzskugHIlEoDygC1JSv3/ziHH/5pjBSv6aZquiZgsKAUiCY1xtXHfpK4dC+UA0y+BkSMekyzRzR9DBm9ZhMzvo4r+0St6c+eZcVfABx9k1Ekk3ZyF1kyNX29ThNrtr2jjI4qtISusrJhStbuAQVIBqGh1An55ovk2iAugk4htIneaYaIFEkEpZ2Rx228eHzvAI0OUHGIKFaFzApihQrBScJ/YHJsNwd9LQlcSoGEGcFAbTLUmZRgFWuUH/0/4u/5UdqO1ultRjx0DqzDtDNoR1g/IQgEckomlEzJxaPqoJ0y3P06/Z1ncJlDsJyyGzx6NECY0GQDCp3gXUlUoZjd5LhepmIPGKPSYDXinaAmYmIkCzVOa8LKKeyB87TG0BQDMJ5e2KDUKaqWSKK+7avXJT7nPsbl2ztm/HAiR8lEEJMRbZ6gD9qQZK3TwWOjMll7ED39DjwF8uDHCGT0MkvbekynbHj8YEl/ZQm0pTl+L41USNDExpAaxBHIEM3RKEBDUMv0wHnE9miWVhn1j1JlR6h2b4C1yHABmh2sTvDimFIiBBbf8hOsPPhxko7CnYg5HTJDxOGAQgRsmXAt3RgJo4RiCeM9fU0dsJktYV/c2BBOP0o8fB+n/EX+8ntOcTAXQlRal9Nq7AqyWyJVluRj8Saf4JvjzWTgNQpBEge2uyGdiawMMmbNLAnjmCTyk+RVmwT4Cw2EFtVU7VmJRBxZnHDOrfPIaqTSCYXfJWt3QQMuhkSVkZZISXAD6C9TZweJ1uFiaremyWvXMha6quA7SQ3/INaBfQDv7aG2QE2eqpei7DYHSZQsSJQ+jdhQY0ODCzOmT/5HVveeoYwTjpQ1S2ETo5412eHo5lc5ry+T4alDRm6EXNtUHSjgO6W6NqnhSWy7EUDTrYcDbQkxMLJr+NW7E3hNUiudENME2OYIpjMqurWppJcv+5sZPxSPDEGsTevolhktnGOnOEJte4hNmu+4MqHxY8DFNJQ1BEQbxldeZLq7iWrkuZcusL211SU5QlAQPI4x0SnjrIc3sGbWWf/Uv8JMr2HDHtnWBa7d2KW1fdi9xFtmn2f56/+KePHLGFd0CoKdpkHUJLwjOb5YxJR9olh28zVqdRSSDGe0o40ZvbWJv/Kq7/xG/srXkBIV3a84u5JTO7xQJ7ZjXEG0BWXmKLRld+vm/uTcjHcw00naN4zDasvs6ovJhCo/TO0LlACmTv+OOdpCLBxt7tDeaZrBeXpLB5BmCurwJqe9eYPkDqo4P0nMEcnB9Jg34+9MdCsocuvZmT8z+4QNk7Awcx+FTl0UEawAGpJctSuwAqWFGAJXrt9kMqvZ2tzofkxKHe8k6PSNEG8mAz+Q6OoU0eSkBfv0IbQhGsXqmKW8YTKb4mOa7ao6iKlNqAKxbcBPU72nLU4jycOg5Xi8wnm3TZ8G43eRsIdGsBoxkiVFMi3xUkBWsvTIx5jlQ3IJ5NIBsG5/0O5YdJKk1oF1iWdus0S5MrbzB0iPrUjsDmvBOkux+TSn9Cql1rz3vqP8zZ96L3k1oIoj1q5/inNcRBFGHs4cP8wj508Qo08jipAodDLbhTjFhGlq5PgmwexMBlrT+BZ7/4dYe9+fR12VOj0xEKMmNpLNXqHYeGdD8QpBchbPvZ3DP/W3WPnIX8aXB/bxAWo7XbFOnEUwRO8xYcbo5kV8M8Go8vWnn6NtWoLkOJFk/qQtRlqm0WIe+SDZybO859GT+Gd/h2xyjb5rseMbXL22TovFbr/IY/oEb/FfIlt/CuNK1LoEiOvoi1ot0larDA6fJkqG7a2w/CP/Odnxe6GtCTES1SCinYX263v7nh9SgnTJwCupukbAWQFjaBSMdaws9nn8sQewMalURlUYb8N0lIR3bI6Z7RLH1/FZzuCxn8ItHEUIYCYkgaYMGx1qlKmzlGcf5+B7/yLm6Elal+GlRFYO48d7qeKOkazZRUJLFIuX17fe3HwXFTtn7dymhiKCNQkVhekwE6oMBz0euP8edvZGHFxb4/CBlcT0RbvEvBtG3PE98PUZd3o3+xMQkuhRCBDnQ6mu4k9a4Pgp/bDDiuzimylBb93aViM2TojWEn2NtGMsgSqOKeIUuhlr6Tc50K5TqQf1RKPpfFMHrsKYiKrDY1M2vXYfe72DqbqWebV9B+ZkXaV0O5snzhHvJkvgu/l02JhXJgPz12tKghoq3WPYrIMRhoXlvmML1LZPKIcssUO/3WIaLLMIg1xYdTW56TosGtN8e7YFHW0raiR4n6hbHT0zhJZmcBKzcjcxW6SVMiUDOlcbtKlCMXMJkzsbSUHZIIOjmMNvQw49gneDBNHY70AJKo7W9JhJD/IhEltsSEwBjS02L9AQUHFk6hFtQWtMFCRbolm6G4bHWLANB9otMu+RmLgpESGXlnx0maVwjUWzRU9HiTVobKIuxjrdenmfWbGIWT6Mmh7T8jB67DG2sqN410Pj/CBIHhev99h/nBJS8NZHd8NbSTRCOuMlW/RwRI4t5tjYIC65NOYxjU8gdRFsvYsLu7TBI6sPEE2FIRCsBzzETrhIFV/kTLMj2OX7oRzgFlZRU6C9RWLb4rMhXnKcn0KHZZqD6F7X0Qk7Jclp0x3oaW+wkpIBMRZ1OdYIrpmwttQntDVLC0MODAeJvRTjq+O734z9uPO72Z+AEObt4bn6dac9EwPt3g2m65dYY5ti81msn6aDyTdJ8U09/pmvEsQmIFizh4sNh4rAIhMKiQQEEz1LTDmxMqRVoUUJ7ZTGQ3A9VCXNHwFMRuwdYas6TRMMroM177fg78ga3fa5MSkZsFmHhJ4nBF0FP/86VTQo6qoEntKIw9OoQ/KSwhgCluj6hCjUMUnmtq0mNcd2FxvbNBKIHhcbzPgG42e+wOTS02AkGch0pjz4Oo0E8iHBFEyrw9QLJ1GNiRGRp41JTNKdVzG3WsJ3Irq2qjFCoECzQ5CtITishjQekAjW0poe095RZO1+9twq3mVInKZqk0A0rmNqGCqdYdo92msvQSOEkCPZGioL0LQU3mOCAy0Y0cNYRxZGmNF6AtBFSSZD6ju46FzmuQWbE21JUEcsDrC7cC8UxwgHH2G2eBZINt/JXEtfeeO8XmN+sKomhH/o3BmhU9dLqpUeh7gCQ6Af98i1IWrXrwkTMk2sIDEZeb1LVk9SpyFbwoviVJMRVYioH6NhTGYrGhWi7YHrE22JZEuQZQSTgUam1WGaao0YI1EcSUj79RtdKQBYcFmSct5ny6SEwIl2I5i0j2hogZqBtJQmkBuf9AmInUGW3NZdeD0Mml5/8Xq+J96AEbqEoGsQBE/UKbbe46jZY3F0gZ542rqlshHjp+SmIZ9uUi2t0KsKmG1jtebn//SH+Nkfez9ZOyFqRI3h7sPLfOx9byOYDJtZbLuJI6J5H40Zhik2NmgU3OpRzvzIX8EuH+6qwztZCMwPTLn1YRIKO85b7mIQY5AYuuc9YqRLBhCctiSMQ5rPttHQzy0DJhTa0pCERlQjUnusSFINFFIF1s6SNfP0Jn79BcxkPVW/c9Ty/H3zNUZrjLasPPA+hm//UziTOMvqHGo6SVn72rq+fbdhNB0SqS+VgylxMYCTpKIo4BXacpWlj/wFBo//LOUjHyFqltZFui3SFJQGcpexPHDkYY+tS88Qo+LUp6TDFkiT5LKj2sQM0FvVr9YNRJOMZyQJWtmsTNtwmEHbpPddElalPHiWYz/613HDoxx778/Sf/znMBFM9ARuSfe+bmNf8J5b+JAOH5FwJJIqWFEQm7QZbIbG5GSIn906qrRBYpOcHl2One3h6jZ1brIMdTUEQbWH+IjIHlqv0yuXkOj2kzokR/JVvFFMnoMY4um3YO97N0HyhMdQktfB63YEMx+yWtRl6cOm+2HOBjAo1kjHMLBkErDtDu9/9DSrFSwWFkfEEvffI5V97bM341vEnd/N/sRERyUgEuOtvFPw5LFmod3ioOxRakOYTbFxitBAnCWjlqqXMMj1Hq6dsloqq0s5RZhhQg3G0JOanpvgo8e5gJtdwYQpIcsIMUd0muxso6KuID/4ELXr7+vody/oDqzLKz9Pwh8dbqKDN0JKBjTGtLF2drXRB9CWPIxBBCNCZtL8e6mAo3aLlfY6RqBpA1mY4Oo9MJY6WtQ4nCQvdIeH6RbW75HFyf7Pd0ZSJR2SIZHVCSbuoQtHkeVznYucdC6MHb7Bdjj3/dblHQido1XaTmAodamsNl2zxSImHcw7sSQeuIdYnaFdOsdUStSn1n2MymiSZJiJgVxqcj/C6SS5azLCMsZkAfyM1lgikDGmH/cwsUWKAZIVmNCQNZNU3UmBdSXWmCTxHJrULie9v+r6yOq9KBnN4Dhh4Xw3IWoTyPb1ngwwf4W3tdxjAkrSdWysJCXCxGu3iM2xVnBhQmHp8AZ0KpCeIBZxOVmokSZRXaNTME2iJ4UeRi3S3EDrdapqCRuTZydMMeogWyXYiHEZPkJTHsQvncSbMr0GjUiMr+/VnY8TXZ6eOfPNYEcR04EzTRJYomZtYDjQtwwLxRESyHCep32L3/Fm3Io3k4E/dqQkIOH1c1CDk7kMpkUwWOPIjacnUyqJzKY14dpXufEffwUX2+SIl/dQA9t/8O9hdIPNL30CGV1CdIZzsePet+CnqApiDfUXfx3du0YoS7zNmS4dIy6fJtpBUh40PaJa1PWAVCWY/fl9N6d/zVeny/CZ43nnc+A0c98HXovBGsH6OqHIJaHQM7+HcRbfae+XVulLcg+0ecZQJsiNJ3Abz2GbGo8wiwCRoJFIkVTc6j1MrJldfI5sdKNjYTicIUlFm5yNT/+v8MLncAYwGUpGtBWj3T28r8mtw1nwpkjvNbfGQnci5nuZYrpqtGWOXVE3SHNSU4IdINZD1idSIWZAjA4jLY6aEGFnnMSoXBxDvYtoi+s6B0EiYhuMk6R8qYrSgGnJ4xQRQbMcrwbxE4rZOqKBaCvIqySDe+05ti49iYaYRKVsGiF4k6OStBqawSm2j7wLzZc64ODrd7dWNLkYdh/t3OcjNLTGMBucpLE9nLQYk+6vBHhzoJ7s5d9n1U0wGjE6Z7QYolHElhgDtauQlaTgqOrw+ZAQDb5t2X3yc9jxdWy5TLv8VnRwFAhIVLCWIA5jHVZA3AL2wAPsHXo7mIIogsqdFB36zpEmLkm/I9qU9apGgskQIhlNosDaAaY8jJeczd/9FS7+1j/jnmyDk0PBkZxN52PI1/t45E7Hm2vzA4mQRD0kR0ktu2gg2gwkIfy9NWAjRMO0tQx2nqC3/lny0CLREEyBWsNw82uU9Tq9m18n23kJkVRRRZfju+oj4DC2oLjxBKHZoy0WCEsHqH76/8Dqu/8ite11xi9tUsirDiblMbG3VTJmHwX9moZIGgUgkLTGAN33CZEY0saKTXPAdpQkcm2BJZLVm5jhQTj3YdQWnDm0wvGyZWim5E7pmykD3WStuUwWAnumz43WkTPBtdt4L6hmSGygqmhuvIzdu5Q2WAqMghQLhN5Bete/QHX1cxhTgV3CmRyxhjY0YDwiFWJz2rxP0IK5Ze+dDcFjE3aVKVEL2qxC+0cQDfhQ4PM1srxBopJhktKdV0ycUuiUQMbUG8SSqISaVOEkRIwKM1MmkJarME1D5pPDoHeGYEi6+5mjdcPkQzDbImqbGCNZMsTJx5fxs6vEOhkakSnWGHIjGOvomUjvyH0s/8x/TXHgPJn6xGh4HUckdLNqmOQGQYntmFANKN/7F5CVk+RaJyli18OEBmMdVW45v/sZDrptnHbJkXEk8GBATI8olnj2Hlbf9bNIa4m6Srj3UTRPGhlm/WXszjXswmEOf+y/orrrR8DkqVp2AWt6iZUgEWMreqfew+Gf/D/jyiH1Pqvo9bu+cwipWEEyqK3rkkYHGsjjlMrUyeb65DvIDpymd/VTrLzwr/mvfvpB/uy7H8QBydHxG5KBN0bT6Ycer29+yRslOvTwrUfrthm5SKqBRVERms6dz0hItq0a0reLRYztpFvnbnLtPlVJVJGYmASiyb6XEDAh4BhiZIbpP4AtVogKRhzqYKc6wuJgdV+s5Yf+HCjYxIxmPgcUFNEWGxusdhVKNwKgcwbEOvAtPijGLhCr1WRvagJHwhWyl36fqljltH8JK4HQVZdCRNoJTK9i2EybsUJrS7Rao92ZIDuXkVgn8KJJrm+h1yfrIEZibqMNZgV5V9HtDs4Q3UEs1zAa0nx3/jb/MNf09sVVOp31bs5qHDsyZGiqJGObtVAOqGOGmiXUAi4ALabtBqmatBQETd4LwSf/hblkrVgQi3Wy74KnCqIGJ6RN2i2wYy3CHpXxSehRWzI8QWZI22KcEq0STAkUXfV/m3yQcfQX1wghYO1toNLXaUiHcsc4vO1jNN0zEYfpLSbxJ7lNZ6BLiq3LiaTnP9k7y/6hpZDodMbgswGUi8Ra2MsOwXCI16/TyyM6vcmkbSgGq7jBCtEmALOKIlmBiENsljACrkDyiiKvUpIHr2A8vN5Cuu3TAiF6TLTsZsdYsAEXWpQCxFIVBUXZg6zE5WVKfOKMxcUebXG7oJLc9ueb8WrxZmfgtYjbEu40LkztZAVmpp+sh2O7D4ZJM/Q5IG2OTI7JojQmZLIQMbGGUO8nA8lWt8FJRogZsEbA4iSByDXLOfCOn8YtHbnFO/8hg4aS5GgaDSTdsJQMoKGTs72F8TXGICHcEh5RiGJTl6CokrhIO+Ln3nuK7JlfZ/ap/zf3xOfJ1dNIkUBnvsE1e/j15zHjdQwNIoHaDjCnH05grN1riWBlErhDraMcLILpNPNvBwa6HIfH5D3Kx36a8uRj5HisdvoE+0yIOxUJe61iUBy2N+TIO38MM1hGjUGo8cM11h77GWzvGMGkqhxtkAbm78e8wlVXECQjxoDEBiEkYKc6nMswzRRDg4kBo0o2P16WTrH41h/FD48T88XklqkeQySaFm081nuiU7zpo5So3kLdp0iiMsbc6TX9bqJLpIwBcayeeoCYFWkQFizqklz2vpiOSZgYVLBZ3ik+pPVRSda9kFwmxaakLu+tQrRI/xBL7/gJZOVM6sLEKbL1ctIPyBdAbOeJkcCZanNCVMQWqC0xWZWSjQ7U+fo/GhO40cSIU8AMWH37T5GtnqWkRWxJlG6/KEswhogSQ8CKIsHjzOv5+l6f8WYy8BpEtz3v/3eqb5IuezAFthlR6bjTdU+Vv+5Lrd52E2vyxEuK3UoWZ0kwh+QiJ0SMryHzTDLw1nbnWIAoRDtg6b6PYsrlH+LVf0OoduCojttMqkQlQktBY/vQoYSNMckqeF8kic4G1mPjDI0Nedjj0QeWONPfYenq5zgaLlPFCcFk6WAOnsn2OgsyIadhLmtaux66dgZTDbA0qCuSzkGMiC0pF1cQlzPXO5hL9GheEnDMYkF+5l2UB+9J0rzRd52dO9xq7Wxc022T0NfVQx9Ai4UEyCwKpsUK+X0/SiwWUWL6e20wkeRuCcQuGYgmJ0q6PhsmiPhOpSXDicX4KUKddApUyAlkRGL/EP23/xh64CxTswjlIqpKkJyZLYm+JfMTEAimh0pOwtoA+w3cdH/Mn4PX2l77jxtz6Kg3juzg3UlNU0CkQEx34AsYM9elSNdnXMJJ5LHBavLWaMgTAwMQ61CT4e0Q1ILt0X/gQ2j/aOeD4ImzbVg6hOmvQgRrDQFDEIOqIfqIuAqyClf008/BIDrvDMRXv7DXQUj3+oLmjM0y9vz7MMsn0wgxztVUu/tHkqGRtQ6Jyc9FeH1f3+sx3hwTvBYh38DaEYsEJcPjfYPb22JothLadY6mF7nFo42dPEYMGFJFbTSQhRlh+zpMx4l6hxKbCTMnXBPLgo1YpgiuO0ULghVstykBPwSJ3FcPTdD1RP+joO4fY+Ydi52BkbUG7TAE8+olySg3WNMCDXG6ib7wWfJmE5lsskiPSSgRwFqHdZZ6NqIsIwGHNz2stiAZZAPI+rSU+OoQBE/ht1GTpYp4n5U8ZyYL6vrs5IfwxRIH7SKSt8zyA+Tk9DqA0p2ttNKNFiVNRY1xYA6CZBgidezT9A6DO0g0pru6IsnS4mklw2MJIaAiROsIqhTtFN28gmhywBR1GFHa2V6ymTZ9MpMEihSPuAXID1C7Ia5cxfeGVCanLQ+xYw+yOtqj7wJtJkRb7G/gt8e+HO0bIOatbCEBUK0spoo+tmiwqRI36e6wXXITYurgkJdEEXoyo6dT0GTXHKOm59QmKWFTLINN1b5ky0i+0B1/EWMEXy5D1utuvbA/LlJJeA9MTjAlg2oB1O0LUKUX/vpe54QpUiZmyGZ+lF6+TGv7HXlnglOZp+uASQlUjLd1It9MBr7XeDMZeA1C6ObfXUYQJFneFrRIM2apuc5Ce4PcKkTDnGYnxt46UlTBt+lml3Tj46eMtq4z29tmoa+oRiKB/sm3cO7+s2TVAIk+gRFNvK3tc2eR2a9gE0hSZ1Q35OhjH0dnW2lEohFjktOfanIekxjxxiC2xA76yfip3mPyxB9g2xpi5OBCQc8KbuY7PrfQeMXlBfnZB2iuPEO1d4VMQxIocQPiofsoH/sxxn/0G1DvJA8C23UW9qWG03rZao2VD/41XF6ArcD2WHn8Z5GVc8S4L+Fwx1Z2rigXSEkfRBrpk0xcDYvH30p/rSb2+qhRTPSY2EsdBZmRL6wQtgtaH9MM3GaJqRGn+JsXQQJGLJBhrBDbGcQZxBxsomSW6tPBbkuiLSgOnWLcCIX06d/9CEflEv43/hF5vA5rd6WumZl3HF7fh9Krh6YqtOsiGfqAQgcIxpg5FCZ1YiQdXVHBZAWK8Oj54yxcvwBN29HkFCMh4VhMjua9hBEyiidHTNZt2AYlw/VW02iL1D2DNOIyIuATJkZtiektgM2gs/d5Y0Qkxkj/5INUheDyiolNIwGm13Da23/e98GQoglzFNsO7/JmfC/xZjLwmsRtIwLpdO8xuNiQa8MgbjMMO0hoCbj5jtHNH+d85QBtC2gHMEyALImJUz7vIqgYbP8+Bqc/QrAOq5FWBUQTUp74Cl3uH3p0qnbMX4FGoirBFtijD2H8iHnaYozZN/uZz1e9ycEtUvZWiK6HiUrW7lBrEq7p95Lpy944JQdR09y7lQxz8j52NzYp9tbJYkqsgqmIB87D2fcw/dyn6YlJHGaTvBIw9jZdBoH8AL1HfgoJNXQ0TXPugwQpUMm47cruaERJAkRopMZQAmikXD5PdJEphlw84gNWe5gYUVtTrBwk7uU0rU8678amey3WycrYhm72bRHXHVgmop3CoY0RK23HpTcY52DlOM3VXbzrka2cJZ54B8H9Y8xshFOXkgFp2BeJ/3bn051f2lcPTRbFaTaXJ5ZEmFNjTTcykP37KZLocpLliAjnTh8huzpNvH8ixjqCtCSKYYa4AtGGxFZKibJD059S4qplkhBXTNgOTFIw1AjBIyajlQyK3n6vjTmA8I0QRvALhykHJcQZwZhEmR5dgenSfv8uYU3SvpE7i9TTN/0Hvo94fQ/l3ijRedenelJSW5WUCEixhF8+S+MhN8ksBw1pZAAEsQTJMWowEmnF0toBhgm04/SIS4tGg9JD8BhpaQ6+lfGxjzBzC2ixCLaHEQe4VBmQNnVEuXMixJB2RHMbrSe1shWIpoBsIVEPVdNYQxz///bePMqu6kzs/X1773PuVKOqNAsJjSBmkAEDBmxsDLhpM9iGjuNgp9NvdYbu9Vbnve6V1/kvK8nKykpip512OwFjm6HbwW1jwG4aGzvGDWYwFqMEUjFqQEiipJrvcM7Z+/2xzzl1qyQGlSSoos6PJaSa7t3nqz18+xutS7BdvTR614FT3u3RfRLx6k8RqSrGNmk6Q9S3DmctykaUNYiLaUkVnFBWAqUFxGuuYrzvNITYb5KpL1Z0L1qF3meujL/hOZf2TdCTrU91iZZUSHQnon3RFqs7SST8YJWsXLaaLHlKpWPP2v4iGlQNK1VfDY8Y0tu/ipu4OMaabgLXIrExFocLOtDO4qz2XnynCV0dUQ6CSqpwae/F0iUCLCIx1gQgJeziM3CLz0SWnYXqWkOkyujyYqLaCSS6hF24PB23wVfrnCs31UNx6cFqfKMALCES13HEoA2BxPR1lNJAToNyESIhttQNDoKJMYz4OAOtYiItQBW08b28lPG1+dMmU0pUenvTOJyPBchdjSHKaV8NcuEG1ElXYTtXY0+8GFfqxcscfHYTU6xfsxEBbyFB41QHiMFgMfEEjd/+jLcefwDtvGUGHEo5GrqbyAVMvL4VbFp/g7YGR6klreDwFJaBo8Yfdv74Jb0lqCxUCKkugZXn4nb+HJvEoEvEuuIPG/G+cisabR1KJTRFI+VuymYIbBOLQZIIVIWWLSHSAtfAbPoipY6VHPzhH/vqZCYtq+s0IUAaGObbwX6ApBXWFN5a4W81EKabkxVDQoJxgpMqESEoS2PBCiqrLoJf3kFAgu0+icpl/zej398ByS5aYQ/utPMx25+g0WihZYSSJFhVphRP0BWPIaV++j5xPY3uGsmvvorELQJtSIxBUGiX+K6JosFob7FwYFSQeeIRHNXcdaDJHDl6tuyjognysShQIZX8i4Ev707gDxMHTofYskPF45Ak2O6FVNxLtGwTFziSoIuSsyS6ioobgC9NbLXFBjU0QuIqaBTWlCi5hAnliEwJKLHw3N9Dwgar1lsS3UciUO7qRa27kPpzgwTrTsdteRVcFacihGA2n0nvgKRFxRyBjWjpmIQKJA2sikCXqWhH56IuRrRGoTGuhVIBUanXXwhadaxVWAPK1WmaDsJW1VfdwxKIAlUBYrQSrJj0LFMo5/cSoYFVITEhKu11otd9jPLqC3CmwqL+s9FZi/AU3/53Fm/9XhPwN30FEICrUJIEiUbhrW30jfRzsGcjTnvFVGkIlpxCuHQtrZHdOHwqt5P26TW7C1l90MziGTGXaDe9SVsAHICioTox4SISUSSxoFySVntrpilGisRZlFKEtun9f8pAIigX+ZuFsxg7BsN7EF3FhT2oajc6a1ErbRN9VgUHSX4pmfrv7KvimzqJgA5IHBB0UTd9lMq93ncqfmOgXPFFlBBf1a7WQ9MaEtskLAV0TkR0TAzSkQyxQEZROsCUyowHZRIpUVEh4LzlRBRKKSDxm2NbLrhK1SjlfOUCP+DZJNMUmWbynfZ7P1yig6SVHlWSQNKEciex0zRbCa7kTdqKyb7xTrR3EQBKq8l0UKXQxvjmWJLVf1coUwFlEeN8dLxLQAwuqBElChV0EAXdWNWBdaa9ysDcIk0lcG6ykI2I8vEu4H8XyqCUoiQx4lq+rkBSB+MvCyoeRWzDF9Zxvo6+E998R9Ka+2njDMQJeUOkbAjp2nfpgCSdp4LBmRARTVAOpg47m8uzXOi5dTX72OH7EAA6aRASe7dMZmUyFcS00L2LSfbshnjcr1/XLrLCEP5OFNI5zjgRktpC9OrzqJtuRClKaS9u5Zq+RCm+tKkSRWBjtLNYKeGcIRAHpop1Fl1/E/f8o1DqRlV6QQcoXWKuO8iyyGxMgCgDfWsor/wIiemkKQFWlfwB7RxOhcSx9e4WZUhMjcSCU8KaRVXOXlFlVTViRakOYQnBUetdSCPoxumqPwgVIH7DVS5J/d3+fZyotNPc3DcpTtlM0884B0qcb4DTrOMqnbScZqKVAJIqSC69RIkPflUGEERl2R3OH3TGoPOWQlmlGJ26J7wCp0WBlGhZg9UhmA46lp+MqSxMY2nmOq7dAu/naJrraZ2AtRjnOzbGKGwygTVeyVLxCMY1SCinbkaLUwku7YGh0rgZJP0rzzhSPk03s2qll5H8d50GK5IqJ/D+1xc5Giazq7zrNfs4CaokEiCRb8imJa1TIQEtQhJTQXUtZnBwkKR+AOViJN1fmfL/ub+2jweFMnDcEeJKH10XXI3pWeLb5SYtvNM1JtEl6qaTJiVQIU5CoiSkGWuSyB96UYwvsc0EYX2QsO8ETFc/BGXqdOEI320QsxZxmQ/TkRgfXFY+5UK6zvkMmBotFWA7+rCJBa2IVYCLEwIXIypNwcIhSjjnlLVcft5a+tUYXclB0CEgBItXUe9aiVUdk7ct5cub5rd/U6UlZZx4kzrOB2SR1Tz40OBSy0CESyJsqUqiQl8hUmXWEsFpjUUTSYlYvBzJWj2LIkFAhwQkPkVWvDMIERxeIVBCavUp0aJE4hQuqLL8/E9SWbKmrXLiXEYmLTCSZsKkaQTO4es14FsPj+le4sRiJSSWEiR1nBIa0keCV+qdSnyGgLRZBtL0Y1E6Pej9+x7q988skmkDH8hTNedKymaGb2blEGe97180cbWPSFcgbmGICCQryqawqoLSZViwHDGCJEM+pTgteJarAA5fY8EVCsF0CmXgfSBRJVxpIZYA4xICsSQSAIYJ08Pe0kqa1SUkqsS46qFeXuo3ByJQaZFSiXHKom2ElRrO+CY64+VVJLrm32gOaf/tKJTPClLaR6nrXlywPE1VM7iOhSijQWkSHfoCNklzsiSDjUAErSylUBHGo5RsA3TJV2QLexkuL8eWF/l0q9T87UvqOlxQAlMjCTqJXJpiaLOqfh9o7uCxJb1VohXETbSLfd67+IZaADrtHe/CClaXiSu9NAkRU/Y3UuvN/xFBqgxY35grUyLSOJBsaxErIGXCai/WKZAQFfYgupqO6YMRxTFBJDdBC6RuA2/l890Zne+EKRp0N6Nd67FhD1ChrmokWBqmQqO6hobpJnEapy2YABBU2iY7r7qhlO+emd53USYPkvNjyFwJKi1xLJMVEOdQDQfIq2eAi9K7vSGpLWJc1XwnUg3KNpBA++BqVcLp0Be7ao3TevEJXDSBs0nb6x36DgWTFMrA+4BzgtNlEIexLZRApMokpkrnKRex8po/ZtE5l+F0lWTxRro+9SVMzyJ0cwQFGBcDEU0dpFpyGYhITIkTLr2RUt+K3FA4h9b7FByANqniU8NKF6KESq1G2L3ER/mLJhFfNVAnDZ+SlfjSziowPtIdb8r2MQghsSgoLWDDJz5HuGQ9Kqik6XM6NcNanBhUuYvutadhTZWsbGtWFc/NVaG2kd8m0wPDRU3Exj5GQKWHBSBG+8qMYRU6etEnnkydErH4wkwEZVy1k0SX0aUaRjk0iVcw0ltr3pIakLT4VdcJa9IywxqkAhivZn1Y9uRMMWiLGQgESBIcAeX+9az/zB9S7V9Hdcl6uldtxFpFvHQt/Vd8Bb14HegyiSQ4pVIVNPOJt8lVJI2gV96l1tZzZFKY3pkzt/HFlRwJFsE6Rffq01iw8SM4CThh3ToW9flsClEKY8r+YiAhJWJaO7eiEt9106XVDKdmFRRMp1AG3hd8+o8RR+Ba4BIiVSJSFWzXCszai9F9a0lUiWGzEFlxNk6V0HHd58DbFkhCQ/vWudZqxEW0nKCWno4q95D5LufkVStbm8qnRokKidNIbVOtQrWXxPkDJkGDcwQuQsT6hkcuRpkAayHC3/h9oaeACKElZWrLT0FKC1DVTh8sKBqtfEqjjQFVRfUsJsb7YbMqhHYOinOS6f5RyYLRERsTatBa0vIWzh9mOsDpAFeqYsMaraCGC6revy8aF5ZwHd3EKsCUaxgl3tWiJQ81yMrugrfIJmhUWE1vzwJpzry4fERzkzw+YDJ41yVJrgz4iWWRUgeUF6GXn4kr9SGVBZT6TiAmZKzUg6w4k3HVkZaG9jUKckvD9PfL3AMiUyoKTpXjnJbqJM6CS7xlQBmk2ge9y3wMUalEqByQgBN0pepTlHUJF9cxreE0uBWctUWUwHtgXioDzjmstblJb/ofa49lKUuHuJbf/CTAhIYKFokT6qpMEvSA68SpkKRU8T5DUyOhgm2MkFh/yOumUE6aoGJE130BHHGgQhBf1EimWQZSL+4cQaHDKk1VxiowrklsehnqOhMX9PpqY8piGCe0o8TK4HSVIBnHWovVZSSJWFTVLDQt6qqKNV0+7QgFVBFTY7xrNePVJTjVwqqA8WAZY5UlOFVDoynLWBo4lxaCtpl/ce6RbpWAz4W3aagfojASE4siMR1UXAstEGBxYTexqeBMiVh3YE0vAU1IbS7OhTRLPQQqRpkSRiICG6NUyYcV4NNbbZqoJAJKLATdjCw6D4IFPu0L660yH5BsjhaHw4rDifXR/lJCYZCkSSwatEEUONvEEYAu+dBLEZxUsKaEbYyhdAWCXko2IRCHuACxioPVtUS1FamdKwvqjLEIUc9imiotUkb70S+p2wC0c3N23uJIC6aBUxrtHMaCVV3Ycjc2aRHaFiUbIYlFxDFRPYFm91pwDq002CbaRiSE3oWI9cWgAOcmS44XTDIvUwvbD/zMj+ac841ynDvmvjWtHVhviv3EuSez/adbWdDZRaPVJJYKYQQuVESVDoQGoLDUIAzQpQ7cWB1lDaWoTmwMiapjXYjKqgtmN4WUuXSZTQOvETSm1kMr7CbRjsCOUV52Cgt7TgTdgSYCoxEVIa5FS6qUgi5C16QJqKCCSlqcu245Z115EeGrgin3+dsBFpwPGOw6/VMgY6AhloDw9Kvpv+hzSFiDZpNS9BbETSIHRlx6h52bOPFFagOXIC4ikhLgUMogNqKuqpSCGr1Sp0daLO+uYE0HCQHalLBxBStdlJNRAg0kiohuyiecTjw+iO7oIdQxJZv44C0RxHkfeSIKRVq90MaYvpUs/+z/Q7mrJxvd1Fr5cxCbprb547fki+Ako8TO13uwkKYOBjilKYlDaOHbCgeEzWF/0JsyOolInEOkihCw9BP/lFL3Ch9nrBTKRSTOEpsq5VPOIHn214jRiAi+VJZX9PxsdV72czTeZTL+QhMpjbIWSRyJqRLrMiXj0K1xVFIG8bLtPOlSX61RjxPHjpZroCWmqTSBS3xmgfjUYq80zd11fbyYOxfHY0xW+hbAWp/jb6095ooAQGx9z/NKPMqa5hZ61ThS60WbNOpXDE5CVOdyJqQHVJkEcKUaUuslMp1M6H7ioIeGVGhKB6gSgp77aYVA1ltdhyUwJVxQhtSPX+5d7PPerQA1WuWlNEqLcVLy5j/r/M3MaJxNKAeGnt5uwnIZZYL0BhDilCbWiqBzMaXqSnA1nDhstRvpWAqiaOgKg/QSO0VIQoSQtJeInpNMdRU4a3HKkKgyVsoYV6cniFia7KaSDKNpoVxMElYRXNpe11fCs6rKsFmEW3wyB4LlJKV+ArG+Ap+YNBhxWny785YIVEC1b0naTte7YWxuYp+LCILvEOiD/RICqWMPvpFGsSufSWHjfJcV0r4cWepcVE+DBAM/r8tLaaoaTpWoLliMzrpopj9tVQcjsgDXvQqnq1OyCebyDH07nGhcVuYrrZyY6AqRC3HOpkpXmUQFmK5+dEc/SODdf3ELsUm7w2ryhWWuzrnjy7y0DMBk1O/4+DgAlUoFrXVuITh2CE6FCIqg8Ray+QkWq6VEsgixCUr79qaxE8KFJ9G/wYKq+sh5VUaZTppBi3Dt+Yy/+VtiB73rzgEJ0qA6afNYzkEEH+CT1nO3KsAFVayU/GFlI4gtzhisdNB3xhUkySDRnn3ev5o1QdIBLolROLRAZJM0jMLfAGKxtICSCxEX+GY7koBO/AXVQbjyPFoXWVh4KooWIfimPnkS+dxi0mhs8wmiRSFiSFSNYOGJaK0oqYT1lWGCxkFEIox21IMyKjqAQ7DK4FSIqvTRcfYVBEs3UDrTYqrLqKiEcXF+45bJQjFZ7IAVEKdRKiC/lTnxUTSKOSnXDMkUcRFEW1wyQmvbSwSd54D4KpckcRrJT/69TnyaoLTGMYFPKa6c9glU/Q32bf4ZNV327r+0iLdzvjRZ2L2M3nOugo4FWKnkwYNMvvTc1a2mkaVQZpZDxM/l6sKVTJQW4J0uFieKyEe+erXBCSaJkKiBs9HU1yRzqczdOXc8mbfKgIiwZ88e/uIv/gKlFGeccQaf//znMcaQJIk3vx2Dgh0+YEvjlCGUhEWNVzjQAswJBEYjTtLbF4R9q1nYsRwIUUaIdJlSqRtbgcpF1zHy4D7CQFE9+TxiCXw706woyTHyD7ZbS9pdJ8eV9OVFpzdQUyLGYBGMaEQs1mcW07H+o7RauxjeczfiYmIVkDhBtPY5x85hncUqryQo520DDp9v7DdoQazC6QBLgj+aQkqrzkGvPA3tApwd9ylzhIA5pjLI3FSZ0nk85TsZV542g0qj0mKpohatwVX7aFnokzGMbSA2xpkqLqgSR3vwymwAaHRlAX2broSSYXHPKqLXXqVCk0ASnwOPIM6hxPkMmqyVjAhehpa8gQ9pBz+ObecM51y+ftvX8PHAR5X49StKMCVBR+M+sC3t3yBJjFOS++99vYy0nXASYUxInEDp1EuJ3tpO/PSv0vRBk6cUgp+3qtJP96YraRzY603eMrXaafas0i7T4zBvnXP5xel4YgGV1SHxZhbMglU0OpZRlXF0UkfwDcj8fPOyMAjKxt5lxWQmjYU8S0PSdfBenmAuFWw6GualMpBtEg899BDnnXcel1xyCf/hP/wHrrzySrq6uoiiiLGxMd566y1arRatVuuI3QdZ7IG1ljiKiSLfdyxIYhbqMYwCsY4kinFRROwEZUMSV/EfJw2UKRGEnTjVInE9ONOJlYTYloljR2IT4iT1Eh6lMSMbb7PZpNVq0Wg08mdud6kca3y3scS3HW02fW5/FNNsNLAaJGmgRRFZRySCSsq0bAc2iSCq03TknQZdq0XUrKObDbAJcRSTSIRxEbGOSSQkiSNcDC5uMaF70XRjIoNxDktMpMTf5gBrDbjEl9s9qmdsmwtxzMTEBFr7bel4yjYNcyPBglM0VYyLW6hmiyYBge4mtmVAkOYwpltoRTBolhBIF7HqRtC0EkcSx7RaFqGbOIp8X0SrqNGgpBzElmYrInAxVgyx6PwW5q0FjsntejLkLZly5M3gCds26jiOaTQaaK1zZeDYWvmmvzlEzmdjmNjXpDBKSOKIJE6IrSUQRxK1aDYbOKd87AYJQWJxzpIQoCJfOyRxFUhibLNOvRWjncNqRaQduBY4g7hemnbMtyqPWrhmE1SAdUluGhDnEBJ88aeZSzdXLkTyfbB9X8jm8PHAYX0Qr1X4qIimr0bYqjAeLKaj9QIlWtAaxTYmEBESa5FmQkuqSDSGbk4Q1RskWJ+kqBXaxYgDq3TbLDz8s0dRRJIk+cdzqU7DTJiXygD4m+/g4CDnnXcenZ2dGGOIogitNbt27eLee+9leHiY4eFhduzYcUSvnSkb2QEwNjTEm9EE3ZHQYQw9NKg3RjAOGqPjDL2+g8QkPqs9KRMwQZhM0EwSSs2EOHEc2DdOEgtxXGdi9yATukKsm1Qif9NKjsIP1j7eVqvF8PAwQRBMsQwcN+047QUgtkltfJBWq8nEgQMMm91EUqbD1UlwtKSEEyFwdTqGxtDENN7aQzNRSJwQj45SjwOGd7zOggODqPFxDu5+g7oeJ6RFJCGRCqglY2jXwuoarLyQJKgwsPstyklEOWlgVYy2hoYu0VAhJYtvCjPD++v0uXDw4EHK5XL+uezzx4vsQHZoWiqgFI1RbuwEFK26pTl4gJIdZ9XqlcQjL1CvLMKeciaqswuz4GTGDwxRAva/+QZRayeJU1jVAFWmc+8b1KRJKAkTI6O8+fpuqq6BFUWkfFVMhU3jWg4nv6Oza0+/+Q8ODtJoNBgeHsZam1v5jgc+U6dFyxliKVFx4yzUXbhEEUUJB9/cg2o1sa0WI0MHGd+1A1ElJGkRKUP/+ASBKIbGmiQ7dxCrEsHQXsJ4jKH9uxmP3sCIEIkQK0fFjhFJDWWBiXF6ogkG33yDptuJxRBb0vijrKeGJSuqfSyo1+s0m02A4y5bACTGikLFZZTERLpBaEFiTWXFadhXttEcn2Bi35sMJq/5YlgqIIgn6DnpIkafewg3OszQG7vBWhSWSMoYF6GcJZHUN/gOOOdoNBp+OB9yRQDmsTKglGLBggW88cYbrFu3jiRJCIKAJElYvnw5/+Jf/Av27NnDD3/4Q9auXXvEN4z2A8Bub3HC8iW0nl/MxIEatXiC7o4SzUZI19Jl9G1YDaqJo4R1BklGGXouJE5qqP6FBPUJelevY+jVTqLY0bd+A6iFJJJgkrRf+lHO1Wy8jUaDnTt3snbtWuD4LwLrwNoEIwn2rRZvlkp0LV3EwhNPJJGQwDXxLYW9z1nRohm/yH7bpLJyBcMvPUdJaYIFvVTHyixau5qkvoBoqJMFa9cSBV2E4ogISICyawB16tJNuHoNOhpnaakTxBC6GCsJ4gxN0YCl7FwaqDVzpswFaznxxBPzW9Vx32Tc5F+RQJg0saOwOyzTt2o11aVLaIQt1MplyAsDdK85i8qqT/vWxDbCPXYv9lXNshOWI4tW4bRGS0RMgA7eZEhiyoFm4QkrWbhqDSXXAsH31gBfkKgtjGtyNJnv9tjc3J1zlMtlurq66O7ufh9ucg4YwxLSokRgI9TBk2m+/htMrZP+DesY31JFvWnpW7KExWvWggSIS2iJwMF+6mi6+pfSs3Y1sVRh3zCjKqFz0QLUqtUICqt86Z3AjdG0Nb/Wx2rYhzWlVSuQ5etADNb53hGQKYCTRvGjespUjqOjowwODrJq1Sr/Hsf9cExLtid+HsW6iUkSrKuiam8wsfdBJNHUlp9A5/K1WAuxLmFtQnmp5sDLL9DX003n6nS8zmK1z/gQR56W+XY454jjmGq1Oi8UAZinykB2m7jkkkv4+te/zm9+8xs2bdpER0cHSimSJEEphTGGOI7zG9yRvH57TXDlHMoY6omiIiWUq4MSIsqEyqRaPCRpHXyNwUiVhgtIqp3ElEBbxFhUEiEu9XeJxunYB8nJzDfV6Rtn+9jbb7DHB+cXpmviTMhb4TI6pUI5nkAFBotCOe1vmJLgSHBRTNmGiArRtRJ2MIZyBbN3N9FT38Hsehxf592XznWSVmFw+Kh3yogonA4RIPBZ7z5eQXxlPB/+1daAZ4bPP30utMuz3Qx7PHDTYqUMvkiOC7sYW3IuCxesxRlfsrkcHyRx4Ew/SIlEaUQnNEsLGOndRH/QiyFOuxgqlBNcECLK0R82CDr6fJS2TG4pWtJMjzTQdXJggj+sUo5CtpMvMSnb6TI/XjgXImiC7P1NJy5J0rnqkCTxsSraf59zEU4UBkcUlLEqxKRBlEocrrqYA0s/TqW8COMsSk9mEjgpo5V4d0sQsH/ZJSwoLyVMYzVUWn44n655CsPRuQk+mH3Bx1z4AkyA+ObhYL07NKjgInBRHRfUAI3WPnbIYCHoIAqqvlCZaES8PLLky7Qz2buKJnM3zRfmpTIAfqIvW7aMP//zP8c5R61Wy4NijMkKpsgx8ekqQLTC6pBSFPngKaVJKOOMLyji0oAhBWAV2pVQKsSGZWIVQmBR1Q5azZEpGbJWXNr58Nj5Rqcv8uO5IAT8RuZA1fpYfvEXqfSvzO+SVoUoJ75XgBZfnFQrxDqQki8lDDgJYP8AjZ8P0Nl8E33KlTiVRm6T3pEE/DFvKGcDSBUCnT6jSb/PgA8Cm36pPdrnPd5+7ClvBsnkfupTs5xFhd2su/L/IiiVcRMHaeoaQTzqEzp0J6W4iQsqvkxR5xLWf/b/JejqBeXS+AmDEojDMmhFJyNgqmgiHKX8vcEiuVVFpoyrPWXuWJKt1/fFxyuldG75EzgxVYgjQi1eGRCwJL7XgNOgWlgElQiJLpGIIcT6OSoO1bmMFb/zZwShpmUTAh2kwZZgXYAWh9gITMDCT/8xqtrnDzs/GCb/OsaTNmX6Xnh85at93xDxJn2NAu2biIkOsIkjpAESotDgFKkNASvWpxoDViS1KfoaGACWAPUuQ59PSkDGvFUGsgOvq6vrkIJDx3wjSXOtlTZpcxx8RHHW7rXNf5WtZYVFCYjRYBL/9dIJNDU+ultFCAbtlFch5ujclTQCHSqI1vStP89nwqkA5XxGQSxgVGY/KWElIQrG04+6EBciqoxOBKIWYg1KdaKs8cVypqhP0w+ldxDdh2BDyB8h7dKmTYBLhKDcnQaeps1w0gZEhCVvNUEQ0bRUCVPtBeUbFWXSytaP1to3KZoiqywWwLV9fMjIjs8Dv29I/pT5/7X2h71OSzdLdmPX0w7p1LWHSvs1TAZVBuUqyrUwJj34fDoG+duIAgnQpc45X7Tp7cknLZlRSdLIf+scKiyl7aFT05dM/1mN0ZrJTJpsob/bgp/fzFtloL0CYebPzQoPHeubmxPv7ZYg9JuFKH9byPuRexMYeWS1v4GJVrggBONN6bZnI8ou8LdgiVBOI/bY317fT/IUHxGcLqWpmKklz4ESnxToBMR6y0lLIuJgHJyjQoVI0opicYvQxYgVYlciQDBZOttcFdBR4SYPrGw3RSEq8MWaBK8IKIV1DqsMBKX88LIIsSoRSwnBIOIVz8waLXhTqlVqXkr3EJRXBiRTBki7RObzz8/TXO4iPu04tV7hxCsHLjNtZyqCx5Fm36gQK96O+GGVuzvkI+/isg5cUPEFh9yh3wkKcQqjTRpImalrk2qBvJOOOo+Zl8rAO6UdHZd0GfEuABOWfdvRNMfdZfnGbZsr4LvxKYVTIS7ooCEhiKb75Ivpss3UpRClB+l0zXiuYUElgCHJdHlxKOcwykcBGxHEKa/4OItTlpYSnIUQqLsWTjuUtNCuQWI0raBCRQG2hajyHJfR0WCzuyiT16z0kBFvldHaYBNwOsxjCDI7VYTG6QC0wTqvtnrPq4+nUCJYSf2waSXJeYOb9k9ROFFp5UBJFYFMNqSy9/J3yjfUyi0DklkLHFPaFrfZHrLS444PwbJ/B3KxTrnIe4XAioAOUKbkQ1PTdEpLpjwpEEOgDSSt3Bk1ZX99X55i7jEvyxFn5s3pvb6PV99v35xEEZYraaU2v8E60YgK0iArmIz+8VXfIlXBmi7qagFICRtUkVI3SgRxoa9rLu3m2DmIgBOLk8Q/S+prVcqBJN4CkkYW+wMoJqbCCEtITDc6hEg5H+VeUjjXoimKhq6SIIgcx/SnOYC/PaY3UyE1lQq0mfaVMjinSFSQFsSZbOLiN9dUncgOs+xrgldaHcd8zcwNsjkJIP6AR6GDENJwNZe7AcmVAQGvXEFbVLuaVBbSbdmv7MxlQ24B9PvJ1N/FhxnJLQCpAqsMQana5vxzqYIkqUc2wGiD2BbiLIdzV80PyR0Z81IZeL/JtoygXPVmRFEQlFJ/7bRcYElvXqUaLV3FVBZSW3o2TteIjGAVYBOEwL+uwncvnKP4zc53XdTOETiLcTY1bxv8XdQXdHEqwukWlZ51dK67BlM7gaSsMbU+glIPkTW+AEu5j2DBGhIpMdd7Nxwdcsif7Fbpt0gHSqOMQStD5+Kl3sTNZCMXRYJ2Ft/nLXNlZVkQqs26Nod9VTNFsgCglKwKYx4zkMXzSDoNhfxoUiq1BGSHepvs0u9PRPIMIx/y4ea03n8ktEVQTX4iP9M1JqxMWduZ68q7ZgJMYNKAQR9vddgr0zyR5XtlXroJ3m/yNVwup0Fwgpgg9c1mbUhl0j8oQiIlmq5MddFqVvadidNVmoCohDD2r+GUYMXO0d5kHl8rzbcp9f48S1alzpsBA8ASAYHyxVT0glNYc+mJUDXUyxXMgpXorhOoU0O5mMq6TVROv4i6DQhF5tsRNUn7ZieTH7rsY+dv9ijtC7P09eG0aZOXQ7vYF11y2TydtBQgyse/tKWAHfrGH2LctH8oQ4wh0KV0XWfR95lNX5EVYBKl/KVguiKQ2Qid5GedV8p8M+N095gvEs6MAdPWsPJNzaZ9NpMN4lMNJ6teTn593imsR0BhGXgfcKR9zwONFWipGknQTRIsINadvtEGgvL9+UBgpOMkGpW1CGWk3AVoSoBOA8BE/J1ZmL6ZzC0yo+jkka3yZ1KAOB8voPHpg5aK79hY7fGboi7jjIaghtVVJLFQWQ7lJZg0UGu+Mn1WtPtM81njFNYESDxObEuI0yCJjwfIrQmZr/vQG6xVgQ88JFUKJm0O84RJa4nrOpF9yz9Fa+FpgPKBw2JQIunNXmNwYFtgaiS6CqqEc1n/jwSIyOI8FJldbHJtZG6GD/eszqxPXhOwgBWNiE4bFCmk1AkubpvI3nrlg7UDooWnMBQsAmdzXTXN0cqtM/Nnjr43CsvA+0AiClyECzSxKoG1BLV++i86Hdu3Mo2Wl9Q6kICC3tM+RUdzAoIORGuUMpQEcCbfCfTc1QGmoMBfnqZFRfnYIL9sDdlyV76YjWqBS3BSSpu7+VgMpSxS6iYxVe9IkXkW1NbOuwaZSaoMhMjEBE7VUhUsBjGI8/J24o8k/yPtr5h2mXSmzcLl0v/msr3qyBHnCPvWctIN/x/KGLAtnBbAoFwWAyC+345roYIOMBUfo5SeSpY0iwjr6w6kvw3/e8wiE6YGw30Y8c+WKZW+v4JzCoX1cQCicKUuslM+tZMCadaAKdN96iXUd+/AJYkv2JamerZbCT7MMpwJhTJwnHGAVQolQlLqIKKDkhr0ZYeXnoky3b6CWb7M/X2g3NFLuaMn9S+ayQCtqX8x16e0vM0H058qM/F5KVn/Lye0KNPSHRCUcSK+gqAO/CZLFvlekHGIXMUHp032R3g7e8LhX0yUwiWSm8UPZ/L+0CIC6NTf4uuT6LBK+2z1EskOrdRfqEuYsEYQaB/gmv58Il6pCohySR5Ogh9yqb4N7W2vFFZ0fjnwdWEAHE58XrIEFSJnQIdkxdymJhlS7AzTKJSB9wHBIVawlaVgKsRxSFjtIwkWIRh/W5A2X6BoX5DIubYFMF/JlCQ3KZ/MbI2GjkU0RvaDBIhSJKIRYyArIJXaWwoOT5Yh4GbQLCkvgy2pMpClz7V9x4eZ/FgR0lw/4/9yzpunxXjXX/ptFl8RUusQHXagg8wykIAE3hyOwjidWwQKJtd9XtbaaVSt2xfJcjIZt9LuCFMBzlSwbY6W3PXgstf6gB5pllIoA8cZAQIbgzIE3evpWNiH6T4Js+RkYnx6oxKXT3dS/2JWnGT+GVynMxmAlS91wQe0qZDOE0+j4QAV4gQiFWDCMgq/ITtRhUnwnfDJ7pAk0w7y94Z1bXEF81bxmgwQzPQCZ42PcRGTHla++JUoX0tDBTUa5QXUVBkjgo8X8G2dcub1xM1k1iaCbN3rkHDBIlSplq7vKdcEwMdqJGl9FiWZi6VwErwThTLwPqDTlpkqXEBU60etuAhXW+Ebx+AOnZoy6TSYNI/NR4S0xdjkZ/LYAgNiCbqWEVWHcNr7FiMdUAlKCDY1Ixa8Iy4tcmPtkdcKyIrjuLczan/YZ21bqp+Qy8+79gSrQhJdwphg8tuyGg66RL22nEawkFCFYFtohIQs9mI+827rXsCUUrdK5qaBzILofNQFCZIqC3bKfppJd37L+FAKZeB9ICudqZUm3PAJZNHpNFWJko1SF4FqU1ZTK4GTqRrxvJ26hy5cl1YdwykSXWNc9YJp4ZQiFoMzxm8FovPq5AVvQ5rTbq3NmzUd0Y8r8Re4KXM4v58dw4HONlxbQRsfv5JHCohfxTEBttqDVDu9nNOf898W0HfGJ4iqK4mcEJCgETThB/M4s453Wvfa1xNRBpxKg6/t5HdPmcaTJd4zC5aV49Uma25TKAPvAzaooKxFVJPyaVfjdJnYfwVsAlLOTbReEchStFLc9EYw85EsGUjyP1YgEk1DhTgDKEWilK+ih8Vh53fNofdCWjffWZsWwTmSnxUma/DrvLX2NC32Q0y2TjMXSeaS8s9txZCEVVxYmZy5Lu0wKoq4YzkTpouagiCKEWXRYua1LfBQDl33Dgc6wKowVRAmmR6xolz6GqmS6uMyDm/Hmu98uNNVZwliY39zUiFO94CqEAqIMv7PVB/B2/wpmC4HwaGJ0SoGKmn1wjou6MDaEOcE6z7Mt9Ojw4Gvkic1wmYDqwOczr6m3j0XW3wrbh820K54OeZwUcwjYLISQK4QZJdT5wiSceqqC0xnGtGedh8l9WmrLpRotAN0GSjhGxJn5Yvf58eZtRwqCFddznD3RpAyKonxMtOIA+XSvhmZ5aatxHP2GytEeyiFZeB9QLvY37rEkEXHGvD+rkPUMcm12IJ2ZMq/sruCsk2Ma+J0H00XUulbhO5biXUBjri4Zb0bSoCQoNUgSQ92aT/M30l04tNmXVpYTyS9KTs1DwxZb7dOJ/uMhPE4LTGIDlMPoPeD5+U0JCR0EAhAkMcKzQPhHQGHX/fSewIbrvgyYUef99I48SWeXRox4JLUDjD5Gu21Gqa+cgEUysAHRh4RcNgZWUzTdyOTkBKFcgLOMBosgSVdVDqXgoj/vBRGwbfH4ZtBJWDjtOyrS9O1OKT0/qGIT4Gdt6J95wfXLsa4FrgoTRWcrMUgWcxBViHzODRI+zAy6YEyVBYsAWewEuTugrYQznf++YJDKJSBgrmNA2KHuIDSynNpdYY43YlYn+jlnCXvGlcwDTfZMdLFSJbimvaJePf4P/EtucWlTXmEvGNMAZBWF3Qx3lPtHQUIYKP8cwVHjlMhLvY9XrKsoUKSR0ehDBTMbZTx3fN0yJILr4FQiAjTiS3o+dyo6F1JAwCV9s2KyA7y9tTWd/px8UWetID1ld8mAweyQFiZt9exyHTSVC4tIZDgFNjUEuDzXGyhN80EwQdVm1LqCJDDxF0VHCmFMlUwZ/Eeap3WztdIbTG2sgRE5TXHCv/rOyAABqREZAWndGpufa8yEywKlMk/9n8VRxyiiLtPZEgvBt0Bafb7ZGmCQkYzJ13XqWtF5NBC2PO5QdlMKSwDBXMYIRFFIr7bY6JKtBACyAuRZFnGhUpwKD7n2lDpXkjDVHES4FCIeo9dB0Vwyvjyz0pP2YDbc7vnJ4qu0z6OOmECdCc+sDIBMb4Fj6hD0uIKjoQsyLW9+0jWo+AQ1aDgPVAoAwVzGgskImlqm4+GV9b7vq34dqVFxMDb48QQdi+iFVR9RbfUQTDZZuCd1ALxVpjcolDcdydRBIs20L0oJBaDoZX2IHCpglocWEeDVwSS6Z8lzYV5/wf0IaCwpRTMaYxzGGdxypsLQ5dmy+nMfFhkErwd3sgf40r9NMURGo1yCaAQl9UheAfZicYRUjKCjhOImiS0mECQJM5qac5fVAXRQVobX4OEmNRyJaTFmgqOgum1WAoF62goZmPBnEbjez845duUZoGDpL7v+do6573hUERYXcMqXy7bd8pUpO7td0YMNugixpeFxTkSYlo4sHH6PfNU+lknR1LlVDSILzCWz9FiZs4cwct3yh//hUKqM6NQBgrmLG+36CUPLiq223dHQGlEBWkgoPL9HN6L4FRAvdTPmO7BOQPK33lVEbjpyQLcaJuTxWF1jJhuFSiUq6OliBkoKJjXpOZV5YMAnUya9t91a5WAYNF6VFL3bZCdz+LIqmsWQYQFBXOHQhkoKJin5EValU/PVDpMexK01Qp4J2eBBCw981JQLZyaNH77f5l3/tmCgoJZRaEMFBTMV9ICQ6BJHKkykEZjC2213d8G0UipG2ilxYZc6mRIvOuhsAgUFMwZCmWgoGCe4tO0HSiFxaCDCnZKBsA7Wwb8V0tk2QdegYiRtIPce3Y3FBQUfOAUAYQFBfMZ6/sLWFPGVattqYTv2sAYRLAiWF/mqS2Ey2KLFgUFBXOKQhkoKJi3CFhItLCn9zRsrQ/jIEgrDrl3cxPgNxBFVg9WgAoQ5r35CrtAQcHcoFAGCgrmKT7NLcB0drH+kzegqwt8+2IrqV3g3a0DQtZ6N+tLEKRuAuZzj6KCgjlHETNQUDBP8ce8QoIOehatAlfKv/ZeDvFDG8VJ/u9CCSgomFsUykBBwTzGaUFU2bd7EQPOW/t9PGBR3rWgYL5QKAMFBfMWwSpfJx8p45ygckXAlyUuVIGCgvlBoQwUFMxXZLK8kLj28KGsaqBK6wcUFBR82CmUgYKCeYxylvakQMH6/rDO5wkUboKCgvlBkU1wGJwrMqQLPvz4WoMxgkVc1iPekmcQHGYZFGvj+FHIdvYwH38XhWXgMFjr86udc4jIUU8M59yUP8fiNY8Xkhadsdbm45ytY4XJReucI0kStNYf8IjemXZ5fvBzIesk0B7+ryfLFItPL8xkC6C1nrXzoV2uH7xs351sjNZarLUYY2b1eGFyX4DZfWAei32hfQ+cDxSWgcOglDrqDaX9Z7IJaa2dtRNr+uLJ/pY50oo2G3OmyM0mph9S2VyYHUx3BUwtFKSUmtVzt122MDkPZrsSC1621topY55tvN2+MFfIxnqkso2iKFfU5guFZeAwWGtRSuUbYRzHKHVkelO7IpFtpNnEbNeuZwvZeOM4zsecLf7ZNtZ2st9P+2E12zbV6TdA5xxxHCMiRzyv3k+cc7RaLQDiOEZrTRzHH/CoptK+zjKlpV0xnM1zt9Vq5TLN9prZRibfTLZzZV+IoogkSfILzZFeFLI1Cszq5zyWFMrAYcgsAyLCwMAA/+7f/bsjfo32TWr79u2cdNJJ+U1gNpqesvE2m012797NunXrZu1tpR1rLdu3b+fkk0+elXKFqXNh27ZtbNy4MVcOZuuYM7Zv386aNWswZnZuFe2H0o4dO+jv76ejo2NOyHbv3r1orenv75+1Y83kOzo6yvDwMCtXrpy1Snc7rVaL119/nfXr189Its45tNaMjIzMSiXteCBuNv9GPyDaRRJF0Yz8pO0a9X/8j/+RP/3TPyUMQ4BZeRvMxrt3716+973v8Ud/9Ee5UjQbx5vRbDb5T//pP/Fv/+2/za05s432ufDv//2/58///M9zH+ZsHG+Gc47//J//M3/4h39IZ2fnrIzHaF+X3/3ud7nwwgtZu3YtIpL/ma088MADhGHIJZdcglJq1o01k62I8MILL/Dkk0/yxS9+cU7sCwcOHODWW2/lT/7kT2Ys28xakynCs+33c6yZner+B0z7Lz07wI+E9g1KRFi4cCEigtZ61m1S04PZSqUSvb29UxbAbBrvdJIkYcmSJSil0FrPuk11+lzIboGzcS5Mx1rL4sWLUUphjMk3/9ky3ulzd8GCBRhjMMbMetk65+ju7s5lO9vGO1221WqVzs5OgiCYogjMlvFOJwgCFi5cmF8QjkYhmC8UloHjwHSRHjhwgJ6enlyjhtkzyaaPNY5jxsbG6O7uzr8+2w7Ydqy1HDx4kAULFuSxHrNprNMDSQ8cOEBvb+8Ul9FsmQvTcc5x8OBBuru7c5nOxgMrY3h4mEqlQhiGuYtrNlozwI99YmICEaFSqcy6uTtdts1mk2azSWdnZ/712TTe6cRxzOjoKD09PbNOtrOVQhl4D8zURdAeOAZM2VCPhCP5/plmPrS/R5IkUw6omSyi4z3mjCyoKbttz4TjOdZjPReO9Gfe63jfzq8aRVFudZkp73W8M50H04N1j+bW+n7M22ysmWyP5qA6nrJ9p31htso2o93P/37sCx8GCjfBeyDbZPbt28eWLVsol8ucc845lMtlduzYwYsvvsiGDRs44YQT2LdvH1u3bmXt2rWceOKJjIyM8OyzzxJFEeeccw5dXV35rcVayzPPPMPIyAjnnHMOtVqNF198kb179/KRj3yEzs7O/OZ4JBMzWwhbt25l9+7drFy5kvXr16OUYvPmzQwPD7Np0yZqtRrbt29n165dfOxjH6NSqbBr1y62b99Ob28vZ555Zv7ezjnGx8d54oknWLBgAWeeeSY7duzg+eefxzlHT08PF154YW7+PhLZZhG/L7/8Mq+88gr9/f2ceeaZOOcYGBhg165dnHPOOfT29vL6668zMDDApk2b6Onp4eDBg2zevJkwDPNnAr+QG40Gv/3tb9Fas2nTJkSEp556imazybnnnkupVDriW3mWDbBnzx5eeOEFOjo6OOussyiVSrz66qsMDAywceNGli1bxp49e3jxxRfZuHEjy5cvZ2RkhCeffBJrLWeffTZdXV15brm1ls2bNzMxMcF5551HkiT8+te/ptVqYYzhggsuoKen54hlmylK+/fv5/nnn0drzdlnn02tVmPv3r08//zzrF69mtWrVzM8PMzTTz/N0qVL84BXEWHbtm2ICBs2bAC8VSuOY1544QX279/PWWedRW9vL9u3b+f111/nIx/5SG4JO9INNY5jGo0GmzdvptVqcfbZZ9Pb28vw8DBPPvkk/f39nHLKKdTrdZ555hmq1SqbNm3K19Tu3bvZv38/Z555Zh7rY63ltdde4+WXX+b0009n0aJFPP744wwODiIinHLKKaxZswY48gPLOUej0eCZZ55hdHSUU045heXLlzM6OsrmzZupVqv5XH7mmWeIooiPfvSjOOf47W9/y969e6lWq3z0ox+lWq3mFqM9e/awZcsW1qxZw/r169m3bx9PP/00q1ev5sQTT8xdC0dClgXwzDPPsH//ftavX8+qVauw1vKb3/yGKIrYtGkTQRCwdetW3nrrLS699FKMMTz//PO8/vrrhGHIueeeS29vby6DoaEhnnzySVasWMEpp5zCiy++yMDAAACLFi3ivPPOm5Hym+1j27ZtY8eOHSxbtoxTTz2VOI7ZunUrBw4cYNOmTXR0dDAwMMDrr7/OBRdckO8BL7zwArt372bDhg2sXr06VzDGxsZ48skn6ezs5Oyzz6bVarF582aMMZx99tkEQTBrrXXHk/n3xEfBa6+9RqPR4Omnn+auu+5i//79fP3rX2d0dJSvf/3rHDhwgL179/Lwww/z8MMPY63ljTfeYM+ePezZs4e//Mu/nJKz/cgjj3Dvvffy8ssv861vfYtWq8XAwADf+c532Lt371HdFqy1vPjii4gIt9xyCy+//HL+fjt37uSWW24hiiJeeeUVbr/9doaHh4miiG3bttFsNvn7v/97fvnLX+YbXrPZ5H/+z//J7t27ufvuu/n1r39NGIb09fUxODjIj370o3yzOVKyhff888+TJAk/+tGPeOyxx3j55Ze55ZZb2L9/P1/72teYmJjglVde4fvf/z7btm0DvGnYWsvLL7/MrbfeOiVN63vf+x5PPfUUDz/8MPfddx+NRoOBgQG+/e1v02g0ZixbgJdffpkoinj00Ue57777eOONN/gf/+N/MDo6yn//7/+d0dFR9uzZw09/+tN8LjSbTer1OgcOHOC//Jf/ksdlWGv5+c9/zk9/+lO2bdvGrbfemvvAq9Uq3/3ud5mYmJhRznM23l27dnHgwAEGBgby1/vqV7/K/v37+eY3v8nOnTvZs2cPv/3tb/nxj39MkiREUcTOnTv5xje+wd13302z2QTID5Q777wzf+4sevtv//ZvefXVV2e8mWaKy969ezlw4ABf+9rXqNfrfOMb32D37t3cdddd+cG7bds2/uZv/iZfU2NjY3zrW9/i5ptvJoqifJ1lYxwZGeG//bf/xujoKJ2dnfT29vKTn/yE1157bcZpiCLC+Pg427dvZ2JiIp+nd955J88++yw/+9nPePDBBxkZGWHr1q3cfPPNecra7bffDkBPT08uV/BzOhvnX/7lX7J79+58X/nZz352VDfdVqvF9u3bcc7xF3/xF+zbt4+/+7u/46GHHmLLli387//9v4miiIGBAW699Vbq9ToAd999d+7iyhT+zNXxta99jaGhIb7zne/w/PPPU6lU6Ovr4+WXX+bnP//5jHP1szn07LPP4pzj9ttv58UXX+Spp57irrvuYseOHXzzm9+kXq/zyiuvcNttt+X75uOPP84999yTB+5mqbxRFHHzzTfz6quv8pOf/IRf/epXjI+Ps2XLFm677bZZnSFxvCmUgfdAtkmcf/75fPrTn+ass85iZGSEN998k/7+fq655hrWr1/PCy+8wOmnn87FF1+cL4CNGzfyuc99jvPOO4/R0VGstflG9cQTT/CZz3yGG2+8kZ07d+Kc47Of/Swnnnhifquayaaa/eznPvc5Lr30Uvr7+6nX6zz99NN85jOf4Qtf+AK7d++m2Wzy6U9/mrVr12KtJQgCLr/8cq688kpWr16dp9Vkh9iuXbu4/vrrufrqq9m8eTOLFy/m/PPPZ2RkhCuvvBJjzIwWflYn4JprruHyyy9n1apVjI6OsnXrVi688EI+97nP0Wq12Lt3L5deeilnnHFGbl498cQT6evrY3h4mI6ODpRStFotrLW88MILXH/99dxwww1s3ryZSqXCddddN+WGfaSLP/u5iy++mE996lOceuqpjIyMsGvXLlatWsW1117L8uXLGRgY4JxzzuHSSy/Nb6gLFy5k9erVDA0N5QdAs9nEOccTTzzB7/7u7/J7v/d7vPTSS7k1o1arcdppp7F48eIZjddaSxzHnHXWWVx77bWce+65DA0NceDAAcIw5LrrruOss87i6aefZsOGDVx22WV50Gwcx9x77718+tOfzl0FURThnOPpp5/msssu47rrrmNkZISJiQkuv/xy1q1blz/vTBXDlStXct1113HhhRfSaDSYmJhg//79XH/99Vx55ZU8/vjjLFu2jM985jOEYZjfpu+++24uuOCCPN4lW2vPPfccZ5xxBtdeey21Wo3BwUFOPfVUTj31VESETZs2AcwohSyKIvr6+vjSl77ExRdfTBRFNJtNtm/fzj/6R/+Iz372szz22GP09PRwzTXX5HNPROjp6ckvDlEUEccxSZLkKZLXXHMNGzduZGBggNNOO42Pf/zjBEEAzMyMLiKEYciNN97IxRdfTLVaza0an//85/n85z/Pli1bMMbwO7/zOyxbtiw/9Ht7e9myZQs//elPaTabNBoNms0mBw4coF6vc/3113PJJZfw7LPPsmLFCs4//3wOHjzIFVdckR/IR0qmNN1www1cdtllLFy4kImJCZ5++mmuuuoqPv/5z7Nnzx7Gx8f55Cc/yYYNG/L3euCBBxgcHOTXv/41e/fuzedCo9Fg165dfO5zn+Oaa67hN7/5DQsWLOC6667LLQozle9cp3ATvAeyjc05x0svvcRPfvIT/vk//+fs3buXSqUC+KyD7FaaFebIAgYHBwe54447+L3f+z0OHDjAzTffzIYNG4jjGGNMHqGbFXbJFmB7as+R0F7k6L777qNWq7F+/XoeeOCBfMIbY3LzfFacIxvv5s2bGRgY4E/+5E945JFHeOSRR7jooovyTaxcLudWgKGhIQYGBvj93/99YGb+uex9rbU88sgj7N27lxtvvJG7776b/v5+tNZ5kFU2hkxJstbS2dlJT09Pfvu67777OPfcc4njmCAICIKAKIryqmLtHKls2+fCli1beOihh/ijP/ojtm/fTrVaxTl3yFzIxpskCV1dXXR2drJ792527NjBbbfdxqmnnpqXTDXGoLXOf+6BBx7g6quvnnG0efYzmZXqrrvu4itf+QqNRoNyuYwxhkqlMsUfnI3lwQcf5NVXXwVgYGCAV155hR//+Mf09fUxMTFBqVQiDMP8xjnT+dpOdmgMDQ3xv/7X/+Laa6/N5Zetlfa4i2zM27Zt45FHHuH888/nlVdeYfv27fyf//N/UErR39+fH6Llcjn31T/66KOcddZZuTtuJuPOflf1ep1vf/vbXHnllXkAY7lczuXT7mvPFNk//dM/xRjDX/3VX/Gb3/yGffv2sXv3bs444wyCIEBrTblcptFoHJNc92xfaLVafO9732PDhg0sXryYRqORuyiyOZvJO9uTvvKVryAi3H///dx///309fXx7LPP8tGPfjRX/iqVCgcOHEBE2LVrFyMjI5x++um5nI6U9n3hgQceIAgCTj31VP7hH/6BarWKMYZSqXTIzwCMjo7y8Y9/nNNPP51vfOMbRFHEI488woUXXohzDmMM1WqVZrOZWw3amW/xAlAoA+8Z5xyvvfYat9xyC1/+8pdZuHAhWmteffVVdu3axcDAQH4zGBsbY3x8nPHxceI45r/+1//KFVdcwYYNGyiVSvybf/NvsNbywx/+kGeeeSY/YKvVKsPDw9TrdYaGhhgfH6ejo2NGYxUR7rnnHl566SW+8pWvEAQBa9eu5fHHH88nerVaZWJigkajwcjICI1Gg61bt/L973+ff/Wv/hWVSoVLLrmECy+8kGazyf33389LL73E448/zoknnpj7PU8++WRqtdpRLaBMEXjggQf44z/+Y8rlMuvWrePBBx/klFNO4eDBg/T19eW3ktHRUVqtFiMjIyxYsICPfOQjfOc732HdunX863/9rxERNm/ezJYtWxgfH2fVqlVorXnrrbdoNBoMDQ3lloQjlS3Aiy++yB133MEf/MEf0NPTw4oVK7jvvvvYvXs3r776Kr/7u79LFEWMj4/nkdjj4+MEQcC5557Lww8/TG9vL3/2Z38G+MPvueeeY2hoiFqtRrlcZteuXQwNDbFx48aj6gmQJAl79+7lq1/9Kl/84hdZsWIF9Xqdffv2sWPHDrZs2cLVV1+NtZbR0dF8Dp9xxhlUq1Vee+01yuUyfX19ef2JX/ziFzz99NMsXLiQOI7p7u5mbGyMer3OwYMHiaJoxmm54+PjfPWrX+VjH/sYZ5xxBmEYYq1l27ZtPPPMM6xatQrnHCMjI4yPjzMyMkJ/fz9f/vKXefPNNzHG0NPTw7/8l/+SJEnYtm1b7r7Ys2cPCxcuZGxsjIcffpjf//3fP6qguMxy9vWvf53Vq1dz8cUXUy6X6e3tZfPmzQwODrJ8+XIAxsfHaTQauRVraGiISqVCvV6nXC5zww034Jxj7969/OxnP2Pnzp1s3bqV888/n2azycjISL63tN9ij0S2zjnuvPNOms0mN954I8YYVq5cyWOPPcbSpUvp6OggCIJ8/xkbG6NWqzE8PJzvT+VymSuuuILLL7+c0dFR7rnnHl577TWefPJJLrjgApIk4R/+4R84//zz8zkwU6XbWsvf/d3f8eyzz/KHf/iHBEHA+vXrefTRR+no6CBJEjo6OnLr5dDQEMuWLWPjxo1MTExMWXPnn38+SZLw4IMPsn37dp5//nnWr1+fZ/nU63WGh4fp7+8/Ytl+GCjcBO8REeG5554D4N577+WnP/0pCxcu5Hd+53e48847+ehHP8rq1avZsmVL7u9+9NFHeemllxgdHeXhhx/mtttuy19LKcVVV11Fs9nkZz/7Gf/sn/0zjDH84Ac/oF6v8+Mf/5jBwcEZ+9uSJOHZZ59lbGyMb3/727z00ktcccUVANx3333cdNNNBEHA/fffT7PZ5Pvf/z5vvPEGTz31FM45brvtNh577LE8Sr9arfLlL3+Z+++/H4BPfvKTiPjKZFddddWMI6KzmwrA5s2bSZKEb3/72zz99NOcddZZrFmzhttvv50bb7yR3t5efvWrX7Fr167cv/7666/zrW99K5dhqVSiUqlQKpW48cYb+e1vf8v27dv5whe+QBzH3HHHHTjn+N73vpe7bY6E7BkzJe5v//ZveeihhzjhhBO47LLLuOOOO/jkJz/JihUreOqpp9i8eTPPPfccv/71rxkcHOS73/0u9957L1/5yleoVqtordFac+211zI4OMgjjzzCl7/8ZUSEwcFBrrzySqrV6pT3PhKy8tLbt28niiLuv/9+fvzjH1OpVPjCF77A3/zN37BhwwZOO+00Xn75ZR588EH27NnDL37xCxYvXszHPvYxLr30Ui677DIWLFiQWwMuuugiqtUq99xzDzfddBPGGO6//37eeustHnjgAV566aUZ3WZFhJ07dzIyMsITTzzBX//1X9NqtfiDP/gD/v7v/x6lFJ/4xCfYt28fP/jBD2i1Wvzwhz+ku7ubCy64gE9+8pNcddVVLFq0KJ+7Gzdu5IwzzuCuu+7iuuuuo7u7myiKWL9+PStXrpyxVSDzRQ8NDbFz58483mN0dJR/8k/+CY8++ig7d+7k+uuvZ2xsjLvuuguAO++8k7GxMX7xi19w8803s379ej7ykY/kN93ly5dz+eWXc/vtt3PuueeyZs0aBgYGePjhh3nllVf4xS9+MWPZNhoNXnzxRd58801uvfVW9uzZwxe+8AX27NnDI488wk033UQcx/zoRz/Kx7pv3z4ee+wx/uqv/gpjDNdccw3gb/s9PT188Ytf5Pvf/z7Lli3j3HPPBfy6/vjHP57LdiaKbLtLamJigltuuYWBgQEuueQSyuUyP/jBD7jpppsol8s88MADjI+Pc8899+RugP379/OTn/yEf/yP/zFhGFKpVKhWq3zxi1/kgQceYGRkhM985jOMj4/z13/918RxzF133UWj0ZiXboIitfA9kEUMZxt3+wGSJEl+c8m+9+3ScTIT3HSf6uHSorIc6ez7jySFKAtWa7+ZtZdnzd6/vR569vrZc2SHezam9vStzIycvUb2/e3P817Hm7lUsrG3KxWZz3C6/DLXRhaJf7iUp/YNqD2lr930mPnBjzSCvF6vEwTBIZtc+1xof8/s95g9X/vPTI9dmC7v6bI8Etlm6WtZ/fv2Z203jWbK6eHmZBYn0O6+mi7D7Nnb50y7O+dIxpu5GzJ3QPucy9xp7eNr/5O5vrJxT5dt9n3T5TrT+h+ZuyFzCbXLBcg7EWbjfbvGX9PTeNvnyuFkm33fke4LSZLQarVyN8b012uXR/sztY97enfF47UvTG881m4Zy77WLtv2ddP+uezf7X+379HT94Xsa0e6L3wYKCwD74H2A7l9gxORKRtQ+6TLFkhWua19oU2fpO2b3nRFYya6WhYMmI2pfbztB9PhNsDMZz39Odp99NOremXjnq4IvRfa36P9wMnG1T7+9nFkG9J0f+z0jSf73PSDafp7HYlss02oXQbT50JGuw/2cIpKuxzax97+/TMNxsues/13lr1e+2Y9XebtYwDyNLb2722XbTbP2+f4TGjfiNvHln2uXQ7T11v2nNn8PdzGnz13+/yergAdCe2xHe0+8ezf7f0csj0ke672sbXPmfa5ko2tfbztMjlSsn0hG0P7Gmk/DNsP+MO9f/vv4HD7wvS5MZN9of192mV7OCUze+92JTT7ufZ9e/o4DrcvtH/vfKOwDLwHjmbDOFYcyfu2Kxfv9eeO5QI40pv2O33t/ZD3kY73WMyFmT7bsZJt9vX2W9/hNvHslpiVem5X+toVhmMx5pkeHMeKI33fYzF33+6Aeqfvm64IvVdmsi8cSz7ofeF4yvbDQKEMFBTMUzKzfPsBr5TKb4/tTboOd8OebhEoKCiYuxTZBAUF85hf/vKX3HXXXaxYsQLnHDfccAPr16+f4sp6+OGH2b9/P9dee22uGMRxPKNsgYKCgtlJoQwUFMxjxsbG+NSnPsU111zDs88+yze/+U1uuOEGHnroIRqNBjfddBOPP/44TzzxBMaYPIXSWsvVV1/NBRdc8EE/QkFBwTGgCCAsKJjHZNHipVKJk046iYMHD7Jo0SJOPvlk6vU6v/rVrzjjjDO4+uqrueqqq7jjjjvo7++nu7ubu+++e8aprwUFBbOLwjJQUDCPySKxkyRh//79GGO49dZbueCCC1i7di2jo6N51HxWOnnjxo309fUddaGpgoKC2UOhDBQUzGOMMTz00EPs3buXN998ky996Uts3bqVLVu28NZbb7F69WpWrFjBvffey+rVq/n0pz/Nr371K/r7+9m4cSMnnXTSB/0IBQUFx4Aim6CgYJ7inGN0dJTBwUGUUtRqtbzE61tvvUWtVstruGdWg97eXvbu3Ytzvm11Vte/oKBgblMoAwUF85jDLf+3qznxTp8vKCiY2xTKQEFBQUFBwTynyCYoKCgoKCiY5xTKQEFBQUFBwTynUAYKCgoKCgrmOYUyUFBQUFBQMM8plIGCgoKCgoJ5TqEMFBQUFBQUzHMKZaCgoKCgoGCeUygDBQUFBQUF85xCGSgoKCgoKJjnFMpAQUFBQUHBPKdQBgoKCgoKCuY5hTJQUFBQUFAwzymUgYKCgoKCgnlOoQwUFBQUFBTMcwploKCgoKCgYJ5TKAMFBQUFBQXznEIZKCgoKCgomOcUykBBQUFBQcE8p1AGCgoKCgoK5jmFMlBQUFBQUDDP+f8BJHxhOAVLItkAAAAASUVORK5CYII=", + "text/plain": [ + "<Figure size 640x480 with 1 Axes>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[33mCommander\u001b[0m (to Critics):\n", + "\n", + "Improve <image>\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33mCritics\u001b[0m (to Commander):\n", + "\n", + "To improve the provided figure of Seattle Weather, here are a few suggestions:\n", + "\n", + "1. Data Overlap: There is a significant overlap between the Temp Max (in blue) and Temp Min (in orange) data series, which can make it difficult to follow individual series, especially in cases where Min and Max temperatures are close. This can be improved by either using a line plot with less opacity, applying smoothing to the data lines, or by representing one of the data series in a different manner, such as with a filled area chart underneath the line plot.\n", + "\n", + "2. Labeling: While the axes are labeled, it may be useful to provide units of measurement on the Y-axis label, to clarify that the temperatures are in Fahrenheit. Additionally, including a more descriptive title can help provide context.\n", + "\n", + "3. Grid Lines: The grid lines are helpful for reading the plot, but they could be made lighter or dashed so that they do not compete visually with the data.\n", + "\n", + "4. Date Format: The date format on the X-axis is quite compacted, which may make it difficult to read. Modifying the date formatting to show less frequent ticks, or rotating the labels to improve readability, could be beneficial.\n", + "\n", + "5. Color Scheme: The choice of colors should have sufficient contrast and be colorblind-friendly. Using two distinctively different hues or one line with markers can make it easier to distinguish between the two temperature readings.\n", + "\n", + "6. Legend Positioning: The legend is well-placed and doesn't overlap with the\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33mCommander\u001b[0m (to Coder):\n", + "\n", + "Here is the feedback to your figure. Please improve! Save the result to `result.jpg`\n", + "To improve the provided figure of Seattle Weather, here are a few suggestions:\n", + "\n", + "1. Data Overlap: There is a significant overlap between the Temp Max (in blue) and Temp Min (in orange) data series, which can make it difficult to follow individual series, especially in cases where Min and Max temperatures are close. This can be improved by either using a line plot with less opacity, applying smoothing to the data lines, or by representing one of the data series in a different manner, such as with a filled area chart underneath the line plot.\n", + "\n", + "2. Labeling: While the axes are labeled, it may be useful to provide units of measurement on the Y-axis label, to clarify that the temperatures are in Fahrenheit. Additionally, including a more descriptive title can help provide context.\n", + "\n", + "3. Grid Lines: The grid lines are helpful for reading the plot, but they could be made lighter or dashed so that they do not compete visually with the data.\n", + "\n", + "4. Date Format: The date format on the X-axis is quite compacted, which may make it difficult to read. Modifying the date formatting to show less frequent ticks, or rotating the labels to improve readability, could be beneficial.\n", + "\n", + "5. Color Scheme: The choice of colors should have sufficient contrast and be colorblind-friendly. Using two distinctively different hues or one line with markers can make it easier to distinguish between the two temperature readings.\n", + "\n", + "6. Legend Positioning: The legend is well-placed and doesn't overlap with the\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33mCoder\u001b[0m (to Commander):\n", + "\n", + "Thank you for your feedback. I'll implement the changes you requested. Here is the improved version of the code for plotting:\n", + "\n", + "```python\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "import matplotlib.dates as mdates\n", + "\n", + "# Load the data\n", + "url = \"https://raw.githubusercontent.com/vega/vega/main/docs/data/seattle-weather.csv\"\n", + "data = pd.read_csv(url)\n", + "\n", + "# Parse the date\n", + "data['date'] = pd.to_datetime(data['date'])\n", + "\n", + "# Create the plot\n", + "fig, ax = plt.subplots(figsize=(10,6))\n", + "\n", + "# Plot Temp Max with a smooth blue line\n", + "ax.plot(data['date'], data['temp_max'], color='tab:blue', alpha=0.6, label='Temp Max')\n", + "\n", + "# Plot Temp Min with a smooth orange line\n", + "ax.plot(data['date'], data['temp_min'], color='tab:orange', alpha=0.6, label='Temp Min')\n", + "\n", + "# Improve date formatting\n", + "ax.xaxis.set_major_locator(mdates.MonthLocator(interval=3))\n", + "ax.xaxis.set_major_formatter(mdates.DateFormatter('%b %Y'))\n", + "plt.gcf().autofmt_xdate() # rotation of the x-axis dates\n", + "\n", + "# Add grid lines with styled properties, alpha for transparency\n", + "plt.grid(color='gray', linestyle='dashed', linewidth=0.5, alpha=0.3)\n", + "\n", + "# Add labels and title\n", + "plt.xlabel('Date')\n", + "plt.ylabel('Temperature (°F)')\n", + "plt.title('Seattle Weather: Max and Min Temperatures Over Time')\n", + "\n", + "# Set legend and it's position\n", + "plt.legend(loc='upper right')\n", + "\n", + "# Save the figure\n", + "plt.savefig('result.jpg')\n", + "\n", + "# Show the plot\n", + "plt.show()\n", + "```\n", + "\n", + "This script includes all of your feedback: it adjusts the opacity of the lines to distinguish between them, it includes units on the y-axis, modifies grid lines appearance, improves date formatting and adjusts the title to be more descriptive, changes color scheme, and positions the legend in a non-obstructive location. This code again saves the plot image as `result.jpg` in the current directory.\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[31m\n", + ">>>>>>>> EXECUTING CODE BLOCK 0 (inferred language is python)...\u001b[0m\n", + "\u001b[33mCommander\u001b[0m (to Coder):\n", + "\n", + "exitcode: 0 (execution succeeded)\n", + "Code output: \n", + "Figure(1000x600)\n", + "\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33mCoder\u001b[0m (to Commander):\n", + "\n", + "Great! The code has been executed successfully and the improved figure was generated and saved as `result.jpg`.\n", + "\n", + "Please check the image `result.jpg` in your current directory to see the final improved figure with all your mentioned changes. \n", + "\n", + "If there's anything else you need assistance with, feel free to ask.\n", + "\n", + "TERMINATE\n", + "\n", + "--------------------------------------------------------------------------------\n" + ] + }, + { + "data": { + "image/png": "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gwfZvn07v/ALv8DatWvrhfyJJ57gQx/6EHNzc7z0pS/lO77jO7jvvvv42Mc+RlEUvOpVr+KFL3whH//4xzl8+DDbt29ncXGRj370o8zPz/OjP/qj9aL91FNP8aEPfYjdu3dzzTXX8PrXv55Op4Oqcskll7Bv3z4OHTrE3XffzQ033MBXvvIVLrzwQp566inOPvtsbrvtNr7whS+wZs0a/s2/+Tds3LiRD3zgAzz++OOcffbZ3HzzzXz2s5/lk5/8JHme8x3f8R0sLS3xN3/zN3zwgx/k6quv5o1vfCP79+/nwx/+MDt37uTaa6/lDW94A5/61Ke4++67KYqC1772tczMzLBlyxZarVYto1arxebNm/nc5z7Htddey44dO9iyZQsA99xzD3/1V39FVVW88pWv5IYbbuAjH/kIa9eu5frrr+e9730vN998M2eddRZZllGWJR/5yEe45557WLNmDd/7vd/LGWecwW/+5m9y1lln8cgjj/DN3/zNvPKVr+SBBx7g1ltvZc2aNezevfsoy8X09DStVosdO3ZQliVTU1N0u11EhHvuuYeNGzdy99138+Uvf5mFhQXa7TY/9EM/xLp16zDGsGXLFn7gB36A++67j8cff5wf+qEf4otf/CK/8iu/gojwr//1v+aqq67iXe96F6tXr2b79u3ccMMNHD58mLvuuos3vOENXHfddfzWb/0WMzMzPPHEE1x77bW87nWv48iRI3zwgx/kiSee4PnPfz5vetOb+OxnP8vnP/95AG666Sa2bdvGAw88wLp167jlllvYtm1brVh+67d+Kzt27OC1r30t69ev59Zbb+XGG29k27Zt3HPPPfR6Pb75m7+Z7du3c9ddd7Fq1Sp+4Ad+gHa7zR/+4R+yf/9+nve85/HmN7+ZPM8RET7/+c/z8MMP89u//dvMzMxw33338f/9f/8fF154IX/7t3/Lj/3Yj2GM4b3vfS+ve93r2LdvHx/72Mfo9Xp827d9G694xSt417veRbvdZmlpiR/+4R9mzZo1XHnllVx11VX89V//Nf/yL/9Sj/3/8T/+B1dddRWf+MQn2LNnD/v27WPz5s1ceOGF3H777Vx++eW88Y1vZGFhgQ9/+MM88sgjXHHFFXz3d38309PTX7tFYILnHCaWgQlGjs2bN3P11Vfz9re/nZ/+6Z/m9ttv58iRI7zrXe/iqquu4q1vfSsf+9jHuO+++1i9ejUveclLuPrqq3n3u9/N3NwcL3jBC/jO7/xO3vKWt3DjjTdy9dVX87M/+7O16Rrgv//3/86ZZ57J29/+dj7zmc9w55131qe+qakpzjvvPB544AHuvvtubr75ZrZt28ZXv/pVzjnnHO666y7+4R/+gbe97W2cf/75/P7v/z5VVXH55Zdz3XXX8dBDD/GRj3yEa6+9losvvpif+qmf4gUveAFVVTEzM8P3f//383//7/9l165d/N7v/R5r1qyp+/G5z32O7du3s23bNr7/+7+fjRs38gd/8AccOHBgwBRsreWbvumb+PSnP82nP/1prrnmGqampvDes3btWl70ohdx2WWX8e53v5unnnqK66+/ng9+8IP8xm/8BtPT02zatIlWq1WfWi+88EJe/vKXUxQFf/iHf0hRFPzjP/4jZ511FjfffDMf+MAH2L9/P7/xG7/BTTfdxE033cQTTzxRyzOdHFutFq9+9av5xCc+wd/8zd/wyle+sj6db9u2jYWFBXbu3Mldd93FLbfcwuLiIp/+9Kfrk29y36TT8K5du3jve9/LG9/4Rl7zmtfwu7/7u8zNzfHpT3+aDRs28KY3vYnf+q3fYuPGjXzbt30bf/AHf0BVVfzLv/wLxhje9ra38bGPfYy77rqL9773vczMzPCOd7yD++67j3/5l39h586d3HHHHdxyyy1cdtllXHTRRbzsZS/j0KFDvP/97+fKK6/k4osv5h3veAfXX3899957L3Nzc6gq9957LwsLC/Xmf8stt7Br1y4+//nP85a3vIUtW7bwR3/0R/zzP/8zO3bs4K1vfSuvfvWrB1wvd911F1dddVWtiF5wwQVMT08zNzfHtm3bePTRR3n44Ye58847UVXe9a53cdNNN3HzzTfz+7//++zfv5//9//+H61Wize/+c2sXr26tjwt9/OVr3yltnjt3LmT7//+7+f222/n3nvv5Qd/8Af5y7/8S/bt28f73vc+8jznR3/0R9m2bRuf/vSnv0azf4LnKiaWgQlGjjzP+aVf+iV27NjB3XffzW/8xm/wi7/4i9x9992ICLfffjuHDh3iyJEj/N3f/R379u3j4osv5uDBg8zNzTEzM8PMzAyzs7N0Oh1arRZr164F+ibWO+64g4MHD3L33Xdz4MCBgVOuiPCSl7yEf/qnf2Jubo5LL72Uj3zkI3z605/myiuvZPv27Tz88MO8973vpdvtYozhgQce4P3vfz/XXHMNxhh27dqFtZZWq8WqVavI85ypqSle8YpX8LznPY+NGzfy5JNP8tWvfpU9e/Zw7733sm/fPvbs2YOIcP3113POOecgIvzqr/7qgDkXgvl569at3Hvvvfzv//2/+aVf+iXuuOMOjDHceuut7N+/nwsvvLCW06WXXsqLXvQi/uiP/oi/+Iu/oN1u45wjyzL27NnDH/zBH3DVVVdRVRW7du3CGMOaNWt48YtfzOzsLACLi4vMz8/XikeKV2hCRHjBC17Af/kv/wVjDN/5nd/JbbfdNmBKd87x4he/mPPPP59LLrmE/fv3D/ipE4wx7Nu3j/vuu48PfehDVFVFr9fj0KFDrF27lhe+8IWsXbuWc889l2uuuQbvPWVZ0uv1yPOcb/iGb2DLli1ceeWVPPzww3z+85/nrLPO4qGHHmLPnj31fd5www2cffbZtRyuuOIKgPp9ay1r1qxhamqqVp7S/VRVRbvd5rrrruPcc8/lL/7iL3j00Ud53/vex+LiIlmWce211/LFL36Rd73rXVx++eX84A/+YN3GzMwMu3btql1EvV4P5xxnnHEGr3jFK/j7v/97jDF84zd+I3NzczzwwAP85V/+JQALCwscOnSI1atXc91117Fx48aB53A8074xhpe97GWcd955nHPOOVx33XVs2bKFNWvWcPjwYb70pS+xceNGtm/fzpNPPsmuXbue3mSe4LTBRBmYYOTodrts376dzZs3c+WVVzI7O0u73ebSSy/lW77lW7jsssuYn5/nvPPO44//+I95y1vewszMDLfeeisQlIlDhw6xtLSEtZZer8f8/DydTqdehK+55hpe/OIX8+IXv5jFxUXOPffc+voiwlVXXcV73/teXv3qV9cBjLfddhu/+7u/y65du3j+85/PW9/61jrg7IEHHuCss87ie77ne3jPe95Dt9vFe0+32+XQoUOsWbMGYCCToNVqccUVV3DxxRfXi/3mzZv58Ic/XJuRy7LkkUce4YILLqDVag1YB9rtNq9//eu58847Oe+882pf8P33389b3vIWVq9ezYc+9CEAHnjgAe644w7e+MY38ld/9Ve84x3vqCPWd+/ejTGG7/qu7+IjH/kIjz/+eC3HZp+ttUxPT9dm9IceemjguaW+rV69mm//9m8nz3NmZ2fr+I50Is6yrG47z3OKoqgD+oaxbt06LrnkEm655RZmZ2fpdrts3Lix3qQhBANmWUZRFEDwcRdFwZe//GXWrl3Lfffdxzd90zdx1VVXcdlll3HDDTfU7Xz84x8nyzKMMezcuZPp6WluvvlmPvzhD7N///76lJ2UzPXr13P//ffX8SjJgtFqtTDGsHXrVvbu3csP/uAPkmUZ1lqmpqb44R/+Yebn5/nlX/5lbrrpJi688EIAXv7yl/NLv/RL3HXXXVxwwQV8/OMfZ+3atbVb6Od//ufJsoxf+7VfY2pqiosvvpg3velNbNy4kYWFBc4999xaqRsOGj0RUhxDehYpJsMYwzXXXMP555/PDTfcwOLiImeeeeaK2pzg9MVEGVgBJsE3J4dut8snPvEJ9u/fT1EUvP71r+faa69l7dq1fPjDH+Yf/uEfOOuss/j+7/9+vuu7vosPf/jDbNq0iRe96EW0221e8YpX8Hu/93u8733v43u/93s577zz+LVf+zV+/Md/nAsvvJDp6Wl+/Md/nFtvvZUvfOELrFq1qva1ppPrRRddxEUXXcRLX/pSrLVcd9113HfffVxwwQVcfvnlHDx4kN///d+n3W5z4403ct111/GZz3yG3/qt32LNmjWce+65rFu3jm/5lm/ht3/7t3n961/PhRdeyNTUFMYYLrjgAtasWcOP/MiPcOutt/K7v/u7rF27lltuuYXNmzfT6XQQEbrdLn/6p3/KO97xDjZt2oRISLm84IILmJmZ4YorruClL30pZVly8cUXk+c5t9xyC3/+53/Oxo0befGLX0y73eZjH/sYb3vb27jmmmv47d/+bR566CEuvvhivPdccsklbN26tTa3X3bZZYgIl1xySZ0psHXrVlatWsVP/MRP8MEPfpC1a9dy3XXX1ZkREDblSy65hDzPeeMb34gxhgMHDnDhhRfW9zw1NcWGDRvodrsAbNy4cdm0t6mpKS666CLOP/983vrWt/LBD34QEeH5z38+559/Plu3biXPc7Isq//tveeiiy7CWkun0+Ghhx7ii1/8Ii9/+cu58sor2bJlC3/yJ3/Cu9/9blatWsWb3/xmNmzYwMzMDMYYrrrqKs4991ze+c53snHjRi6++GLa7XbtnnjNa17Dm970Jt7//vdz5513cuWVV9JutznzzDNrReimm27i0KFD/P7v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", + "text/plain": [ + "<Figure size 640x480 with 1 Axes>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[33mCommander\u001b[0m (to Critics):\n", + "\n", + "Improve <image>\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33mCommander\u001b[0m (to Coder):\n", + "\n", + "Here is the feedback to your figure. Please improve! Save the result to `result.jpg`\n", + "Improve <img result.jpg>\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33mCoder\u001b[0m (to Commander):\n", + "\n", + "I would appreciate more specific feedback on the figure, however, assuming the context, we could improve the figures as follows:\n", + "\n", + "1. Increase line width for better visibility.\n", + "2. Separate out data into two subplots - one for each temperature series to avoid data overlap.\n", + "3. Utilize a dark theme for a more modern look.\n", + "4. Implement more interactive elements, like hover tooltips (would require shifting from matplotlib to an interactive library like bokeh or plotly).\n", + "\n", + "Please note, that adding interactive elements to a .jpg file is not possible. \n", + "\n", + "Here is the Python code block reflecting first three improvements:\n", + "\n", + "Python:\n", + "```python\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "import matplotlib.dates as mdates\n", + "\n", + "# Load Data\n", + "url = \"https://raw.githubusercontent.com/vega/vega/main/docs/data/seattle-weather.csv\"\n", + "data = pd.read_csv(url)\n", + "data['date'] = pd.to_datetime(data['date'])\n", + "\n", + "# Dark Background\n", + "plt.style.use('dark_background')\n", + "\n", + "# Subplots\n", + "fig, (ax1, ax2) = plt.subplots(2,1, sharex=True, figsize=(10,6))\n", + "\n", + "# Temp Max\n", + "ax1.plot(data['date'], data['temp_max'], color='tab:red', linewidth=2, label='Temp Max')\n", + "ax1.set_ylabel('Temp Max (°F)')\n", + "ax1.legend(loc='upper right')\n", + "ax1.grid(color='gray', linestyle='dashed', linewidth=0.5, alpha=0.3)\n", + "\n", + "# Temp Min\n", + "ax2.plot(data['date'], data['temp_min'], color='tab:blue', linewidth=2, label='Temp Min')\n", + "ax2.set_ylabel('Temp Min (°F)')\n", + "ax2.legend(loc='upper right')\n", + "ax2.grid(color='gray', linestyle='dashed', linewidth=0.5, alpha=0.3)\n", + "\n", + "# Improve date formatting (shared X-axis)\n", + "ax2.xaxis.set_major_locator(mdates.YearLocator())\n", + "ax2.xaxis.set_major_formatter(mdates.DateFormatter('%Y'))\n", + "fig.autofmt_xdate()\n", + "\n", + "# Title\n", + "plt.suptitle('Seattle Weather: Max and Min Temperatures Over Time')\n", + "\n", + "# Save as 'result.jpg'\n", + "plt.savefig('result.jpg')\n", + "plt.show()\n", + "```\n", + "\n", + "This code block first downloads the dataset, sets the dark background, creates two subplots, and plots the temp_max and temp_min in separate subplots. Lastly, it saves the output figure as 'result.jpg'. Please run this code and check the resulting figure.\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[31m\n", + ">>>>>>>> EXECUTING CODE BLOCK 0 (inferred language is python)...\u001b[0m\n", + "\u001b[33mCommander\u001b[0m (to Coder):\n", + "\n", + "exitcode: 0 (execution succeeded)\n", + "Code output: \n", + "Figure(1000x600)\n", + "\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33mCoder\u001b[0m (to Commander):\n", + "\n", + "Great! The code has successfully executed and the improved plot was generated and saved as `result.jpg`.\n", + "\n", + "Please check the image `result.jpg` in your current directory to view the improved visualization. The figure should be separated into two subplots for better clarity and has a darker theme for a more modern look.\n", + "\n", + "If you have any other requests or need further assistance, feel free to ask. \n", + "\n", + "TERMINATE\n", + "\n", + "--------------------------------------------------------------------------------\n" + ] + }, + { + "data": { + "image/png": "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wPT0NJ/97GeZmpribW97G5OTk2zZsoUbbriB73//+2zcuJGf+ImfoN1us3HjRpIkeZCbudFocOaZZ9JsNhkdHcV7T1EU9PX14ZzjaU97Gueddx6Dg4Pkec7HP/5xFhYWEBHuvfdePvShD3HmmWeyceNG/vAP/5DTTjuNd73rXSRJwuc//3l27tzJ61//eprNJmeeeSY33ngj/f39PO1pT+OLX/wit956K2984xtpt9ud53v99deTpilXXXVVR9bXXHMN55xzDhdffDGDg4PceOONrF+/nvPPP59Dhw7x2c9+ls2bN/PqV7+avr4+vvSlLzE0NMQ3vvENJicnufLKK/nBD37A2NgY27ZtY2BggG9/+9v09/dz6aWXMjk5yb//+7/TbDZ5xStewRlnnMH+/fv5+Mc/3nmW27Zt46qrruKXf/mXmZ2dZdu2bXzgAx9gz549/MiP/Aif+MQnMMbwYz/2Y3zrW98ihMCrXvUqGo0G1113Hbfeeiuvfe1rUVVGR0f5xCc+wfT0NLfccgvbt2/nBS94AS9/+cv5oz/6IwB+6qd+CmMMl112GePj46xbt44DBw5w991388IXvpC77rqLL33pS51xuXXrVu6++26+8IUvdBSeXpigh0eDnmegh0eNShmYm5tj165d/P7v/z6/8iu/wtatW3HO8Qu/8Aukacp1113Hf/gP/4FzzjmHEAI7duzg/vvv51d/9VcZGRnhvvvu47vf/S6f+9znuOWWW7j33nv52Mc+xqFDh4BoVf3sz/4sp59+Op///Od5zWtewyWXXAJEq3BpaYn9+/dz1llncdFFF/Gxj32Ms846i61btzI1NcXGjRt5+9vfzo033oiq8s53vhPnHLOzs9xyyy1cdNFFvO51r+Puu+9m3759fPKTn+QHP/gBfX19rFu3jq997Wu86U1vYv369bzhDW/g7LPP5pprruGlL30pl156aWf/b3zjG0xNTfH+97+f9evXHyWrEALXX389l19+OZdccgn33nsvk5OTHctu165d7Nmzh/e+972sXbuWHTt28I53vIO3v/3tbNu27ahtAZaWlrjlllsYHx/n3e9+N0mS8PrXv55Vq1bxzW9+k1/8xV9kbGyM973vfczPz7Njxw62bdtGnudH5XG0Wi2uu+46XvKSl3DFFVfw9a9/nSzLAHjuc5/L+Pg4Z5xxBldffTXf/e53Oe2003jZy17WeS4hhM4xsyzreFd27tzJD37wA973vvcxNDTEa17zGtatW8f27dv5/d//fVatWsWOHTv4pV/6Jay1XHXVVZx77rlce+21vPWtb+W8887jjW98I1u3buWaa67hiiuu4PLLL+fss8/mzW9+M9/85jfZu3cvCwsL3HTTTWzYsIG3ve1t7Nmzh/379/OpT32K2267jec973mMjY117mfNmjVccMEF/ORP/iTf+c53GB4e5s1vfjNf/epXSZKEd7/73Tzzmc/kxS9+MV/84he56667jvJYPOtZz+K2225jamqKLMvYuXMnS0tLrFu3jssvv5zTTjuNsbExrrrqKkII/NZv/RYHDx7ke9/7Hr/6q7/K+Pg4r3rVqzjvvPP48pe/TLPZxHvfUcAqT0Ke53jvedGLXsTg4CAXXXQRL37xi/nGN77B1VdfzY//+I/zta99jbe85S1s2LCBn/zJn+SCCy7gmmuu4bLLLuOFL3zhg0JVPfTwSNDzDPTwqFEtKO12m9/5nd/h7LPP5pJLLuGP/uiP+O3f/m2e85zncMstt7B69WqGhobYvHkzIyMjXH755ezdu5d169axatUqDh8+TK1WY9++fYyOjjI3N8f9999/lOv2iiuu4J577uFVr3oVAwMDnHvuuXz729/uLGw33ngjL3zhC1m1ahW33HILL3/5y7n88su59957Oeecc1i/fj0vfelL6evrY/369WzcuJGf/MmfZGZmhtHRUbZt28a//du/0Ww2eeCBB1haWqIoCq655hpuvvlm9u3bx2mnncbzn/98ZmZmeOUrX8no6ChnnHEGeZ5z3XXXsX37dgA+8IEPdOLRFUSEe+65hzPOOIM3vOEN/PVf/zVbt25FVXnOc57D8573PPbt28fGjRtZs2YNt99+O9/4xjf45V/+Za6++mqazWZH5oODg7zmNa+h2WzSaDQYHR3FGMP09DTXX389e/bs6eRLbNq0iQ996ENMT09z6623HuU+rrwM3/nOd/ilX/olRIQ/+ZM/4cUvfvGDFpFvfetb3HLLLaxdu7YTajjWeFi7di0XXnhh5/mtXbuWNWvWMD09zZe//GUOHjzI3r17ufHGGwkhcPXVVzMwMID3ns997nPceuutfOtb3+LCCy/k8ssvZ2Zmhpe//OUMDQ1x3nnnsWfPHr761a9y2223MTAwwNVXX83CwgL1ep3+/n5arVbnGU5NTR0VT+923X/9619n+/btvO1tb2P16tW8+MUvZmhoiHXr1vHP//zPLC0t8cY3vpHvfOc73HrrrZ2xWOWTdLvjjTEsLCzw9a9/nRe/+MVMTExw55130tfXx4UXXsiePXswxjA2Nsa6devI85zPfe5z3HPPPY/IjV+FEm688UZuvvlmdu7cyfe+9z22b9/O3Nwco6OjXHnllczMzPBjP/ZjHc/HNddcc1TiZg89PBL0lIEeHjUqF2SSJAwPD7Njxw52797Ni170IoaGhti9ezc33HAD999/P5/61Kc4dOgQ//k//2c++tGPsn//fn7kR36EJEmAmGDXnTjYaDQ6SWAhBO655x6++c1vsn37dkSEQ4cOHRXLvf3223nHO97B97//fSYmJti7dy+vec1r+L3f+z2cc+zatYtPfvKTiAhZlrF582aazSZ/9md/xk/91E+xZcuWjqVbJRG22+3ONVSW7/3338+uXbv4xje+QZqmHDhwgJe//OWdxb9K1KsSGLuR5zlf/OIXedGLXsSdd97ZsfSf//zn84//+I888MADXH755TjnWLNmDc95znP48pe/zEte8hJ27drVkc3mzZsZGhri937v93jBC17A1VdfDcSEs8qqryzZLMtYv349xpjOZxV/rizHxcVFbrzxRur1OjMzM5376Ear1ToqT2G51VnlNywuLnLvvffy2c9+lmazyb/+6792lJNqUaus4O7cBuccp59+Ojt37uT000/n1ltvZc+ePezYsYMbb7yRJEk4dOgQl112WceCPvPMM0mShD/+4z/mpS99KS972cs646m/v5+ZmRnm5ubYuHEjhw4dYtOmTZ2EvRACRVGwd+9edu3axac//emOYjsxMcEHP/hBxsbG+K3f+i1uvfVW7r77bkIIfPe73+U1r3kNW7ZsYe/evVx66aUYY7j33nuZmpriD/7gD2i1Wvz3//7fWVxc5IEHHuDaa69lenqaT37yk+zZs4c8z8nz/EGZ/w+FStbdCuHS0lJnoa88SwcPHuQrX/kK1tqOItTzDPTwaNFTBnp41Kgsy3q9zjve8Q4ajQa1Wo3t27fzrW99i4mJCV7/+tcjIszNzfF3f/d3fOlLX+Jtb3sbhw4dYmpqiqWlJW666SZ+5Vd+hfe85z18/OMfZ2pqit/93d/lr/7qr5icnKQo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", + "text/plain": [ + "<Figure size 640x480 with 1 Axes>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[33mFigure Creator~\u001b[0m (to User):\n", + "\n", + "result.jpg\n", + "\n", + "--------------------------------------------------------------------------------\n" + ] + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import time\n", + "from PIL import Image\n", + "\n", + "\n", + "# config_list_gpt35 = autogen.config_list_from_json(\n", + "# \"OAI_CONFIG_LIST\",\n", + "# filter_dict={\n", + "# \"model\": [\"gpt-35-turbo\", \"gpt-3.5-turbo\"],\n", + "# },\n", + "# )\n", + "\n", + "# gpt35_llm_config = {\"config_list\": config_list_gpt35, \"cache_seed\": 42}\n", + "\n", + "\n", + "creator = FigureCreator(\n", + " name=\"Figure Creator~\",\n", + " llm_config=gpt4_llm_config\n", + " \n", + ")\n", + "\n", + "user_proxy = autogen.UserProxyAgent(\n", + " name=\"User\",\n", + " human_input_mode=\"NEVER\",\n", + " max_consecutive_auto_reply=0\n", + ")\n", + "\n", + "user_proxy.initiate_chat(creator, message=\"\"\"\n", + "Plot a figure by using the data from:\n", + "https://raw.githubusercontent.com/vega/vega/main/docs/data/seattle-weather.csv\n", + "\n", + "I want to show both temperature high and low.\n", + "\"\"\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "f0a58827", + "metadata": {}, + "outputs": [], + "source": [ + "if os.path.exists(\"result.jpg\"):\n", + " os.remove(\"result.jpg\") # clean up" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b95bf449", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "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.9.16" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/notebook/agentchat_lmm_llava.ipynb b/notebook/agentchat_lmm_llava.ipynb new file mode 100644 index 00000000000..e86a1007e68 --- /dev/null +++ b/notebook/agentchat_lmm_llava.ipynb @@ -0,0 +1,916 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "2c75da30", + "metadata": {}, + "source": [ + "# Agent Chat with Multimodal Models: LLaVA\n", + "\n", + "This notebook uses **LLaVA** as an example for the multimodal feature. More information about LLaVA can be found in their [GitHub page](https://github.com/haotian-liu/LLaVA)\n", + "\n", + "\n", + "This notebook contains the following information and examples:\n", + "\n", + "1. Setup LLaVA Model\n", + " - Option 1: Use [API calls from `Replicate`](#replicate)\n", + " - Option 2: Setup [LLaVA locally (requires GPU)](#local)\n", + "2. Application 1: [Image Chat](#app-1)\n", + "3. Application 2: [Figure Creator](#app-2)" + ] + }, + { + "cell_type": "markdown", + "id": "5f51914c", + "metadata": {}, + "source": [ + "### Before everything starts, install AutoGen with the `lmm` option\n", + "```bash\n", + "pip install \"pyautogen[lmm]~=0.2.0b4\"\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "b1ffe2ab", + "metadata": {}, + "outputs": [], + "source": [ + "# We use this variable to control where you want to host LLaVA, locally or remotely?\n", + "# More details in the two setup options below.\n", + "LLAVA_MODE = \"remote\" # Either \"local\" or \"remote\"\n", + "assert LLAVA_MODE in [\"local\", \"remote\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "67d45964", + "metadata": {}, + "outputs": [], + "source": [ + "import requests\n", + "import json\n", + "import os\n", + "\n", + "from typing import Any, Callable, Dict, List, Optional, Tuple, Type, Union\n", + "\n", + "import autogen\n", + "from autogen import AssistantAgent, Agent, UserProxyAgent, ConversableAgent\n", + "from termcolor import colored\n", + "import random" + ] + }, + { + "cell_type": "markdown", + "id": "acc4703b", + "metadata": {}, + "source": [ + "<a id=\"replicate\"></a>\n", + "## (Option 1, preferred) Use API Calls from Replicate [Remote]\n", + "We can also use [Replicate](https://replicate.com/yorickvp/llava-13b/api) to use LLaVA directly, which will host the model for you.\n", + "\n", + "1. Run `pip install replicate` to install the package\n", + "2. You need to get an API key from Replicate from your [account setting page](https://replicate.com/account/api-tokens)\n", + "3. Next, copy your API token and authenticate by setting it as an environment variable:\n", + " `export REPLICATE_API_TOKEN=<paste-your-token-here>` \n", + "4. You need to enter your credit card information for Replicate 🥲\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "f650bf3d", + "metadata": {}, + "outputs": [], + "source": [ + "# pip install replicate\n", + "# import os\n", + "## alternatively, you can put your API key here for the environment variable.\n", + "# os.environ[\"REPLICATE_API_TOKEN\"] = \"r8_xyz your api key goes here~\"" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "267ffd78", + "metadata": {}, + "outputs": [], + "source": [ + "if LLAVA_MODE == \"remote\":\n", + " import replicate\n", + " \n", + " llava_config_list = [\n", + " {\n", + " \"model\": \"whatever, will be ignored for remote\", # The model name doesn't matter here right now.\n", + " \"api_key\": \"None\", # Note that you have to setup the API key with os.environ[\"REPLICATE_API_TOKEN\"] \n", + " \"base_url\": \"yorickvp/llava-13b:2facb4a474a0462c15041b78b1ad70952ea46b5ec6ad29583c0b29dbd4249591\",\n", + " }\n", + " ]" + ] + }, + { + "cell_type": "markdown", + "id": "1805e4bd", + "metadata": {}, + "source": [ + "<a id=\"local\"></a>\n", + "## [Option 2] Setup LLaVA Locally\n", + "\n", + "\n", + "## Install the LLaVA library\n", + "\n", + "Please follow the LLaVA GitHub [page](https://github.com/haotian-liu/LLaVA/) to install LLaVA.\n", + "\n", + "\n", + "#### Download the package\n", + "```bash\n", + "git clone https://github.com/haotian-liu/LLaVA.git\n", + "cd LLaVA\n", + "```\n", + "\n", + "#### Install the inference package\n", + "```bash\n", + "conda create -n llava python=3.10 -y\n", + "conda activate llava\n", + "pip install --upgrade pip # enable PEP 660 support\n", + "pip install -e .\n", + "```\n", + "\n", + "\n", + "\n", + "Some helpful packages and dependencies:\n", + "```bash\n", + "conda install -c nvidia cuda-toolkit\n", + "```\n", + "\n", + "\n", + "### Launch\n", + "\n", + "In one terminal, start the controller first:\n", + "```bash\n", + "python -m llava.serve.controller --host 0.0.0.0 --port 10000\n", + "```\n", + "\n", + "\n", + "Then, in another terminal, start the worker, which will load the model to the GPU:\n", + "```bash\n", + "python -m llava.serve.model_worker --host 0.0.0.0 --controller http://localhost:10000 --port 40000 --worker http://localhost:40000 --model-path liuhaotian/llava-v1.5-13b\n", + "``" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "93bf7915", + "metadata": {}, + "outputs": [], + "source": [ + "# Run this code block only if you want to run LlaVA locally\n", + "if LLAVA_MODE == \"local\": \n", + " llava_config_list = [\n", + " {\n", + " \"model\": \"llava-v1.5-13b\",\n", + " \"api_key\": \"None\",\n", + " \"base_url\": \"http://0.0.0.0:10000\",\n", + " }\n", + " ]" + ] + }, + { + "cell_type": "markdown", + "id": "307852dd", + "metadata": {}, + "source": [ + "# Multimodal Functions\n", + "\n", + "We cal test the `llava_call` function with the following AutoGen image.\n", + "![](https://raw.githubusercontent.com/microsoft/autogen/main/website/static/img/autogen_agentchat.png)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "e2ff1607", + "metadata": {}, + "outputs": [], + "source": [ + "from autogen.agentchat.contrib.llava_agent import llava_call" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "7c1be77f", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The AutoGen framework is a tool for creating and managing conversational agents. It allows for the creation of multiple-agent conversations, enabling complex interactions between different agents. The framework is designed to be flexible and scalable, allowing for the addition of new agents and conversations as needed.\n", + "\n", + "The framework consists of three main components:\n", + "\n", + "1. Agents: These are the individual conversational entities that can be created and managed within the framework. Each agent has its own unique set of conversational capabilities and can engage in conversations with other agents.\n", + "\n", + "2. Conversations: These are the interactions between agents, which can be managed and directed by the framework. Conversations can be structured and organized to facilitate efficient communication between agents.\n", + "\n", + "3. Flexibility: The framework is designed to be flexible, allowing for the addition of new agents and conversations as needed. This flexibility enables the framework to adapt to changing requirements and facilitate the development of more complex conversational systems.\n" + ] + } + ], + "source": [ + "rst = llava_call(\"Describe this AutoGen framework <img https://raw.githubusercontent.com/microsoft/autogen/main/website/static/img/autogen_agentchat.png> with bullet points.\",\n", + " llm_config={\n", + " \"config_list\": llava_config_list,\n", + " \"temperature\": 0\n", + " })\n", + "\n", + "print(rst)" + ] + }, + { + "cell_type": "markdown", + "id": "7e4faf59", + "metadata": {}, + "source": [ + "<a id=\"app-1\"></a>\n", + "## Application 1: Image Chat\n", + "\n", + "In this section, we present a straightforward dual-agent architecture to enable user to chat with a multimodal agent.\n", + "\n", + "\n", + "First, we show this image and ask a question.\n", + "![](https://th.bing.com/th/id/R.422068ce8af4e15b0634fe2540adea7a?rik=y4OcXBE%2fqutDOw&pid=ImgRaw&r=0)" + ] + }, + { + "cell_type": "markdown", + "id": "e3d5580e", + "metadata": {}, + "source": [ + "Within the user proxy agent, we can decide to activate the human input mode or not (for here, we use human_input_mode=\"NEVER\" for conciseness). This allows you to interact with LLaVA in a multi-round dialogue, enabling you to provide feedback as the conversation unfolds." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "b1db6f5d", + "metadata": {}, + "outputs": [], + "source": [ + "from autogen.agentchat.contrib.llava_agent import LLaVAAgent" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "67157629", + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[33mUser_proxy\u001b[0m (to image-explainer):\n", + "\n", + "What's the breed of this dog? \n", + "<image>.\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[31m\n", + ">>>>>>>> USING AUTO REPLY...\u001b[0m\n", + "\u001b[34mYou are an AI agent and you can view images.\n", + "###Human: What's the breed of this dog? \n", + "<image>.\n", + "\n", + "###Assistant: \u001b[0m\n", + "\u001b[33mimage-explainer\u001b[0m (to User_proxy):\n", + "\n", + "The breed of the dog in the image is a poodle.\n", + "\n", + "--------------------------------------------------------------------------------\n" + ] + } + ], + "source": [ + "image_agent = LLaVAAgent(\n", + " name=\"image-explainer\",\n", + " max_consecutive_auto_reply=10,\n", + " llm_config={\"config_list\": llava_config_list, \"temperature\": 0.5, \"max_new_tokens\": 1000}\n", + ")\n", + "\n", + "user_proxy = autogen.UserProxyAgent(\n", + " name=\"User_proxy\",\n", + " system_message=\"A human admin.\",\n", + " code_execution_config={\n", + " \"last_n_messages\": 3,\n", + " \"work_dir\": \"groupchat\"\n", + " },\n", + " human_input_mode=\"NEVER\", # Try between ALWAYS or NEVER\n", + " max_consecutive_auto_reply=0\n", + ")\n", + "\n", + "# Ask the question with an image\n", + "user_proxy.initiate_chat(image_agent, \n", + " message=\"\"\"What's the breed of this dog? \n", + "<img https://th.bing.com/th/id/R.422068ce8af4e15b0634fe2540adea7a?rik=y4OcXBE%2fqutDOw&pid=ImgRaw&r=0>.\"\"\")" + ] + }, + { + "cell_type": "markdown", + "id": "3f60521d", + "metadata": {}, + "source": [ + "Now, input another image, and ask a followup question.\n", + "\n", + "![](https://th.bing.com/th/id/OIP.29Mi2kJmcHHyQVGe_0NG7QHaEo?pid=ImgDet&rs=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "73a2b234", + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[33mUser_proxy\u001b[0m (to image-explainer):\n", + "\n", + "What is this breed? \n", + "<image>\n", + "\n", + "Among the breeds, which one barks less?\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[31m\n", + ">>>>>>>> USING AUTO REPLY...\u001b[0m\n", + "\u001b[34mYou are an AI agent and you can view images.\n", + "###Human: What's the breed of this dog? \n", + "<image>.\n", + "###Assistant: The breed of the dog in the image is a poodle.\n", + "###Human: What is this breed? \n", + "<image>\n", + "\n", + "Among the breeds, which one barks less?\n", + "\n", + "###Assistant: \u001b[0m\n", + "\u001b[33mimage-explainer\u001b[0m (to User_proxy):\n", + "\n", + "Among the breeds, poodles tend to bark less compared to other breeds. However, it is important to note that individual dogs may have different temperaments and barking habits, regardless of their breed.\n", + "\n", + "--------------------------------------------------------------------------------\n" + ] + } + ], + "source": [ + "# Ask the question with an image\n", + "user_proxy.send(message=\"\"\"What is this breed? \n", + "<img https://th.bing.com/th/id/OIP.29Mi2kJmcHHyQVGe_0NG7QHaEo?pid=ImgDet&rs=1>\n", + "\n", + "Among the breeds, which one barks less?\"\"\", \n", + " recipient=image_agent)" + ] + }, + { + "cell_type": "markdown", + "id": "0c40d0eb", + "metadata": {}, + "source": [ + "<a id=\"app-2\"></a>\n", + "## Application 2: Figure Creator\n", + "\n", + "Here, we define a `FigureCreator` agent, which contains three child agents: commander, coder, and critics.\n", + "\n", + "- Commander: interacts with users, runs code, and coordinates the flow between the coder and critics.\n", + "- Coder: writes code for visualization.\n", + "- Critics: LLaVA-based agent that provides comments and feedback on the generated image." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "e8eca993", + "metadata": {}, + "outputs": [], + "source": [ + "class FigureCreator(AssistantAgent):\n", + "\n", + " def __init__(self, n_iters=2, **kwargs):\n", + " \"\"\"\n", + " Initializes a FigureCreator instance.\n", + " \n", + " This agent facilitates the creation of visualizations through a collaborative effort among its child agents: commander, coder, and critics.\n", + " \n", + " Parameters:\n", + " - n_iters (int, optional): The number of \"improvement\" iterations to run. Defaults to 2.\n", + " - **kwargs: keyword arguments for the parent AssistantAgent.\n", + " \"\"\"\n", + " super().__init__(**kwargs)\n", + " self.register_reply([Agent, None],\n", + " reply_func=FigureCreator._reply_user,\n", + " position=0)\n", + " self._n_iters = n_iters\n", + "\n", + " def _reply_user(self, messages=None, sender=None, config=None):\n", + " if all((messages is None, sender is None)):\n", + " error_msg = f\"Either {messages=} or {sender=} must be provided.\"\n", + " logger.error(error_msg)\n", + " raise AssertionError(error_msg)\n", + "\n", + " if messages is None:\n", + " messages = self._oai_messages[sender]\n", + "\n", + " user_question = messages[-1][\"content\"]\n", + "\n", + " ### Define the agents\n", + " commander = AssistantAgent(\n", + " name=\"Commander\",\n", + " human_input_mode=\"NEVER\",\n", + " max_consecutive_auto_reply=10,\n", + " system_message=\n", + " \"Help me run the code, and tell other agents it is in the <img result.jpg> file location.\",\n", + " is_termination_msg=lambda x: x.get(\"content\", \"\").rstrip().endswith(\n", + " \"TERMINATE\"),\n", + " code_execution_config={\n", + " \"last_n_messages\": 3,\n", + " \"work_dir\": \".\",\n", + " \"use_docker\": False\n", + " },\n", + " llm_config=self.llm_config,\n", + " )\n", + "\n", + " critics = LLaVAAgent(\n", + " name=\"Critics\",\n", + " system_message=\n", + " \"\"\"Criticize the input figure. How to replot the figure so it will be better? Find bugs and issues for the figure. \n", + " Pay attention to the color, format, and presentation. Keep in mind of the reader-friendliness.\n", + " If you think the figures is good enough, then simply say NO_ISSUES\"\"\",\n", + " llm_config={\"config_list\": llava_config_list},\n", + " human_input_mode=\"NEVER\",\n", + " max_consecutive_auto_reply=1,\n", + " # use_docker=False,\n", + " )\n", + "\n", + " coder = AssistantAgent(\n", + " name=\"Coder\",\n", + " llm_config=self.llm_config,\n", + " )\n", + "\n", + " coder.update_system_message(\n", + " coder.system_message +\n", + " \"ALWAYS save the figure in `result.jpg` file. Tell other agents it is in the <img result.jpg> file location.\"\n", + " )\n", + "\n", + " # Data flow begins\n", + " commander.initiate_chat(coder, message=user_question)\n", + " img = Image.open(\"result.jpg\")\n", + " plt.imshow(img)\n", + " plt.axis('off') # Hide the axes\n", + " plt.show()\n", + " \n", + " for i in range(self._n_iters):\n", + " commander.send(message=\"Improve <img result.jpg>\",\n", + " recipient=critics,\n", + " request_reply=True)\n", + " \n", + " feedback = commander._oai_messages[critics][-1][\"content\"]\n", + " if feedback.find(\"NO_ISSUES\") >= 0:\n", + " break\n", + " commander.send(\n", + " message=\"Here is the feedback to your figure. Please improve! Save the result to `result.jpg`\\n\"\n", + " + feedback,\n", + " recipient=coder,\n", + " request_reply=True)\n", + " img = Image.open(\"result.jpg\")\n", + " plt.imshow(img)\n", + " plt.axis('off') # Hide the axes\n", + " plt.show()\n", + " \n", + " return True, \"result.jpg\"" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "977b9017", + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[33mUser\u001b[0m (to Figure Creator~):\n", + "\n", + "\n", + "Plot a figure by using the data from:\n", + "https://raw.githubusercontent.com/vega/vega/main/docs/data/seattle-weather.csv\n", + "\n", + "I want to show both temperature high and low.\n", + "\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33mCommander\u001b[0m (to Coder):\n", + "\n", + "\n", + "Plot a figure by using the data from:\n", + "https://raw.githubusercontent.com/vega/vega/main/docs/data/seattle-weather.csv\n", + "\n", + "I want to show both temperature high and low.\n", + "\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33mCoder\u001b[0m (to Commander):\n", + "\n", + "First, we will download the CSV file, then we will parse it using pandas, a popular data analysis library in Python. After that, we will plot the data using matplotlib.\n", + "\n", + "This is how we could do this:\n", + "\n", + "```python\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "\n", + "# Step 1: Load the Data\n", + "url = \"https://raw.githubusercontent.com/vega/vega/main/docs/data/seattle-weather.csv\"\n", + "data = pd.read_csv(url)\n", + "\n", + "# Step 2: Parse the date to datetime format\n", + "data['date'] = pd.to_datetime(data['date'])\n", + "\n", + "# Step 3: Plot the Data\n", + "plt.figure(figsize=(10,6))\n", + "plt.plot(data['date'], data['temp_max'], label='Temp Max')\n", + "plt.plot(data['date'], data['temp_min'], label='Temp Min')\n", + "\n", + "plt.title('Seattle Weather')\n", + "plt.xlabel('Date')\n", + "plt.ylabel('Temperature (F)')\n", + "plt.legend()\n", + "plt.grid()\n", + "\n", + "# Save the figure\n", + "plt.savefig('result.jpg')\n", + "\n", + "# Display the plot\n", + "plt.show()\n", + "```\n", + "\n", + "When you run this code, it will load the data from the given URL, parse the 'date' column to datetime format, then plot the \"temp_max\" and \"temp_min\" over time. The resulting plot is then shown to you. The plot will automatically be saved as 'result.jpg' in the current directory. I will also submit these instructions to other agents.\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[31m\n", + ">>>>>>>> EXECUTING CODE BLOCK 0 (inferred language is python)...\u001b[0m\n", + "\u001b[33mCommander\u001b[0m (to Coder):\n", + "\n", + "exitcode: 0 (execution succeeded)\n", + "Code output: \n", + "Figure(1000x600)\n", + "\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33mCoder\u001b[0m (to Commander):\n", + "\n", + "Great! The code has successfully executed and the plot was generated and saved as `result.jpg`. \n", + "\n", + "If you check the working directory, you should find the figure saved as `result.jpg`.\n", + "\n", + "Let me know if you need help with anything else.\n", + "\n", + "TERMINATE\n", + "\n", + "--------------------------------------------------------------------------------\n" + ] + }, + { + "data": { + "image/png": "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19Tu3bvZv38/Z555Zh7rY63ltdde4+WXX+b0009n0aJFPP744wwODiIinHLKKaxZswY48gPLOUej0eCZZ55hdHSUU045heXLlzM6OsrmzZupVqv5XH7mmWeIooiPfvSjOOf47W9/y969e6lWq3z0ox+lWq3mFqM9e/awZcsW1qxZw/r169m3bx9PP/00q1ev5sQTT8xdC0dClgXwzDPPsH//ftavX8+qVauw1vKb3/yGKIrYtGkTQRCwdetW3nrrLS699FKMMTz//PO8/vrrhGHIueeeS29vby6DoaEhnnzySVasWMEpp5zCiy++yMDAAACLFi3ivPPOm5Hym+1j27ZtY8eOHSxbtoxTTz2VOI7ZunUrBw4cYNOmTXR0dDAwMMDrr7/OBRdckO8BL7zwArt372bDhg2sXr06VzDGxsZ48skn6ezs5Oyzz6bVarF582aMMZx99tkEQTBrrXXHk/n3xEfBa6+9RqPR4Omnn+auu+5i//79fP3rX2d0dJSvf/3rHDhwgL179/Lwww/z8MMPY63ljTfeYM+ePezZs4e//Mu/nJKz/cgjj3Dvvffy8ssv861vfYtWq8XAwADf+c532Lt371HdFqy1vPjii4gIt9xyCy+//HL+fjt37uSWW24hiiJeeeUVbr/9doaHh4miiG3bttFsNvn7v/97fvnLX+YbXrPZ5H/+z//J7t27ufvuu/n1r39NGIb09fUxODjIj370o3yzOVKyhff888+TJAk/+tGPeOyxx3j55Ze55ZZb2L9/P1/72teYmJjglVde4fvf/z7btm0DvGnYWsvLL7/MrbfeOiVN63vf+x5PPfUUDz/8MPfddx+NRoOBgQG+/e1v02g0ZixbgJdffpkoinj00Ue57777eOONN/gf/+N/MDo6yn//7/+d0dFR9uzZw09/+tN8LjSbTer1OgcOHOC//Jf/ksdlWGv5+c9/zk9/+lO2bdvGrbfemvvAq9Uq3/3ud5mYmJhRznM23l27dnHgwAEGBgby1/vqV7/K/v37+eY3v8nOnTvZs2cPv/3tb/nxj39MkiREUcTOnTv5xje+wd13302z2QTID5Q777wzf+4sevtv//ZvefXVV2e8mWaKy969ezlw4ABf+9rXqNfrfOMb32D37t3cdddd+cG7bds2/uZv/iZfU2NjY3zrW9/i5ptvJoqifJ1lYxwZGeG//bf/xujoKJ2dnfT29vKTn/yE1157bcZpiCLC+Pg427dvZ2JiIp+nd955J88++yw/+9nPePDBBxkZGWHr1q3cfPPNecra7bffDkBPT08uV/BzOhvnX/7lX7J79+58X/nZz352VDfdVqvF9u3bcc7xF3/xF+zbt4+/+7u/46GHHmLLli387//9v4miiIGBAW699Vbq9ToAd999d+7iyhT+zNXxta99jaGhIb7zne/w/PPPU6lU6Ovr4+WXX+bnP//5jHP1szn07LPP4pzj9ttv58UXX+Spp57irrvuYseOHXzzm9+kXq/zyiuvcNttt+X75uOPP84999yTB+5mqbxRFHHzzTfz6quv8pOf/IRf/epXjI+Ps2XLFm677bZZnSFxvCmUgfdAtkmcf/75fPrTn+ass85iZGSEN998k/7+fq655hrWr1/PCy+8wOmnn87FF1+cL4CNGzfyuc99jvPOO4/R0VGstflG9cQTT/CZz3yGG2+8kZ07d+Kc47Of/Swnnnhifquayaaa/eznPvc5Lr30Uvr7+6nX6zz99NN85jOf4Qtf+AK7d++m2Wzy6U9/mrVr12KtJQgCLr/8cq688kpWr16dp9Vkh9iuXbu4/vrrufrqq9m8eTOLFy/m/PPPZ2RkhCuvvBJjzIwWflYn4JprruHyyy9n1apVjI6OsnXrVi688EI+97nP0Wq12Lt3L5deeilnnHFGbl498cQT6evrY3h4mI6ODpRStFotrLW88MILXH/99dxwww1s3ryZSqXCddddN+WGfaSLP/u5iy++mE996lOceuqpjIyMsGvXLlatWsW1117L8uXLGRgY4JxzzuHSSy/Nb6gLFy5k9erVDA0N5QdAs9nEOccTTzzB7/7u7/J7v/d7vPTSS7k1o1arcdppp7F48eIZjddaSxzHnHXWWVx77bWce+65DA0NceDAAcIw5LrrruOss87i6aefZsOGDVx22WV50Gwcx9x77718+tOfzl0FURThnOPpp5/msssu47rrrmNkZISJiQkuv/xy1q1blz/vTBXDlStXct1113HhhRfSaDSYmJhg//79XH/99Vx55ZU8/vjjLFu2jM985jOEYZjfpu+++24uuOCCPN4lW2vPPfccZ5xxBtdeey21Wo3BwUFOPfVUTj31VESETZs2AcwohSyKIvr6+vjSl77ExRdfTBRFNJtNtm/fzj/6R/+Iz372szz22GP09PRwzTXX5HNPROjp6ckvDlEUEccxSZLkKZLXXHMNGzduZGBggNNOO42Pf/zjBEEAzMyMLiKEYciNN97IxRdfTLVaza0an//85/n85z/Pli1bMMbwO7/zOyxbtiw/9Ht7e9myZQs//elPaTabNBoNms0mBw4coF6vc/3113PJJZfw7LPPsmLFCs4//3wOHjzIFVdckR/IR0qmNN1www1cdtllLFy4kImJCZ5++mmuuuoqPv/5z7Nnzx7Gx8f55Cc/yYYNG/L3euCBBxgcHOTXv/41e/fuzedCo9Fg165dfO5zn+Oaa67hN7/5DQsWLOC6667LLQozle9cp3ATvAeyjc05x0svvcRPfvIT/vk//+fs3buXSqUC+KyD7FaaFebIAgYHBwe54447+L3f+z0OHDjAzTffzIYNG4jjGGNMHqGbFXbJFmB7as+R0F7k6L777qNWq7F+/XoeeOCBfMIbY3LzfFacIxvv5s2bGRgY4E/+5E945JFHeOSRR7jooovyTaxcLudWgKGhIQYGBvj93/99YGb+uex9rbU88sgj7N27lxtvvJG7776b/v5+tNZ5kFU2hkxJstbS2dlJT09Pfvu67777OPfcc4njmCAICIKAKIryqmLtHKls2+fCli1beOihh/ijP/ojtm/fTrVaxTl3yFzIxpskCV1dXXR2drJ792527NjBbbfdxqmnnpqXTDXGoLXOf+6BBx7g6quvnnG0efYzmZXqrrvu4itf+QqNRoNyuYwxhkqlMsUfnI3lwQcf5NVXXwVgYGCAV155hR//+Mf09fUxMTFBqVQiDMP8xjnT+dpOdmgMDQ3xv/7X/+Laa6/N5Zetlfa4i2zM27Zt45FHHuH888/nlVdeYfv27fyf//N/UErR39+fH6Llcjn31T/66KOcddZZuTtuJuPOflf1ep1vf/vbXHnllXkAY7lczuXT7mvPFNk//dM/xRjDX/3VX/Gb3/yGffv2sXv3bs444wyCIEBrTblcptFoHJNc92xfaLVafO9732PDhg0sXryYRqORuyiyOZvJO9uTvvKVryAi3H///dx///309fXx7LPP8tGPfjRX/iqVCgcOHEBE2LVrFyMjI5x++um5nI6U9n3hgQceIAgCTj31VP7hH/6BarWKMYZSqXTIzwCMjo7y8Y9/nNNPP51vfOMbRFHEI488woUXXohzDmMM1WqVZrOZWw3amW/xAlAoA+8Z5xyvvfYat9xyC1/+8pdZuHAhWmteffVVdu3axcDAQH4zGBsbY3x8nPHxceI45r/+1//KFVdcwYYNGyiVSvybf/NvsNbywx/+kGeeeSY/YKvVKsPDw9TrdYaGhhgfH6ejo2NGYxUR7rnnHl566SW+8pWvEAQBa9eu5fHHH88nerVaZWJigkajwcjICI1Gg61bt/L973+ff/Wv/hWVSoVLLrmECy+8kGazyf33389LL73E448/zoknnpj7PU8++WRqtdpRLaBMEXjggQf44z/+Y8rlMuvWrePBBx/klFNO4eDBg/T19eW3ktHRUVqtFiMjIyxYsICPfOQjfOc732HdunX863/9rxERNm/ezJYtWxgfH2fVqlVorXnrrbdoNBoMDQ3lloQjlS3Aiy++yB133MEf/MEf0NPTw4oVK7jvvvvYvXs3r776Kr/7u79LFEWMj4/nkdjj4+MEQcC5557Lww8/TG9vL3/2Z38G+MPvueeeY2hoiFqtRrlcZteuXQwNDbFx48aj6gmQJAl79+7lq1/9Kl/84hdZsWIF9Xqdffv2sWPHDrZs2cLVV1+NtZbR0dF8Dp9xxhlUq1Vee+01yuUyfX19ef2JX/ziFzz99NMsXLiQOI7p7u5mbGyMer3OwYMHiaJoxmm54+PjfPWrX+VjH/sYZ5xxBmEYYq1l27ZtPPPMM6xatQrnHCMjI4yPjzMyMkJ/fz9f/vKXefPNNzHG0NPTw7/8l/+SJEnYtm1b7r7Ys2cPCxcuZGxsjIcffpjf//3fP6qguMxy9vWvf53Vq1dz8cUXUy6X6e3tZfPmzQwODrJ8+XIAxsfHaTQauRVraGiISqVCvV6nXC5zww034Jxj7969/OxnP2Pnzp1s3bqV888/n2azycjISL63tN9ij0S2zjnuvPNOms0mN954I8YYVq5cyWOPPcbSpUvp6OggCIJ8/xkbG6NWqzE8PJzvT+VymSuuuILLL7+c0dFR7rnnHl577TWefPJJLrjgApIk4R/+4R84//zz8zkwU6XbWsvf/d3f8eyzz/KHf/iHBEHA+vXrefTRR+no6CBJEjo6OnLr5dDQEMuWLWPjxo1MTExMWXPnn38+SZLw4IMPsn37dp5//nnWr1+fZ/nU63WGh4fp7+8/Ytl+GCjcBO8REeG5554D4N577+WnP/0pCxcu5Hd+53e48847+ehHP8rq1avZsmVL7u9+9NFHeemllxgdHeXhhx/mtttuy19LKcVVV11Fs9nkZz/7Gf/sn/0zjDH84Ac/oF6v8+Mf/5jBwcEZ+9uSJOHZZ59lbGyMb3/727z00ktcccUVANx3333cdNNNBEHA/fffT7PZ5Pvf/z5vvPEGTz31FM45brvtNh577LE8Sr9arfLlL3+Z+++/H4BPfvKTiPjKZFddddWMI6KzmwrA5s2bSZKEb3/72zz99NOcddZZrFmzhttvv50bb7yR3t5efvWrX7Fr167cv/7666/zrW99K5dhqVSiUqlQKpW48cYb+e1vf8v27dv5whe+QBzH3HHHHTjn+N73vpe7bY6E7BkzJe5v//ZveeihhzjhhBO47LLLuOOOO/jkJz/JihUreOqpp9i8eTPPPfccv/71rxkcHOS73/0u9957L1/5yleoVqtordFac+211zI4OMgjjzzCl7/8ZUSEwcFBrrzySqrV6pT3PhKy8tLbt28niiLuv/9+fvzjH1OpVPjCF77A3/zN37BhwwZOO+00Xn75ZR588EH27NnDL37xCxYvXszHPvYxLr30Ui677DIWLFiQWwMuuugiqtUq99xzDzfddBPGGO6//37eeustHnjgAV566aUZ3WZFhJ07dzIyMsITTzzBX//1X9NqtfiDP/gD/v7v/x6lFJ/4xCfYt28fP/jBD2i1Wvzwhz+ku7ubCy64gE9+8pNcddVVLFq0KJ+7Gzdu5IwzzuCuu+7iuuuuo7u7myiKWL9+PStXrpyxVSDzRQ8NDbFz58483mN0dJR/8k/+CY8++ig7d+7k+uuvZ2xsjLvuuguAO++8k7GxMX7xi19w8803s379ej7ykY/kN93ly5dz+eWXc/vtt3PuueeyZs0aBgYGePjhh3nllVf4xS9+MWPZNhoNXnzxRd58801uvfVW9uzZwxe+8AX27NnDI488wk033UQcx/zoRz/Kx7pv3z4ee+wx/uqv/gpjDNdccw3gb/s9PT188Ytf5Pvf/z7Lli3j3HPPBfy6/vjHP57LdiaKbLtLamJigltuuYWBgQEuueQSyuUyP/jBD7jpppsol8s88MADjI+Pc8899+RugP379/OTn/yEf/yP/zFhGFKpVKhWq3zxi1/kgQceYGRkhM985jOMj4/z13/918RxzF133UWj0ZiXboIitfA9kEUMZxt3+wGSJEl+c8m+9+3ScTIT3HSf6uHSorIc6ez7jySFKAtWa7+ZtZdnzd6/vR569vrZc2SHezam9vStzIycvUb2/e3P817Hm7lUsrG3KxWZz3C6/DLXRhaJf7iUp/YNqD2lr930mPnBjzSCvF6vEwTBIZtc+1xof8/s95g9X/vPTI9dmC7v6bI8Etlm6WtZ/fv2Z203jWbK6eHmZBYn0O6+mi7D7Nnb50y7O+dIxpu5GzJ3QPucy9xp7eNr/5O5vrJxT5dt9n3T5TrT+h+ZuyFzCbXLBcg7EWbjfbvGX9PTeNvnyuFkm33fke4LSZLQarVyN8b012uXR/sztY97enfF47UvTG881m4Zy77WLtv2ddP+uezf7X+379HT94Xsa0e6L3wYKCwD74H2A7l9gxORKRtQ+6TLFkhWua19oU2fpO2b3nRFYya6WhYMmI2pfbztB9PhNsDMZz39Odp99NOremXjnq4IvRfa36P9wMnG1T7+9nFkG9J0f+z0jSf73PSDafp7HYlss02oXQbT50JGuw/2cIpKuxzax97+/TMNxsues/13lr1e+2Y9XebtYwDyNLb2722XbTbP2+f4TGjfiNvHln2uXQ7T11v2nNn8PdzGnz13+/yergAdCe2xHe0+8ezf7f0csj0ke672sbXPmfa5ko2tfbztMjlSsn0hG0P7Gmk/DNsP+MO9f/vv4HD7wvS5MZN9of192mV7OCUze+92JTT7ufZ9e/o4DrcvtH/vfKOwDLwHjmbDOFYcyfu2Kxfv9eeO5QI40pv2O33t/ZD3kY73WMyFmT7bsZJt9vX2W9/hNvHslpiVem5X+toVhmMx5pkeHMeKI33fYzF33+6Aeqfvm64IvVdmsi8cSz7ofeF4yvbDQKEMFBTMUzKzfPsBr5TKb4/tTboOd8OebhEoKCiYuxTZBAUF85hf/vKX3HXXXaxYsQLnHDfccAPr16+f4sp6+OGH2b9/P9dee22uGMRxPKNsgYKCgtlJoQwUFMxjxsbG+NSnPsU111zDs88+yze/+U1uuOEGHnroIRqNBjfddBOPP/44TzzxBMaYPIXSWsvVV1/NBRdc8EE/QkFBwTGgCCAsKJjHZNHipVKJk046iYMHD7Jo0SJOPvlk6vU6v/rVrzjjjDO4+uqrueqqq7jjjjvo7++nu7ubu+++e8aprwUFBbOLwjJQUDCPySKxkyRh//79GGO49dZbueCCC1i7di2jo6N51HxWOnnjxo309fUddaGpgoKC2UOhDBQUzGOMMTz00EPs3buXN998ky996Uts3bqVLVu28NZbb7F69WpWrFjBvffey+rVq/n0pz/Nr371K/r7+9m4cSMnnXTSB/0IBQUFx4Aim6CgYJ7inGN0dJTBwUGUUtRqtbzE61tvvUWtVstruGdWg97eXvbu3Ytzvm11Vte/oKBgblMoAwUF85jDLf+3qznxTp8vKCiY2xTKQEFBQUFBwTynyCYoKCgoKCiY5xTKQEFBQUFBwTynUAYKCgoKCgrmOYUyUFBQUFBQMM8plIGCgoKCgoJ5TqEMFBQUFBQUzHMKZaCgoKCgoGCeUygDBQUFBQUF85xCGSgoKCgoKJjnFMpAQUFBQUHBPKdQBgoKCgoKCuY5hTJQUFBQUFAwzymUgYKCgoKCgnlOoQwUFBQUFBTMcwploKCgoKCgYJ5TKAMFBQUFBQXznEIZKCgoKCgomOcUykBBQUFBQcE8p1AGCgoKCgoK5jmFMlBQUFBQUDDP+f8BJHxhOAVLItkAAAAASUVORK5CYII=", + "text/plain": [ + "<Figure size 640x480 with 1 Axes>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[33mCommander\u001b[0m (to Critics):\n", + "\n", + "Improve <image>\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[34mCriticize the input figure. How to replot the figure so it will be better? Find bugs and issues for the figure. \n", + " Pay attention to the color, format, and presentation. Keep in mind of the reader-friendliness.\n", + " If you think the figures is good enough, then simply say NO_ISSUES\n", + "###Human: Improve <image>\n", + "\n", + "###Assistant: \u001b[0m\n", + "\u001b[33mCritics\u001b[0m (to Commander):\n", + "\n", + "The input figure shows a graph of Seattle weather, with a blue line representing the temperature and an orange line representing the humidity. The graph is displayed on a white background, with the title \"Seattle Weather\" at the top.\n", + "\n", + "There are a few issues with the figure that could be improved:\n", + "\n", + "1. The color scheme for the temperature and humidity lines is not clear. The blue line represents the temperature, but it is not immediately clear to the viewer. A more distinct color or labeling could help clarify this.\n", + "2. The graph does not have any axis labels or units, making it difficult for the viewer to understand the scale and units of the temperature and humidity values.\n", + "3. The graph is not well-organized, with the temperature and humidity lines overlapping and not clearly separated. A more organized layout could help the viewer better understand the relationship between the two variables.\n", + "\n", + "To improve the figure, the following changes could be made:\n", + "\n", + "1. Use a more distinct color for the temperature line, such as red, and label it with a clear title, such as \"Temperature (°C)\".\n", + "2. Add axis labels for both the temperature and humidity lines, indicating the units and scale of the values.\n", + "3. Separate the temperature and humidity lines, either by using different colors or by adding a clear separation between them.\n", + "4. Consider adding a legend or key to help the viewer understand the meaning of the different colors and lines on the graph.\n", + "\n", + "By making these changes, the figure will be more reader-friendly and easier to understand.\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33mCommander\u001b[0m (to Coder):\n", + "\n", + "Here is the feedback to your figure. Please improve! Save the result to `result.jpg`\n", + "The input figure shows a graph of Seattle weather, with a blue line representing the temperature and an orange line representing the humidity. The graph is displayed on a white background, with the title \"Seattle Weather\" at the top.\n", + "\n", + "There are a few issues with the figure that could be improved:\n", + "\n", + "1. The color scheme for the temperature and humidity lines is not clear. The blue line represents the temperature, but it is not immediately clear to the viewer. A more distinct color or labeling could help clarify this.\n", + "2. The graph does not have any axis labels or units, making it difficult for the viewer to understand the scale and units of the temperature and humidity values.\n", + "3. The graph is not well-organized, with the temperature and humidity lines overlapping and not clearly separated. A more organized layout could help the viewer better understand the relationship between the two variables.\n", + "\n", + "To improve the figure, the following changes could be made:\n", + "\n", + "1. Use a more distinct color for the temperature line, such as red, and label it with a clear title, such as \"Temperature (°C)\".\n", + "2. Add axis labels for both the temperature and humidity lines, indicating the units and scale of the values.\n", + "3. Separate the temperature and humidity lines, either by using different colors or by adding a clear separation between them.\n", + "4. Consider adding a legend or key to help the viewer understand the meaning of the different colors and lines on the graph.\n", + "\n", + "By making these changes, the figure will be more reader-friendly and easier to understand.\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33mCoder\u001b[0m (to Commander):\n", + "\n", + "Thank you for your feedback. I will indeed make the improvements accordingly. This time, each graph line will be labeled showing which indicates \"Temp Max\" and which indicates \"Temp Min\". I will also assign a red color to the line representing \"Temp Max\" and a blue color to the line representing \"Temp Min\". I will make sure the axes have the appropriate labels. \n", + "\n", + "Follow this code and it will improve your figure and saved as `result.jpg`:\n", + "\n", + "```python\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "\n", + "# Step 1: Load the Data\n", + "url = \"https://raw.githubusercontent.com/vega/vega/main/docs/data/seattle-weather.csv\"\n", + "data = pd.read_csv(url)\n", + "\n", + "# Step 2: Parse the date to datetime format\n", + "data['date'] = pd.to_datetime(data['date'])\n", + "\n", + "# Step 3: Plot the Data\n", + "plt.figure(figsize=(10,6))\n", + "plt.plot(data['date'], data['temp_max'], color='red', label='Temp Max')\n", + "plt.plot(data['date'], data['temp_min'], color='blue', label='Temp Min')\n", + "\n", + "plt.title('Seattle Weather')\n", + "plt.xlabel('Date')\n", + "plt.ylabel('Temperature (F)')\n", + "plt.legend()\n", + "plt.grid()\n", + "\n", + "# Save the figure\n", + "plt.savefig('result.jpg')\n", + "\n", + "# Display the plot\n", + "plt.show()\n", + "\n", + "```\n", + "\n", + "This code improves upon the previous one by adding distinct colors for the temperature max and min lines (red and blue, respectively), labeling each line, and providing proper axes labels. The result will be a plot that is more reader-friendly and easier to understand. The plot will automatically be saved as 'result.jpg' in the current directory. I will also submit these instructions to other agents.\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[31m\n", + ">>>>>>>> EXECUTING CODE BLOCK 0 (inferred language is python)...\u001b[0m\n", + "\u001b[33mCommander\u001b[0m (to Coder):\n", + "\n", + "exitcode: 0 (execution succeeded)\n", + "Code output: \n", + "Figure(1000x600)\n", + "\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33mCoder\u001b[0m (to Commander):\n", + "\n", + "Great, the code has been successfully executed and the updates have been made based on the feedback. \n", + "\n", + "You should now have a more reader-friendly plot, with clear distinction between maximum and minimum temperatures, and more evident axis labels. This updated figure is saved as `result.jpg` in your current directory.\n", + "\n", + "If you need further improvements or need assistance with something else, feel free to ask.\n", + "\n", + "TERMINATE\n", + "\n", + "--------------------------------------------------------------------------------\n" + ] + }, + { + "data": { + "image/png": "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FEE/cQw4bEE9GhzN44+18qH/Pay1h21Qx3ITnegxlyhJTeVp+1hwIsd6vOfC0T7n6Y73p+VVsyzrRV2OFU93vMc6D+aTdZ/JqfXZmLflWEvbPpON6kTa9snWhYVq2xL9ef5nY114PqBKEzwNlIvMnj17uOuuu6jValx44YXUajW2b9/Ovffey6ZNmzjllFPYs2cPd999Nxs2bGDdunVMTk5yxx13kGUZF154IYODg71Ti3OOH//4x0xOTnLhhRfSbDa599572b17NxdffDEDAwO9k+PRTMzyRrj77rvZuXMna9asYePGjSil2LJlCxMTE1x00UU0m022bt3Kjh07ePGLX0y9XmfHjh1s3bqVkZERzjvvvN57e++ZmZnh+9//PqOjo5x33nls376dO++8E+89w8PDXH755b3w99HYtmT8PvDAAzz44IOMj49z3nnn4b1n27Zt7NixgwsvvJCRkREeeeQRtm3bxkUXXcTw8DAHDx5ky5YtxHHcuyYIN3Kn0+GHP/whWmsuuugiRIQf/ehHdLtdLrnkEpIkOepTeVkNsGvXLu655x5arRbnn38+SZLw0EMPsW3bNjZv3szKlSvZtWsX9957L5s3b2bVqlVMTk5y22234ZzjggsuYHBwsFdb7pxjy5YtzM7O8oIXvABrLd/+9rdJ0xRjDJdddhnDw8NHbdvSUdq7dy933nknWmsuuOACms0mu3fv5s4772T9+vWsX7+eiYkJbr/9dlasWNEjvIoI9913HyLCpk2bgBDVyvOce+65h71793L++eczMjLC1q1beeSRR7j44ot7kbCjXVDzPKfT6bBlyxbSNOWCCy5gZGSEiYkJbrvtNsbHxznzzDNpt9v8+Mc/ptFocNFFF/XuqZ07d7J3717OO++8HtfHOcfDDz/MAw88wDnnnMPSpUv53ve+x/79+xERzjzzTE499VTg6Dcs7z2dTocf//jHTE1NceaZZ7Jq1SqmpqbYsmULjUajN5d//OMfk2UZL3zhC/He88Mf/pDdu3fTaDR44QtfSKPR6EWMdu3axV133cWpp57Kxo0b2bNnD7fffjvr169n3bp1vdTC0aCsAvjxj3/M3r172bhxI2vXrsU5xw9+8AOyLOOiiy4iiiLuvvtu9u3bxxVXXIExhjvvvJNHHnmEOI655JJLGBkZ6dng0KFD3HbbbaxevZozzzyTe++9l23btgGwdOlSXvCCFxyT81uuY/fddx/bt29n5cqVnHXWWeR5zt13382BAwe46KKLaLVabNu2jUceeYTLLrustwbcc8897Ny5k02bNrF+/fqegzE9Pc1tt93GwMAAF1xwAWmasmXLFowxXHDBBURRtGCjdScSi++KnwEefvhhOp0Ot99+OzfeeCN79+7lve99L1NTU7z3ve/lwIED7N69m1tuuYVbbrkF5xyPPfYYu3btYteuXfzlX/7lYTXbt956K1/84hd54IEH+NCHPkSapmzbto2PfvSj7N69+xmdFpxz3HvvvYgIH/zgB3nggQd67/foo4/ywQ9+kCzLePDBB/n4xz/OxMQEWZZx33330e12+ad/+if+5V/+pbfgdbtd/vqv/5qdO3fy+c9/nm9/+9vEcczY2Bj79+/nH/7hH3qLzdGivPHuvPNOrLX8wz/8A9/97nd54IEH+OAHP8jevXt5z3vew+zsLA8++CCf+cxnuO+++4AQGnbO8cADD/DhD3/4sDKtT3/60/zoRz/illtu4aabbqLT6bBt2zY+8pGP0Ol0jtm2AA888ABZlvGd73yHm266iccee4y/+Iu/YGpqij/7sz9jamqKXbt28dWvfrU3F7rdLu12mwMHDvAnf/InPV6Gc45//ud/5qtf/Sr33XcfH/7wh3s58Eajwd/8zd8wOzt7TDXP5Xh37NjBgQMH2LZtW+/13v3ud7N3717e//738+ijj7Jr1y5++MMf8qUvfQlrLVmW8eijj/K+972Pz3/+83S7XYDehvLJT36yd90le/vv//7veeihh455MS0dl927d3PgwAHe85730G63ed/73sfOnTu58cYbexvvfffdx6c+9anePTU9Pc2HPvQhPvCBD5BlWe8+K8c4OTnJ//yf/5OpqSkGBgYYGRnhy1/+Mg8//PAxlyGKCDMzM2zdupXZ2dnePP3kJz/JHXfcwde+9jW+/vWvMzk5yd13380HPvCBXsnaxz/+cQCGh4d7doUwp8tx/uVf/iU7d+7srStf+9rXntFJN01Ttm7diveeP//zP2fPnj384z/+I9/85je56667+Lu/+zuyLGPbtm18+MMfpt1uA/D5z3++l+IqHf4y1fGe97yHQ4cO8dGPfpQ777yTer3O2NgYDzzwAP/8z/98zLX65Ry644478N7z8Y9/nHvvvZcf/ehH3HjjjWzfvp33v//9tNttHnzwQT72sY/11s3vfe97fOELX+gRd8tS3izL+MAHPsBDDz3El7/8Zb71rW8xMzPDXXfdxcc+9rEFXSFxolE5A08D5SJx6aWX8spXvpLzzz+fyclJHn/8ccbHx7n22mvZuHEj99xzD+eccw4veclLejfA5s2beeMb38gLXvACpqamcM71Fqrvf//7vPrVr+b666/n0UcfxXvP6173OtatW9c7VR3Lolo+941vfCNXXHEF4+PjtNttbr/9dl796lfz5je/mZ07d9LtdnnlK1/Jhg0bcM4RRRFXXXUVV199NevXr++V1ZSb2I4dO3jDG97Aa17zGrZs2cKyZcu49NJLmZyc5Oqrr8YYc0w3fqkTcO2113LVVVexdu1apqamuPvuu7n88st54xvfSJqm7N69myuuuIJzzz23F15dt24dY2NjTExM0Gq1UEqRpinOOe655x7e8IY38Ja3vIUtW7ZQr9e57rrrDjthH+3NXz7vJS95Ca94xSs466yzmJycZMeOHaxdu5bXv/71rFq1im3btnHhhRdyxRVX9E6oS5YsYf369Rw6dKi3AXS7Xbz3fP/73+e1r30tP/dzP8f999/fi2Y0m03OPvtsli1bdkzjdc6R5znnn38+r3/967nkkks4dOgQBw4cII5jrrvuOs4//3xuv/12Nm3axJVXXtkjzeZ5zhe/+EVe+cpX9lIFWZbhvef222/nyiuv5LrrrmNycpLZ2VmuuuoqTjvttN71HqtjuGbNGq677jouv/xyOp0Os7Oz7N27lze84Q1cffXVfO9732PlypW8+tWvJo7j3mn685//PJdddlmP71Leaz/5yU8499xzef3rX0+z2WT//v2cddZZnHXWWYgIF110EcAxlZBlWcbY2Bi/+Iu/yEte8hKyLKPb7bJ161Z+/ud/nte97nV897vfZXh4mGuvvbY390SE4eHh3sEhyzLyPMda2yuRvPbaa9m8eTPbtm3j7LPP5mUvexlRFAHHFkYXEeI45vrrr+clL3kJjUajF9V405vexJve9CbuuusujDH87M/+LCtXruxt+iMjI9x111189atfpdvt0ul06Ha7HDhwgHa7zRve8AZe+tKXcscdd7B69WouvfRSDh48yKte9arehny0KJ2mt7zlLVx55ZUsWbKE2dlZbr/9dq655hre9KY3sWvXLmZmZnj5y1/Opk2beu918803s3//fr797W+ze/fu3lzodDrs2LGDN77xjVx77bX84Ac/YHR0lOuuu64XUThW+57sqNIETwPlwua95/777+fLX/4y/+bf/Bt2795NvV4HQtVBeSothTlKwuD+/fv5xCc+wc/93M9x4MABPvCBD7Bp0ybyPMcY02PolsIu5Q3YX9pzNOgXObrppptoNpts3LiRm2++uTfhjTG98HwpzlGOd8uWLWzbto13vOMd3Hrrrdx666286EUv6i1itVqtFwU4dOgQ27Zt41d+5VeAY8vPle/rnOPWW29l9+7dXH/99Xz+859nfHwcrXWPZFWOoXSSnHMMDAwwPDzcO33ddNNNXHLJJeR5ThRFRFFElmU9VbF+HK1t++fCXXfdxTe/+U1++7d/m61bt9JoNPDeP2EulOO11jI4OMjAwAA7d+5k+/btfOxjH+Oss87qSaYaY9Ba9553880385rXvOaY2eblc8oo1Y033sjb3/52Op0OtVoNYwz1ev2wfHA5lq9//es89NBDAGzbto0HH3yQL33pS4yNjTE7O0uSJMRx3DtxHut87Ue5aRw6dIj/9b/+F69//et79ivvlX7eRTnm++67j1tvvZVLL72UBx98kK1bt/K///f/RinF+Ph4bxOt1Wq9XP13vvMdzj///F467ljGXX5W7Xabj3zkI1x99dU9AmOtVuvZpz/XXjqy73znOzHG8Fd/9Vf84Ac/YM+ePezcuZNzzz2XKIrQWlOr1eh0Osel1r1cF9I05dOf/jSbNm1i2bJldDqdXoqinLOlvcs16e1vfzsiwle+8hW+8pWvMDY2xh133MELX/jCnvNXr9c5cOAAIsKOHTuYnJzknHPO6dnpaNG/Ltx8881EUcRZZ53Fv/7rv9JoNDDGkCTJE54DMDU1xcte9jLOOecc3ve+95FlGbfeeiuXX3453nuMMTQaDbrdbi9q0I/FxheAyhl42vDe8/DDD/PBD36Qt73tbSxZsgStNQ899BA7duxg27ZtvZPB9PQ0MzMzzMzMkOc5f/qnf8qrXvUqNm3aRJIk/P7v/z7OOT73uc/x4x//uLfBNhoNJiYmaLfbHDp0iJmZGVqt1jGNVUT4whe+wP3338/b3/52oihiw4YNfO973+tN9EajwezsLJ1Oh8nJSTqdDnfffTef+cxn+K3f+i3q9Tov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", + "text/plain": [ + "<Figure size 640x480 with 1 Axes>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[33mCommander\u001b[0m (to Critics):\n", + "\n", + "Improve <image>\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33mCommander\u001b[0m (to Coder):\n", + "\n", + "Here is the feedback to your figure. Please improve! Save the result to `result.jpg`\n", + "Improve <img result.jpg>\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33mCoder\u001b[0m (to Commander):\n", + "\n", + "I apologize for the misunderstanding, but without more specific feedback about the figure, it's difficult to understand what improvements are needed. As of now, the figure includes distinct colors for max and min temperatures, clear labeling of lines, and proper axis labels.\n", + "\n", + "However, if you want to improve visual clarity, you can try:\n", + "\n", + "- Changing the line style (making one of them dotted, for instance).\n", + "- Adding a title to the legend for better clarification.\n", + "- Changing the figure size for a improved view.\n", + "\n", + "Here is the modified code:\n", + "\n", + "```python\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "\n", + "# Step 1: Load the Data\n", + "url = \"https://raw.githubusercontent.com/vega/vega/main/docs/data/seattle-weather.csv\"\n", + "data = pd.read_csv(url)\n", + "\n", + "# Step 2: Parse the date to datetime format\n", + "data['date'] = pd.to_datetime(data['date'])\n", + "\n", + "# Step 3: Plot the Data\n", + "plt.figure(figsize=(12,8))\n", + "plt.plot(data['date'], data['temp_max'], 'r-', label='Temp Max')\n", + "plt.plot(data['date'], data['temp_min'], 'b--', label='Temp Min')\n", + "\n", + "plt.title('Seattle Weather')\n", + "plt.xlabel('Date')\n", + "plt.ylabel('Temperature (F)')\n", + "plt.legend(title='Temperature')\n", + "\n", + "plt.grid()\n", + "\n", + "# Save the figure\n", + "plt.savefig('result.jpg')\n", + "\n", + "# Display the plot\n", + "plt.show()\n", + "\n", + "```\n", + "\n", + "This code changes the line style for the min temperature to dots for better distinction. Adjusts the figure size for a better representation and adds a title to the legend. The plot will automatically be saved as 'result.jpg' in the current directory. You are encouraged to run this code and I will also submit these instructions to other agents.\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[31m\n", + ">>>>>>>> EXECUTING CODE BLOCK 0 (inferred language is python)...\u001b[0m\n", + "\u001b[33mCommander\u001b[0m (to Coder):\n", + "\n", + "exitcode: 0 (execution succeeded)\n", + "Code output: \n", + "Figure(1200x800)\n", + "\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33mCoder\u001b[0m (to Commander):\n", + "\n", + "Great! The code has successfully executed and the plot was generated and saved as `result.jpg`. The figure now includes distinct colors for max and min temperatures, different line styles, and a clearer legend.\n", + "\n", + "You will find the figure saved as 'result.jpg' in your current directory.\n", + "\n", + "If you need any further improvements or other assistance, please let me know.\n", + "\n", + "TERMINATE\n", + "\n", + "--------------------------------------------------------------------------------\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "<Figure size 640x480 with 1 Axes>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[33mFigure Creator~\u001b[0m (to User):\n", + "\n", + "result.jpg\n", + "\n", + "--------------------------------------------------------------------------------\n" + ] + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import time\n", + "from PIL import Image\n", + "\n", + "config_list_gpt4 = autogen.config_list_from_json(\n", + " \"OAI_CONFIG_LIST\",\n", + " filter_dict={\n", + " \"model\": [\"gpt-4\", \"gpt-4-0314\", \"gpt4\", \"gpt-4-32k\", \"gpt-4-32k-0314\", \"gpt-4-32k-v0314\"],\n", + " },\n", + ")\n", + "\n", + "gpt4_llm_config = {\"config_list\": config_list_gpt4, \"cache_seed\": 42}\n", + "\n", + "# config_list_gpt35 = autogen.config_list_from_json(\n", + "# \"OAI_CONFIG_LIST\",\n", + "# filter_dict={\n", + "# \"model\": [\"gpt-35-turbo\", \"gpt-3.5-turbo\"],\n", + "# },\n", + "# )\n", + "\n", + "# gpt35_llm_config = {\"config_list\": config_list_gpt35, \"cache_seed\": 42}\n", + "\n", + "\n", + "creator = FigureCreator(\n", + " name=\"Figure Creator~\",\n", + " llm_config=gpt4_llm_config\n", + " \n", + ")\n", + "\n", + "user_proxy = autogen.UserProxyAgent(\n", + " name=\"User\",\n", + " human_input_mode=\"NEVER\",\n", + " max_consecutive_auto_reply=0\n", + ")\n", + "\n", + "user_proxy.initiate_chat(creator, message=\"\"\"\n", + "Plot a figure by using the data from:\n", + "https://raw.githubusercontent.com/vega/vega/main/docs/data/seattle-weather.csv\n", + "\n", + "I want to show both temperature high and low.\n", + "\"\"\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "f0a58827", + "metadata": {}, + "outputs": [], + "source": [ + "if os.path.exists(\"result.jpg\"):\n", + " os.remove(\"result.jpg\") # clean up" + ] + } + ], + "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.9.16" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/notebook/agentchat_planning.ipynb b/notebook/agentchat_planning.ipynb index 7a211028066..b1a6789560e 100644 --- a/notebook/agentchat_planning.ipynb +++ b/notebook/agentchat_planning.ipynb @@ -19,10 +19,10 @@ "source": [ "# Auto Generated Agent Chat: Collaborative Task Solving with Coding and Planning Agent\n", "\n", - "AutoGen offers conversable agents powered by LLM, tool or human, which can be used to perform tasks collectively via automated chat. This framwork allows tool use and human participance through multi-agent conversation.\n", + "AutoGen offers conversable agents powered by LLM, tool, or human, which can be used to perform tasks collectively via automated chat. This framework allows tool use and human participation through multi-agent conversation.\n", "Please find documentation about this feature [here](https://microsoft.github.io/autogen/docs/Use-Cases/agent_chat).\n", "\n", - "In this notebook, we demonstrate how to use multiple agents to work together and accomplish a task which requires finding info from the web and coding. `AssistantAgent` is an LLM-based agent that can write and debug Python code (in a Python coding block) for a user to execute for a given task. `UserProxyAgent` is an agent which serves as a proxy for a user to execute the code written by `AssistantAgent`. We further create a planning agent for the assistant agent to consult. The planning agent is a variation of the LLM-based `AssistantAgent` with a different system message.\n", + "In this notebook, we demonstrate how to use multiple agents to work together and accomplish a task that requires finding info from the web and coding. `AssistantAgent` is an LLM-based agent that can write and debug Python code (in a Python coding block) for a user to execute for a given task. `UserProxyAgent` is an agent which serves as a proxy for a user to execute the code written by `AssistantAgent`. We further create a planning agent for the assistant agent to consult. The planning agent is a variation of the LLM-based `AssistantAgent` with a different system message.\n", "\n", "## Requirements\n", "\n", @@ -45,7 +45,7 @@ }, "outputs": [], "source": [ - "# %pip install pyautogen~=0.1.0 docker" + "# %pip install pyautogen~=0.2.0b4 docker" ] }, { @@ -55,13 +55,9 @@ "source": [ "## Set your API Endpoint\n", "\n", - "* The [`config_list_openai_aoai`](https://microsoft.github.io/autogen/docs/reference/oai/openai_utils#config_list_openai_aoai) function tries to create a list of configurations using Azure OpenAI endpoints and OpenAI endpoints. It assumes the api keys and api bases are stored in the corresponding environment variables or local txt files:\n", - " - OpenAI API key: os.environ[\"OPENAI_API_KEY\"] or `openai_api_key_file=\"key_openai.txt\"`.\n", - " - Azure OpenAI API key: os.environ[\"AZURE_OPENAI_API_KEY\"] or `aoai_api_key_file=\"key_aoai.txt\"`. Multiple keys can be stored, one per line.\n", - " - Azure OpenAI API base: os.environ[\"AZURE_OPENAI_API_BASE\"] or `aoai_api_base_file=\"base_aoai.txt\"`. Multiple bases can be stored, one per line.\n", - "* The [`config_list_from_json`](https://microsoft.github.io/autogen/docs/reference/oai/openai_utils#config_list_from_json) function loads a list of configurations from an environment variable or a json file. It first looks for an environment variable with a specified name. The value of the environment variable needs to be a valid json string. If that variable is not found, it then looks for a json file with the same name. It filters the configs by filter_dict.\n", + "The [`config_list_from_json`](https://microsoft.github.io/autogen/docs/reference/oai/openai_utils#config_list_from_json) function loads a list of configurations from an environment variable or a json file. It first looks for an environment variable with a specified name. The value of the environment variable needs to be a valid json string. If that variable is not found, it looks for a json file with the same name. It filters the configs by filter_dict.\n", "\n", - "It's OK to have only the OpenAI API key, or only the Azure OpenAI API key + base. If you open this notebook in colab, you can upload your files by clicking the file icon on the left panel and then choose \"upload file\" icon.\n" + "It's OK to have only the OpenAI API key, or only the Azure OpenAI API key + base.\n" ] }, { @@ -95,27 +91,25 @@ " {\n", " 'model': 'gpt-4',\n", " 'api_key': '<your Azure OpenAI API key here>',\n", - " 'api_base': '<your Azure OpenAI API base here>',\n", + " 'base_url': '<your Azure OpenAI API base here>',\n", " 'api_type': 'azure',\n", - " 'api_version': '2023-07-01-preview',\n", + " 'api_version': '2023-08-01-preview',\n", " }, # Azure OpenAI API endpoint for gpt-4\n", " {\n", " 'model': 'gpt-4-32k',\n", " 'api_key': '<your Azure OpenAI API key here>',\n", - " 'api_base': '<your Azure OpenAI API base here>',\n", + " 'base_url': '<your Azure OpenAI API base here>',\n", " 'api_type': 'azure',\n", - " 'api_version': '2023-07-01-preview',\n", + " 'api_version': '2023-08-01-preview',\n", " }, # Azure OpenAI API endpoint for gpt-4-32k\n", "]\n", "```\n", "\n", - "If you open this notebook in colab, you can upload your files by clicking the file icon on the left panel and then choose \"upload file\" icon.\n", - "\n", - "You can set the value of config_list in other ways you prefer, e.g., loading from a YAML file.\n", + "You can set the value of config_list in any way you prefer. Please refer to this [notebook](https://github.com/microsoft/autogen/blob/main/notebook/oai_openai_utils.ipynb) for full code examples of the different methods.\n", "\n", "## Construct Agents\n", "\n", - "We construct the planning agent named \"planner\" and a user proxy agent for the planner named \"planner_user\". We specify `human_input_mode` as \"NEVER\" in the user proxy agent, which will never ask for human feedback. We define `ask_planner` function to send a message to planner and return the suggestion from the planner." + "We construct the planning agent named \"planner\" and a user proxy agent for the planner named \"planner_user\". We specify `human_input_mode` as \"NEVER\" in the user proxy agent, which will never ask for human feedback. We define `ask_planner` function to send a message to the planner and return the suggestion from the planner." ] }, { @@ -128,7 +122,7 @@ " name=\"planner\",\n", " llm_config={\"config_list\": config_list},\n", " # the default system message of the AssistantAgent is overwritten here\n", - " system_message=\"You are a helpful AI assistant. You suggest coding and reasoning steps for another AI assistant to accomplish a task. Do not suggest concrete code. For any action beyond writing code or reasoning, convert it to a step which can be implemented by writing code. For example, the action of browsing the web can be implemented by writing code which reads and prints the content of a web page. Finally, inspect the execution result. If the plan is not good, suggest a better plan. If the execution is wrong, analyze the error and suggest a fix.\"\n", + " system_message=\"You are a helpful AI assistant. You suggest coding and reasoning steps for another AI assistant to accomplish a task. Do not suggest concrete code. For any action beyond writing code or reasoning, convert it to a step that can be implemented by writing code. For example, browsing the web can be implemented by writing code that reads and prints the content of a web page. Finally, inspect the execution result. If the plan is not good, suggest a better plan. If the execution is wrong, analyze the error and suggest a fix.\"\n", ")\n", "planner_user = autogen.UserProxyAgent(\n", " name=\"planner_user\",\n", @@ -161,10 +155,9 @@ " name=\"assistant\",\n", " llm_config={\n", " \"temperature\": 0,\n", - " \"request_timeout\": 600,\n", - " \"seed\": 42,\n", - " \"model\": \"gpt-4-0613\",\n", - " \"config_list\": autogen.config_list_openai_aoai(exclude=\"aoai\"),\n", + " \"timeout\": 600,\n", + " \"cache_seed\": 42,\n", + " \"config_list\": config_list,\n", " \"functions\": [\n", " {\n", " \"name\": \"ask_planner\",\n", @@ -202,7 +195,7 @@ "source": [ "## Perform a task\n", "\n", - "We invoke the `initiate_chat()` method of the user proxy agent to start the conversation. When you run the cell below, you will be prompted to provide feedback after the assistant agent sends a \"TERMINATE\" signal in the end of the message. If you don't provide any feedback (by pressing Enter directly), the conversation will finish. Before the \"TERMINATE\" signal, the user proxy agent will try to execute the code suggested by the assistant agent on behalf of the user." + "We invoke the `initiate_chat()` method of the user proxy agent to start the conversation. When you run the cell below, you will be prompted to provide feedback after the assistant agent sends a \"TERMINATE\" signal at the end of the message. If you don't provide any feedback (by pressing Enter directly), the conversation will finish. Before the \"TERMINATE\" signal, the user proxy agent will try to execute the code suggested by the assistant agent on behalf of the user." ] }, { @@ -221,9 +214,7 @@ "--------------------------------------------------------------------------------\n", "\u001b[33massistant\u001b[0m (to user_proxy):\n", "\n", - "To suggest a fix to an open good first issue of FLAML, we first need to fetch the list of open issues labeled as \"good first issue\" from the FLAML GitHub repository. We can do this using the GitHub API.\n", - "\n", - "Here is a Python script that uses the requests library to fetch the list of open issues labeled as \"good first issue\" from the FLAML GitHub repository.\n", + "To suggest a fix to an open good first issue of FLAML, we first need to fetch the list of open issues labeled as \"good first issue\" from the FLAML GitHub repository. We can do this using the GitHub API. Here is a Python script that fetches and prints the list of open issues labeled as \"good first issue\" from the FLAML repository.\n", "\n", "```python\n", "# filename: fetch_issues.py\n", @@ -238,44 +229,56 @@ " \"labels\": \"good first issue\"\n", " }\n", " response = requests.get(url, params=params)\n", - " issues = response.json()\n", + " issues = json.loads(response.text)\n", " for issue in issues:\n", - " print(f\"Issue ID: {issue['id']}, Title: {issue['title']}, URL: {issue['html_url']}\")\n", + " print(f\"Issue #{issue['number']}: {issue['title']}\")\n", "\n", - "fetch_issues()\n", + "if __name__ == \"__main__\":\n", + " fetch_issues()\n", "```\n", "\n", - "Please run this script to fetch the list of open issues. After that, we can select one issue and suggest a fix for it.\n", + "Please run this script to fetch the list of open issues. After that, I can help you analyze one of the issues and suggest a potential fix.\n", "\n", "--------------------------------------------------------------------------------\n", "\u001b[31m\n", ">>>>>>>> USING AUTO REPLY...\u001b[0m\n", "\u001b[31m\n", - ">>>>>>>> EXECUTING CODE BLOCK 0 (inferred language is python)...\u001b[0m\n", + ">>>>>>>> EXECUTING CODE BLOCK 0 (inferred language is python)...\u001b[0m\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "execute_code was called without specifying a value for use_docker. Since the python docker package is not available, code will be run natively. Note: this fallback behavior is subject to change\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "\u001b[33muser_proxy\u001b[0m (to assistant):\n", "\n", "exitcode: 0 (execution succeeded)\n", "Code output: \n", - "Issue ID: 1809297895, Title: Moving function execution out of UserProxyAgent to be an openai util, URL: https://github.com/microsoft/FLAML/issues/1135\n", - "Issue ID: 1799114476, Title: use_label_encoder warning with xgboost, URL: https://github.com/microsoft/FLAML/issues/1120\n", - "Issue ID: 1705274482, Title: Use appropriate wait time for retry based on the error message. , URL: https://github.com/microsoft/FLAML/issues/1034\n", - "Issue ID: 1702580697, Title: Issues with Adding Custom APIs in Auto Generation, URL: https://github.com/microsoft/FLAML/issues/1029\n", - "Issue ID: 1658981020, Title: Running flaml[tune] using \"-O\" flag for python interpreter (optimization - disables assertions) crashes, URL: https://github.com/microsoft/FLAML/issues/981\n", - "Issue ID: 1560969891, Title: Conditional parameter flow2 crash, URL: https://github.com/microsoft/FLAML/issues/903\n", - "Issue ID: 1538549388, Title: indentation space, URL: https://github.com/microsoft/FLAML/issues/884\n", - "Issue ID: 1531028010, Title: Check if openml version is required, URL: https://github.com/microsoft/FLAML/issues/882\n", - "Issue ID: 1470354491, Title: Adjust the indent, URL: https://github.com/microsoft/FLAML/issues/834\n", - "Issue ID: 1456950742, Title: pip install flaml FAIL, URL: https://github.com/microsoft/FLAML/issues/821\n", - "Issue ID: 1441047067, Title: Isolate the ensemble part and expose it to users, URL: https://github.com/microsoft/FLAML/issues/807\n", - "Issue ID: 1440171793, Title: how to pass categorical features names or indices to learner, URL: https://github.com/microsoft/FLAML/issues/805\n", - "Issue ID: 1429945686, Title: Flaml/LightGBM - Shouldn't I found better/faster or equal results from FLAML than direct LightGBM?, URL: https://github.com/microsoft/FLAML/issues/785\n", - "Issue ID: 1408240042, Title: Add an announcement of the discord channel, URL: https://github.com/microsoft/FLAML/issues/764\n", - "Issue ID: 1396515109, Title: Documentation about small budget, URL: https://github.com/microsoft/FLAML/issues/748\n", - "Issue ID: 1378268096, Title: Make zero-shot automl more discoverable, URL: https://github.com/microsoft/FLAML/issues/737\n", - "Issue ID: 1189515901, Title: New HCrystalBall release, URL: https://github.com/microsoft/FLAML/issues/509\n", - "Issue ID: 1114253143, Title: samples about conversion to ONNX, URL: https://github.com/microsoft/FLAML/issues/429\n", - "Issue ID: 1107488969, Title: support anomaly detection, URL: https://github.com/microsoft/FLAML/issues/413\n", - "Issue ID: 1061332179, Title: CatBoost Fails with Keyword 'groups', URL: https://github.com/microsoft/FLAML/issues/304\n", + "Issue #1228: include that `retrain_full = True` does not include the user provided validation data in the docs.\n", + "Issue #1120: use_label_encoder warning with xgboost\n", + "Issue #981: Running flaml[tune] using \"-O\" flag for python interpreter (optimization - disables assertions) crashes\n", + "Issue #903: Conditional parameter flow2 crash\n", + "Issue #884: indentation space\n", + "Issue #882: Check if openml version is required\n", + "Issue #834: Adjust the indent\n", + "Issue #821: pip install flaml FAIL\n", + "Issue #807: Isolate the ensemble part and expose it to users\n", + "Issue #805: how to pass categorical features names or indices to learner\n", + "Issue #785: Flaml/LightGBM - Shouldn't I found better/faster or equal results from FLAML than direct LightGBM?\n", + "Issue #764: Add an announcement of the discord channel\n", + "Issue #748: Documentation about small budget\n", + "Issue #737: Make zero-shot automl more discoverable\n", + "Issue #509: New HCrystalBall release\n", + "Issue #429: samples about conversion to ONNX\n", + "Issue #413: support anomaly detection\n", + "Issue #304: CatBoost Fails with Keyword 'groups'\n", "\n", "\n", "--------------------------------------------------------------------------------\n", @@ -284,7 +287,7 @@ "\u001b[32m***** Suggested function Call: ask_planner *****\u001b[0m\n", "Arguments: \n", "{\n", - "\"message\": \"We have fetched a list of open issues labeled as 'good first issue' from the FLAML GitHub repository. Now, we need to select one issue and suggest a fix for it. Could you please provide a plan for this?\"\n", + " \"message\": \"Here are the open issues labeled as 'good first issue' in the FLAML repository. Please suggest a plan to fix one of these issues. \\n\\n1. Issue #1228: include that `retrain_full = True` does not include the user provided validation data in the docs.\\n2. Issue #1120: use_label_encoder warning with xgboost\\n3. Issue #981: Running flaml[tune] using \\\"-O\\\" flag for python interpreter (optimization - disables assertions) crashes\\n4. Issue #903: Conditional parameter flow2 crash\\n5. Issue #884: indentation space\\n6. Issue #882: Check if openml version is required\\n7. Issue #834: Adjust the indent\\n8. Issue #821: pip install flaml FAIL\\n9. Issue #807: Isolate the ensemble part and expose it to users\\n10. Issue #805: how to pass categorical features names or indices to learner\\n11. Issue #785: Flaml/LightGBM - Shouldn't I found better/faster or equal results from FLAML than direct LightGBM?\\n12. Issue #764: Add an announcement of the discord channel\\n13. Issue #748: Documentation about small budget\\n14. Issue #737: Make zero-shot automl more discoverable\\n15. Issue #509: New HCrystalBall release\\n16. Issue #429: samples about conversion to ONNX\\n17. Issue #413: support anomaly detection\\n18. Issue #304: CatBoost Fails with Keyword 'groups'\"\n", "}\n", "\u001b[32m************************************************\u001b[0m\n", "\n", @@ -295,92 +298,91 @@ ">>>>>>>> EXECUTING FUNCTION ask_planner...\u001b[0m\n", "\u001b[33mplanner_user\u001b[0m (to planner):\n", "\n", - "We have fetched a list of open issues labeled as 'good first issue' from the FLAML GitHub repository. Now, we need to select one issue and suggest a fix for it. Could you please provide a plan for this?\n", + "Here are the open issues labeled as 'good first issue' in the FLAML repository. Please suggest a plan to fix one of these issues. \n", + "\n", + "1. Issue #1228: include that `retrain_full = True` does not include the user provided validation data in the docs.\n", + "2. Issue #1120: use_label_encoder warning with xgboost\n", + "3. Issue #981: Running flaml[tune] using \"-O\" flag for python interpreter (optimization - disables assertions) crashes\n", + "4. Issue #903: Conditional parameter flow2 crash\n", + "5. Issue #884: indentation space\n", + "6. Issue #882: Check if openml version is required\n", + "7. Issue #834: Adjust the indent\n", + "8. Issue #821: pip install flaml FAIL\n", + "9. Issue #807: Isolate the ensemble part and expose it to users\n", + "10. Issue #805: how to pass categorical features names or indices to learner\n", + "11. Issue #785: Flaml/LightGBM - Shouldn't I found better/faster or equal results from FLAML than direct LightGBM?\n", + "12. Issue #764: Add an announcement of the discord channel\n", + "13. Issue #748: Documentation about small budget\n", + "14. Issue #737: Make zero-shot automl more discoverable\n", + "15. Issue #509: New HCrystalBall release\n", + "16. Issue #429: samples about conversion to ONNX\n", + "17. Issue #413: support anomaly detection\n", + "18. Issue #304: CatBoost Fails with Keyword 'groups'\n", "\n", "--------------------------------------------------------------------------------\n", "\u001b[33mplanner\u001b[0m (to planner_user):\n", "\n", - "Sure, here's a plan for selecting one issue from the list and suggesting a fix for it:\n", + "Here are the steps to fix the first issue (Issue #1228: include that `retrain_full = True` does not include the user provided validation data in the docs):\n", + "\n", + "1. **Identify where the issue is**: Understand the context of `retrain_full = True` within FLAML. Figure out how it works - whether it really ignores the user-provided validation data or not.\n", "\n", - "1. Import the fetched list of open issues labeled as 'good first issue' from the FLAML GitHub repository into your AI assistant. \n", - "2. Examine the list for common issue attributes like 'title', 'description', 'labels', 'issue number', 'created at', and 'updated at'. \n", - "3. To select a suitable issue for fixing, apply a selection criteria based on your preferences, such as prioritizing by the 'created at' attribute in descending order to pick the most recent issue, or filtering by a specific label in addition to 'good first issue'. Write code to filter and sort the issues accordingly.\n", - "4. Inspect the execution result. If the selection criteria are not applied correctly, modify the code to fix any errors.\n", - "5. Once the issue is selected, read the issue's title, description, and any linked resources or documents to understand the problem to be solved.\n", - "6. Break down the issue into smaller tasks that can be addressed by writing code, and create a step-by-step plan.\n", + "2. **Update the documentation**: Based on your understanding, update the corresponding part of the documentation to include a note or clarification about this fact. You can use Markdown language to do the documentation. The note can be written in a clear and concise way.\n", "\n", - "For instance, the following could be smaller tasks to address the selected issue:\n", - " a. Understand the issue's background and requirements.\n", - " b. Write clear and concise instructions to reproduce the issue.\n", - " c. Analyze existing code or tests related to the issue.\n", - " d. Devise a solution to fix the issue.\n", - " e. Implement the solution in separate code pieces.\n", - " f. Verify that the solution addresses the issue.\n", - " g. Write unit tests to ensure the solution is robust and handles edge cases.\n", + "3. **Commit and Push Code**: After making the necessary changes, commit and push the changes to your repository. Make sure to include a detailed commit message to make it clear what changes were made.\n", "\n", - "7. Inspect the execution result. If the issue is misunderstood or the tasks' breakdown is incorrect, revise the understanding of the issue and modify the tasks accordingly.\n", - "8. With the defined tasks and step-by-step plan, work on each task, and test the implemented code to ensure the issue is solved.\n", - "9. If any issues arise during the task execution, analyze the errors and adjust the plan or code accordingly.\n", - "10. Once the issue is fixed, prepare a pull request on GitHub, mentioning the issue number and giving a brief description of the solution in the merge request.\n", + "4. **Submit a Pull Request (PR)**: Then submit a pull request to the FLAML repository. In the message of the PR, be sure to reference the issue number (i.e. #1228), to automatically link it.\n", "\n", - "Remember that this is meant to be a general plan, and the specific tasks may vary depending on the selected issue. Adjust the plan as needed, based on the selected issue's requirements and your problem-solving approach.\n", + "5. **Wait for Review**: Maintainers will then review your code. They may suggest changes or improvements, and once they're satisfied, they'll merge your changes into the main repository.\n", + "\n", + "6. **Inspect the Results**: After the pull request is merged, verify that the changes have been successfully incorporated and the documentation correctly reflects the behavior of `retrain_full = True`.\n", + "\n", + "Please note, this plan does not involve writing code in any programming language. Instead, it focuses on understanding the library, editing Markdown files, and using Git and GitHub functionalities appropriately. \n", + "\n", + "Should any of your actions result in an error, this could be due to multiple reasons such as misinterpretation of the behaviour of `retrain_full = True`, errors in the markdown syntax, among others. You will need to debug the error based on the specific error message and review your changes. After making corrections, you should commit and push your changes and verify that the error has been fixed.\n", "\n", "--------------------------------------------------------------------------------\n", "\u001b[33muser_proxy\u001b[0m (to assistant):\n", "\n", "\u001b[32m***** Response from calling function \"ask_planner\" *****\u001b[0m\n", - "Sure, here's a plan for selecting one issue from the list and suggesting a fix for it:\n", - "\n", - "1. Import the fetched list of open issues labeled as 'good first issue' from the FLAML GitHub repository into your AI assistant. \n", - "2. Examine the list for common issue attributes like 'title', 'description', 'labels', 'issue number', 'created at', and 'updated at'. \n", - "3. To select a suitable issue for fixing, apply a selection criteria based on your preferences, such as prioritizing by the 'created at' attribute in descending order to pick the most recent issue, or filtering by a specific label in addition to 'good first issue'. Write code to filter and sort the issues accordingly.\n", - "4. Inspect the execution result. If the selection criteria are not applied correctly, modify the code to fix any errors.\n", - "5. Once the issue is selected, read the issue's title, description, and any linked resources or documents to understand the problem to be solved.\n", - "6. Break down the issue into smaller tasks that can be addressed by writing code, and create a step-by-step plan.\n", - "\n", - "For instance, the following could be smaller tasks to address the selected issue:\n", - " a. Understand the issue's background and requirements.\n", - " b. Write clear and concise instructions to reproduce the issue.\n", - " c. Analyze existing code or tests related to the issue.\n", - " d. Devise a solution to fix the issue.\n", - " e. Implement the solution in separate code pieces.\n", - " f. Verify that the solution addresses the issue.\n", - " g. Write unit tests to ensure the solution is robust and handles edge cases.\n", - "\n", - "7. Inspect the execution result. If the issue is misunderstood or the tasks' breakdown is incorrect, revise the understanding of the issue and modify the tasks accordingly.\n", - "8. With the defined tasks and step-by-step plan, work on each task, and test the implemented code to ensure the issue is solved.\n", - "9. If any issues arise during the task execution, analyze the errors and adjust the plan or code accordingly.\n", - "10. Once the issue is fixed, prepare a pull request on GitHub, mentioning the issue number and giving a brief description of the solution in the merge request.\n", - "\n", - "Remember that this is meant to be a general plan, and the specific tasks may vary depending on the selected issue. Adjust the plan as needed, based on the selected issue's requirements and your problem-solving approach.\n", - "\u001b[32m********************************************************\u001b[0m\n", + "Here are the steps to fix the first issue (Issue #1228: include that `retrain_full = True` does not include the user provided validation data in the docs):\n", "\n", - "--------------------------------------------------------------------------------\n", - "\u001b[33massistant\u001b[0m (to user_proxy):\n", + "1. **Identify where the issue is**: Understand the context of `retrain_full = True` within FLAML. Figure out how it works - whether it really ignores the user-provided validation data or not.\n", + "\n", + "2. **Update the documentation**: Based on your understanding, update the corresponding part of the documentation to include a note or clarification about this fact. You can use Markdown language to do the documentation. The note can be written in a clear and concise way.\n", "\n", - "Based on the plan, let's select the most recent issue from the list. The most recent issue is \"Moving function execution out of UserProxyAgent to be an openai util\" with the URL: https://github.com/microsoft/FLAML/issues/1135\n", + "3. **Commit and Push Code**: After making the necessary changes, commit and push the changes to your repository. Make sure to include a detailed commit message to make it clear what changes were made.\n", "\n", - "To suggest a fix for this issue, we need to understand the problem first. Please visit the issue URL and read the issue's description and any comments to understand the problem.\n", + "4. **Submit a Pull Request (PR)**: Then submit a pull request to the FLAML repository. In the message of the PR, be sure to reference the issue number (i.e. #1228), to automatically link it.\n", "\n", - "Once you understand the problem, here are the steps you can follow to suggest a fix:\n", + "5. **Wait for Review**: Maintainers will then review your code. They may suggest changes or improvements, and once they're satisfied, they'll merge your changes into the main repository.\n", + "\n", + "6. **Inspect the Results**: After the pull request is merged, verify that the changes have been successfully incorporated and the documentation correctly reflects the behavior of `retrain_full = True`.\n", + "\n", + "Please note, this plan does not involve writing code in any programming language. Instead, it focuses on understanding the library, editing Markdown files, and using Git and GitHub functionalities appropriately. \n", + "\n", + "Should any of your actions result in an error, this could be due to multiple reasons such as misinterpretation of the behaviour of `retrain_full = True`, errors in the markdown syntax, among others. You will need to debug the error based on the specific error message and review your changes. After making corrections, you should commit and push your changes and verify that the error has been fixed.\n", + "\u001b[32m********************************************************\u001b[0m\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33massistant\u001b[0m (to user_proxy):\n", "\n", - "1. Understand the issue's background and requirements: Read the issue description and any linked resources or documents to understand what needs to be done.\n", + "To fix the issue #1228, you need to follow these steps:\n", "\n", - "2. Write clear and concise instructions to reproduce the issue: Based on the issue description, write down the steps to reproduce the issue. This will help you understand the problem better and will be useful when you test your fix.\n", + "1. **Identify where the issue is**: Understand the context of `retrain_full = True` within FLAML. Figure out how it works - whether it really ignores the user-provided validation data or not.\n", "\n", - "3. Analyze existing code or tests related to the issue: Look at the code in the FLAML repository that is related to the issue. Try to understand how it works and how it might be causing the issue.\n", + "2. **Update the documentation**: Based on your understanding, update the corresponding part of the documentation to include a note or clarification about this fact. You can use Markdown language to do the documentation. The note can be written in a clear and concise way.\n", "\n", - "4. Devise a solution to fix the issue: Based on your understanding of the problem and the code, come up with a solution to fix the issue. This might involve writing new code or modifying existing code.\n", + "3. **Commit and Push Code**: After making the necessary changes, commit and push the changes to your repository. Make sure to include a detailed commit message to make it clear what changes were made.\n", "\n", - "5. Implement the solution in separate code pieces: Write the code for your solution. Make sure to break it down into small, manageable pieces. This will make it easier to understand and test.\n", + "4. **Submit a Pull Request (PR)**: Then submit a pull request to the FLAML repository. In the message of the PR, be sure to reference the issue number (i.e. #1228), to automatically link it.\n", "\n", - "6. Verify that the solution addresses the issue: Test your code to make sure it solves the issue. You can do this by following the instructions you wrote to reproduce the issue.\n", + "5. **Wait for Review**: Maintainers will then review your code. They may suggest changes or improvements, and once they're satisfied, they'll merge your changes into the main repository.\n", "\n", - "7. Write unit tests to ensure the solution is robust and handles edge cases: In addition to testing your solution manually, write unit tests to automatically test your code. This will help ensure that your solution works in all cases and that future changes to the code won't break your solution.\n", + "6. **Inspect the Results**: After the pull request is merged, verify that the changes have been successfully incorporated and the documentation correctly reflects the behavior of `retrain_full = True`.\n", "\n", - "8. Prepare a pull request on GitHub: Once you're confident that your solution works, prepare a pull request on GitHub. In the pull request description, mention the issue number and give a brief description of your solution.\n", + "Please note, this plan does not involve writing code in any programming language. Instead, it focuses on understanding the library, editing Markdown files, and using Git and GitHub functionalities appropriately. \n", "\n", - "Please note that this is a general plan and the specific steps may vary depending on the issue. Adjust the plan as needed based on the issue's requirements and your problem-solving approach. \n", + "Should any of your actions result in an error, this could be due to multiple reasons such as misinterpretation of the behaviour of `retrain_full = True`, errors in the markdown syntax, among others. You will need to debug the error based on the specific error message and review your changes. After making corrections, you should commit and push your changes and verify that the error has been fixed.\n", "\n", "TERMINATE\n", "\n", @@ -437,7 +439,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.17" + "version": "3.11.4" }, "vscode": { "interpreter": { diff --git a/notebook/agentchat_qdrant_RetrieveChat.ipynb b/notebook/agentchat_qdrant_RetrieveChat.ipynb new file mode 100644 index 00000000000..b05848c1c5d --- /dev/null +++ b/notebook/agentchat_qdrant_RetrieveChat.ipynb @@ -0,0 +1,1232 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<a href=\"https://colab.research.google.com/github/microsoft/autogen/blob/main/notebook/agentchat_qdrant_RetrieveChat.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<a id=\"toc\"></a>\n", + "# Using RetrieveChat with Qdrant for Retrieve Augmented Code Generation and Question Answering\n", + "\n", + "[Qdrant](https://qdrant.tech/) is a high-performance vector search engine/database.\n", + "\n", + "This notebook demonstrates the usage of `QdrantRetrieveUserProxyAgent` for RAG, based on [agentchat_RetrieveChat.ipynb](https://colab.research.google.com/github/microsoft/autogen/blob/main/notebook/agentchat_RetrieveChat.ipynb).\n", + "\n", + "\n", + "RetrieveChat is a conversational system for retrieve augmented code generation and question answering. In this notebook, we demonstrate how to utilize RetrieveChat to generate code and answer questions based on customized documentations that are not present in the LLM's training dataset. RetrieveChat uses the `RetrieveAssistantAgent` and `QdrantRetrieveUserProxyAgent`, which is similar to the usage of `AssistantAgent` and `UserProxyAgent` in other notebooks (e.g., [Automated Task Solving with Code Generation, Execution & Debugging](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_auto_feedback_from_code_execution.ipynb)).\n", + "\n", + "We'll demonstrate usage of RetrieveChat with Qdrant for code generation and question answering w/ human feedback.\n", + "\n", + "\n", + "## Requirements\n", + "\n", + "AutoGen requires `Python>=3.8`. To run this notebook example, please install the [retrievechat] option.\n", + "```bash\n", + "pip install \"pyautogen[retrievechat] flaml[automl] qdrant_client[fastembed]\"\n", + "```" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Set your API Endpoint\n", + "\n", + "The [`config_list_from_json`](https://microsoft.github.io/autogen/docs/reference/oai/openai_utils#config_list_from_json) function loads a list of configurations from an environment variable or a json file.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "models to use: ['gpt-3.5-turbo']\n" + ] + } + ], + "source": [ + "import autogen\n", + "\n", + "config_list = autogen.config_list_from_json(\n", + " env_or_file=\"OAI_CONFIG_LIST\",\n", + " file_location=\".\",\n", + " filter_dict={\n", + " \"model\": {\n", + " \"gpt-4\",\n", + " \"gpt4\",\n", + " \"gpt-4-32k\",\n", + " \"gpt-4-32k-0314\",\n", + " \"gpt-35-turbo\",\n", + " \"gpt-3.5-turbo\",\n", + " }\n", + " },\n", + ")\n", + "\n", + "assert len(config_list) > 0\n", + "print(\"models to use: \", [config_list[i][\"model\"] for i in range(len(config_list))])" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "It first looks for environment variable \"OAI_CONFIG_LIST\" which needs to be a valid json string. If that variable is not found, it then looks for a json file named \"OAI_CONFIG_LIST\". It filters the configs by models (you can filter by other keys as well). Only the gpt-4 and gpt-3.5-turbo models are kept in the list based on the filter condition.\n", + "\n", + "The config list looks like the following:\n", + "```python\n", + "config_list = [\n", + " {\n", + " 'model': 'gpt-4',\n", + " 'api_key': '<your OpenAI API key here>',\n", + " },\n", + " {\n", + " 'model': 'gpt-4',\n", + " 'api_key': '<your Azure OpenAI API key here>',\n", + " 'base_url': '<your Azure OpenAI API base here>',\n", + " 'api_type': 'azure',\n", + " 'api_version': '2023-06-01-preview',\n", + " },\n", + " {\n", + " 'model': 'gpt-3.5-turbo',\n", + " 'api_key': '<your Azure OpenAI API key here>',\n", + " 'base_url': '<your Azure OpenAI API base here>',\n", + " 'api_type': 'azure',\n", + " 'api_version': '2023-06-01-preview',\n", + " },\n", + "]\n", + "```\n", + "\n", + "If you open this notebook in colab, you can upload your files by clicking the file icon on the left panel and then choose \"upload file\" icon.\n", + "\n", + "You can set the value of config_list in other ways you prefer, e.g., loading from a YAML file." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Accepted file formats for `docs_path`:\n", + "['txt', 'json', 'csv', 'tsv', 'md', 'html', 'htm', 'rtf', 'rst', 'jsonl', 'log', 'xml', 'yaml', 'yml', 'pdf']\n" + ] + } + ], + "source": [ + "# Accepted file formats for that can be stored in \n", + "# a vector database instance\n", + "from autogen.retrieve_utils import TEXT_FORMATS\n", + "\n", + "print(\"Accepted file formats for `docs_path`:\")\n", + "print(TEXT_FORMATS)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Construct agents for RetrieveChat\n", + "\n", + "We start by initialzing the `RetrieveAssistantAgent` and `QdrantRetrieveUserProxyAgent`. The system message needs to be set to \"You are a helpful assistant.\" for RetrieveAssistantAgent. The detailed instructions are given in the user message. Later we will use the `QdrantRetrieveUserProxyAgent.generate_init_prompt` to combine the instructions and a retrieval augmented generation task for an initial prompt to be sent to the LLM assistant.\n", + "\n", + "### You can find the list of all the embedding models supported by Qdrant [here](https://qdrant.github.io/fastembed/examples/Supported_Models/)." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "from autogen.agentchat.contrib.retrieve_assistant_agent import RetrieveAssistantAgent\n", + "from autogen.agentchat.contrib.qdrant_retrieve_user_proxy_agent import QdrantRetrieveUserProxyAgent\n", + "from qdrant_client import QdrantClient\n", + "\n", + "# 1. create an RetrieveAssistantAgent instance named \"assistant\"\n", + "assistant = RetrieveAssistantAgent(\n", + " name=\"assistant\", \n", + " system_message=\"You are a helpful assistant.\",\n", + " llm_config={\n", + " \"timeout\": 600,\n", + " \"seed\": 42,\n", + " \"config_list\": config_list,\n", + " },\n", + ")\n", + "\n", + "# 2. create the QdrantRetrieveUserProxyAgent instance named \"ragproxyagent\"\n", + "# By default, the human_input_mode is \"ALWAYS\", which means the agent will ask for human input at every step. We set it to \"NEVER\" here.\n", + "# `docs_path` is the path to the docs directory. It can also be the path to a single file, or the url to a single file. By default, \n", + "# it is set to None, which works only if the collection is already created.\n", + "# \n", + "# Here we generated the documentations from FLAML's docstrings. Not needed if you just want to try this notebook but not to reproduce the\n", + "# outputs. Clone the FLAML (https://github.com/microsoft/FLAML) repo and navigate to its website folder. Pip install and run `pydoc-markdown`\n", + "# and it will generate folder `reference` under `website/docs`.\n", + "#\n", + "# `task` indicates the kind of task we're working on. In this example, it's a `code` task.\n", + "# `chunk_token_size` is the chunk token size for the retrieve chat. By default, it is set to `max_tokens * 0.6`, here we set it to 2000.\n", + "# We use an in-memory QdrantClient instance here. Not recommended for production.\n", + "# Get the installation instructions here: https://qdrant.tech/documentation/guides/installation/\n", + "ragproxyagent = QdrantRetrieveUserProxyAgent(\n", + " name=\"ragproxyagent\",\n", + " human_input_mode=\"NEVER\",\n", + " max_consecutive_auto_reply=10,\n", + " retrieve_config={\n", + " \"task\": \"code\",\n", + " \"docs_path\": \"~/path/to/FLAML/website/docs/reference\", # change this to your own path, such as https://raw.githubusercontent.com/microsoft/autogen/main/README.md\n", + " \"chunk_token_size\": 2000,\n", + " \"model\": config_list[0][\"model\"],\n", + " \"client\": QdrantClient(\":memory:\"),\n", + " \"embedding_model\": \"BAAI/bge-small-en-v1.5\",\n", + " },\n", + ")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<a id=\"example-1\"></a>\n", + "### Example 1\n", + "\n", + "[back to top](#toc)\n", + "\n", + "Use RetrieveChat to answer a question and ask for human-in-loop feedbacks.\n", + "\n", + "Problem: Is there a function named `tune_automl` in FLAML?" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[32mAdding doc_id 69 to context.\u001b[0m\n", + "\u001b[32mAdding doc_id 0 to context.\u001b[0m\n", + "\u001b[32mAdding doc_id 47 to context.\u001b[0m\n", + "\u001b[32mAdding doc_id 64 to context.\u001b[0m\n", + "\u001b[32mAdding doc_id 65 to context.\u001b[0m\n", + "\u001b[32mAdding doc_id 21 to context.\u001b[0m\n", + "\u001b[33mragproxyagent\u001b[0m (to assistant):\n", + "\n", + "You're a retrieve augmented coding assistant. You answer user's questions based on your own knowledge and the\n", + "context provided by the user.\n", + "If you can't answer the question with or without the current context, you should reply exactly `UPDATE CONTEXT`.\n", + "For code generation, you must obey the following rules:\n", + "Rule 1. You MUST NOT install any packages because all the packages needed are already installed.\n", + "Rule 2. You must follow the formats below to write your code:\n", + "```language\n", + "# your code\n", + "```\n", + "\n", + "User's question is: Is there a function called tune_automl?\n", + "\n", + "Context is: {\n", + " \"items\": [\n", + " {\n", + " \"items\": [\n", + " {\n", + " \"items\": [\n", + " {\n", + " \"items\": [\n", + " \"reference/autogen/agentchat/contrib/math_user_proxy_agent\",\n", + " \"reference/autogen/agentchat/contrib/retrieve_assistant_agent\",\n", + " \"reference/autogen/agentchat/contrib/retrieve_user_proxy_agent\"\n", + " ],\n", + " \"label\": \"autogen.agentchat.contrib\",\n", + " \"type\": \"category\"\n", + " },\n", + " \"reference/autogen/agentchat/agent\",\n", + " \"reference/autogen/agentchat/assistant_agent\",\n", + " \"reference/autogen/agentchat/conversable_agent\",\n", + " \"reference/autogen/agentchat/groupchat\",\n", + " \"reference/autogen/agentchat/user_proxy_agent\"\n", + " ],\n", + " \"label\": \"autogen.agentchat\",\n", + " \"type\": \"category\"\n", + " },\n", + " {\n", + " \"items\": [\n", + " \"reference/autogen/oai/completion\",\n", + " \"reference/autogen/oai/openai_utils\"\n", + " ],\n", + " \"label\": \"autogen.oai\",\n", + " \"type\": \"category\"\n", + " },\n", + " \"reference/autogen/code_utils\",\n", + " \"reference/autogen/math_utils\",\n", + " \"reference/autogen/retrieve_utils\"\n", + " ],\n", + " \"label\": \"autogen\",\n", + " \"type\": \"category\"\n", + " },\n", + " {\n", + " \"items\": [\n", + " {\n", + " \"items\": [\n", + " {\n", + " \"items\": [\n", + " \"reference/automl/nlp/huggingface/trainer\",\n", + " \"reference/automl/nlp/huggingface/training_args\",\n", + " \"reference/automl/nlp/huggingface/utils\"\n", + " ],\n", + " \"label\": \"automl.nlp.huggingface\",\n", + " \"type\": \"category\"\n", + " },\n", + " \"reference/automl/nlp/utils\"\n", + " ],\n", + " \"label\": \"automl.nlp\",\n", + " \"type\": \"category\"\n", + " },\n", + " {\n", + " \"items\": [\n", + " \"reference/automl/spark/metrics\",\n", + " \"reference/automl/spark/utils\"\n", + " ],\n", + " \"label\": \"automl.spark\",\n", + " \"type\": \"category\"\n", + " },\n", + " {\n", + " \"items\": [\n", + " \"reference/automl/task/task\",\n", + " \"reference/automl/task/time_series_task\"\n", + " ],\n", + " \"label\": \"automl.task\",\n", + " \"type\": \"category\"\n", + " },\n", + " {\n", + " \"items\": [\n", + " \"reference/automl/time_series/sklearn\",\n", + " \"reference/automl/time_series/tft\",\n", + " \"reference/automl/time_series/ts_data\",\n", + " \"reference/automl/time_series/ts_model\"\n", + " ],\n", + " \"label\": \"automl.time_series\",\n", + " \"type\": \"category\"\n", + " },\n", + " \"reference/automl/automl\",\n", + " \"reference/automl/data\",\n", + " \"reference/automl/ml\",\n", + " \"reference/automl/model\",\n", + " \"reference/automl/state\"\n", + " ],\n", + " \"label\": \"automl\",\n", + " \"type\": \"category\"\n", + " },\n", + " {\n", + " \"items\": [\n", + " \"reference/default/estimator\",\n", + " \"reference/default/greedy\",\n", + " \"reference/default/portfolio\",\n", + " \"reference/default/suggest\"\n", + " ],\n", + " \"label\": \"default\",\n", + " \"type\": \"category\"\n", + " },\n", + " {\n", + " \"items\": [\n", + " \"reference/onlineml/autovw\",\n", + " \"reference/onlineml/trial\",\n", + " \"reference/onlineml/trial_runner\"\n", + " ],\n", + " \"label\": \"onlineml\",\n", + " \"type\": \"category\"\n", + " },\n", + " {\n", + " \"items\": [\n", + " {\n", + " \"items\": [\n", + " \"reference/tune/scheduler/online_scheduler\",\n", + " \"reference/tune/scheduler/trial_scheduler\"\n", + " ],\n", + " \"label\": \"tune.scheduler\",\n", + " \"type\": \"category\"\n", + " },\n", + " {\n", + " \"items\": [\n", + " \"reference/tune/searcher/blendsearch\",\n", + " \"reference/tune/searcher/cfo_cat\",\n", + " \"reference/tune/searcher/flow2\",\n", + " \"reference/tune/searcher/online_searcher\",\n", + " \"reference/tune/searcher/search_thread\",\n", + " \"reference/tune/searcher/suggestion\",\n", + " \"reference/tune/searcher/variant_generator\"\n", + " ],\n", + " \"label\": \"tune.searcher\",\n", + " \"type\": \"category\"\n", + " },\n", + " {\n", + " \"items\": [\n", + " \"reference/tune/spark/utils\"\n", + " ],\n", + " \"label\": \"tune.spark\",\n", + " \"type\": \"category\"\n", + " },\n", + " \"reference/tune/analysis\",\n", + " \"reference/tune/sample\",\n", + " \"reference/tune/space\",\n", + " \"reference/tune/trial\",\n", + " \"reference/tune/trial_runner\",\n", + " \"reference/tune/tune\",\n", + " \"reference/tune/utils\"\n", + " ],\n", + " \"label\": \"tune\",\n", + " \"type\": \"category\"\n", + " },\n", + " \"reference/config\"\n", + " ],\n", + " \"label\": \"Reference\",\n", + " \"type\": \"category\"\n", + "}\n", + "---\n", + "sidebar_label: config\n", + "title: config\n", + "---\n", + "\n", + "!\n", + "* Copyright (c) Microsoft Corporation. All rights reserved.\n", + "* Licensed under the MIT License.\n", + "\n", + "#### PENALTY\n", + "\n", + "penalty term for constraints\n", + "\n", + "\n", + "---\n", + "sidebar_label: trial_scheduler\n", + "title: tune.scheduler.trial_scheduler\n", + "---\n", + "\n", + "## TrialScheduler Objects\n", + "\n", + "```python\n", + "class TrialScheduler()\n", + "```\n", + "\n", + "Interface for implementing a Trial Scheduler class.\n", + "\n", + "#### CONTINUE\n", + "\n", + "Status for continuing trial execution\n", + "\n", + "#### PAUSE\n", + "\n", + "Status for pausing trial execution\n", + "\n", + "#### STOP\n", + "\n", + "Status for stopping trial execution\n", + "\n", + "\n", + "---\n", + "sidebar_label: retrieve_user_proxy_agent\n", + "title: autogen.agentchat.contrib.retrieve_user_proxy_agent\n", + "---\n", + "\n", + "## RetrieveUserProxyAgent Objects\n", + "\n", + "```python\n", + "class RetrieveUserProxyAgent(UserProxyAgent)\n", + "```\n", + "\n", + "#### \\_\\_init\\_\\_\n", + "\n", + "```python\n", + "def __init__(name=\"RetrieveChatAgent\",\n", + " is_termination_msg: Optional[Callable[\n", + " [Dict], bool]] = _is_termination_msg_retrievechat,\n", + " human_input_mode: Optional[str] = \"ALWAYS\",\n", + " retrieve_config: Optional[Dict] = None,\n", + " **kwargs)\n", + "```\n", + "\n", + "**Arguments**:\n", + "\n", + "- `name` _str_ - name of the agent.\n", + "- `human_input_mode` _str_ - whether to ask for human inputs every time a message is received.\n", + " Possible values are \"ALWAYS\", \"TERMINATE\", \"NEVER\".\n", + " (1) When \"ALWAYS\", the agent prompts for human input every time a message is received.\n", + " Under this mode, the conversation stops when the human input is \"exit\",\n", + " or when is_termination_msg is True and there is no human input.\n", + " (2) When \"TERMINATE\", the agent only prompts for human input only when a termination message is received or\n", + " the number of auto reply reaches the max_consecutive_auto_reply.\n", + " (3) When \"NEVER\", the agent will never prompt for human input. Under this mode, the conversation stops\n", + " when the number of auto reply reaches the max_consecutive_auto_reply or when is_termination_msg is True.\n", + "- `retrieve_config` _dict or None_ - config for the retrieve agent.\n", + " To use default config, set to None. Otherwise, set to a dictionary with the following keys:\n", + " - task (Optional, str): the task of the retrieve chat. Possible values are \"code\", \"qa\" and \"default\". System\n", + " prompt will be different for different tasks. The default value is `default`, which supports both code and qa.\n", + " - client (Optional, chromadb.Client): the chromadb client.\n", + " If key not provided, a default client `chromadb.Client()` will be used.\n", + " - docs_path (Optional, str): the path to the docs directory. It can also be the path to a single file,\n", + " or the url to a single file. If key not provided, a default path `./docs` will be used.\n", + " - collection_name (Optional, str): the name of the collection.\n", + " If key not provided, a default name `flaml-docs` will be used.\n", + " - model (Optional, str): the model to use for the retrieve chat.\n", + " If key not provided, a default model `gpt-4` will be used.\n", + " - chunk_token_size (Optional, int): the chunk token size for the retrieve chat.\n", + " If key not provided, a default size `max_tokens * 0.4` will be used.\n", + " - context_max_tokens (Optional, int): the context max token size for the retrieve chat.\n", + " If key not provided, a default size `max_tokens * 0.8` will be used.\n", + " - chunk_mode (Optional, str): the chunk mode for the retrieve chat. Possible values are\n", + " \"multi_lines\" and \"one_line\". If key not provided, a default mode `multi_lines` will be used.\n", + " - must_break_at_empty_line (Optional, bool): chunk will only break at empty line if True. Default is True.\n", + " If chunk_mode is \"one_line\", this parameter will be ignored.\n", + " - embedding_model (Optional, str): the embedding model to use for the retrieve chat.\n", + " If key not provided, a default model `all-MiniLM-L6-v2` will be used. All available models\n", + " can be found at `https://www.sbert.net/docs/pretrained_models.html`. The default model is a\n", + " fast model. If you want to use a high performance model, `all-mpnet-base-v2` is recommended.\n", + " - customized_prompt (Optional, str): the customized prompt for the retrieve chat. Default is None.\n", + "- `**kwargs` _dict_ - other kwargs in [UserProxyAgent](user_proxy_agent#__init__).\n", + "\n", + "#### generate\\_init\\_message\n", + "\n", + "```python\n", + "def generate_init_message(problem: str,\n", + " n_results: int = 20,\n", + " search_string: str = \"\")\n", + "```\n", + "\n", + "Generate an initial message with the given problem and prompt.\n", + "\n", + "**Arguments**:\n", + "\n", + "- `problem` _str_ - the problem to be solved.\n", + "- `n_results` _int_ - the number of results to be retrieved.\n", + "- `search_string` _str_ - only docs containing this string will be retrieved.\n", + " \n", + "\n", + "**Returns**:\n", + "\n", + "- `str` - the generated prompt ready to be sent to the assistant agent.\n", + "\n", + "\n", + "---\n", + "sidebar_label: retrieve_assistant_agent\n", + "title: autogen.agentchat.contrib.retrieve_assistant_agent\n", + "---\n", + "\n", + "## RetrieveAssistantAgent Objects\n", + "\n", + "```python\n", + "class RetrieveAssistantAgent(AssistantAgent)\n", + "```\n", + "\n", + "(Experimental) Retrieve Assistant agent, designed to solve a task with LLM.\n", + "\n", + "RetrieveAssistantAgent is a subclass of AssistantAgent configured with a default system message.\n", + "The default system message is designed to solve a task with LLM,\n", + "including suggesting python code blocks and debugging.\n", + "`human_input_mode` is default to \"NEVER\"\n", + "and `code_execution_config` is default to False.\n", + "This agent doesn't execute code by default, and expects the user to execute the code.\n", + "\n", + "\n", + "---\n", + "sidebar_label: utils\n", + "title: automl.nlp.huggingface.utils\n", + "---\n", + "\n", + "#### todf\n", + "\n", + "```python\n", + "def todf(X, Y, column_name)\n", + "```\n", + "\n", + "todf converts Y from any format (list, pandas.Series, numpy array) to a DataFrame before being returned\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33massistant\u001b[0m (to ragproxyagent):\n", + "\n", + "No, there is no function called `tune_automl` in the given context.\n", + "\n", + "--------------------------------------------------------------------------------\n" + ] + } + ], + "source": [ + "# reset the assistant. Always reset the assistant before starting a new conversation.\n", + "assistant.reset()\n", + "\n", + "qa_problem = \"Is there a function called tune_automl?\"\n", + "ragproxyagent.initiate_chat(assistant, problem=qa_problem)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<a id=\"example-2\"></a>\n", + "### Example 2\n", + "\n", + "[back to top](#toc)\n", + "\n", + "Use RetrieveChat to answer a question that is not related to code generation.\n", + "\n", + "Problem: Who is the author of FLAML?" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[32mAdding doc_id 0 to context.\u001b[0m\n", + "\u001b[32mAdding doc_id 21 to context.\u001b[0m\n", + "\u001b[32mAdding doc_id 47 to context.\u001b[0m\n", + "\u001b[32mAdding doc_id 35 to context.\u001b[0m\n", + "\u001b[32mAdding doc_id 41 to context.\u001b[0m\n", + "\u001b[32mAdding doc_id 69 to context.\u001b[0m\n", + "\u001b[32mAdding doc_id 34 to context.\u001b[0m\n", + "\u001b[32mAdding doc_id 22 to context.\u001b[0m\n", + "\u001b[32mAdding doc_id 51 to context.\u001b[0m\n", + "\u001b[33mragproxyagent\u001b[0m (to assistant):\n", + "\n", + "You're a retrieve augmented coding assistant. You answer user's questions based on your own knowledge and the\n", + "context provided by the user.\n", + "If you can't answer the question with or without the current context, you should reply exactly `UPDATE CONTEXT`.\n", + "For code generation, you must obey the following rules:\n", + "Rule 1. You MUST NOT install any packages because all the packages needed are already installed.\n", + "Rule 2. You must follow the formats below to write your code:\n", + "```language\n", + "# your code\n", + "```\n", + "\n", + "User's question is: Who is the author of FLAML?\n", + "\n", + "Context is: ---\n", + "sidebar_label: config\n", + "title: config\n", + "---\n", + "\n", + "!\n", + "* Copyright (c) Microsoft Corporation. All rights reserved.\n", + "* Licensed under the MIT License.\n", + "\n", + "#### PENALTY\n", + "\n", + "penalty term for constraints\n", + "\n", + "\n", + "---\n", + "sidebar_label: utils\n", + "title: automl.nlp.huggingface.utils\n", + "---\n", + "\n", + "#### todf\n", + "\n", + "```python\n", + "def todf(X, Y, column_name)\n", + "```\n", + "\n", + "todf converts Y from any format (list, pandas.Series, numpy array) to a DataFrame before being returned\n", + "\n", + "\n", + "---\n", + "sidebar_label: trial_scheduler\n", + "title: tune.scheduler.trial_scheduler\n", + "---\n", + "\n", + "## TrialScheduler Objects\n", + "\n", + "```python\n", + "class TrialScheduler()\n", + "```\n", + "\n", + "Interface for implementing a Trial Scheduler class.\n", + "\n", + "#### CONTINUE\n", + "\n", + "Status for continuing trial execution\n", + "\n", + "#### PAUSE\n", + "\n", + "Status for pausing trial execution\n", + "\n", + "#### STOP\n", + "\n", + "Status for stopping trial execution\n", + "\n", + "\n", + "---\n", + "sidebar_label: space\n", + "title: tune.space\n", + "---\n", + "\n", + "#### is\\_constant\n", + "\n", + "```python\n", + "def is_constant(space: Union[Dict, List]) -> bool\n", + "```\n", + "\n", + "Whether the search space is all constant.\n", + "\n", + "**Returns**:\n", + "\n", + " A bool of whether the search space is all constant.\n", + "\n", + "#### define\\_by\\_run\\_func\n", + "\n", + "```python\n", + "def define_by_run_func(trial,\n", + " space: Dict,\n", + " path: str = \"\") -> Optional[Dict[str, Any]]\n", + "```\n", + "\n", + "Define-by-run function to create the search space.\n", + "\n", + "**Returns**:\n", + "\n", + " A dict with constant values.\n", + "\n", + "#### unflatten\\_hierarchical\n", + "\n", + "```python\n", + "def unflatten_hierarchical(config: Dict, space: Dict) -> Tuple[Dict, Dict]\n", + "```\n", + "\n", + "Unflatten hierarchical config.\n", + "\n", + "#### add\\_cost\\_to\\_space\n", + "\n", + "```python\n", + "def add_cost_to_space(space: Dict, low_cost_point: Dict, choice_cost: Dict)\n", + "```\n", + "\n", + "Update the space in place by adding low_cost_point and choice_cost.\n", + "\n", + "**Returns**:\n", + "\n", + " A dict with constant values.\n", + "\n", + "#### normalize\n", + "\n", + "```python\n", + "def normalize(config: Dict,\n", + " space: Dict,\n", + " reference_config: Dict,\n", + " normalized_reference_config: Dict,\n", + " recursive: bool = False)\n", + "```\n", + "\n", + "Normalize config in space according to reference_config.\n", + "\n", + "Normalize each dimension in config to [0,1].\n", + "\n", + "#### indexof\n", + "\n", + "```python\n", + "def indexof(domain: Dict, config: Dict) -> int\n", + "```\n", + "\n", + "Find the index of config in domain.categories.\n", + "\n", + "#### complete\\_config\n", + "\n", + "```python\n", + "def complete_config(partial_config: Dict,\n", + " space: Dict,\n", + " flow2,\n", + " disturb: bool = False,\n", + " lower: Optional[Dict] = None,\n", + " upper: Optional[Dict] = None) -> Tuple[Dict, Dict]\n", + "```\n", + "\n", + "Complete partial config in space.\n", + "\n", + "**Returns**:\n", + "\n", + " config, space.\n", + "\n", + "\n", + "---\n", + "sidebar_label: search_thread\n", + "title: tune.searcher.search_thread\n", + "---\n", + "\n", + "## SearchThread Objects\n", + "\n", + "```python\n", + "class SearchThread()\n", + "```\n", + "\n", + "Class of global or local search thread.\n", + "\n", + "#### \\_\\_init\\_\\_\n", + "\n", + "```python\n", + "def __init__(mode: str = \"min\",\n", + " search_alg: Optional[Searcher] = None,\n", + " cost_attr: Optional[str] = TIME_TOTAL_S,\n", + " eps: Optional[float] = 1.0)\n", + "```\n", + "\n", + "When search_alg is omitted, use local search FLOW2.\n", + "\n", + "#### suggest\n", + "\n", + "```python\n", + "def suggest(trial_id: str) -> Optional[Dict]\n", + "```\n", + "\n", + "Use the suggest() of the underlying search algorithm.\n", + "\n", + "#### on\\_trial\\_complete\n", + "\n", + "```python\n", + "def on_trial_complete(trial_id: str,\n", + " result: Optional[Dict] = None,\n", + " error: bool = False)\n", + "```\n", + "\n", + "Update the statistics of the thread.\n", + "\n", + "#### reach\n", + "\n", + "```python\n", + "def reach(thread) -> bool\n", + "```\n", + "\n", + "Whether the incumbent can reach the incumbent of thread.\n", + "\n", + "#### can\\_suggest\n", + "\n", + "```python\n", + "@property\n", + "def can_suggest() -> bool\n", + "```\n", + "\n", + "Whether the thread can suggest new configs.\n", + "\n", + "\n", + "{\n", + " \"items\": [\n", + " {\n", + " \"items\": [\n", + " {\n", + " \"items\": [\n", + " {\n", + " \"items\": [\n", + " \"reference/autogen/agentchat/contrib/math_user_proxy_agent\",\n", + " \"reference/autogen/agentchat/contrib/retrieve_assistant_agent\",\n", + " \"reference/autogen/agentchat/contrib/retrieve_user_proxy_agent\"\n", + " ],\n", + " \"label\": \"autogen.agentchat.contrib\",\n", + " \"type\": \"category\"\n", + " },\n", + " \"reference/autogen/agentchat/agent\",\n", + " \"reference/autogen/agentchat/assistant_agent\",\n", + " \"reference/autogen/agentchat/conversable_agent\",\n", + " \"reference/autogen/agentchat/groupchat\",\n", + " \"reference/autogen/agentchat/user_proxy_agent\"\n", + " ],\n", + " \"label\": \"autogen.agentchat\",\n", + " \"type\": \"category\"\n", + " },\n", + " {\n", + " \"items\": [\n", + " \"reference/autogen/oai/completion\",\n", + " \"reference/autogen/oai/openai_utils\"\n", + " ],\n", + " \"label\": \"autogen.oai\",\n", + " \"type\": \"category\"\n", + " },\n", + " \"reference/autogen/code_utils\",\n", + " \"reference/autogen/math_utils\",\n", + " \"reference/autogen/retrieve_utils\"\n", + " ],\n", + " \"label\": \"autogen\",\n", + " \"type\": \"category\"\n", + " },\n", + " {\n", + " \"items\": [\n", + " {\n", + " \"items\": [\n", + " {\n", + " \"items\": [\n", + " \"reference/automl/nlp/huggingface/trainer\",\n", + " \"reference/automl/nlp/huggingface/training_args\",\n", + " \"reference/automl/nlp/huggingface/utils\"\n", + " ],\n", + " \"label\": \"automl.nlp.huggingface\",\n", + " \"type\": \"category\"\n", + " },\n", + " \"reference/automl/nlp/utils\"\n", + " ],\n", + " \"label\": \"automl.nlp\",\n", + " \"type\": \"category\"\n", + " },\n", + " {\n", + " \"items\": [\n", + " \"reference/automl/spark/metrics\",\n", + " \"reference/automl/spark/utils\"\n", + " ],\n", + " \"label\": \"automl.spark\",\n", + " \"type\": \"category\"\n", + " },\n", + " {\n", + " \"items\": [\n", + " \"reference/automl/task/task\",\n", + " \"reference/automl/task/time_series_task\"\n", + " ],\n", + " \"label\": \"automl.task\",\n", + " \"type\": \"category\"\n", + " },\n", + " {\n", + " \"items\": [\n", + " \"reference/automl/time_series/sklearn\",\n", + " \"reference/automl/time_series/tft\",\n", + " \"reference/automl/time_series/ts_data\",\n", + " \"reference/automl/time_series/ts_model\"\n", + " ],\n", + " \"label\": \"automl.time_series\",\n", + " \"type\": \"category\"\n", + " },\n", + " \"reference/automl/automl\",\n", + " \"reference/automl/data\",\n", + " \"reference/automl/ml\",\n", + " \"reference/automl/model\",\n", + " \"reference/automl/state\"\n", + " ],\n", + " \"label\": \"automl\",\n", + " \"type\": \"category\"\n", + " },\n", + " {\n", + " \"items\": [\n", + " \"reference/default/estimator\",\n", + " \"reference/default/greedy\",\n", + " \"reference/default/portfolio\",\n", + " \"reference/default/suggest\"\n", + " ],\n", + " \"label\": \"default\",\n", + " \"type\": \"category\"\n", + " },\n", + " {\n", + " \"items\": [\n", + " \"reference/onlineml/autovw\",\n", + " \"reference/onlineml/trial\",\n", + " \"reference/onlineml/trial_runner\"\n", + " ],\n", + " \"label\": \"onlineml\",\n", + " \"type\": \"category\"\n", + " },\n", + " {\n", + " \"items\": [\n", + " {\n", + " \"items\": [\n", + " \"reference/tune/scheduler/online_scheduler\",\n", + " \"reference/tune/scheduler/trial_scheduler\"\n", + " ],\n", + " \"label\": \"tune.scheduler\",\n", + " \"type\": \"category\"\n", + " },\n", + " {\n", + " \"items\": [\n", + " \"reference/tune/searcher/blendsearch\",\n", + " \"reference/tune/searcher/cfo_cat\",\n", + " \"reference/tune/searcher/flow2\",\n", + " \"reference/tune/searcher/online_searcher\",\n", + " \"reference/tune/searcher/search_thread\",\n", + " \"reference/tune/searcher/suggestion\",\n", + " \"reference/tune/searcher/variant_generator\"\n", + " ],\n", + " \"label\": \"tune.searcher\",\n", + " \"type\": \"category\"\n", + " },\n", + " {\n", + " \"items\": [\n", + " \"reference/tune/spark/utils\"\n", + " ],\n", + " \"label\": \"tune.spark\",\n", + " \"type\": \"category\"\n", + " },\n", + " \"reference/tune/analysis\",\n", + " \"reference/tune/sample\",\n", + " \"reference/tune/space\",\n", + " \"reference/tune/trial\",\n", + " \"reference/tune/trial_runner\",\n", + " \"reference/tune/tune\",\n", + " \"reference/tune/utils\"\n", + " ],\n", + " \"label\": \"tune\",\n", + " \"type\": \"category\"\n", + " },\n", + " \"reference/config\"\n", + " ],\n", + " \"label\": \"Reference\",\n", + " \"type\": \"category\"\n", + "}\n", + "---\n", + "sidebar_label: utils\n", + "title: tune.utils\n", + "---\n", + "\n", + "#### choice\n", + "\n", + "```python\n", + "def choice(categories: Sequence, order=None)\n", + "```\n", + "\n", + "Sample a categorical value.\n", + "Sampling from ``tune.choice([1, 2])`` is equivalent to sampling from\n", + "``np.random.choice([1, 2])``\n", + "\n", + "**Arguments**:\n", + "\n", + "- `categories` _Sequence_ - Sequence of categories to sample from.\n", + "- `order` _bool_ - Whether the categories have an order. If None, will be decided autoamtically:\n", + " Numerical categories have an order, while string categories do not.\n", + "\n", + "\n", + "---\n", + "sidebar_label: trainer\n", + "title: automl.nlp.huggingface.trainer\n", + "---\n", + "\n", + "## TrainerForAuto Objects\n", + "\n", + "```python\n", + "class TrainerForAuto(Seq2SeqTrainer)\n", + "```\n", + "\n", + "#### evaluate\n", + "\n", + "```python\n", + "def evaluate(eval_dataset=None, ignore_keys=None, metric_key_prefix=\"eval\")\n", + "```\n", + "\n", + "Overriding transformers.Trainer.evaluate by saving metrics and checkpoint path.\n", + "\n", + "\n", + "---\n", + "sidebar_label: trial\n", + "title: onlineml.trial\n", + "---\n", + "\n", + "#### get\\_ns\\_feature\\_dim\\_from\\_vw\\_example\n", + "\n", + "```python\n", + "def get_ns_feature_dim_from_vw_example(vw_example) -> dict\n", + "```\n", + "\n", + "Get a dictionary of feature dimensionality for each namespace singleton.\n", + "\n", + "## OnlineResult Objects\n", + "\n", + "```python\n", + "class OnlineResult()\n", + "```\n", + "\n", + "Class for managing the result statistics of a trial.\n", + "\n", + "#### CB\\_COEF\n", + "\n", + "0.001 for mse\n", + "\n", + "#### \\_\\_init\\_\\_\n", + "\n", + "```python\n", + "def __init__(result_type_name: str,\n", + " cb_coef: Optional[float] = None,\n", + " init_loss: Optional[float] = 0.0,\n", + " init_cb: Optional[float] = 100.0,\n", + " mode: Optional[str] = \"min\",\n", + " sliding_window_size: Optional[int] = 100)\n", + "```\n", + "\n", + "Constructor.\n", + "\n", + "**Arguments**:\n", + "\n", + "- `result_type_name` - A String to specify the name of the result type.\n", + "- `cb_coef` - a string to specify the coefficient on the confidence bound.\n", + "- `init_loss` - a float to specify the inital loss.\n", + "- `init_cb` - a float to specify the intial confidence bound.\n", + "- `mode` - A string in ['min', 'max'] to specify the objective as\n", + " minimization or maximization.\n", + "- `sliding_window_size` - An int to specify the size of the sliding window\n", + " (for experimental purpose).\n", + "\n", + "#### update\\_result\n", + "\n", + "```python\n", + "def update_result(new_loss,\n", + " new_resource_used,\n", + " data_dimension,\n", + " bound_of_range=1.0,\n", + " new_observation_count=1.0)\n", + "```\n", + "\n", + "Update result statistics.\n", + "\n", + "## BaseOnlineTrial Objects\n", + "\n", + "```python\n", + "class BaseOnlineTrial(Trial)\n", + "```\n", + "\n", + "Class for the online trial.\n", + "\n", + "#### \\_\\_init\\_\\_\n", + "\n", + "```python\n", + "def __init__(config: dict,\n", + " min_resource_lease: float,\n", + " is_champion: Optional[bool] = False,\n", + " is_checked_under_current_champion: Optional[bool] = True,\n", + " custom_trial_name: Optional[str] = \"mae\",\n", + " trial_id: Optional[str] = None)\n", + "```\n", + "\n", + "Constructor.\n", + "\n", + "**Arguments**:\n", + "\n", + "- `config` - The configuration dictionary.\n", + "- `min_resource_lease` - A float specifying the minimum resource lease.\n", + "- `is_champion` - A bool variable indicating whether the trial is champion.\n", + "- `is_checked_under_current_champion` - A bool indicating whether the trial\n", + " has been used under the current champion.\n", + "- `custom_trial_name` - A string of a custom trial name.\n", + "- `trial_id` - A string for the trial id.\n", + "\n", + "#### set\\_resource\\_lease\n", + "\n", + "```python\n", + "def set_resource_lease(resource: float)\n", + "```\n", + "\n", + "Sets the resource lease accordingly.\n", + "\n", + "#### set\\_status\n", + "\n", + "```python\n", + "def set_status(status)\n", + "```\n", + "\n", + "Sets the status of the trial and record the start time.\n", + "\n", + "## VowpalWabbitTrial Objects\n", + "\n", + "```python\n", + "class VowpalWabbitTrial(BaseOnlineTrial)\n", + "```\n", + "\n", + "The class for Vowpal Wabbit online trials.\n", + "\n", + "#### \\_\\_init\\_\\_\n", + "\n", + "```python\n", + "def __init__(config: dict,\n", + " min_resource_lease: float,\n", + " metric: str = \"mae\",\n", + " is_champion: Optional[bool] = False,\n", + " is_checked_under_current_champion: Optional[bool] = True,\n", + " custom_trial_name: Optional[str] = \"vw_mae_clipped\",\n", + " trial_id: Optional[str] = None,\n", + " cb_coef: Optional[float] = None)\n", + "```\n", + "\n", + "Constructor.\n", + "\n", + "**Arguments**:\n", + "\n", + "- `config` _dict_ - the config of the trial (note that the config is a set\n", + " because the hyperparameters are).\n", + "- `min_resource_lease` _float_ - the minimum resource lease.\n", + "- `metric` _str_ - the loss metric.\n", + "- `is_champion` _bool_ - indicates whether the trial is the current champion or not.\n", + "- `is_checked_under_current_champion` _bool_ - indicates whether this trials has\n", + " been paused under the current champion.\n", + "- `trial_id` _str_ - id of the trial (if None, it will be generated in the constructor).\n", + "\n", + "#### train\\_eval\\_model\\_online\n", + "\n", + "```python\n", + "def train_eval_model_online(data_sample, y_pred)\n", + "```\n", + "\n", + "Train and evaluate model online.\n", + "\n", + "#### predict\n", + "\n", + "```python\n", + "def predict(x)\n", + "```\n", + "\n", + "Predict using the model.\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33massistant\u001b[0m (to ragproxyagent):\n", + "\n", + "The author of FLAML is Microsoft Corporation.\n", + "\n", + "--------------------------------------------------------------------------------\n" + ] + } + ], + "source": [ + "# reset the assistant. Always reset the assistant before starting a new conversation.\n", + "assistant.reset()\n", + "\n", + "qa_problem = \"Who is the author of FLAML?\"\n", + "ragproxyagent.initiate_chat(assistant, problem=qa_problem)" + ] + } + ], + "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.6" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/notebook/agentchat_stream.ipynb b/notebook/agentchat_stream.ipynb index a0edb1ca321..3ea61fcc359 100644 --- a/notebook/agentchat_stream.ipynb +++ b/notebook/agentchat_stream.ipynb @@ -19,10 +19,10 @@ "source": [ "# Interactive LLM Agent Dealing with Data Stream\n", "\n", - "AutoGen offers conversable agents powered by LLM, tool or human, which can be used to perform tasks collectively via automated chat. This framwork allows tool use and human participance through multi-agent conversation.\n", + "AutoGen offers conversable agents powered by LLM, tool, or human, which can be used to perform tasks collectively via automated chat. This framework allows tool use and human participation through multi-agent conversation.\n", "Please find documentation about this feature [here](https://microsoft.github.io/autogen/docs/Use-Cases/agent_chat).\n", "\n", - "In this notebook, we demonstrate how to use customized agents to continuously acquires news from the web and ask for investment suggestions.\n", + "In this notebook, we demonstrate how to use customized agents to continuously acquire news from the web and ask for investment suggestions.\n", "\n", "## Requirements\n", "\n", @@ -45,7 +45,7 @@ }, "outputs": [], "source": [ - "# %pip install pyautogen~=0.1.0" + "# %pip install pyautogen~=0.2.0b4" ] }, { @@ -82,45 +82,25 @@ " {\n", " 'model': 'gpt-4',\n", " 'api_key': '<your OpenAI API key here>',\n", - " }, # OpenAI API endpoint for gpt-4\n", - " {\n", - " 'model': 'gpt-4',\n", - " 'api_key': '<your first Azure OpenAI API key here>',\n", - " 'api_base': '<your first Azure OpenAI API base here>',\n", - " 'api_type': 'azure',\n", - " 'api_version': '2023-06-01-preview',\n", - " }, # Azure OpenAI API endpoint for gpt-4\n", - " {\n", - " 'model': 'gpt-4',\n", - " 'api_key': '<your second Azure OpenAI API key here>',\n", - " 'api_base': '<your second Azure OpenAI API base here>',\n", - " 'api_type': 'azure',\n", - " 'api_version': '2023-06-01-preview',\n", - " }, # another Azure OpenAI API endpoint for gpt-4\n", - " {\n", - " 'model': 'gpt-3.5-turbo',\n", - " 'api_key': '<your OpenAI API key here>',\n", - " }, # OpenAI API endpoint for gpt-3.5-turbo\n", + " },\n", " {\n", " 'model': 'gpt-3.5-turbo',\n", - " 'api_key': '<your first Azure OpenAI API key here>',\n", - " 'api_base': '<your first Azure OpenAI API base here>',\n", + " 'api_key': '<your Azure OpenAI API key here>',\n", + " 'base_url': '<your Azure OpenAI API base here>',\n", " 'api_type': 'azure',\n", - " 'api_version': '2023-06-01-preview',\n", - " }, # Azure OpenAI API endpoint for gpt-3.5-turbo\n", + " 'api_version': '2023-08-01-preview',\n", + " },\n", " {\n", - " 'model': 'gpt-3.5-turbo',\n", - " 'api_key': '<your second Azure OpenAI API key here>',\n", - " 'api_base': '<your second Azure OpenAI API base here>',\n", + " 'model': 'gpt-3.5-turbo-16k',\n", + " 'api_key': '<your Azure OpenAI API key here>',\n", + " 'base_url': '<your Azure OpenAI API base here>',\n", " 'api_type': 'azure',\n", - " 'api_version': '2023-06-01-preview',\n", - " }, # another Azure OpenAI API endpoint for gpt-3.5-turbo\n", + " 'api_version': '2023-08-01-preview',\n", + " },\n", "]\n", "```\n", "\n", - "If you open this notebook in colab, you can upload your files by clicking the file icon on the left panel and then choose \"upload file\" icon.\n", - "\n", - "You can set the value of config_list in other ways you prefer, e.g., loading from a YAML file." + "You can set the value of config_list in any way you prefer. Please refer to this [notebook](https://github.com/microsoft/autogen/blob/main/notebook/oai_openai_utils.ipynb) for full code examples of the different methods." ] }, { @@ -130,7 +110,7 @@ "source": [ "## Example Task: Investment suggestion with realtime data\n", "\n", - "We consider a scenario where news data are streamed from a source, and we use an assistant agent to continually provide investment suggestions based on the data.\n", + "We consider a scenario where news data are streamed from a source, and we use an assistant agent to provide investment suggestions based on the data continually.\n", "\n", "First, we use the following code to simulate the data stream process." ] @@ -228,8 +208,8 @@ "assistant = autogen.AssistantAgent(\n", " name=\"assistant\",\n", " llm_config={\n", - " \"request_timeout\": 600,\n", - " \"seed\": 41,\n", + " \"timeout\": 600,\n", + " \"cache_seed\": 41,\n", " \"config_list\": config_list,\n", " \"temperature\": 0,\n", " },\n", diff --git a/notebook/agentchat_teachability.ipynb b/notebook/agentchat_teachability.ipynb new file mode 100644 index 00000000000..66439fb91ea --- /dev/null +++ b/notebook/agentchat_teachability.ipynb @@ -0,0 +1,789 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<a href=\"https://colab.research.google.com/github/microsoft/autogen/blob/main/notebook/agentchat_teachability.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chatting with TeachableAgent\n", + "\n", + "Conversational assistants based on LLMs can remember the current chat with the user, and can even demonstrate in-context learning of things that the user teaches the assistant during the chat. But these memories and learnings are lost once the chat is over, or when a single chat grows too long for the LLM to handle effectively. In subsequent chats, the user is forced to repeat any necessary instructions over and over.\n", + "\n", + "`TeachableAgent` addresses these limitations by persisting user teachings across chat boundaries in long-term memory (a vector database). Memory is saved to disk at the end of each chat, then loaded from disk at the start of the next. Instead of copying all of memory into the context window, which would eat up valuable space, individual memories (called memos) are retrieved into context as needed. This allows the user to teach frequently used facts and skills to the teachable agent just once, and have it remember them in later chats.\n", + "\n", + "In making decisions about memo storage and retrieval, `TeachableAgent` calls an instance of `TextAnalyzerAgent` to analyze pieces of text in several different ways. This adds extra LLM calls involving a relatively small number of tokens. These calls can add a few seconds to the time a user waits for a response.\n", + "\n", + "This notebook demonstrates how `TeachableAgent` can learn facts, preferences, and skills from users. To chat with `TeachableAgent` yourself, run [chat_with_teachable_agent.py](../test/agentchat/chat_with_teachable_agent.py).\n", + "\n", + "## Requirements\n", + "\n", + "AutoGen requires `Python>=3.8`. To run this notebook example, please install the [teachable] option.\n", + "```bash\n", + "pip install \"pyautogen[teachable]\"\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%capture --no-stderr\n", + "# %pip install \"pyautogen[teachable]" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Set your API Endpoint\n", + "\n", + "The [`config_list_from_json`](https://microsoft.github.io/autogen/docs/reference/oai/openai_utils#config_list_from_json) function loads a list of configurations from an environment variable or a json file." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "gpt-4\n" + ] + } + ], + "source": [ + "import autogen\n", + "\n", + "config_list = autogen.config_list_from_json(\n", + " env_or_file=\"OAI_CONFIG_LIST\",\n", + " file_location=\".\",\n", + " filter_dict={\n", + " \"model\": [\"gpt-4\", \"gpt4\", \"gpt-4-32k\"],\n", + " },\n", + ")\n", + "\n", + "print(config_list[0][\"model\"])" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "It first looks for environment variable \"OAI_CONFIG_LIST\" which needs to be a valid json string. If that variable is not found, it then looks for a json file named \"OAI_CONFIG_LIST\". It filters the configs by models (you can filter by other keys as well). After application of this particular filter, only the gpt-4 models are kept.\n", + "\n", + "The config list looks like the following:\n", + "```python\n", + "config_list = [\n", + " {\n", + " 'model': 'gpt-4',\n", + " 'api_key': '<your OpenAI API key here>',\n", + " },\n", + " {\n", + " 'model': 'gpt-4',\n", + " 'api_key': '<your Azure OpenAI API key here>',\n", + " 'base_url': '<your Azure OpenAI API base here>',\n", + " 'api_type': 'azure',\n", + " 'api_version': '2023-06-01-preview',\n", + " },\n", + " {\n", + " 'model': 'gpt-4-32k',\n", + " 'api_key': '<your Azure OpenAI API key here>',\n", + " 'base_url': '<your Azure OpenAI API base here>',\n", + " 'api_type': 'azure',\n", + " 'api_version': '2023-06-01-preview',\n", + " },\n", + "]\n", + "```\n", + "\n", + "If you open this notebook in colab, you can upload your files by clicking the file icon on the left panel and then choose \"upload file\" icon.\n", + "\n", + "You can set the value of config_list in other ways if you prefer, e.g., loading from a YAML file." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Construct Agents\n", + "For this walkthrough, we start by resetting the teachable agent's memory store. This deletes any memories from prior conversations that may be stored on disk." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[92m\n", + "CLEARING MEMORY\u001b[0m\n" + ] + } + ], + "source": [ + "from autogen.agentchat.contrib.teachable_agent import TeachableAgent\n", + "from autogen import UserProxyAgent\n", + "\n", + "llm_config = {\n", + " \"timeout\": 60,\n", + " \"config_list\": config_list,\n", + " \"use_cache\": True, # Use False to explore LLM non-determinism.\n", + "}\n", + "\n", + "teach_config={\n", + " \"verbosity\": 0, # 0 for basic info, 1 to add memory operations, 2 for analyzer messages, 3 for memo lists.\n", + " \"reset_db\": True, # Set to True to start over with an empty database.\n", + " \"path_to_db_dir\": \"./tmp/notebook/teachable_agent_db\", # Path to the directory where the database will be stored.\n", + " \"recall_threshold\": 1.5, # Higher numbers allow more (but less relevant) memos to be recalled.\n", + "}\n", + "\n", + "try:\n", + " from termcolor import colored\n", + "except ImportError:\n", + " def colored(x, *args, **kwargs):\n", + " return x\n", + " \n", + "teachable_agent = TeachableAgent(\n", + " name=\"teachableagent\",\n", + " llm_config=llm_config,\n", + " teach_config=teach_config)\n", + "\n", + "user = UserProxyAgent(\n", + " name=\"user\",\n", + " human_input_mode=\"NEVER\",\n", + " is_termination_msg=lambda x: True if \"TERMINATE\" in x.get(\"content\") else False,\n", + " max_consecutive_auto_reply=0,\n", + ")\n", + "\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Learning new facts\n", + "Let's teach the agent some facts it doesn't already know, since they are more recent than GPT-4's training data." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[33muser\u001b[0m (to teachableagent):\n", + "\n", + "What is the Vicuna model?\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33mteachableagent\u001b[0m (to user):\n", + "\n", + "I'm sorry, but I don't have information about the \"Vicuna model\" in my current database. Could you please provide some context, description, or details about this model so I can better assist you?\n", + "\n", + "--------------------------------------------------------------------------------\n" + ] + } + ], + "source": [ + "text = \"What is the Vicuna model?\"\n", + "user.initiate_chat(teachable_agent, message=text, clear_history=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[33muser\u001b[0m (to teachableagent):\n", + "\n", + "Vicuna is a 13B-parameter language model released by Meta.\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33mteachableagent\u001b[0m (to user):\n", + "\n", + "Thank you for providing the information. The Vicuna model is a large-scale language model developed by Meta. It consists of 13 billion parameters, which is what makes it able to understand and generate human-like text across various topics. Parameters in a neural network are the weights and biases assigned to each connection between the neurons, and having more parameters enables the model to learn and capture more complex patterns and relationships in data. As an AI language model, Vicuna can be utilized in various language-related tasks, such as text completion, translation, summarization, and more.\n", + "\n", + "--------------------------------------------------------------------------------\n" + ] + } + ], + "source": [ + "text = \"Vicuna is a 13B-parameter language model released by Meta.\"\n", + "user.initiate_chat(teachable_agent, message=text, clear_history=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[33muser\u001b[0m (to teachableagent):\n", + "\n", + "What is the Orca model?\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33mteachableagent\u001b[0m (to user):\n", + "\n", + "The Orca model is a yet-to-be-released language model by Meta, referring to the Research Preview API release of Meta's advanced language model. While I don't have specific details about the Orca model at this time, it is expected that the model would have an even larger number of parameters to further enhance its capabilities compared to its predecessor, Vicuna.\n", + "\n", + "As AI language models evolve, they generally become more efficient at understanding and generating human-like text. This makes them more effective in completing a wide range of tasks, including text completion, translation, summarization, and Q&A, as well as providing more accurate and coherent results in various applications.\n", + "\n", + "--------------------------------------------------------------------------------\n" + ] + } + ], + "source": [ + "text = \"What is the Orca model?\"\n", + "user.initiate_chat(teachable_agent, message=text, clear_history=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[33muser\u001b[0m (to teachableagent):\n", + "\n", + "Orca is a 13B-parameter language model released by Microsoft. It outperforms Vicuna on most tasks.\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33mteachableagent\u001b[0m (to user):\n", + "\n", + "Thank you for the clarification. Orca is a 13-billion-parameter language model developed by Microsoft. It is designed to outperform Vicuna, the language model released by Meta. With a large number of parameters, Orca is capable of understanding and generating human-like text across diverse subjects, making it highly useful in various applications.\n", + "\n", + "Orca's advanced capabilities allow it to excel in tasks such as text completion, translation, summarization, Q&A, and more. Its performance improvement over Vicuna highlights the rapid advancements in natural language processing (NLP) research and the development of increasingly capable AI language models.\n", + "\n", + "--------------------------------------------------------------------------------\n" + ] + } + ], + "source": [ + "text = \"Orca is a 13B-parameter language model released by Microsoft. It outperforms Vicuna on most tasks.\"\n", + "user.initiate_chat(teachable_agent, message=text, clear_history=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's end our first chat here. The following function needs to be called at the end of each chat, so that `TeachableAgent` can store what the user has taught it." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[93m\n", + "REVIEWING CHAT FOR USER TEACHINGS TO REMEMBER\u001b[0m\n" + ] + } + ], + "source": [ + "teachable_agent.learn_from_user_feedback()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now let's start a new chat by clearing the previous chat's history. At this point, common LLM-based assistants would forget everything from the last chat. But `TeachableAgent` can retrieve memories from its vector DB as needed, allowing it to recall and reason over facts that the user taught it in earlier conversations." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[33muser\u001b[0m (to teachableagent):\n", + "\n", + "How does the Vicuna model compare to the Orca model?\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33mteachableagent\u001b[0m (to user):\n", + "\n", + "The Vicuna and Orca models are both 13B-parameter language models released by Meta and Microsoft, respectively. In terms of performance, Orca has been reported to outperform Vicuna on most tasks. However, without detailed information about specific tasks and benchmarks, it is difficult to provide a more comprehensive comparison. Generally speaking, both models are advanced language models that aim to provide high-quality natural language understanding and generation, but Orca appears to have an edge in terms of overall performance.\n", + "\n", + "--------------------------------------------------------------------------------\n" + ] + } + ], + "source": [ + "text = \"How does the Vicuna model compare to the Orca model?\"\n", + "user.initiate_chat(teachable_agent, message=text, clear_history=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Learning user preferences\n", + "Now let's teach the agent some of our preferences. Suppose that we frequently post short summaries of new papers for our team to read, and we want the teachable agent to help us do this faster." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[33muser\u001b[0m (to teachableagent):\n", + "\n", + "Please summarize this abstract.\n", + "\n", + "AutoGen: Enabling Next-Gen LLM Applications via Multi-Agent Conversation\n", + "Qingyun Wu, Gagan Bansal, Jieyu Zhang, Yiran Wu, Beibin Li, Erkang Zhu, Li Jiang, Xiaoyun Zhang, Shaokun Zhang, Jiale Liu, Ahmed Hassan Awadallah, Ryen W White, Doug Burger, Chi Wang\n", + "AutoGen is an open-source framework that allows developers to build LLM applications via multiple agents that can converse with each other to accomplish tasks. AutoGen agents are customizable, conversable, and can operate in various modes that employ combinations of LLMs, human inputs, and tools. Using AutoGen, developers can also flexibly define agent interaction behaviors. Both natural language and computer code can be used to program flexible conversation patterns for different applications. AutoGen serves as a generic infrastructure to build diverse applications of various complexities and LLM capacities. Empirical studies demonstrate the effectiveness of the framework in many example applications, with domains ranging from mathematics, coding, question answering, operations research, online decision-making, entertainment, etc.\n", + "\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33mteachableagent\u001b[0m (to user):\n", + "\n", + "AutoGen is an open-source framework designed to enable developers to create LLM applications with multiple customizable agents that can converse with each other to complete tasks. These agents can operate using different combinations of LLMs, human inputs, and tools, allowing developers to define agent interaction behaviors flexibly. AutoGen supports programming flexible conversation patterns using both natural language and code, making it suitable for building diverse applications with varying complexities and LLM capacities. Its effectiveness has been demonstrated through empirical studies across various domains including mathematics, coding, operations research, decision-making, and entertainment.\n", + "\n", + "--------------------------------------------------------------------------------\n" + ] + } + ], + "source": [ + "text = \"\"\"Please summarize this abstract.\n", + "\n", + "AutoGen: Enabling Next-Gen LLM Applications via Multi-Agent Conversation\n", + "Qingyun Wu, Gagan Bansal, Jieyu Zhang, Yiran Wu, Beibin Li, Erkang Zhu, Li Jiang, Xiaoyun Zhang, Shaokun Zhang, Jiale Liu, Ahmed Hassan Awadallah, Ryen W White, Doug Burger, Chi Wang\n", + "AutoGen is an open-source framework that allows developers to build LLM applications via multiple agents that can converse with each other to accomplish tasks. AutoGen agents are customizable, conversable, and can operate in various modes that employ combinations of LLMs, human inputs, and tools. Using AutoGen, developers can also flexibly define agent interaction behaviors. Both natural language and computer code can be used to program flexible conversation patterns for different applications. AutoGen serves as a generic infrastructure to build diverse applications of various complexities and LLM capacities. Empirical studies demonstrate the effectiveness of the framework in many example applications, with domains ranging from mathematics, coding, question answering, operations research, online decision-making, entertainment, etc.\n", + "\"\"\"\n", + "user.initiate_chat(teachable_agent, message=text, clear_history=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "But that's unstructured. So let's teach the agent our preference." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[33muser\u001b[0m (to teachableagent):\n", + "\n", + "Please summarize this abstract. \n", + "When I'm summarizing an abstract, I try to make the summary contain just three short bullet points: the title, the innovation, and the key empirical results.\n", + "\n", + "AutoGen: Enabling Next-Gen LLM Applications via Multi-Agent Conversation\n", + "Qingyun Wu, Gagan Bansal, Jieyu Zhang, Yiran Wu, Beibin Li, Erkang Zhu, Li Jiang, Xiaoyun Zhang, Shaokun Zhang, Jiale Liu, Ahmed Hassan Awadallah, Ryen W White, Doug Burger, Chi Wang\n", + "AutoGen is an open-source framework that allows developers to build LLM applications via multiple agents that can converse with each other to accomplish tasks. AutoGen agents are customizable, conversable, and can operate in various modes that employ combinations of LLMs, human inputs, and tools. Using AutoGen, developers can also flexibly define agent interaction behaviors. Both natural language and computer code can be used to program flexible conversation patterns for different applications. AutoGen serves as a generic infrastructure to build diverse applications of various complexities and LLM capacities. Empirical studies demonstrate the effectiveness of the framework in many example applications, with domains ranging from mathematics, coding, question answering, operations research, online decision-making, entertainment, etc.\n", + "\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33mteachableagent\u001b[0m (to user):\n", + "\n", + "- Title: AutoGen: Enabling Next-Gen LLM Applications via Multi-Agent Conversation\n", + "- Innovation: Open-source framework for creating customizable LLM applications through agent conversations, supporting various modes and interaction behaviors.\n", + "- Key Empirical Results: Demonstrated effectiveness across diverse application domains, including mathematics, coding, question answering, and more.\n", + "\n", + "--------------------------------------------------------------------------------\n" + ] + } + ], + "source": [ + "text = \"\"\"Please summarize this abstract. \n", + "When I'm summarizing an abstract, I try to make the summary contain just three short bullet points: the title, the innovation, and the key empirical results.\n", + "\n", + "AutoGen: Enabling Next-Gen LLM Applications via Multi-Agent Conversation\n", + "Qingyun Wu, Gagan Bansal, Jieyu Zhang, Yiran Wu, Beibin Li, Erkang Zhu, Li Jiang, Xiaoyun Zhang, Shaokun Zhang, Jiale Liu, Ahmed Hassan Awadallah, Ryen W White, Doug Burger, Chi Wang\n", + "AutoGen is an open-source framework that allows developers to build LLM applications via multiple agents that can converse with each other to accomplish tasks. AutoGen agents are customizable, conversable, and can operate in various modes that employ combinations of LLMs, human inputs, and tools. Using AutoGen, developers can also flexibly define agent interaction behaviors. Both natural language and computer code can be used to program flexible conversation patterns for different applications. AutoGen serves as a generic infrastructure to build diverse applications of various complexities and LLM capacities. Empirical studies demonstrate the effectiveness of the framework in many example applications, with domains ranging from mathematics, coding, question answering, operations research, online decision-making, entertainment, etc.\n", + "\"\"\"\n", + "user.initiate_chat(teachable_agent, message=text, clear_history=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "That's much better, but will the teachable agent remember these preferences in the future, for a different paper? Let's start a new chat to find out!" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[93m\n", + "REVIEWING CHAT FOR USER TEACHINGS TO REMEMBER\u001b[0m\n", + "\u001b[33muser\u001b[0m (to teachableagent):\n", + "\n", + "Please summarize this abstract.\n", + "\n", + "Sparks of Artificial General Intelligence: Early experiments with GPT-4\n", + "Sébastien Bubeck, Varun Chandrasekaran, Ronen Eldan, Johannes Gehrke, Eric Horvitz, Ece Kamar, Peter Lee, Yin Tat Lee, Yuanzhi Li, Scott Lundberg, Harsha Nori, Hamid Palangi, Marco Tulio Ribeiro, Yi Zhang\n", + "Artificial intelligence (AI) researchers have been developing and refining large language models (LLMs) that exhibit remarkable capabilities across a variety of domains and tasks, challenging our understanding of learning and cognition. The latest model developed by OpenAI, GPT-4, was trained using an unprecedented scale of compute and data. In this paper, we report on our investigation of an early version of GPT-4, when it was still in active development by OpenAI. We contend that (this early version of) GPT-4 is part of a new cohort of LLMs (along with ChatGPT and Google's PaLM for example) that exhibit more general intelligence than previous AI models. We discuss the rising capabilities and implications of these models. We demonstrate that, beyond its mastery of language, GPT-4 can solve novel and difficult tasks that span mathematics, coding, vision, medicine, law, psychology and more, without needing any special prompting. Moreover, in all of these tasks, GPT-4's performance is strikingly close to human-level performance, and often vastly surpasses prior models such as ChatGPT. Given the breadth and depth of GPT-4's capabilities, we believe that it could reasonably be viewed as an early (yet still incomplete) version of an artificial general intelligence (AGI) system. In our exploration of GPT-4, we put special emphasis on discovering its limitations, and we discuss the challenges ahead for advancing towards deeper and more comprehensive versions of AGI, including the possible need for pursuing a new paradigm that moves beyond next-word prediction. We conclude with reflections on societal influences of the recent technological leap and future research directions.\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33mteachableagent\u001b[0m (to user):\n", + "\n", + "- Title: Sparks of Artificial General Intelligence: Early experiments with GPT-4\n", + "- Innovation: GPT-4, an LLM with remarkable capabilities, demonstrates human-level performance across various domains, like math, coding, vision, medicine, law, and psychology.\n", + "- Key results: GPT-4 significantly surpasses prior models, suggesting it may be an early version of AGI; limitations and challenges toward deeper AGI are also discussed.\n", + "\n", + "--------------------------------------------------------------------------------\n" + ] + } + ], + "source": [ + "teachable_agent.learn_from_user_feedback()\n", + "\n", + "text = \"\"\"Please summarize this abstract.\n", + "\n", + "Sparks of Artificial General Intelligence: Early experiments with GPT-4\n", + "Sébastien Bubeck, Varun Chandrasekaran, Ronen Eldan, Johannes Gehrke, Eric Horvitz, Ece Kamar, Peter Lee, Yin Tat Lee, Yuanzhi Li, Scott Lundberg, Harsha Nori, Hamid Palangi, Marco Tulio Ribeiro, Yi Zhang\n", + "Artificial intelligence (AI) researchers have been developing and refining large language models (LLMs) that exhibit remarkable capabilities across a variety of domains and tasks, challenging our understanding of learning and cognition. The latest model developed by OpenAI, GPT-4, was trained using an unprecedented scale of compute and data. In this paper, we report on our investigation of an early version of GPT-4, when it was still in active development by OpenAI. We contend that (this early version of) GPT-4 is part of a new cohort of LLMs (along with ChatGPT and Google's PaLM for example) that exhibit more general intelligence than previous AI models. We discuss the rising capabilities and implications of these models. We demonstrate that, beyond its mastery of language, GPT-4 can solve novel and difficult tasks that span mathematics, coding, vision, medicine, law, psychology and more, without needing any special prompting. Moreover, in all of these tasks, GPT-4's performance is strikingly close to human-level performance, and often vastly surpasses prior models such as ChatGPT. Given the breadth and depth of GPT-4's capabilities, we believe that it could reasonably be viewed as an early (yet still incomplete) version of an artificial general intelligence (AGI) system. In our exploration of GPT-4, we put special emphasis on discovering its limitations, and we discuss the challenges ahead for advancing towards deeper and more comprehensive versions of AGI, including the possible need for pursuing a new paradigm that moves beyond next-word prediction. We conclude with reflections on societal influences of the recent technological leap and future research directions.\"\"\"\n", + "user.initiate_chat(teachable_agent, message=text, clear_history=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Learning new skills\n", + "Finally, let's extend the teachable agent's capabilities by teaching it a new skill for accomplishing a challenging type of task. \n", + "\n", + "The [Sparks of AGI](https://arxiv.org/abs/2303.12712) paper evaluated GPT-4 on math problems like the following, which it could only solve 32% of the time." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[33muser\u001b[0m (to teachableagent):\n", + "\n", + "Consider the identity: \n", + "9 * 4 + 6 * 6 = 72\n", + "Can you modify exactly one integer (and not more than that!) on the left hand side of the equation so the right hand side becomes 99?\n", + "-Let's think step-by-step, write down a plan, and then write down your solution as: \"The solution is: A * B + C * D\".\n", + "\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33mteachableagent\u001b[0m (to user):\n", + "\n", + "Step 1: Identify the current equation and the target value on the right-hand side.\n", + "Current equation: 9 * 4 + 6 * 6 = 72\n", + "Target value: 99\n", + "\n", + "Step 2: Determine what numbers can be changed on the left-hand side.\n", + "Possible changes: 9, 4, 6 (first occurrence), and 6 (second occurrence)\n", + "\n", + "Step 3: Evaluate whether each change in the numbers on the left-hand side can result in the target value.\n", + "9 -> If changed, it would create a larger product.\n", + "4 -> If changed, the product would increase or decrease by more than the amount needed to reach 99.\n", + "6 (first occurrence) -> If increased to 7, then the equation would be 9 * 4 + 7 * 6 = 94, which is still not 99.\n", + "6 (second occurrence) -> If increased to 7, then the equation would be 9 * 4 + 6 * 7 = 99.\n", + "\n", + "Step 4: Write down the solution.\n", + "The solution is: 9 * 4 + 6 * 7\n", + "\n", + "--------------------------------------------------------------------------------\n" + ] + } + ], + "source": [ + "text = \"\"\"Consider the identity: \n", + "9 * 4 + 6 * 6 = 72\n", + "Can you modify exactly one integer (and not more than that!) on the left hand side of the equation so the right hand side becomes 99?\n", + "-Let's think step-by-step, write down a plan, and then write down your solution as: \"The solution is: A * B + C * D\".\n", + "\"\"\"\n", + "user.initiate_chat(teachable_agent, message=text, clear_history=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This time, lets teach the agent a reliable strategy for solving such tasks." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[33muser\u001b[0m (to teachableagent):\n", + "\n", + "Consider the identity: \n", + "9 * 4 + 6 * 6 = 72\n", + "Can you modify exactly one integer (and not more than that!) on the left hand side of the equation so the right hand side becomes 99?\n", + "-Let's think step-by-step, write down a plan, and then write down your solution as: \"The solution is: A * B + C * D\".\n", + "\n", + "Here's some advice that may help:\n", + "1. Let E denote the original number on the right.\n", + "2. Let F denote the final number on the right.\n", + "3. Calculate the difference between the two, G = F - E.\n", + "4. Examine the numbers on the left one by one until finding one that divides evenly into G, where negative integers are allowed.\n", + "5. Calculate J = G / H. This is the number of times that H divides into G.\n", + "6. Verify that J is an integer, and that H * J = G.\n", + "7. Find the number on the left which is multiplied by H, and call it K.\n", + "8. Change K to K + J.\n", + "9. Recompute the value on the left, and verify that it equals F.\n", + "Finally, write down your solution as: \"The solution is: A * B + C * D\".\n", + "\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33mteachableagent\u001b[0m (to user):\n", + "\n", + "Step 1: Identify the original number (E) and the final number (F) on the right-hand side.\n", + "E = 72\n", + "F = 99\n", + "\n", + "Step 2: Calculate the difference between the two, G = F - E.\n", + "G = 99 - 72 = 27\n", + "\n", + "Step 3: Examine the numbers on the left one by one until finding one that divides evenly into G, where negative integers are allowed.\n", + "9 (divides evenly into 27)\n", + "4 (does not)\n", + "6 (first occurrence, does not)\n", + "6 (second occurrence, does not)\n", + "\n", + "Step 4: Calculate J = G / H. This is the number of times that H divides into G.\n", + "H = 9 (since 9 divides evenly into 27)\n", + "J = 27 / 9 = 3\n", + "\n", + "Step 5: Verify that J is an integer, and that H * J = G.\n", + "H * J = 9 * 3 = 27\n", + "J = 3 (which is an integer)\n", + "\n", + "Step 6: Find the number on the left which is multiplied by H, and call it K.\n", + "Number on the leftside of the equation that is multiplied by 9: 4\n", + "Therefore, K = 4\n", + "\n", + "Step 7: Change K to K + J.\n", + "K + J = 4 + 3 = 7\n", + "\n", + "Step 8: Recompute the value on the left, and verify that it equals F.\n", + "9 * 7 + 6 * 6 = 63 + 36 = 99 (which is equal to F)\n", + "\n", + "Step 9: Write down the solution.\n", + "The solution is: 9 * 7 + 6 * 6\n", + "\n", + "--------------------------------------------------------------------------------\n" + ] + } + ], + "source": [ + "text = \"\"\"Consider the identity: \n", + "9 * 4 + 6 * 6 = 72\n", + "Can you modify exactly one integer (and not more than that!) on the left hand side of the equation so the right hand side becomes 99?\n", + "-Let's think step-by-step, write down a plan, and then write down your solution as: \"The solution is: A * B + C * D\".\n", + "\n", + "Here's some advice that may help:\n", + "1. Let E denote the original number on the right.\n", + "2. Let F denote the final number on the right.\n", + "3. Calculate the difference between the two, G = F - E.\n", + "4. Examine the numbers on the left one by one until finding one that divides evenly into G, where negative integers are allowed.\n", + "5. Calculate J = G / H. This is the number of times that H divides into G.\n", + "6. Verify that J is an integer, and that H * J = G.\n", + "7. Find the number on the left which is multiplied by H, and call it K.\n", + "8. Change K to K + J.\n", + "9. Recompute the value on the left, and verify that it equals F.\n", + "Finally, write down your solution as: \"The solution is: A * B + C * D\".\n", + "\"\"\"\n", + "user.initiate_chat(teachable_agent, message=text, clear_history=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "When given this advice, GPT-4 can solve such problems over 95% of the time. But can the teachable agent remember the strategy so the user doesn't have to explain it over and over? As before, let's start a new chat to find out." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[93m\n", + "REVIEWING CHAT FOR USER TEACHINGS TO REMEMBER\u001b[0m\n", + "\u001b[33muser\u001b[0m (to teachableagent):\n", + "\n", + "Consider the identity: \n", + "9 * 4 + 6 * 6 = 72\n", + "Can you modify exactly one integer (and not more than that!) on the left hand side of the equation so the right hand side becomes 99?\n", + "-Let's think step-by-step, write down a plan, and then write down your solution as: \"The solution is: A * B + C * D\".\n", + "\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33mteachableagent\u001b[0m (to user):\n", + "\n", + "Let's follow the advice to modify one integer on the left hand side of the equation to make the right hand side become 99:\n", + "\n", + "1. Let E denote the original number on the right: E = 72.\n", + "2. Let F denote the final number on the right: F = 99.\n", + "3. Calculate the difference between the two, G = F - E: G = 99 - 72 = 27.\n", + "4. Examine the numbers on the left one by one to find one that divides evenly into G: 9, 4, 6. Since 9 divides 27 evenly, we will work with 9 (H = 9).\n", + "5. Calculate J = G / H: J = 27 / 9 = 3.\n", + "6. Verify that J is an integer, and that H * J = G: J is an integer, and 9 * 3 = 27.\n", + "7. Find the number on the left which is multiplied by H (9), and call it K: K = 4.\n", + "8. Change K to K + J: K_new = 4 + 3 = 7.\n", + "9. Recompute the value on the left, and verify that it equals F: (9 * 7) + (6 * 6) = 63 + 36 = 99.\n", + "\n", + "The solution is: 9 * 7 + 6 * 6\n", + "\n", + "--------------------------------------------------------------------------------\n" + ] + } + ], + "source": [ + "teachable_agent.learn_from_user_feedback()\n", + "\n", + "text = \"\"\"Consider the identity: \n", + "9 * 4 + 6 * 6 = 72\n", + "Can you modify exactly one integer (and not more than that!) on the left hand side of the equation so the right hand side becomes 99?\n", + "-Let's think step-by-step, write down a plan, and then write down your solution as: \"The solution is: A * B + C * D\".\n", + "\"\"\"\n", + "user.initiate_chat(teachable_agent, message=text, clear_history=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As a final check, let's test the teachable agent's newly learned skill on a separate instance of the task." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[33muser\u001b[0m (to teachableagent):\n", + "\n", + "Consider the identity: \n", + "8 * 3 + 7 * 9 = 87\n", + "Can you modify exactly one integer (and not more than that!) on the left hand side of the equation so the right hand side becomes 59?\n", + "-Let's think step-by-step, write down a plan, and then write down your solution as: \"The solution is: A * B + C * D\".\n", + "\n", + "\n", + "--------------------------------------------------------------------------------\n", + "\u001b[33mteachableagent\u001b[0m (to user):\n", + "\n", + "Let's follow the advice to modify one integer on the left hand side of the equation to make the right hand side become 59:\n", + "\n", + "1. Let E denote the original number on the right: E = 87.\n", + "2. Let F denote the final number on the right: F = 59.\n", + "3. Calculate the difference between the two, G = F - E: G = 59 - 87 = -28.\n", + "4. Examine the numbers on the left one by one to find one that divides evenly into G: 8, 3, 7, 9. Since 7 divides -28 evenly, we will work with 7 (H = 7).\n", + "5. Calculate J = G / H: J = -28 / 7 = -4.\n", + "6. Verify that J is an integer, and that H * J = G: J is an integer, and 7 * (-4) = -28.\n", + "7. Find the number on the left which is multiplied by H (7), and call it K: K = 9.\n", + "8. Change K to K + J: K_new = 9 + (-4) = 5.\n", + "9. Recompute the value on the left, and verify that it equals F: (8 * 3) + (7 * 5) = 24 + 35 = 59.\n", + "\n", + "The solution is: 8 * 3 + 7 * 5\n", + "\n", + "--------------------------------------------------------------------------------\n" + ] + } + ], + "source": [ + "text = \"\"\"Consider the identity: \n", + "8 * 3 + 7 * 9 = 87\n", + "Can you modify exactly one integer (and not more than that!) on the left hand side of the equation so the right hand side becomes 59?\n", + "-Let's think step-by-step, write down a plan, and then write down your solution as: \"The solution is: A * B + C * D\".\n", + "\"\"\"\n", + "user.initiate_chat(teachable_agent, message=text, clear_history=False)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "flaml", + "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.8.17" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/notebook/agentchat_teaching.ipynb b/notebook/agentchat_teaching.ipynb index f11a91ae19b..dcee7cd5b02 100644 --- a/notebook/agentchat_teaching.ipynb +++ b/notebook/agentchat_teaching.ipynb @@ -15,7 +15,7 @@ "source": [ "# Auto Generated Agent Chat: Teaching\n", "\n", - "AutoGen offers conversable agents powered by LLM, tool or human, which can be used to perform tasks collectively via automated chat. This framwork makes it easy to build many advanced applications of LLMs.\n", + "AutoGen offers conversable agents powered by LLM, tool or human, which can be used to perform tasks collectively via automated chat. This framework makes it easy to build many advanced applications of LLMs.\n", "Please find documentation about this feature [here](https://microsoft.github.io/autogen/docs/Use-Cases/agent_chat).\n", "\n", "This notebook demonstrates how AutoGen enables a user to teach AI new skills via natural agent interactions, without requiring knowledge of programming language. It is modified based on https://github.com/microsoft/FLAML/blob/evaluation/notebook/research_paper/teaching.ipynb and https://github.com/microsoft/FLAML/blob/evaluation/notebook/research_paper/teaching_recipe_reuse.ipynb.\n", @@ -58,14 +58,14 @@ " {\n", " \"model\": \"gpt-4\",\n", " \"api_key\": \"<your Azure OpenAI API key here>\",\n", - " \"api_base\": \"<your Azure OpenAI API base here>\",\n", + " \"base_url\": \"<your Azure OpenAI API base here>\",\n", " \"api_type\": \"azure\",\n", " \"api_version\": \"2023-06-01-preview\"\n", " },\n", " {\n", " \"model\": \"gpt-4-32k\",\n", " \"api_key\": \"<your Azure OpenAI API key here>\",\n", - " \"api_base\": \"<your Azure OpenAI API base here>\",\n", + " \"base_url\": \"<your Azure OpenAI API base here>\",\n", " \"api_type\": \"azure\",\n", " \"api_version\": \"2023-06-01-preview\"\n", " }\n", @@ -84,7 +84,7 @@ "import autogen\n", "\n", "llm_config={\n", - " \"request_timeout\": 600,\n", + " \"timeout\": 600,\n", " \"seed\": 44, # change the seed for different trials\n", " \"config_list\": autogen.config_list_from_json(\n", " \"OAI_CONFIG_LIST\",\n", diff --git a/notebook/agentchat_two_users.ipynb b/notebook/agentchat_two_users.ipynb index 026efb4d9ad..b170d2ec63f 100644 --- a/notebook/agentchat_two_users.ipynb +++ b/notebook/agentchat_two_users.ipynb @@ -19,9 +19,9 @@ "source": [ "# Auto Generated Agent Chat: Collaborative Task Solving with Multiple Agents and Human Users\n", "\n", - "AutoGen offers conversable agents powered by LLM, tool or human, which can be used to perform tasks collectively via automated chat. This framwork allows tool use and human participance through multi-agent conversation. Please find documentation about this feature [here](https://microsoft.github.io/autogen/docs/Use-Cases/agent_chat).\n", + "AutoGen offers conversable agents powered by LLM, tool, or human, which can be used to perform tasks collectively via automated chat. This framework allows tool use and human participation through multi-agent conversation. Please find documentation about this feature [here](https://microsoft.github.io/autogen/docs/Use-Cases/agent_chat).\n", "\n", - "In this notebook, we demonstrate an application involving multiple agents and human users to work together and accomplish a task. `AssistantAgent` is an LLM-based agent that can write Python code (in a Python coding block) for a user to execute for a given task. `UserProxyAgent` is an agent which serves as a proxy for a user to execute the code written by `AssistantAgent`. We create multiple `UserProxyAgent` instances which can represent different human users.\n", + "In this notebook, we demonstrate an application involving multiple agents and human users to work together and accomplish a task. `AssistantAgent` is an LLM-based agent that can write Python code (in a Python coding block) for a user to execute for a given task. `UserProxyAgent` is an agent which serves as a proxy for a user to execute the code written by `AssistantAgent`. We create multiple `UserProxyAgent` instances that can represent different human users.\n", "\n", "## Requirements\n", "\n", @@ -44,7 +44,7 @@ }, "outputs": [], "source": [ - "# %pip install pyautogen~=0.1.1" + "# %pip install pyautogen~=0.2.0b4" ] }, { @@ -56,7 +56,7 @@ "\n", "The [`config_list_from_json`](https://microsoft.github.io/autogen/docs/reference/oai/openai_utils#config_list_from_json) function loads a list of configurations from an environment variable or a json file.\n", "\n", - "It first looks for an environment variable of a specified name (\"OAI_CONFIG_LIST\" in this example) which needs to be a valid json string. If that variable is not found, it then looks for a json file with the same name. It filters the configs by models (you can filter by other keys as well).\n", + "It first looks for an environment variable of a specified name (\"OAI_CONFIG_LIST\" in this example), which needs to be a valid json string. If that variable is not found, it looks for a json file with the same name. It filters the configs by models (you can filter by other keys as well).\n", "\n", "The json looks like the following:\n", "```json\n", @@ -68,21 +68,21 @@ " {\n", " \"model\": \"gpt-4\",\n", " \"api_key\": \"<your Azure OpenAI API key here>\",\n", - " \"api_base\": \"<your Azure OpenAI API base here>\",\n", + " \"base_url\": \"<your Azure OpenAI API base here>\",\n", " \"api_type\": \"azure\",\n", - " \"api_version\": \"2023-07-01-preview\"\n", + " \"api_version\": \"2023-08-01-preview\"\n", " },\n", " {\n", " \"model\": \"gpt-4-32k\",\n", " \"api_key\": \"<your Azure OpenAI API key here>\",\n", - " \"api_base\": \"<your Azure OpenAI API base here>\",\n", + " \"base_url\": \"<your Azure OpenAI API base here>\",\n", " \"api_type\": \"azure\",\n", - " \"api_version\": \"2023-07-01-preview\"\n", + " \"api_version\": \"2023-08-01-preview\"\n", " }\n", "]\n", "```\n", "\n", - "If you open this notebook in colab, you can upload your files by clicking the file icon on the left panel and then choose \"upload file\" icon.\n" + "You can set the value of config_list in any way you prefer. Please refer to this [notebook](https://github.com/microsoft/autogen/blob/main/notebook/oai_openai_utils.ipynb) for full code examples of the different methods." ] }, { @@ -160,12 +160,9 @@ " name=\"assistant_for_student\",\n", " system_message=\"You are a helpful assistant. Reply TERMINATE when the task is done.\",\n", " llm_config={\n", - " \"request_timeout\": 600,\n", - " \"seed\": 42,\n", - " # Excluding azure openai endpoints from the config list.\n", - " # Change to `exclude=\"openai\"` to exclude openai endpoints, or remove the `exclude` argument to include both.\n", - " \"config_list\": autogen.config_list_openai_aoai(exclude=\"aoai\"),\n", - " \"model\": \"gpt-4-0613\", # make sure the endpoint you use supports the model\n", + " \"timeout\": 600,\n", + " \"cache_seed\": 42,\n", + " \"config_list\": config_list,\n", " \"temperature\": 0,\n", " \"functions\": [\n", " {\n", @@ -176,7 +173,7 @@ " \"properties\": {\n", " \"message\": {\n", " \"type\": \"string\",\n", - " \"description\": \"question to ask expert. Make sure the question include enough context, such as the code and the execution result. The expert does not know the conversation between you and the user, unless you share the conversation with the expert.\",\n", + " \"description\": \"question to ask expert. Ensure the question includes enough context, such as the code and the execution result. The expert does not know the conversation between you and the user unless you share the conversation with the expert.\",\n", " },\n", " },\n", " \"required\": [\"message\"],\n", @@ -202,7 +199,7 @@ "source": [ "## Perform a task\n", "\n", - "We invoke the `initiate_chat()` method of the student proxy agent to start the conversation. When you run the cell below, you will be prompted to provide feedback after the assistant agent sends a \"TERMINATE\" signal in the end of the message. If you don't provide any feedback (by pressing Enter directly), the conversation will finish. Before the \"TERMINATE\" signal, the student proxy agent will try to execute the code suggested by the assistant agent on behalf of the user." + "We invoke the `initiate_chat()` method of the student proxy agent to start the conversation. When you run the cell below, you will be prompted to provide feedback after the assistant agent sends a \"TERMINATE\" signal at the end of the message. The conversation will finish if you don't provide any feedback (by pressing Enter directly). Before the \"TERMINATE\" signal, the student proxy agent will try to execute the code suggested by the assistant agent on behalf of the user." ] }, { diff --git a/notebook/agentchat_web_info.ipynb b/notebook/agentchat_web_info.ipynb index 986a5615c50..2dc5339544c 100644 --- a/notebook/agentchat_web_info.ipynb +++ b/notebook/agentchat_web_info.ipynb @@ -19,12 +19,12 @@ "source": [ "# Auto Generated Agent Chat: Solving Tasks Requiring Web Info\n", "\n", - "AutoGen offers conversable agents powered by LLM, tool or human, which can be used to perform tasks collectively via automated chat. This framwork allows tool use and human participance through multi-agent conversation.\n", + "AutoGen offers conversable agents powered by LLM, tool, or human, which can be used to perform tasks collectively via automated chat. This framework allows tool use and human participation through multi-agent conversation.\n", "Please find documentation about this feature [here](https://microsoft.github.io/autogen/docs/Use-Cases/agent_chat).\n", "\n", "In this notebook, we demonstrate how to use `AssistantAgent` and `UserProxyAgent` to perform tasks which require acquiring info from the web:\n", "* discuss a paper based on its URL.\n", - "* discuss about stock market.\n", + "* discuss about the stock market.\n", "\n", "Here `AssistantAgent` is an LLM-based agent that can write Python code (in a Python coding block) for a user to execute for a given task. `UserProxyAgent` is an agent which serves as a proxy for a user to execute the code written by `AssistantAgent`. By setting `human_input_mode` properly, the `UserProxyAgent` can also prompt the user for feedback to `AssistantAgent`. For example, when `human_input_mode` is set to \"TERMINATE\", the `UserProxyAgent` will execute the code written by `AssistantAgent` directly and return the execution results (success or failure and corresponding outputs) to `AssistantAgent`, and prompt the user for feedback when the task is finished. When user feedback is provided, the `UserProxyAgent` will directly pass the feedback to `AssistantAgent`.\n", "\n", @@ -49,7 +49,7 @@ }, "outputs": [], "source": [ - "# %pip install pyautogen~=0.1.0 docker" + "# %pip install pyautogen~=0.2.0b4 docker" ] }, { @@ -78,8 +78,8 @@ ")\n", "\n", "llm_config={\n", - " \"request_timeout\": 600,\n", - " \"seed\": 42,\n", + " \"timeout\": 600,\n", + " \"cache_seed\": 42,\n", " \"config_list\": config_list,\n", " \"temperature\": 0,\n", "}" @@ -102,23 +102,21 @@ " {\n", " 'model': 'gpt4',\n", " 'api_key': '<your Azure OpenAI API key here>',\n", - " 'api_base': '<your Azure OpenAI API base here>',\n", + " 'base_url': '<your Azure OpenAI API base here>',\n", " 'api_type': 'azure',\n", - " 'api_version': '2023-06-01-preview',\n", + " 'api_version': '2023-08-01-preview',\n", " },\n", " {\n", " 'model': 'gpt-4-32k-0314',\n", " 'api_key': '<your Azure OpenAI API key here>',\n", - " 'api_base': '<your Azure OpenAI API base here>',\n", + " 'base_url': '<your Azure OpenAI API base here>',\n", " 'api_type': 'azure',\n", - " 'api_version': '2023-06-01-preview',\n", + " 'api_version': '2023-08-01-preview',\n", " },\n", "]\n", "```\n", "\n", - "If you open this notebook in colab, you can upload your files by clicking the file icon on the left panel and then choose \"upload file\" icon.\n", - "\n", - "You can set the value of config_list in other ways you prefer, e.g., loading from a YAML file." + "You can set the value of config_list in any way you prefer. Please refer to this [notebook](https://github.com/microsoft/autogen/blob/main/notebook/oai_openai_utils.ipynb) for full code examples of the different methods." ] }, { @@ -162,7 +160,7 @@ "source": [ "## Example Task: Paper Talk from URL\n", "\n", - "We invoke the `initiate_chat()` method of the user proxy agent to start the conversation. When you run the cell below, you will be prompted to provide feedback after the assistant agent sends a \"TERMINATE\" signal in the end of the message. If you don't provide any feedback (by pressing Enter directly), the conversation will finish. Before the \"TERMINATE\" signal, the user proxy agent will try to execute the code suggested by the assistant agent on behalf of the user." + "We invoke the `initiate_chat()` method of the user proxy agent to start the conversation. When you run the cell below, you will be prompted to provide feedback after the assistant agent sends a \"TERMINATE\" signal at the end of the message. If you don't provide any feedback (by pressing Enter directly), the conversation will finish. Before the \"TERMINATE\" signal, the user proxy agent will try to execute the code suggested by the assistant agent on behalf of the user." ] }, { @@ -606,7 +604,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.17" + "version": "3.11.4" }, "vscode": { "interpreter": { diff --git a/notebook/oai_chatgpt_gpt4.ipynb b/notebook/oai_chatgpt_gpt4.ipynb index 9f273db8b5c..921f1279063 100644 --- a/notebook/oai_chatgpt_gpt4.ipynb +++ b/notebook/oai_chatgpt_gpt4.ipynb @@ -51,7 +51,7 @@ }, "outputs": [], "source": [ - "# %pip install \"pyautogen[blendsearch]\" datasets" + "# %pip install \"pyautogen[blendsearch]<0.2\" datasets" ] }, { @@ -124,13 +124,13 @@ " {'api_key': '<your OpenAI API key here>'}, # only if OpenAI API key is found\n", " {\n", " 'api_key': '<your first Azure OpenAI API key here>',\n", - " 'api_base': '<your first Azure OpenAI API base here>',\n", + " 'base_url': '<your first Azure OpenAI API base here>',\n", " 'api_type': 'azure',\n", " 'api_version': '2023-06-01-preview',\n", " }, # only if the at least one Azure OpenAI API key is found\n", " {\n", " 'api_key': '<your second Azure OpenAI API key here>',\n", - " 'api_base': '<your second Azure OpenAI API base here>',\n", + " 'base_url': '<your second Azure OpenAI API base here>',\n", " 'api_type': 'azure',\n", " 'api_version': '2023-06-01-preview',\n", " }, # only if the second Azure OpenAI API key is found\n", diff --git a/notebook/oai_completion.ipynb b/notebook/oai_completion.ipynb index 029157490da..d3aaacb17cb 100644 --- a/notebook/oai_completion.ipynb +++ b/notebook/oai_completion.ipynb @@ -63,9 +63,9 @@ " - OpenAI API key: os.environ[\"OPENAI_API_KEY\"] or `openai_api_key_file=\"key_openai.txt\"`.\n", " - Azure OpenAI API key: os.environ[\"AZURE_OPENAI_API_KEY\"] or `aoai_api_key_file=\"key_aoai.txt\"`. Multiple keys can be stored, one per line.\n", " - Azure OpenAI API base: os.environ[\"AZURE_OPENAI_API_BASE\"] or `aoai_api_base_file=\"base_aoai.txt\"`. Multiple bases can be stored, one per line.\n", - "* The [`config_list_from_json`](https://microsoft.github.io/autogen/docs/reference/oai/openai_utils#config_list_from_json) function loads a list of configurations from an environment variable or a json file. It first looks for environment variable `env_or_file` which needs to be a valid json string. If that variable is not found, it then looks for a json file with the same name. It filters the configs by filter_dict.\n", + "* The [`config_list_from_json`](https://microsoft.github.io/autogen/docs/reference/oai/openai_utils#config_list_from_json) function loads a list of configurations from an environment variable or a json file. It first looks for the environment variable `env_or_file`, which must be a valid json string. If that variable is not found, it looks for a json file with the same name. It filters the configs by filter_dict.\n", "\n", - "It's OK to have only the OpenAI API key, or only the Azure OpenAI API key + base. If you open this notebook in colab, you can upload your files by clicking the file icon on the left panel and then choose \"upload file\" icon.\n" + "It's OK to have only the OpenAI API key, or only the Azure OpenAI API key + base. If you open this notebook in colab, you can upload your files by clicking the file icon on the left panel and then choosing \"upload file\" icon.\n" ] }, { @@ -91,13 +91,13 @@ "# }, # OpenAI API endpoint for gpt-4\n", "# {\n", "# 'api_key': '<your first Azure OpenAI API key here>',\n", - "# 'api_base': '<your first Azure OpenAI API base here>',\n", + "# 'base_url': '<your first Azure OpenAI API base here>',\n", "# 'api_type': 'azure',\n", "# 'api_version': '2023-03-15-preview',\n", "# }, # Azure OpenAI API endpoint for gpt-4\n", "# {\n", "# 'api_key': '<your second Azure OpenAI API key here>',\n", - "# 'api_base': '<your second Azure OpenAI API base here>',\n", + "# 'base_url': '<your second Azure OpenAI API base here>',\n", "# 'api_type': 'azure',\n", "# 'api_version': '2023-03-15-preview',\n", "# }, # another Azure OpenAI API endpoint for gpt-4\n", @@ -125,14 +125,14 @@ "# {\n", "# 'model': 'gpt-3.5-turbo',\n", "# 'api_key': '<your first Azure OpenAI API key here>',\n", - "# 'api_base': '<your first Azure OpenAI API base here>',\n", + "# 'base_url': '<your first Azure OpenAI API base here>',\n", "# 'api_type': 'azure',\n", "# 'api_version': '2023-06-01-preview',\n", "# }, # Azure OpenAI API endpoint for gpt-3.5-turbo\n", "# {\n", "# 'model': 'gpt-35-turbo-v0301',\n", "# 'api_key': '<your second Azure OpenAI API key here>',\n", - "# 'api_base': '<your second Azure OpenAI API base here>',\n", + "# 'base_url': '<your second Azure OpenAI API base here>',\n", "# 'api_type': 'azure',\n", "# 'api_version': '2023-06-01-preview',\n", "# }, # another Azure OpenAI API endpoint for gpt-3.5-turbo with deployment name gpt-35-turbo-v0301\n", @@ -253,10 +253,10 @@ " \"\"\"I think we all remember that feeling when the result of some long-awaited\n", " event is finally known. The feelings and thoughts you have at that moment are\n", " definitely worth noting down and comparing.\n", - " Your task is to determine if a person correctly guessed the results of a number of matches.\n", + " Your task is to determine if a person correctly guessed the results of several matches.\n", " You are given two arrays of scores and guesses of equal length, where each index shows a match. \n", " Return an array of the same length denoting how far off each guess was. If they have guessed correctly,\n", - " the value is 0, and if not, the value is the absolute difference between the guess and the score.\n", + " the value is 0; if not, the value is the absolute difference between the guess and the score.\n", " \n", " \n", " example:\n", @@ -344,7 +344,7 @@ " autogen.code_utils.eval_function_completions,\n", " assertions=partial(autogen.code_utils.generate_assertions, config_list=config_list),\n", " use_docker=False,\n", - " # Please set use_docker=True if you have docker available to run the generated code.\n", + " # Please set use_docker=True if docker is available to run the generated code.\n", " # Using docker is safer than running the generated code directly.\n", ")\n" ] @@ -399,11 +399,13 @@ "\n", "* `inference_budget` is the target average inference budget per instance in the benchmark. For example, 0.02 means the target inference budget is 0.02 dollars, which translates to 1000 tokens (input + output combined) if the text Davinci model is used.\n", "* `optimization_budget` is the total budget allowed to perform the tuning. For example, 5 means 5 dollars are allowed in total, which translates to 250K tokens for the text Davinci model.\n", - "* `num_sumples` is the number of different hyperparameter configurations which is allowed to try. The tuning will stop after either num_samples trials or after optimization_budget dollars spent, whichever happens first. -1 means no hard restriction in the number of trials and the actual number is decided by `optimization_budget`.\n", + "* `num_sumples` is the number of different hyperparameter configurations allowed to be tried. The tuning will stop after either num_samples trials or after optimization_budget dollars spent, whichever happens first. -1 means no hard restriction in the number of trials and the actual number is decided by `optimization_budget`.\n", "\n", - "Users can specify tuning data, optimization metric, optimization mode, evaluation function, search spaces etc.. The default search space is:\n", + "Users can specify tuning data, optimization metric, optimization mode, evaluation function, search spaces, etc. The default search space is:\n", "\n", "```python\n", + "from flaml import tune\n", + "\n", "default_search_space = {\n", " \"model\": tune.choice([\n", " \"text-ada-001\",\n", @@ -424,8 +426,8 @@ "}\n", "```\n", "\n", - "The default search space can be overridden by users' input.\n", - "For example, the following code specifies three choices for the prompt and two choices of stop sequences. For hyperparameters which don't appear in users' input, the default search space will be used. If you don't have access to gpt-4 or would like to modify the choice of models, you can provide a different search space for model." + "Users' input can override the default search space.\n", + "For example, the following code specifies three choices for the prompt and two choices of stop sequences. The default search space will be used for hyperparameters that don't appear in users' input. If you don't have access to gpt-4 or would like to modify the choice of models, you can provide a different search space for the model." ] }, { @@ -534,7 +536,7 @@ } }, "source": [ - "### Make a request with the tuned config\n", + "### Request with the tuned config\n", "\n", "We can apply the tuned config on the request for an example task:" ] diff --git a/notebook/oai_openai_utils.ipynb b/notebook/oai_openai_utils.ipynb new file mode 100644 index 00000000000..3c020b4ab1a --- /dev/null +++ b/notebook/oai_openai_utils.ipynb @@ -0,0 +1,521 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# In-depth Guide to OpenAI Utility Functions\n", + "\n", + "Managing API configurations can be tricky, especially when dealing with multiple models and API versions. The provided utility functions assist users in managing these configurations effectively. Ensure your API keys and other sensitive data are stored securely. You might store keys in `.txt` or `.env` files or environment variables for local development. Never expose your API keys publicly. If you insist on storing your key files locally on your repo (you shouldn't), ensure the key file path is added to the `.gitignore` file.\n", + "\n", + "#### Steps:\n", + "1. Obtain API keys from OpenAI and optionally from Azure OpenAI (or other provider).\n", + "2. Store them securely using either:\n", + " - Environment Variables: `export OPENAI_API_KEY='your-key'` in your shell.\n", + " - Text File: Save the key in a `key_openai.txt` file.\n", + " - Env File: Save the key to a `.env` file eg: `OPENAI_API_KEY=sk-********************`\n", + "\n", + "---\n", + "\n", + "**TL;DR:** <br>\n", + "There are many ways to generate a `config_list` depending on your use case:\n", + "\n", + "- `get_config_list`: Generates configurations for API calls, primarily from provided API keys.\n", + "- `config_list_openai_aoai`: Constructs a list of configurations using both Azure OpenAI and OpenAI endpoints, sourcing API keys from environment variables or local files.\n", + "- `config_list_from_json`: Loads configurations from a JSON structure, either from an environment variable or a local JSON file, with the flexibility of filtering configurations based on given criteria.\n", + "- `config_list_from_models`: Creates configurations based on a provided list of models, useful when targeting specific models without manually specifying each configuration.\n", + "- `config_list_from_dotenv`: Constructs a configuration list from a `.env` file, offering a consolidated way to manage multiple API configurations and keys from a single file." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### What is a `config_list`?\n", + "When instantiating an assistant, such as the example below, it is passed a `config_list`. This is used to tell the `AssistantAgent` which models or configurations it has access to:\n", + "```python\n", + "\n", + "assistant = AssistantAgent(\n", + " name=\"assistant\",\n", + " llm_config={\n", + " \"timeout\": 600,\n", + " \"cache_seed\": 42,\n", + " \"config_list\": config_list,\n", + " \"temperature\": 0,\n", + " },\n", + ")\n", + "```\n", + "\n", + "Consider an intelligent assistant that utilizes OpenAI's GPT models. Depending on user requests, it might need to:\n", + "\n", + "- Generate creative content (using gpt-4).\n", + "- Answer general queries (using gpt-3.5-turbo).\n", + "\n", + "Different tasks may require different models, and the `config_list` aids in dynamically selecting the appropriate model configuration, managing API keys, endpoints, and versions for efficient operation of the intelligent assistant. In summary, the `config_list` helps the agents work efficiently, reliably, and optimally by managing various configurations and interactions with the OpenAI API - enhancing the adaptability and functionality of the agents." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# %pip install \"pyautogen~=0.2.0b4\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import autogen " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## get_config_list\n", + "\n", + "Used to generate configurations for API calls." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "api_keys = [\"YOUR_OPENAI_API_KEY\"]\n", + "base_urls = None # You can specify API base URLs if needed. eg: localhost:8000\n", + "api_type = \"openai\" # Type of API, e.g., \"openai\" or \"aoai\".\n", + "api_version = None # Specify API version if needed.\n", + "\n", + "config_list = autogen.get_config_list(\n", + " api_keys,\n", + " base_urls=base_urls,\n", + " api_type=api_type,\n", + " api_version=api_version\n", + ")\n", + "\n", + "print(config_list)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## config_list_openai_aoai\n", + "\n", + "This method creates a list of configurations using Azure OpenAI endpoints and OpenAI endpoints. It tries to extract API keys and bases from environment variables or local text files.\n", + "\n", + "Steps:\n", + "- Store OpenAI API key in:\n", + " - Environment variable: `OPENAI_API_KEY`\n", + " - or Local file: `key_openai.txt`\n", + "- Store Azure OpenAI API key in:\n", + " - Environment variable: `AZURE_OPENAI_API_KEY`\n", + " - or Local file: `key_aoai.txt` (Supports multiple keys, one per line)\n", + "- Store Azure OpenAI API base in:\n", + " - Environment variable: `AZURE_OPENAI_API_BASE`\n", + " - or Local file: `base_aoai.txt` (Supports multiple bases, one per line)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "config_list = autogen.config_list_openai_aoai(\n", + " key_file_path=\".\",\n", + " openai_api_key_file=\"key_openai.txt\",\n", + " aoai_api_key_file=\"key_aoai.txt\",\n", + " aoai_api_base_file=\"base_aoai.txt\",\n", + " exclude=None # The API type to exclude, eg: \"openai\" or \"aoai\".\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## config_list_from_json\n", + "\n", + "This method loads configurations from an environment variable or a JSON file. It provides flexibility by allowing users to filter configurations based on certain criteria.\n", + "\n", + "Steps:\n", + "- Setup the JSON Configuration:\n", + " 1. Store configurations in an environment variable named `OAI_CONFIG_LIST` as a valid JSON string.\n", + " 2. Alternatively, save configurations in a local JSON file named `OAI_CONFIG_LIST.json`\n", + " 3. Add `OAI_CONFIG_LIST` to your `.gitignore` file on your local repository.\n", + "\n", + "Your JSON structure should look something like this:\n", + "\n", + "```json\n", + "# OAI_CONFIG_LIST file example\n", + "[\n", + " {\n", + " \"model\": \"gpt-4\",\n", + " \"api_key\": \"YOUR_OPENAI_API_KEY\"\n", + " },\n", + " {\n", + " \"model\": \"gpt-3.5-turbo\",\n", + " \"api_key\": \"YOUR_OPENAI_API_KEY\",\n", + " \"api_version\": \"2023-03-01-preview\"\n", + " }\n", + "]\n", + "\n", + "```\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "config_list = autogen.config_list_from_json(\n", + " env_or_file=\"OAI_CONFIG_LIST\", # or OAI_CONFIG_LIST.json if file extension is added\n", + " filter_dict={\n", + " \"model\": {\n", + " \"gpt-4\",\n", + " \"gpt-3.5-turbo\",\n", + " }\n", + " }\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### What is `filter_dict`?\n", + "\n", + "The z parameter in `autogen.config_list_from_json` function is used to selectively filter the configurations loaded from the environment variable or JSON file based on specified criteria. It allows you to define criteria to select only those configurations that match the defined conditions.\n", + "\n", + "let's say you want to configure an assistant agent to only LLM type. Take the below example: even though we have \"gpt-3.5-turbo\" and \"gpt-4\" in our `OAI_CONFIG_LIST`, this agent would only be configured to use" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "cheap_config_list = autogen.config_list_from_json(\n", + " env_or_file=\"OAI_CONFIG_LIST\", \n", + " filter_dict={\n", + " \"model\": {\n", + " \"gpt-3.5-turbo\",\n", + " }\n", + " }\n", + ")\n", + "\n", + "costly_config_list = autogen.config_list_from_json(\n", + " env_or_file=\"OAI_CONFIG_LIST\", \n", + " filter_dict={\n", + " \"model\": {\n", + " \"gpt-4\",\n", + " }\n", + " }\n", + ")\n", + "\n", + "# Assistant using GPT 3.5 Turbo\n", + "assistant_one = autogen.AssistantAgent(\n", + " name=\"3.5-assistant\",\n", + " llm_config={\n", + " \"timeout\": 600,\n", + " \"cache_seed\": 42,\n", + " \"config_list\": cheap_config_list,\n", + " \"temperature\": 0,\n", + " },\n", + ")\n", + "\n", + "# Assistant using GPT 4\n", + "assistant_two = autogen.AssistantAgent(\n", + " name=\"4-assistant\",\n", + " llm_config={\n", + " \"timeout\": 600,\n", + " \"cache_seed\": 42,\n", + " \"config_list\": costly_config_list,\n", + " \"temperature\": 0,\n", + " },\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "With the `OAI_CONFIG_LIST` we set earlier, there isn't much to filter on. But when the complexity of a project grows and you're managing multiple models for various purposes, you can see how `filter_dict` can be useful. \n", + "\n", + "A more complex filtering criteria could be the following: Assuming we have an `OAI_CONFIG_LIST` several models used to create various agents - Let's say we want to load configurations for `gpt-4` using API version `\"2023-03-01-preview\"` and we want the `api_type` to be `aoai`, we can set up `filter_dict` as follows:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "config_list = autogen.config_list_from_json(\n", + " env_or_file=\"OAI_CONFIG_LIST\",\n", + " filter_dict = {\n", + " \"model\": {\n", + " \"gpt-4\"\n", + " },\n", + " \"api_version\": {\n", + " \"2023-03-01-preview\"\n", + " },\n", + " \"api_type\": \n", + " [\"aoai\"]\n", + " },\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## config_list_from_models\n", + "\n", + "This method creates configurations based on a provided list of models. It's useful when you have specific models in mind and don't want to manually specify each configuration. The [`config_list_from_models`](/docs/reference/oai/openai_utils#config_list_from_models) function tries to create a list of configurations using Azure OpenAI endpoints and OpenAI endpoints for the provided list of models. It assumes the api keys and api bases are stored in the corresponding environment variables or local txt files. It's okay to only have the OpenAI API key, OR only the Azure OpenAI API key + base. For Azure the model name refers to the OpenAI Studio deployment name.\n", + "\n", + "Steps:\n", + "- Similar to method 1, store API keys and bases either in environment variables or `.txt` files." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "config_list = autogen.config_list_from_models(\n", + " key_file_path = \".\",\n", + " openai_api_key_file = \"key_openai.txt\",\n", + " aoai_api_key_file = \"key_aoai.txt\",\n", + " aoai_api_base_file = \"base_aoai.txt\",\n", + " exclude=\"aoai\",\n", + " model_list = None,\n", + " model_list=[\"gpt-4\", \"gpt-3.5-turbo\", \"gpt-3.5-turbo-16k\"],\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## config_list_from_dotenv\n", + "\n", + "If you are interested in keeping all of your keys in a single location like a `.env` file rather than using a configuration specifically for OpenAI, you can use `config_list_from_dotenv`. This allows you to conveniently create a config list without creating a complex `OAI_CONFIG_LIST` file.\n", + "\n", + "The `model_api_key_map` parameter is a dictionary that maps model names to the environment variable names in the `.env` file where their respective API keys are stored. It lets the code know which API key to use for each model. \n", + "\n", + "If not provided, it defaults to using `OPENAI_API_KEY` for `gpt-4` and `OPENAI_API_KEY` for `gpt-3.5-turbo`.\n", + "\n", + "```python\n", + " # default key map\n", + " model_api_key_map = {\n", + " \"gpt-4\": \"OPENAI_API_KEY\",\n", + " \"gpt-3.5-turbo\": \"OPENAI_API_KEY\",\n", + " }\n", + "```\n", + "\n", + "Here is an example `.env` file:\n", + "\n", + "```bash\n", + "OPENAI_API_KEY=sk-*********************\n", + "HUGGING_FACE_API_KEY=**************************\n", + "ANOTHER_API_KEY=1234567890234567890\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[{'api_key': 'sk-*********************', 'model': 'gpt-4'},\n", + " {'api_key': 'sk-*********************', 'model': 'gpt-3.5-turbo'}]" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import autogen\n", + "\n", + "config_list = autogen.config_list_from_dotenv(\n", + " dotenv_file_path='.env', # If None the function will try to find in the working directory\n", + " filter_dict={\n", + " \"model\": {\n", + " \"gpt-4\",\n", + " \"gpt-3.5-turbo\",\n", + " }\n", + " }\n", + ")\n", + "\n", + "config_list" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[{'api_key': '1234567890234567890', 'model': 'gpt-4'},\n", + " {'api_key': 'sk-*********************', 'model': 'gpt-3.5-turbo'}]" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# gpt-3.5-turbo will default to OPENAI_API_KEY\n", + "config_list = autogen.config_list_from_dotenv(\n", + " dotenv_file_path='.env', # If None the function will try to find in the working directory\n", + " model_api_key_map={\n", + " \"gpt-4\": \"ANOTHER_API_KEY\", # String or dict accepted\n", + " },\n", + " filter_dict={\n", + " \"model\": {\n", + " \"gpt-4\",\n", + " \"gpt-3.5-turbo\",\n", + " }\n", + " }\n", + ")\n", + "\n", + "config_list" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[{'api_key': 'sk-*********************', 'model': 'gpt-4'},\n", + " {'api_key': '**************************', 'model': 'vicuna'}]" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# example using different environment variable names\n", + "config_list = autogen.config_list_from_dotenv(\n", + " dotenv_file_path='.env',\n", + " model_api_key_map={\n", + " \"gpt-4\": \"OPENAI_API_KEY\",\n", + " \"vicuna\": \"HUGGING_FACE_API_KEY\",\n", + " },\n", + " filter_dict={\n", + " \"model\": {\n", + " \"gpt-4\",\n", + " \"vicuna\",\n", + " }\n", + " }\n", + ")\n", + "\n", + "config_list" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can also provide additional configurations for APIs, simply by replacing the string value with a dictionary expanding on the configurations. See the example below showing the example of using `gpt-4` on `openai` by default, and using `gpt-3.5-turbo` with additional configurations for `aoai`." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[{'api_key': 'sk-*********************', 'model': 'gpt-4'},\n", + " {'api_key': '1234567890234567890',\n", + " 'base_url': 'https://api.someotherapi.com',\n", + " 'api_type': 'aoai',\n", + " 'api_version': 'v2',\n", + " 'model': 'gpt-3.5-turbo'}]" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "config_list = autogen.config_list_from_dotenv(\n", + " dotenv_file_path='.env',\n", + " model_api_key_map={\n", + " \"gpt-4\": \"OPENAI_API_KEY\",\n", + " \"gpt-3.5-turbo\": {\n", + " \"api_key_env_var\": \"ANOTHER_API_KEY\",\n", + " \"api_type\": \"aoai\",\n", + " \"api_version\": \"v2\",\n", + " \"base_url\": \"https://api.someotherapi.com\"\n", + " }\n", + " },\n", + " filter_dict={\n", + " \"model\": {\n", + " \"gpt-4\",\n", + " \"gpt-3.5-turbo\",\n", + " }\n", + " }\n", + ")\n", + "\n", + "config_list" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "masterclass", + "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.12" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/notebook/viz_gc.png b/notebook/viz_gc.png new file mode 100644 index 00000000000..f45b7ff3980 Binary files /dev/null and b/notebook/viz_gc.png differ diff --git a/samples/tools/testbed/README.md b/samples/tools/testbed/README.md new file mode 100644 index 00000000000..f947a0a5d01 --- /dev/null +++ b/samples/tools/testbed/README.md @@ -0,0 +1,151 @@ +# Autogen Testbed Environment + +The Autogen Testbed environment is a tool for repeatedly running a set of pre-defined Autogen scenarios in a setting with tightly-controlled initial conditions. With each run, Autogen will start from a blank slate, working out what code needs to be written, and what libraries or dependencies to install. The results of each run are logged, and can be ingested by analysis or metrics scripts (see the HumanEval example later in this README). By default, all runs are conducted in freshly-initialized docker containers, providing the recommended level of consistency and safety. + +This Testbed sample has been tested in, and is known to work with, Autogen versions 0.1.14 and 0.2.0b1 + +## Setup + +Before you begin, you must configure your API keys for use with the Testbed. As with other Autogen applications, the Testbed will look for the OpenAI keys in a file in the current working directy, or environment variable named, OAI_CONFIG_LIST. This can be overrriden using a command-line parameter described later. + +For some scenarios, additional keys may be required (e.g., keys for the Bing Search API). These can be added to an `ENV` file in the `includes` folder. A sample has been provided in ``includes/ENV.example``. Edit ``includes/ENV`` as needed. + +The Testbed also requires Docker (Desktop or Engine) AND the __python docker__ library. **It will not run in codespaces**, unless you opt for native execution (with is strongly discouraged). To install Docker Desktop see [https://www.docker.com/products/docker-desktop/](https://www.docker.com/products/docker-desktop/). To install the Python library: + +``pip install docker`` + +## Running the Testbed + +To run the Testbed, simply execute +``python run_scenarios.py`` + +The default it to repeat this scenario 10 times. This can be costly. To run each scenario only once, use: +``python run_scenarios.py --repeat 1`` + + +The run_scenarios.py script also allows a number of command-line arguments to control various parameters of execution. Type ``python run_scenarios.py -h`` to explore these options: + +``` +run_scenarios.py will run the specified autogen scenarios for a given number of repetitions and record all logs and trace information. When running in a Docker environment (default), each run will begin from a common, tightly controlled, environment. The resultant logs can then be further processed by other scripts to produce metrics. + +positional arguments: + scenario The JSONL scenario file to run. If a directory is specified, + then all JSONL scenarios in the directory are run. (default: + ./scenarios) + +options: + -h, --help show this help message and exit + + -r REPEAT, --repeat REPEAT + The number of repetitions to run for each scenario (default: 10). + + -c CONFIG, --config CONFIG + The environment variable name or path to the OAI_CONFIG_LIST (default: OAI_CONFIG_LIST). + + --native Run the scenarios natively rather than in docker. + NOTE: This is not advisable, and should be done with great caution. +``` + +## Results + +By default, the Testbed stores results in a folder heirarchy with the following template: + +``./results/[scenario]/[instance_id]/[repetition]`` + +For example, consider the following folders: + +``./results/default_two_agents/two_agent_stocks_gpt4/0`` +``./results/default_two_agents/two_agent_stocks_gpt4/1`` + +... + +``./results/default_two_agents/two_agent_stocks_gpt4/9`` + +This folder holds the results for the ``two_agent_stocks_gpt4`` instance of the ``default_two_agents`` scenario. The ``0`` folder contains the results of the first run. The ``1`` folder contains the results of the second run, and so on. You can think of the _instance_ as mapping to a prompt, or a unique set of parameters, while the _scenario_ defines the template in which those parameters are input. + +Within each folder, you will find the following files: + +- *timestamp.txt*: records the date and time of the run, along with the version of the pyautogen library installed +- *console_log.txt*: all console output produced by Docker when running autogen. Read this like you would a regular console. +- *chat_completions.json*: a log of all OpenAI ChatCompletions, as logged by ``autogen.ChatCompletion.start_logging(compact=False)`` +- *[agent]_messages.json*: for each Agent, a log of their messages dictionaries +- *./coding*: A directory containing all code written by Autogen, and all artifacts produced by that code. + +## Scenario Templating + +All scenarios are stored in JSONL files in the ``./scenarios'' directory. Each line of a scenario file is a JSON object with the following schema: + +``` +{ + "id": string, + "template": filename, + "values" { + "field_name1": string, + "field_name2": string, + ... + "field_nameN": string + } +} +``` + +For example: + +``` +{ + "id": "two_agent_stocks_gpt4", + "template": "default_two_agents.py", + "values": { + "\__MODEL\__": "gpt-4", + "\__PROMPT\__": "Plot and save to disk a chart of NVDA and TESLA stock price YTD." + } +} +``` + +Where the ``id`` is the instance id used when saving results, ``template`` points to a python file that contains the scenario logic, and ``values`` contains a set of strings to find and replace when expanding the template. + +An example templated python file is: + +``` +from autogen import AssistantAgent, UserProxyAgent, config_list_from_json +import os +import json +import testbed_utils + +testbed_utils.init() +############################## + +config_list = config_list_from_json( + "OAI_CONFIG_LIST", filter_dict={"model": ["\__MODEL\__"]}, +) + +assistant = AssistantAgent("assistant", llm_config={ + "request_timeout": 180, + "config_list": config_list} +) +user_proxy = UserProxyAgent("user_proxy", + human_input_mode="NEVER", + code_execution_config={ + "work_dir": "coding", + "use_docker": False, + }, + max_consecutive_auto_reply=10) +user_proxy.initiate_chat(assistant, message="\__PROMPT\__") + + +############################## +testbed_utils.finalize(assistant, user_proxy) +``` + + +## (Example) Running HumanEval + +One sample Testbed scenario type is a variation of the classic [HumanEval](https://github.com/openai/human-eval) benchmark. In this scenario, agents are given access to the unit test results, and are able to continue to debug their code until the problem is solved or they run out of tokens or turns. We can then count how many turns it took to solve the problem (returning -1 if the problem remains unsolved by the end of the conversation, and "" if the run is missing). + +Accessing this scenario-type requires downloading and converting the HumanEval dataset, running the Testbed, collating the results, and finally computing the metrics. The following commands will accomplish this, running each test instance 3 times with GPT-3.5-Turbo-16k: + +``` +python utils/download_humaneval.py +python ./run_scenarios.py --repeat 3 scenarios/human_eval_two_agents_gpt35.jsonl +python utils/collate_human_eval.py ./results/human_eval_two_agents_gpt35 | python utils/metrics_human_eval.py > human_eval_results_gpt35.csv +cat human_eval_results_gpt35.csv +``` diff --git a/samples/tools/testbed/includes/ENV.example b/samples/tools/testbed/includes/ENV.example new file mode 100644 index 00000000000..b1f190647d0 --- /dev/null +++ b/samples/tools/testbed/includes/ENV.example @@ -0,0 +1 @@ +export BING_API_KEY= diff --git a/samples/tools/testbed/includes/testbed_utils.py b/samples/tools/testbed/includes/testbed_utils.py new file mode 100644 index 00000000000..6818f96e962 --- /dev/null +++ b/samples/tools/testbed/includes/testbed_utils.py @@ -0,0 +1,50 @@ +from importlib.metadata import version as lib_version +from datetime import datetime +import os +import autogen +import json + + +def init(): + """Helper function to initialize logging in a testbed scenario. + Specifically, write timestamp and version information, then + initialize autogen logging. + + Args: + None + + Returns: + None + """ + + # Print some information about the run + with open("timestamp.txt", "wt") as f: + f.write("Timestamp: " + datetime.now().isoformat() + "\n") + f.write("pyautogen version: " + lib_version("pyautogen") + "\n") + + +def finalize(agents): + """Helper function to finalize logging in a testbed scenario. + Calling this function will save all the chat completions logged + by Autogen to disk, and will save the messages dictionaries of + all agents passed via the agents argument. + + Args: + agents (list): a list of the agents whose messages will be logged to disk. + + Returns: + None + """ + + script_dir = os.path.dirname(os.path.realpath(__file__)) + + def messages_to_json(agent): + messages = dict() + for item in agent.chat_messages.items(): + messages[item[0].name] = item[1] + return json.dumps(messages, indent=4) + + for agent in agents: + fname = agent.name + "_messages.json" + with open(os.path.join(script_dir, fname), "wt") as fh: + fh.write(messages_to_json(agent)) diff --git a/samples/tools/testbed/run_scenarios.py b/samples/tools/testbed/run_scenarios.py new file mode 100644 index 00000000000..335a1279854 --- /dev/null +++ b/samples/tools/testbed/run_scenarios.py @@ -0,0 +1,298 @@ +import os +import errno +import shutil +import subprocess +import json +import sys +import time +import pathlib +import argparse +from autogen import config_list_from_json + +# Location of the global includes dir. The contents of this directory will be copied to the Docker environment. +INCLUDES_DIR = "includes" + + +def run_scenarios(scenario, n_repeats, is_native, config_list, results_dir="results"): + """ + Run a set testbed scenarios a given number of times. + + Args: + scenario (path): The file or folder containing the scenario JSONL instances. If given a folder, then + all JSONL files in the folder will be loaded and run. + n_repeats (int): The number of times each scenario instance will be repeated + is_native (bool): True if the scenario should be run locally rather than in Docker (proceed with caution!) + config_list (list): An Autogen OAI_CONFIG_LIST to be used when running scenarios. + results_dir (path): The folder were results will be saved. + """ + + files = [] + + # Figure out which files or folders we are working with + if os.path.isfile(scenario): + files.append(scenario) + elif os.path.isdir(scenario): + for f in os.listdir(scenario): + scenario_file = os.path.join(scenario, f) + + if not os.path.isfile(scenario_file): + continue + + if not scenario_file.lower().endswith(".jsonl"): + continue + + files.append(scenario_file) + else: + raise FileNotFoundError(errno.ENOENT, os.strerror(errno.ENOENT), scenario) + + # Run all the scenario files + for scenario_file in files: + scenario_name = os.path.basename(scenario_file).split(".") + scenario_name.pop() + scenario_name = ".".join(scenario_name) + + scenario_dir = os.path.dirname(os.path.realpath(scenario_file)) + + # Each line in the scenario file is an instance. Run it. + with open(scenario_file) as fh: + for line in fh: + instance = json.loads(line) + + scenario_name + "_" + instance["id"] + + # Create a folder to store the results + + # Results base + if not os.path.isdir(results_dir): + os.mkdir(results_dir) + + # Results for the scenario + results_scenario = os.path.join(results_dir, scenario_name) + if not os.path.isdir(results_scenario): + os.mkdir(results_scenario) + + # Results fot the instance + results_instance = os.path.join(results_scenario, instance["id"]) + if not os.path.isdir(results_instance): + os.mkdir(results_instance) + + # Results for the repeats + for i in range(0, n_repeats): + results_repetition = os.path.join(results_instance, str(i)) + + # Skip it if it already exists + if os.path.isdir(results_repetition): + print(f"Found folder {results_repetition} ... Skipping.") + continue + print(f"Running scenario {results_repetition}") + + # Create the folder, and copy the script to a standard name + os.mkdir(results_repetition) + expand_scenario(scenario_dir, instance, os.path.join(results_repetition, "scenario.py")) + + # Also copy the contents of INCLUDES_DIR + for item in os.listdir(INCLUDES_DIR): + if item.endswith(".example"): + continue + item_path = os.path.join(INCLUDES_DIR, item) + if os.path.isfile(item_path): + shutil.copyfile(item_path, os.path.join(results_repetition, item)) + + # Append the config list to the ENV file + config_list_json = json.dumps(config_list) + with open(os.path.join(results_repetition, "ENV"), "at") as fh: + fh.write(f"export OAI_CONFIG_LIST='{config_list_json}'\n") + + # Run the scenario + if is_native: + run_scenario_natively(results_repetition) + else: + run_scenario_in_docker(results_repetition) + + +def expand_scenario(scenario_dir, scenario, output_file): + template_fh = open(os.path.join(scenario_dir, scenario["template"]), "rt") + output_fh = open(output_file, "wt") + + for line in template_fh: + if "values" in scenario: + for k, v in scenario["values"].items(): + line = line.replace(k, v) + output_fh.write(line) + + template_fh.close() + output_fh.close() + + +def run_scenario_natively(work_dir): + """ + Run a scenario in the native environment. + + Args: + work_dir (path): the path to the working directory previously created to house this sceario instance + """ + + # Get the current working directory + cwd = os.getcwd() + + # Navigate to the scenario + os.chdir(work_dir) + print("\n\n" + os.getcwd() + "\n===================================================================") + + # Prepare the run script + with open(os.path.join("run.sh"), "wt") as f: + f.write( + """# +. ./ENV +python scenario.py +echo SCENARIO COMPLETE !#!# +""" + ) + + # Run the script and log the output + with open("console_log.txt", "wb") as f: + process = subprocess.Popen(["sh", "run.sh"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT) + for c in iter(lambda: process.stdout.read(1), b""): + f.write(c) + os.write(sys.stdout.fileno(), c) # Write binary to stdout + + # Return where we started + os.chdir(cwd) + return + + +def run_scenario_in_docker(work_dir, timeout=600): + """ + Run a scenario in a Docker environment. + + Args: + work_dir (path): the path to the working directory previously created to house this sceario instance + timeout (Optional, int): the number of seconds to allow a Docker container to run before timing out + """ + + # Create a docker client + client = docker.from_env() + image_name = "python:3.11" + + # Pull a suitable image + try: + image = client.images.get(image_name) + except docker.errors.ImageNotFound: + # pull the image + print("Pulling image", image_name) + try: + image = client.images.pull(image_name) + except docker.errors.DockerException: + print("Failed to pull image", image_name) + + # Prepare the run script + with open(os.path.join(work_dir, "run.sh"), "wt") as f: + f.write( + """# +. ./ENV +pip install pyautogen +python scenario.py +rm ENV +echo SCENARIO COMPLETE !#!# +""" + ) + + print("\n\n" + work_dir + "\n===================================================================") + + # Create and run the container + abs_path = str(pathlib.Path(work_dir).absolute()) + container = client.containers.run( + image, + command=["sh", "run.sh"], + working_dir="/workspace", + detach=True, + # get absolute path to the working directory + volumes={abs_path: {"bind": "/workspace", "mode": "rw"}}, + ) + + # Poll until the container is done, or we've timed out + start_time = time.time() + while container.status != "exited" and time.time() - start_time < timeout: + # Reload the container object + container.reload() + + if container.status != "exited": + container.stop() + + logs = container.logs().decode("utf-8").rstrip() + "\nDocker timed out." + print(logs) + with open(os.path.join(work_dir, "console_log.txt"), "wt") as f: + f.write(logs) + + container.remove() + return + + # get the container logs + logs = container.logs().decode("utf-8").rstrip() + container.remove() + + print(logs) + with open(os.path.join(work_dir, "console_log.txt"), "wt") as f: + f.write(logs) + + +############################################################################### +if __name__ == "__main__": + script_name = os.path.basename(__file__) + parser = argparse.ArgumentParser( + description=f"{script_name} will run the specified autogen scenarios for a given number of repetitions and record all logs and trace information. When running in a Docker environment (default), each run will begin from a common, tightly controlled, environment. The resultant logs can then be further processed by other scripts to produce metrics.".strip() + ) + + parser.add_argument( + "scenario", + nargs="?", + help="The JSONL scenario file to run. If a directory is specified, then all JSONL scenarios in the directory are run. (default: ./scenarios)", + default="scenarios", + ) + parser.add_argument( + "-c", + "--config", + type=str, + help="The environment variable name or path to the OAI_CONFIG_LIST (default: OAI_CONFIG_LIST).", + default="OAI_CONFIG_LIST", + ) + parser.add_argument( + "-r", "--repeat", type=int, help="The number of repetitions to run for each scenario (default: 10).", default=10 + ) + parser.add_argument( + "--native", + action="store_true", + help="Run the scenarios natively rather than in docker. NOTE: This is not advisable, and should be done with great caution.", + ) + + args = parser.parse_args() + + # Load the OAI_CONFIG_LIST + config_list = config_list_from_json(env_or_file=args.config) + if len(config_list) == 0: + raise FileNotFoundError(errno.ENOENT, os.strerror(errno.ENOENT), args.config) + + # Warn if running natively + if args.native: + choice = input( + 'WARNING: Running natively, without Docker, not only poses the usual risks of executing arbitrary AI generated code on your machine, it also makes it impossible to ensure that each test starts from a known and consistent set of initial conditions. For example, if the agents spend time debugging and installing Python libraries to solve the task, then those libraries will be available to all other runs. In other words, earlier runs can influence later runs, leading to many confounds in testing.\n\nAre you absolutely sure you want to continue with native execution? Type "Yes" exactly, and in full, to proceed: ' + ) + + if choice.strip().lower() != "yes": + print("Received '" + choice + "'. Exiting.") + + # Import docker if needed + is_native = True if args.native else False + if not is_native: + import docker + + # Warn aboit a common error + env_file = os.path.join(INCLUDES_DIR, "ENV") + example_file = os.path.join(INCLUDES_DIR, "ENV.example") + if not os.path.isfile(env_file): + shutil.copyfile(example_file, env_file) + sys.stderr.write( + f"The environment file '{env_file}' does not exist (perhaps this is your first time setting up the testbed). A default environment file has been provided, but you may want to edit it to include your API keys and configurations.\n" + ) + + run_scenarios(args.scenario, args.repeat, is_native, config_list) diff --git a/samples/tools/testbed/scenarios/default_two_agents.jsonl b/samples/tools/testbed/scenarios/default_two_agents.jsonl new file mode 100644 index 00000000000..4da04167fa6 --- /dev/null +++ b/samples/tools/testbed/scenarios/default_two_agents.jsonl @@ -0,0 +1,6 @@ +{ "id": "two_agent_stocks_gpt4", "template": "default_two_agents.py", "values": { "__MODEL__": "gpt-4", "__PROMPT__": "Plot and save to disk a chart of NVDA and TESLA stock price YTD." } } +{ "id": "two_agent_stocks_gpt35", "template": "default_two_agents.py", "values": { "__MODEL__": "gpt-3.5-turbo-16k", "__PROMPT__": "Plot and save to disk a chart of NVDA and TESLA stock price YTD." } } +{ "id": "two_agent_arxiv_search_gpt4", "template": "default_two_agents.py", "values": { "__MODEL__": "gpt-4", "__PROMPT__": "Find 10 papers on explainable or interpretable AI that were submitted to arXiv within the last year. When printing results, include paper titles, authors, dates, and URLs, but not their abstracts." } } +{ "id": "two_agent_arxiv_search_gpt35", "template": "default_two_agents.py", "values": { "__MODEL__": "gpt-3.5-turbo-16k", "__PROMPT__": "Find 10 papers on explainable or interpretable AI that were submitted to arXiv within the last year. When printing results, include paper titles, authors, dates, and URLs, but not their abstracts." } } +{ "id": "two_agent_mslogo_search_gpt4", "template": "default_two_agents.py", "values": { "__MODEL__": "gpt-4", "__PROMPT__": "Find Microsoft's logo from 1983, and save it to disk. If searching the web, use Bing with API key stored in os.environ['BING_API_KEY']" } } +{ "id": "two_agent_mslogo_search_gpt35", "template": "default_two_agents.py", "values": { "__MODEL__": "gpt-3.5-turbo-16k", "__PROMPT__": "Find Microsoft's logo from 1983, and save it to disk. If searching the web, use Bing with the API key stored in os.environ['BING_API_KEY']" } } diff --git a/samples/tools/testbed/scenarios/default_two_agents.py b/samples/tools/testbed/scenarios/default_two_agents.py new file mode 100644 index 00000000000..c11958fa170 --- /dev/null +++ b/samples/tools/testbed/scenarios/default_two_agents.py @@ -0,0 +1,37 @@ +from autogen import AssistantAgent, UserProxyAgent, config_list_from_json +import os +import json +import testbed_utils + +testbed_utils.init() +############################## + +config_list = config_list_from_json( + "OAI_CONFIG_LIST", + filter_dict={"model": ["__MODEL__"]}, +) + +assistant = AssistantAgent( + "assistant", + is_termination_msg=lambda x: x.get("content", "").rstrip().find("TERMINATE") >= 0, + llm_config={ + # "request_timeout": 180, # Remove for autogen version >= 0.2, and OpenAI version >= 1.0 + "config_list": config_list, + }, +) +user_proxy = UserProxyAgent( + "user_proxy", + human_input_mode="NEVER", + is_termination_msg=lambda x: x.get("content", "").rstrip().find("TERMINATE") >= 0, + code_execution_config={ + "work_dir": "coding", + "use_docker": False, + }, + max_consecutive_auto_reply=10, + default_auto_reply="TERMINATE", +) +user_proxy.initiate_chat(assistant, message="__PROMPT__") + + +############################## +testbed_utils.finalize(agents=[assistant, user_proxy]) diff --git a/samples/tools/testbed/scenarios/human_eval_two_agents.py b/samples/tools/testbed/scenarios/human_eval_two_agents.py new file mode 100644 index 00000000000..f6ca36c87db --- /dev/null +++ b/samples/tools/testbed/scenarios/human_eval_two_agents.py @@ -0,0 +1,91 @@ +from autogen import AssistantAgent, UserProxyAgent, config_list_from_json +import os +import json +import base64 +import testbed_utils + +# NOTE: +# This scenario runs Human Eval in a slightly unconventional way: +# The agents have access to the unit tests, and can keep trying +# until they pass. + +testbed_utils.init() +############################## + +work_dir = "coding" + +# These come formatted as Base64 to avoid conflicting with the triple-quotes +TESTS = base64.b64decode("__TEST_BASE64__").decode("utf-8") +PROMPT = base64.b64decode("__PROMPT_BASE64__").decode("utf-8") + +# Write the tests to a file so that the agents can access them +if not os.path.isdir(work_dir): + os.mkdir(work_dir) +with open(os.path.join(work_dir, "my_tests.py"), "wt") as fh: + fh.write( + TESTS + + """ + + +def run_tests(candidate): + check(candidate) + # We can search for this string in the output + print("ALL TESTS PASSED !#!#\\nTERMINATE") +""" + ) + + +# Ok, now get autogen to solve it. +config_list = config_list_from_json( + "OAI_CONFIG_LIST", + filter_dict={"model": ["__MODEL__"]}, +) + +assistant = AssistantAgent( + "assistant", + is_termination_msg=lambda x: x.get("content", "").rstrip().find("TERMINATE") >= 0, + llm_config={ + # "request_timeout": 180, # Remove for autogen version >= 0.2, and OpenAI version >= 1.0 + "config_list": config_list, + }, +) +user_proxy = UserProxyAgent( + "user_proxy", + human_input_mode="NEVER", + is_termination_msg=lambda x: x.get("content", "").rstrip().find("TERMINATE") >= 0, + code_execution_config={ + "work_dir": work_dir, + "use_docker": False, + }, + max_consecutive_auto_reply=10, + default_auto_reply="TERMINATE", +) +user_proxy.initiate_chat( + assistant, + message=""" +The following python code imports the `run_tests(candidate)` function from my_tests.py, and runs +it on the function `__ENTRY_POINT__`. This will run a set of automated unit tests to verify the +correct implementation of `__ENTRY_POINT__`. However, `__ENTRY_POINT__` is only partially +implemented in the code below. Complete the implementation of `__ENTRY_POINT__` and output +a new stand-alone code block that contains everything needed run the tests, including: importing +`my_tests`, calling `run_tests(__ENTRY_POINT__)`, as well as __ENTRY_POINT__'s comepelte definition, +such that this code block can be run direcly in Python. + +```python +from my_tests import run_tests + + +""" + + PROMPT + + """ + + +# Run the unit tests +run_tests(__ENTRY_POINT__) +``` +""", +) + + +############################## +testbed_utils.finalize(agents=[assistant, user_proxy]) diff --git a/samples/tools/testbed/utils/collate_human_eval.py b/samples/tools/testbed/utils/collate_human_eval.py new file mode 100644 index 00000000000..ed83bb22bbf --- /dev/null +++ b/samples/tools/testbed/utils/collate_human_eval.py @@ -0,0 +1,103 @@ +import os +import errno +import shutil +import subprocess +import json +import sys +import time +import pathlib +import argparse + + +def collate(results_dir): + """ + Collate the results of running human eval. + + Args: + results_dir (path): The folder were results were be saved. + """ + + all_results = list() + max_instances = 0 + + for test_id in os.listdir(results_dir): + test_path = os.path.join(results_dir, test_id) + + # Collect the reslts vector + results = [test_id] + + instance = 0 + instance_dir = os.path.join(test_path, str(instance)) + while os.path.isdir(instance_dir): + console_log = os.path.join(instance_dir, "console_log.txt") + if os.path.isfile(console_log): + with open(console_log, "rt") as fh: + content = fh.read() + if "ALL TESTS PASSED !#!#" in content: + results.append( + str(content.count("assistant (to user_proxy):")) + ) # The number of assistant replies (which is also equal to the number of GPT calls in this case) + else: + results.append("-1") + + else: + # Missing results will appear as blanks + results.append("") + + instance += 1 + instance_dir = os.path.join(test_path, str(instance)) + + max_instances = max(max_instances, instance) + + # Buffer the results + all_results.append(results) + + # Create a header + header = "TestId" + for i in range(0, max_instances): + header += ",Trial" + str(i) + print(header) + + # Print a fully-populated table of results + for r in all_results: + while len(r) < max_instances + 1: + r.append("") + print(",".join(r)) + + +############################################################################### +if __name__ == "__main__": + script_path = os.path.realpath(__file__) + script_name = os.path.basename(script_path) + script_dir = os.path.dirname(script_path) + + # Path to the default results directory + # (relative to this script, up on directory, then into the results folder) + default_results_dir = os.path.realpath( + os.path.join(script_dir, os.path.pardir, "results", "human_eval_two_agents_gpt4") + ) + + parser = argparse.ArgumentParser( + description=f""" +{script_name} will collate the results of the HumanEval scenarios and output them to a CSV. The CSV format is as follows: + +TestId, Trial0, Trial1, ..., TrialN +HumanEval_1, x_10, x_11, ..., X_1N +HumanEval_2, x_20, x_21, ..., X_2N +... +HumanEval_M, x_M0, x_M1, ..., X_MN + + +Where x_ij is the number of AsssitantAgent conversation turns needed to pass all the tests for problem i, in Trial/repetition j. If the agent was not able to pass the tests by the end of the conversation, the value will be -1. If data for the trial is missing, the value will be an empty string "". +""".strip(), + formatter_class=argparse.RawTextHelpFormatter, + ) + + parser.add_argument( + "scenario", + nargs="?", + help="Path to the scenario results. (default: " + default_results_dir + ")", + default=default_results_dir, + ) + args = parser.parse_args() + collate(args.scenario) diff --git a/samples/tools/testbed/utils/download_humaneval.py b/samples/tools/testbed/utils/download_humaneval.py new file mode 100644 index 00000000000..faf6c3c3b55 --- /dev/null +++ b/samples/tools/testbed/utils/download_humaneval.py @@ -0,0 +1,67 @@ +# +# Run this file to download the human_eval dataset, and create a corresponding testbed scenario: +# (default: ../scenarios/human_eval_two_agents_gpt4.jsonl and ./scenarios/human_eval_two_agents_gpt35.jsonl) +# + +import requests +import gzip +import io +import json +import os +import base64 + + +script_path = os.path.realpath(__file__) +script_name = os.path.basename(script_path) +script_dir = os.path.dirname(script_path) + +# Directory where scenarios are stored +scenarios_dir = os.path.realpath(os.path.join(script_dir, os.path.pardir, "scenarios")) +print("Saving HumanEval scenarios to: " + scenarios_dir) + + +# URL of the file to download +url = "https://github.com/openai/human-eval/raw/master/data/HumanEval.jsonl.gz" + +# Send a HTTP request to the URL of the file +response = requests.get(url) + +# Ensure we raise an error if the download failed +response.raise_for_status() + +# Create a BytesIO object from the response content +buffer = io.BytesIO(response.content) + +# Create a scenario file +fh_gpt4 = open(os.path.join(scenarios_dir, "human_eval_two_agents_gpt4.jsonl"), "wt") +fh_gpt35 = open(os.path.join(scenarios_dir, "human_eval_two_agents_gpt35.jsonl"), "wt") + +# Open the buffer as a .gz file and read it line by line +with gzip.GzipFile(fileobj=buffer) as f_in: + for line in f_in: + # Parse each line as JSON + data = json.loads(line) + print("Converting: " + data["task_id"]) + + # Write the GPT-4 scenario + # Prompts and tests are saved in base 64 to greatly simplify escaping them as they + # move through the various formats and scripts. I welcome a better, more readable, alternative. + record = { + "id": data["task_id"].replace("/", "_"), + "template": "human_eval_two_agents.py", + "values": { + "__MODEL__": "gpt-4", + "__PROMPT_BASE64__": base64.b64encode(data["prompt"].encode("utf-8")).decode("utf-8"), + "__ENTRY_POINT__": data["entry_point"], + "__TEST_BASE64__": base64.b64encode(data["test"].encode("utf-8")).decode("utf-8"), + }, + } + fh_gpt4.write(json.dumps(record).strip() + "\n") + + # Write the GPT 3.5 Version + record["values"]["__MODEL__"] = "gpt-3.5-turbo-16k" + fh_gpt35.write(json.dumps(record).strip() + "\n") + + +fh_gpt4.close() +fh_gpt35.close() diff --git a/samples/tools/testbed/utils/metrics_human_eval.py b/samples/tools/testbed/utils/metrics_human_eval.py new file mode 100644 index 00000000000..25d9aa90fda --- /dev/null +++ b/samples/tools/testbed/utils/metrics_human_eval.py @@ -0,0 +1,116 @@ +import os +import sys +import argparse +import csv + + +def metrics(results_fh): + """ + Compute metrics from collated HumanEval results. + + Args: + results_fh (File Stream): A file stream containing the collated results in CSV. + """ + + reader = csv.reader(results_fh) + first_row = next(reader) # Read the first line + + num_trials = len(first_row) - 1 # Don't count the first column (TestId) + max_turns = 0 + num_rows = 0 + + # Load the results. We'll need to iterate over them a few times. + results = list() + for row in reader: + num_rows += 1 + + name = row[0] + trials = [(None if v.strip() == "" else int(v)) for v in row[1:]] + for v in trials: + if v is not None: + max_turns = max(max_turns, v) + results.append([name, trials]) + + # Print the header + header = ["Trial"] + for i in range(1, max_turns + 1): + header.append("cumulative_passes_by_turn_" + str(i)) + header.append("fails") + header.append("missing") + print(",".join(header)) + + # Compute the metrics + def _metrics_for_trial(t): + counts = [None] + fails = 0 + missing = 0 + + # Compute cumulative passes for each conversation turn + for i in range(1, max_turns + 1): + counts.append(0) + assert len(counts) == i + 1 + + for r in results: + v = r[1][t] + if v is not None: + v = int(v) + if 0 <= v and v <= i: + counts[i] += 1 + + # Count missing and failed + for r in results: + v = r[1][t] + if v is None: + missing += 1 + elif int(v) < 0: + fails += 1 + + # Prepare the row in the format specified by the header + return str(t) + "," + ",".join([str(v) for v in counts[1:]]) + "," + str(fails) + "," + str(missing) + + # Print each row + for t in range(0, num_trials): + print(_metrics_for_trial(t)) + + +############################################################################### +if __name__ == "__main__": + script_path = os.path.realpath(__file__) + script_name = os.path.basename(script_path) + script_dir = os.path.dirname(script_path) + + parser = argparse.ArgumentParser( + description=f""" +{script_name} will compute metrics on the collated results of the HumanEval scenarios. Use collate_human_eval.py to prepare input to this script. + +The output will be formatted as a CSV with the following schema: + +Trial, cumulative_passes_by_turn_1, ..., cumulative_passes_by_turn_N, fails, missing +0 x_01, x_0N, y_0, z_0 +1 x_11, x_1N, y_1, z_1 +... +M x_M1, x_MN, y_M, z_M + +Where: + + x_ij is the number of HumanEval problems in Trial i that achieved a passing result by conversation turn j. + y_i is the number of HumanEval problems in Trial i that never achieved a passing result (they failed). + z_i is the number of HumanEval problems in Trial i that have missing data. + +""".strip(), + formatter_class=argparse.RawTextHelpFormatter, + ) + + parser.add_argument( + "scenario", + nargs="?", + help="Path to collated results. If '-' or omitted, read from stdin. (default: '-')", + default="-", + ) + args = parser.parse_args() + + if args.scenario == "" or args.scenario == "-": + metrics(sys.stdin) + else: + with open(args.scenario, "rt") as fh: + metrics(fh) diff --git a/setup.py b/setup.py index 1e036075a36..6c2d3a07435 100644 --- a/setup.py +++ b/setup.py @@ -1,12 +1,12 @@ -import setuptools import os +import setuptools + here = os.path.abspath(os.path.dirname(__file__)) with open("README.md", "r", encoding="UTF-8") as fh: long_description = fh.read() - # Get the code version version = {} with open(os.path.join(here, "autogen/version.py")) as fp: @@ -14,13 +14,14 @@ __version__ = version["__version__"] install_requires = [ - "openai", + "openai==1.1.1", "diskcache", "termcolor", "flaml", + "python-dotenv", + "tiktoken", ] - setuptools.setup( name="pyautogen", version=__version__, @@ -38,29 +39,24 @@ install_requires=install_requires, extras_require={ "test": [ - "pytest>=6.1.1", "coverage>=5.3", - "pre-commit", - "datasets", + "ipykernel", "nbconvert", "nbformat", - "ipykernel", - "pydantic==1.10.9", - "sympy", - "wolframalpha", + "pre-commit", + "pytest-asyncio", + "pytest>=6.1.1", ], "blendsearch": ["flaml[blendsearch]"], "mathchat": ["sympy", "pydantic==1.10.9", "wolframalpha"], - "retrievechat": [ - "chromadb", - "tiktoken", - "sentence_transformers", - ], + "retrievechat": ["chromadb", "sentence_transformers", "pypdf", "ipython"], + "teachable": ["chromadb"], + "lmm": ["replicate", "pillow"], }, classifiers=[ "Programming Language :: Python :: 3", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", ], - python_requires=">=3.8", + python_requires=">=3.8, <3.12", ) diff --git a/test/agentchat/chat_with_teachable_agent.py b/test/agentchat/chat_with_teachable_agent.py new file mode 100644 index 00000000000..f11635a8c68 --- /dev/null +++ b/test/agentchat/chat_with_teachable_agent.py @@ -0,0 +1,60 @@ +from autogen import UserProxyAgent, config_list_from_json +from autogen.agentchat.contrib.teachable_agent import TeachableAgent + + +try: + from termcolor import colored +except ImportError: + + def colored(x, *args, **kwargs): + return x + + +verbosity = 0 # 0 for basic info, 1 to add memory operations, 2 for analyzer messages, 3 for memo lists. +recall_threshold = 1.5 # Higher numbers allow more (but less relevant) memos to be recalled. +use_cache = False # If True, cached LLM calls will be skipped and responses pulled from cache. False exposes LLM non-determinism. + +# Specify the model to use. GPT-3.5 is less reliable than GPT-4 at learning from user input. +filter_dict = {"model": ["gpt-4"]} + + +def create_teachable_agent(reset_db=False): + """Instantiates a TeachableAgent using the settings from the top of this file.""" + # Load LLM inference endpoints from an env variable or a file + # See https://microsoft.github.io/autogen/docs/FAQ#set-your-api-endpoints + # and OAI_CONFIG_LIST_sample + config_list = config_list_from_json(env_or_file="OAI_CONFIG_LIST", filter_dict=filter_dict) + teachable_agent = TeachableAgent( + name="teachableagent", + llm_config={"config_list": config_list, "timeout": 120, "use_cache": use_cache}, + teach_config={ + "verbosity": verbosity, + "reset_db": reset_db, + "path_to_db_dir": "./tmp/interactive/teachable_agent_db", + "recall_threshold": recall_threshold, + }, + ) + return teachable_agent + + +def interact_freely_with_user(): + """Starts a free-form chat between the user and TeachableAgent.""" + + # Create the agents. + print(colored("\nLoading previous memory (if any) from disk.", "light_cyan")) + teachable_agent = create_teachable_agent(reset_db=False) + user = UserProxyAgent("user", human_input_mode="ALWAYS") + + # Start the chat. + teachable_agent.initiate_chat(user, message="Greetings, I'm a teachable user assistant! What's on your mind today?") + + # Let the teachable agent remember things that should be learned from this chat. + teachable_agent.learn_from_user_feedback() + + # Wrap up. + teachable_agent.close_db() + + +if __name__ == "__main__": + """Lets the user test TeachableAgent interactively.""" + interact_freely_with_user() diff --git a/test/agentchat/contrib/test_compressible_agent.py b/test/agentchat/contrib/test_compressible_agent.py new file mode 100644 index 00000000000..06a1ba6146e --- /dev/null +++ b/test/agentchat/contrib/test_compressible_agent.py @@ -0,0 +1,206 @@ +import pytest +import sys +import autogen +import os +from autogen.agentchat.contrib.compressible_agent import CompressibleAgent + +here = os.path.abspath(os.path.dirname(__file__)) +KEY_LOC = "notebook" +OAI_CONFIG_LIST = "OAI_CONFIG_LIST" + + +config_list = autogen.config_list_from_json( + OAI_CONFIG_LIST, + file_location=KEY_LOC, + filter_dict={ + "model": ["gpt-3.5-turbo", "gpt-35-turbo", "gpt-3.5-turbo-16k", "gpt-35-turbo-16k"], + }, +) + +try: + import openai + + OPENAI_INSTALLED = True +except ImportError: + OPENAI_INSTALLED = False + + +@pytest.mark.skipif( + sys.platform in ["darwin", "win32"] or not OPENAI_INSTALLED, + reason="do not run on MacOS or windows or dependency is not installed", +) +def test_mode_compress(): + conversations = {} + + assistant = CompressibleAgent( + name="assistant", + llm_config={ + "timeout": 600, + "cache_seed": 43, + "config_list": config_list, + }, + compress_config={ + "mode": "COMPRESS", + "trigger_count": 600, + "verbose": True, + }, + ) + + user_proxy = autogen.UserProxyAgent( + name="user_proxy", + human_input_mode="NEVER", + max_consecutive_auto_reply=5, + is_termination_msg=lambda x: x.get("content", "").rstrip().endswith("TERMINATE") + or x.get("content", "").rstrip().endswith("TERMINATE."), + code_execution_config={"work_dir": here}, + ) + + user_proxy.initiate_chat( + assistant, + message="Find all $x$ that satisfy the inequality $(2x+10)(x+3)<(3x+9)(x+8)$. Express your answer in interval notation.", + ) + + assistant.reset() + print(conversations) + + +@pytest.mark.skipif( + sys.platform in ["darwin", "win32"] or not OPENAI_INSTALLED, + reason="do not run on MacOS or windows or dependency is not installed", +) +def test_mode_customized(): + try: + assistant = CompressibleAgent( + name="assistant", + llm_config={ + "timeout": 600, + "cache_seed": 43, + "config_list": config_list, + }, + compress_config={ + "mode": "CUSTOMIZED", + }, + ) + except ValueError: + print("ValueError raised as expected.") + + def constrain_num_messages(messages): + """Constrain the number of messages to 3. + + This is an example of a customized compression function. + + Returns: + bool: whether the compression is successful. + list: the compressed messages. + """ + if len(messages) <= 3: + # do nothing + return False, None + + # save the first and last two messages + return True, messages[:1] + messages[-2:] + + # create a CompressibleAgent instance named "assistant" + assistant = CompressibleAgent( + name="assistant", + llm_config={ + "timeout": 600, + "cache_seed": 43, + "config_list": config_list, + "model": "gpt-3.5-turbo", + }, + compress_config={ + "mode": "CUSTOMIZED", + "compress_function": constrain_num_messages, # this is required for customized compression + "trigger_count": 1000, + }, + ) + + # create a UserProxyAgent instance named "user_proxy" + user_proxy = autogen.UserProxyAgent( + name="user_proxy", + human_input_mode="NEVER", + max_consecutive_auto_reply=5, + is_termination_msg=lambda x: x.get("content", "").rstrip().endswith("TERMINATE") + or x.get("content", "").rstrip().endswith("TERMINATE."), + code_execution_config={"work_dir": "web"}, + system_message="""Reply TERMINATE if the task has been solved at full satisfaction. + Otherwise, reply CONTINUE, or the reason why the task is not solved yet.""", + ) + + user_proxy.initiate_chat( + assistant, + message="""Show me the YTD gain of 10 largest technology companies as of today.""", + ) + + +@pytest.mark.skipif( + sys.platform in ["darwin", "win32"] or not OPENAI_INSTALLED, + reason="do not run on MacOS or windows or dependency is not installed", +) +def test_compress_messsage(): + assistant = CompressibleAgent( + name="assistant", + llm_config={ + "timeout": 600, + "cache_seed": 43, + "config_list": config_list, + }, + compress_config={ + "mode": "COMPRESS", + "trigger_count": 600, + "verbose": True, + "leave_last_n": 0, + }, + ) + + assert assistant.compress_messages([{"content": "hello world", "role": "user"}]) == ( + False, + None, + ), "Single message should not be compressed" + + is_success, _ = assistant.compress_messages( + [ + {"content": "Hello!", "role": "user"}, + {"content": "How can I help you today?", "role": "assistant"}, + {"content": "Can you tell me a joke about programming?", "role": "assistant"}, + ] + ) + assert is_success, "Compression failed." + + +def test_mode_terminate(): + assistant = CompressibleAgent( + name="assistant", + llm_config={ + "timeout": 600, + "cache_seed": 43, + "config_list": config_list, + }, + compress_config=True, + ) + + user_proxy = autogen.UserProxyAgent( + name="user_proxy", + is_termination_msg=lambda x: x.get("content", "") and x.get("content", "").rstrip().endswith("TERMINATE"), + human_input_mode="NEVER", + max_consecutive_auto_reply=5, + code_execution_config={"work_dir": "coding"}, + ) + + final, _ = assistant.on_oai_token_limit( + [ + {"content": "Hello!", "role": "user"}, + {"content": "How can I help you today?", "role": "assistant"}, + {"content": "1&" * 5000, "role": "assistant"}, + ], + sender=user_proxy, + ) + assert final, "Terminating the conversation at max token limit is not working." + + +if __name__ == "__main__": + test_mode_compress() + test_mode_customized() + test_compress_messsage() + test_mode_terminate() diff --git a/test/agentchat/contrib/test_gpt_assistant.py b/test/agentchat/contrib/test_gpt_assistant.py new file mode 100644 index 00000000000..fab3fbb77db --- /dev/null +++ b/test/agentchat/contrib/test_gpt_assistant.py @@ -0,0 +1,176 @@ +import pytest +import os +import sys +import autogen + +sys.path.append(os.path.join(os.path.dirname(__file__), "..")) +from test_assistant_agent import KEY_LOC, OAI_CONFIG_LIST # noqa: E402 + +try: + from autogen.agentchat.contrib.gpt_assistant_agent import GPTAssistantAgent + + skip_test = False +except ImportError: + skip_test = True + + +def ask_ossinsight(question): + return f"That is a good question, but I don't know the answer yet. Please ask your human developer friend to help you. \n\n{question}" + + +@pytest.mark.skipif( + sys.platform in ["darwin", "win32"] or skip_test, + reason="do not run on MacOS or windows or dependency is not installed", +) +def test_gpt_assistant_chat(): + ossinsight_api_schema = { + "name": "ossinsight_data_api", + "parameters": { + "type": "object", + "properties": { + "question": { + "type": "string", + "description": "Enter your GitHub data question in the form of a clear and specific question to ensure the returned data is accurate and valuable. For optimal results, specify the desired format for the data table in your request.", + } + }, + "required": ["question"], + }, + "description": "This is an API endpoint allowing users (analysts) to input question about GitHub in text format to retrieve the realted and structured data.", + } + + config_list = autogen.config_list_from_json(OAI_CONFIG_LIST, file_location=KEY_LOC) + analyst = GPTAssistantAgent( + name="Open_Source_Project_Analyst", + llm_config={"tools": [{"type": "function", "function": ossinsight_api_schema}], "config_list": config_list}, + instructions="Hello, Open Source Project Analyst. You'll conduct comprehensive evaluations of open source projects or organizations on the GitHub platform", + ) + analyst.register_function( + function_map={ + "ossinsight_data_api": ask_ossinsight, + } + ) + + ok, response = analyst._invoke_assistant( + [{"role": "user", "content": "What is the most popular open source project on GitHub?"}] + ) + assert ok is True + assert response.get("role", "") == "assistant" + assert len(response.get("content", "")) > 0 + + assert analyst.can_execute_function("ossinsight_data_api") is False + + analyst.reset() + assert len(analyst._openai_threads) == 0 + + +@pytest.mark.skipif( + sys.platform in ["darwin", "win32"] or skip_test, + reason="do not run on MacOS or windows or dependency is not installed", +) +def test_get_assistant_instructions(): + """ + Test function to create a new GPTAssistantAgent, set its instructions, retrieve the instructions, + and assert that the retrieved instructions match the set instructions. + """ + + config_list = autogen.config_list_from_json(OAI_CONFIG_LIST, file_location=KEY_LOC) + assistant = GPTAssistantAgent( + "assistant", + instructions="This is a test", + llm_config={ + "config_list": config_list, + }, + ) + + instruction_match = assistant.get_assistant_instructions() == "This is a test" + assistant.delete_assistant() + + assert instruction_match is True + + +@pytest.mark.skipif( + sys.platform in ["darwin", "win32"] or skip_test, + reason="do not run on MacOS or windows or dependency is not installed", +) +def test_gpt_assistant_instructions_overwrite(): + """ + Test that the instructions of a GPTAssistantAgent can be overwritten or not depending on the value of the + `overwrite_instructions` parameter when creating a new assistant with the same ID. + + Steps: + 1. Create a new GPTAssistantAgent with some instructions. + 2. Get the ID of the assistant. + 3. Create a new GPTAssistantAgent with the same ID but different instructions and `overwrite_instructions=True`. + 4. Check that the instructions of the assistant have been overwritten with the new ones. + """ + + instructions1 = "This is a test #1" + instructions2 = "This is a test #2" + + config_list = autogen.config_list_from_json(OAI_CONFIG_LIST, file_location=KEY_LOC) + assistant = GPTAssistantAgent( + "assistant", + instructions=instructions1, + llm_config={ + "config_list": config_list, + }, + ) + + assistant_id = assistant.assistant_id + assistant = GPTAssistantAgent( + "assistant", + instructions=instructions2, + llm_config={ + "config_list": config_list, + "assistant_id": assistant_id, + }, + overwrite_instructions=True, + ) + + instruction_match = assistant.get_assistant_instructions() == instructions2 + assistant.delete_assistant() + + assert instruction_match is True + + +@pytest.mark.skipif( + sys.platform in ["darwin", "win32"] or skip_test, + reason="do not run on MacOS or windows or dependency is not installed", +) +def test_gpt_assistant_existing_no_instructions(): + """ + Test function to check if the GPTAssistantAgent can retrieve instructions for an existing assistant + even if the assistant was created with no instructions initially. + """ + instructions = "This is a test #1" + + config_list = autogen.config_list_from_json(OAI_CONFIG_LIST, file_location=KEY_LOC) + assistant = GPTAssistantAgent( + "assistant", + instructions=instructions, + llm_config={ + "config_list": config_list, + }, + ) + + assistant_id = assistant.assistant_id + + # create a new assistant with the same ID but no instructions + assistant = GPTAssistantAgent( + "assistant", + llm_config={ + "config_list": config_list, + "assistant_id": assistant_id, + }, + ) + + instruction_match = assistant.get_assistant_instructions() == instructions + assistant.delete_assistant() + assert instruction_match is True + + +if __name__ == "__main__": + test_gpt_assistant_chat() + test_get_assistant_instructions() + test_gpt_assistant_instructions_overwrite() + test_gpt_assistant_existing_no_instructions() diff --git a/test/agentchat/contrib/test_llava.py b/test/agentchat/contrib/test_llava.py new file mode 100644 index 00000000000..570791a70ec --- /dev/null +++ b/test/agentchat/contrib/test_llava.py @@ -0,0 +1,129 @@ +import unittest +from unittest.mock import MagicMock, patch + +import pytest + +import autogen + +try: + from autogen.agentchat.contrib.llava_agent import ( + LLaVAAgent, + _llava_call_binary_with_config, + llava_call, + llava_call_binary, + ) +except ImportError: + skip = True +else: + skip = False + + +@pytest.mark.skipif(skip, reason="dependency is not installed") +class TestLLaVAAgent(unittest.TestCase): + def setUp(self): + self.agent = LLaVAAgent( + name="TestAgent", + llm_config={ + "timeout": 600, + "seed": 42, + "config_list": [{"model": "llava-fake", "base_url": "localhost:8000", "api_key": "Fake"}], + }, + ) + + def test_init(self): + self.assertIsInstance(self.agent, LLaVAAgent) + + +@pytest.mark.skipif(skip, reason="dependency is not installed") +class TestLLavaCallBinaryWithConfig(unittest.TestCase): + @patch("requests.post") + def test_local_mode(self, mock_post): + # Mocking the response of requests.post + mock_response = MagicMock() + mock_response.iter_lines.return_value = [b'{"text":"response text"}'] + mock_post.return_value = mock_response + + # Calling the function + output = _llava_call_binary_with_config( + prompt="Test Prompt", + images=[], + config={"base_url": "http://0.0.0.0/api", "model": "test-model"}, + max_new_tokens=1000, + temperature=0.5, + seed=1, + ) + + # Verifying the results + self.assertEqual(output, "response text") + mock_post.assert_called_once_with( + "http://0.0.0.0/api/worker_generate_stream", + headers={"User-Agent": "LLaVA Client"}, + json={ + "model": "test-model", + "prompt": "Test Prompt", + "max_new_tokens": 1000, + "temperature": 0.5, + "stop": "###", + "images": [], + }, + stream=False, + ) + + @patch("replicate.run") + def test_remote_mode(self, mock_run): + # Mocking the response of replicate.run + mock_run.return_value = iter(["response ", "text"]) + + # Calling the function + output = _llava_call_binary_with_config( + prompt="Test Prompt", + images=["image_data"], + config={"base_url": "http://remote/api", "model": "test-model"}, + max_new_tokens=1000, + temperature=0.5, + seed=1, + ) + + # Verifying the results + self.assertEqual(output, "response text") + mock_run.assert_called_once_with( + "http://remote/api", + input={"image": "data:image/jpeg;base64,image_data", "prompt": "Test Prompt", "seed": 1}, + ) + + +@pytest.mark.skipif(skip, reason="dependency is not installed") +class TestLLavaCall(unittest.TestCase): + @patch("autogen.agentchat.contrib.llava_agent.llava_formater") + @patch("autogen.agentchat.contrib.llava_agent.llava_call_binary") + def test_llava_call(self, mock_llava_call_binary, mock_llava_formater): + # Set up the mocks + mock_llava_formater.return_value = ("formatted prompt", ["image1", "image2"]) + mock_llava_call_binary.return_value = "Generated Text" + + # Set up the llm_config dictionary + llm_config = { + "config_list": [{"api_key": "value", "base_url": "localhost:8000"}], + "max_new_tokens": 2000, + "temperature": 0.5, + "seed": 1, + } + + # Call the function + result = llava_call("Test Prompt", llm_config) + + # Check the results + mock_llava_formater.assert_called_once_with("Test Prompt", order_image_tokens=False) + mock_llava_call_binary.assert_called_once_with( + "formatted prompt", + ["image1", "image2"], + config_list=llm_config["config_list"], + max_new_tokens=2000, + temperature=0.5, + seed=1, + ) + self.assertEqual(result, "Generated Text") + + +if __name__ == "__main__": + unittest.main() diff --git a/test/agentchat/contrib/test_lmm.py b/test/agentchat/contrib/test_lmm.py new file mode 100644 index 00000000000..89ef62ccced --- /dev/null +++ b/test/agentchat/contrib/test_lmm.py @@ -0,0 +1,83 @@ +import unittest +from unittest.mock import MagicMock + +import pytest + +import autogen +from autogen.agentchat.agent import Agent + +try: + from autogen.agentchat.contrib.multimodal_conversable_agent import MultimodalConversableAgent +except ImportError: + skip = True +else: + skip = False + + +base64_encoded_image = ( + "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4" + "//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==" +) + + +@pytest.mark.skipif(skip, reason="dependency is not installed") +class TestMultimodalConversableAgent(unittest.TestCase): + def setUp(self): + self.agent = MultimodalConversableAgent( + name="TestAgent", + llm_config={ + "timeout": 600, + "seed": 42, + "config_list": [{"model": "gpt-4-vision-preview", "api_key": "sk-fake"}], + }, + ) + + def test_system_message(self): + # Test default system message + self.assertEqual( + self.agent.system_message, + [ + { + "type": "text", + "text": "You are a helpful AI assistant.", + } + ], + ) + + # Test updating system message + new_message = f"We will discuss <img {base64_encoded_image}> in this conversation." + self.agent.update_system_message(new_message) + self.assertEqual( + self.agent.system_message, + [ + {"type": "text", "text": "We will discuss "}, + {"type": "image_url", "image_url": {"url": base64_encoded_image}}, + {"type": "text", "text": " in this conversation."}, + ], + ) + + def test_message_to_dict(self): + # Test string message + message_str = "Hello" + expected_dict = {"content": [{"type": "text", "text": "Hello"}]} + self.assertDictEqual(self.agent._message_to_dict(message_str), expected_dict) + + # Test list message + message_list = [{"type": "text", "text": "Hello"}] + expected_dict = {"content": message_list} + self.assertDictEqual(self.agent._message_to_dict(message_list), expected_dict) + + # Test dictionary message + message_dict = {"content": [{"type": "text", "text": "Hello"}]} + self.assertDictEqual(self.agent._message_to_dict(message_dict), message_dict) + + def test_print_received_message(self): + sender = Agent(name="SenderAgent") + message_str = "Hello" + self.agent._print_received_message = MagicMock() # Mocking print method to avoid actual print + self.agent._print_received_message(message_str, sender) + self.agent._print_received_message.assert_called_with(message_str, sender) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/agentchat/contrib/test_qdrant_retrievechat.py b/test/agentchat/contrib/test_qdrant_retrievechat.py new file mode 100644 index 00000000000..1d3c5afd6af --- /dev/null +++ b/test/agentchat/contrib/test_qdrant_retrievechat.py @@ -0,0 +1,105 @@ +import os +import sys +import pytest +from autogen.agentchat.contrib.retrieve_assistant_agent import RetrieveAssistantAgent +from autogen import config_list_from_json + +sys.path.append(os.path.join(os.path.dirname(__file__), "..")) +from test_assistant_agent import KEY_LOC, OAI_CONFIG_LIST # noqa: E402 + +try: + from qdrant_client import QdrantClient + from autogen.agentchat.contrib.qdrant_retrieve_user_proxy_agent import ( + create_qdrant_from_dir, + QdrantRetrieveUserProxyAgent, + query_qdrant, + ) + import fastembed + + QDRANT_INSTALLED = True +except ImportError: + QDRANT_INSTALLED = False + +try: + import openai + + OPENAI_INSTALLED = True +except ImportError: + OPENAI_INSTALLED = False + +test_dir = os.path.join(os.path.dirname(__file__), "../..", "test_files") + + +@pytest.mark.skipif( + sys.platform in ["darwin", "win32"] or not QDRANT_INSTALLED or not OPENAI_INSTALLED, + reason="do not run on MacOS or windows or dependency is not installed", +) +def test_retrievechat(): + conversations = {} + # ChatCompletion.start_logging(conversations) # deprecated in v0.2 + + config_list = config_list_from_json( + OAI_CONFIG_LIST, + file_location=KEY_LOC, + ) + + assistant = RetrieveAssistantAgent( + name="assistant", + system_message="You are a helpful assistant.", + llm_config={ + "timeout": 600, + "seed": 42, + "config_list": config_list, + }, + ) + + client = QdrantClient(":memory:") + ragproxyagent = QdrantRetrieveUserProxyAgent( + name="ragproxyagent", + human_input_mode="NEVER", + max_consecutive_auto_reply=2, + retrieve_config={ + "client": client, + "docs_path": "./website/docs", + "chunk_token_size": 2000, + }, + ) + + assistant.reset() + + code_problem = "How can I use FLAML to perform a classification task, set use_spark=True, train 30 seconds and force cancel jobs if time limit is reached." + ragproxyagent.initiate_chat(assistant, problem=code_problem, silent=True) + print(conversations) + + +@pytest.mark.skipif(not QDRANT_INSTALLED, reason="qdrant_client is not installed") +def test_qdrant_filter(): + client = QdrantClient(":memory:") + create_qdrant_from_dir(dir_path="./website/docs", client=client, collection_name="autogen-docs") + results = query_qdrant( + query_texts=["How can I use AutoGen UserProxyAgent and AssistantAgent to do code generation?"], + n_results=4, + client=client, + collection_name="autogen-docs", + # Return only documents with "AutoGen" in the string + search_string="AutoGen", + ) + assert len(results["ids"][0]) == 4 + + +@pytest.mark.skipif(not QDRANT_INSTALLED, reason="qdrant_client is not installed") +def test_qdrant_search(): + client = QdrantClient(":memory:") + create_qdrant_from_dir(test_dir, client=client) + + assert client.get_collection("all-my-documents") + + # Perform a semantic search without any filter + results = query_qdrant(["autogen"], client=client) + assert isinstance(results, dict) and any("autogen" in res[0].lower() for res in results.get("documents", [])) + + +if __name__ == "__main__": + test_retrievechat() + test_qdrant_filter() + test_qdrant_search() diff --git a/test/agentchat/test_retrievechat.py b/test/agentchat/contrib/test_retrievechat.py similarity index 57% rename from test/agentchat/test_retrievechat.py rename to test/agentchat/contrib/test_retrievechat.py index bde5730cbbb..d701ebc532e 100644 --- a/test/agentchat/test_retrievechat.py +++ b/test/agentchat/contrib/test_retrievechat.py @@ -1,17 +1,21 @@ import pytest +import os import sys import autogen -from test_assistant_agent import KEY_LOC, OAI_CONFIG_LIST + +sys.path.append(os.path.join(os.path.dirname(__file__), "..")) +from test_assistant_agent import KEY_LOC, OAI_CONFIG_LIST # noqa: E402 try: + import openai from autogen.agentchat.contrib.retrieve_assistant_agent import ( RetrieveAssistantAgent, ) from autogen.agentchat.contrib.retrieve_user_proxy_agent import ( RetrieveUserProxyAgent, ) - from autogen.retrieve_utils import create_vector_db_from_dir, query_vector_db import chromadb + from chromadb.utils import embedding_functions as ef skip_test = False except ImportError: @@ -20,35 +24,28 @@ @pytest.mark.skipif( sys.platform in ["darwin", "win32"] or skip_test, - reason="do not run on MacOS or windows", + reason="do not run on MacOS or windows or dependency is not installed", ) def test_retrievechat(): - try: - import openai - except ImportError: - return - conversations = {} - autogen.ChatCompletion.start_logging(conversations) + # autogen.ChatCompletion.start_logging(conversations) # deprecated in v0.2 config_list = autogen.config_list_from_json( OAI_CONFIG_LIST, file_location=KEY_LOC, - filter_dict={ - "model": ["gpt-4", "gpt4", "gpt-4-32k", "gpt-4-32k-0314"], - }, ) assistant = RetrieveAssistantAgent( name="assistant", system_message="You are a helpful assistant.", llm_config={ - "request_timeout": 600, + "timeout": 600, "seed": 42, "config_list": config_list, }, ) + sentence_transformer_ef = ef.SentenceTransformerEmbeddingFunction() ragproxyagent = RetrieveUserProxyAgent( name="ragproxyagent", human_input_mode="NEVER", @@ -58,6 +55,8 @@ def test_retrievechat(): "chunk_token_size": 2000, "model": config_list[0]["model"], "client": chromadb.PersistentClient(path="/tmp/chromadb"), + "embedding_function": sentence_transformer_ef, + "get_or_create": True, }, ) @@ -69,26 +68,5 @@ def test_retrievechat(): print(conversations) -@pytest.mark.skipif( - sys.platform in ["darwin", "win32"] or skip_test, - reason="do not run on MacOS or windows", -) -def test_retrieve_utils(): - client = chromadb.PersistentClient(path="/tmp/chromadb") - create_vector_db_from_dir(dir_path="./website/docs", client=client, collection_name="autogen-docs") - results = query_vector_db( - query_texts=[ - "How can I use AutoGen UserProxyAgent and AssistantAgent to do code generation?", - ], - n_results=4, - client=client, - collection_name="autogen-docs", - search_string="AutoGen", - ) - print(results["ids"][0]) - assert len(results["ids"][0]) == 4 - - if __name__ == "__main__": test_retrievechat() - test_retrieve_utils() diff --git a/test/agentchat/test_assistant_agent.py b/test/agentchat/test_assistant_agent.py index c36cc35e4fb..361c71f56fc 100644 --- a/test/agentchat/test_assistant_agent.py +++ b/test/agentchat/test_assistant_agent.py @@ -20,7 +20,7 @@ def test_ai_user_proxy_agent(): return conversations = {} - autogen.ChatCompletion.start_logging(conversations) + # autogen.ChatCompletion.start_logging(conversations) config_list = autogen.config_list_from_json( OAI_CONFIG_LIST, @@ -30,8 +30,8 @@ def test_ai_user_proxy_agent(): "assistant", system_message="You are a helpful assistant.", llm_config={ - "request_timeout": 600, - "seed": 42, + "timeout": 600, + "cache_seed": 42, "config_list": config_list, }, ) @@ -78,7 +78,7 @@ def test_gpt35(human_input_mode="NEVER", max_consecutive_auto_reply=5): }, ) llm_config = { - "seed": 42, + "cache_seed": 42, "config_list": config_list, "max_tokens": 1024, } @@ -97,7 +97,10 @@ def test_gpt35(human_input_mode="NEVER", max_consecutive_auto_reply=5): "timeout": 60, }, llm_config=llm_config, - system_message="""Reply TERMINATE to end the conversation.""", + system_message="""Is code provided but not enclosed in ``` blocks? +If so, remind that code blocks need to be enclosed in ``` blocks. +Reply TERMINATE to end the conversation if the task is finished. Don't say appreciation. +If "Thank you" or "You\'re welcome" are said in the conversation, then say TERMINATE and that is your last message.""", ) user.initiate_chat(assistant, message="TERMINATE") # should terminate without sending any message @@ -119,10 +122,10 @@ def test_create_execute_script(human_input_mode="NEVER", max_consecutive_auto_re config_list = autogen.config_list_from_json(OAI_CONFIG_LIST, file_location=KEY_LOC) conversations = {} - autogen.ChatCompletion.start_logging(conversations) + # autogen.ChatCompletion.start_logging(conversations) llm_config = { - "request_timeout": 600, - "seed": 42, + "timeout": 600, + "cache_seed": 42, "config_list": config_list, } assistant = AssistantAgent( @@ -148,10 +151,12 @@ def test_create_execute_script(human_input_mode="NEVER", max_consecutive_auto_re ```""", ) print(conversations) - autogen.ChatCompletion.start_logging(compact=False) + # autogen.ChatCompletion.print_usage_summary() + # autogen.ChatCompletion.start_logging(compact=False) user.send("""Execute temp.py""", assistant) - print(autogen.ChatCompletion.logged_history) - autogen.ChatCompletion.stop_logging() + # print(autogen.ChatCompletion.logged_history) + # autogen.ChatCompletion.print_usage_summary() + # autogen.ChatCompletion.stop_logging() def test_tsp(human_input_mode="NEVER", max_consecutive_auto_reply=10): @@ -182,7 +187,7 @@ def __init__(self, *args, **kwargs): def generate_init_message(self, question) -> str: return self._prompt.format(question=question) - autogen.ChatCompletion.start_logging() + # autogen.ChatCompletion.start_logging() assistant = AssistantAgent("assistant", llm_config={"temperature": 0, "config_list": config_list}) user = TSPUserProxyAgent( "user", @@ -191,14 +196,14 @@ def generate_init_message(self, question) -> str: max_consecutive_auto_reply=max_consecutive_auto_reply, ) user.initiate_chat(assistant, question=hard_questions[2]) - print(autogen.ChatCompletion.logged_history) - autogen.ChatCompletion.stop_logging() + # print(autogen.ChatCompletion.logged_history) + # autogen.ChatCompletion.stop_logging() if __name__ == "__main__": - test_gpt35() + # test_gpt35() # test_create_execute_script(human_input_mode="TERMINATE") # when GPT-4, i.e., the DEFAULT_MODEL, is used, conversation in the following test # should terminate in 2-3 rounds of interactions (because is_termination_msg should be true after 2-3 rounds) # although the max_consecutive_auto_reply is set to 10. - # test_tsp(human_input_mode="NEVER", max_consecutive_auto_reply=10) + test_tsp(human_input_mode="NEVER", max_consecutive_auto_reply=10) diff --git a/test/agentchat/test_async.py b/test/agentchat/test_async.py index 9a806e6af40..76176131015 100644 --- a/test/agentchat/test_async.py +++ b/test/agentchat/test_async.py @@ -1,3 +1,4 @@ +import pytest import asyncio import autogen from test_assistant_agent import KEY_LOC, OAI_CONFIG_LIST @@ -44,6 +45,7 @@ def get_market_news(ind, ind_upper): return feeds_summary +@pytest.mark.asyncio async def test_stream(): try: import openai @@ -68,8 +70,8 @@ async def add_stock_price_data(): assistant = autogen.AssistantAgent( name="assistant", llm_config={ - "request_timeout": 600, - "seed": 41, + "timeout": 600, + "cache_seed": 41, "config_list": config_list, "temperature": 0, }, diff --git a/test/agentchat/test_async_get_human_input.py b/test/agentchat/test_async_get_human_input.py new file mode 100644 index 00000000000..2daca19f2d9 --- /dev/null +++ b/test/agentchat/test_async_get_human_input.py @@ -0,0 +1,35 @@ +import asyncio +import autogen +import pytest +from test_assistant_agent import KEY_LOC, OAI_CONFIG_LIST + + +@pytest.mark.asyncio +async def test_async_get_human_input(): + try: + import openai + except ImportError: + return + config_list = autogen.config_list_from_json(OAI_CONFIG_LIST, KEY_LOC) + + # create an AssistantAgent instance named "assistant" + assistant = autogen.AssistantAgent( + name="assistant", + max_consecutive_auto_reply=2, + llm_config={"timeout": 600, "cache_seed": 41, "config_list": config_list, "temperature": 0}, + ) + + user_proxy = autogen.UserProxyAgent(name="user", human_input_mode="ALWAYS", code_execution_config=False) + + async def custom_a_get_human_input(prompt): + return "This is a test" + + user_proxy.a_get_human_input = custom_a_get_human_input + + user_proxy.register_reply([autogen.Agent, None], autogen.ConversableAgent.a_check_termination_and_human_reply) + + await user_proxy.a_initiate_chat(assistant, clear_history=True, message="Hello.") + + +if __name__ == "__main__": + test_async_get_human_input() diff --git a/test/agentchat/test_conversable_agent.py b/test/agentchat/test_conversable_agent.py index d7ecc388fe8..4ba92cbc4c6 100644 --- a/test/agentchat/test_conversable_agent.py +++ b/test/agentchat/test_conversable_agent.py @@ -2,9 +2,20 @@ from autogen.agentchat import ConversableAgent +@pytest.fixture +def conversable_agent(): + return ConversableAgent( + "conversable_agent_0", + max_consecutive_auto_reply=10, + code_execution_config=False, + llm_config=False, + human_input_mode="NEVER", + ) + + def test_trigger(): agent = ConversableAgent("a0", max_consecutive_auto_reply=0, llm_config=False, human_input_mode="NEVER") - agent1 = ConversableAgent("a1", max_consecutive_auto_reply=0, human_input_mode="NEVER") + agent1 = ConversableAgent("a1", max_consecutive_auto_reply=0, llm_config=False, human_input_mode="NEVER") agent.register_reply(agent1, lambda recipient, messages, sender, config: (True, "hello")) agent1.initiate_chat(agent, message="hi") assert agent1.last_message(agent)["content"] == "hello" @@ -42,7 +53,7 @@ def test_trigger(): def test_context(): agent = ConversableAgent("a0", max_consecutive_auto_reply=0, llm_config=False, human_input_mode="NEVER") - agent1 = ConversableAgent("a1", max_consecutive_auto_reply=0, human_input_mode="NEVER") + agent1 = ConversableAgent("a1", max_consecutive_auto_reply=0, llm_config=False, human_input_mode="NEVER") agent1.send( { "content": "hello {name}", @@ -76,9 +87,51 @@ def test_context(): # expect hello there to be printed +def test_generate_code_execution_reply(): + agent = ConversableAgent( + "a0", max_consecutive_auto_reply=10, code_execution_config=False, llm_config=False, human_input_mode="NEVER" + ) + + dummy_messages = [ + { + "content": "no code block", + "role": "user", + }, + { + "content": "no code block", + "role": "user", + }, + ] + + code_message = { + "content": '```python\nprint("hello world")\n```', + "role": "user", + } + + # scenario 1: if code_execution_config is not provided, the code execution should return false, none + assert agent.generate_code_execution_reply(dummy_messages, config=False) == (False, None) + + # scenario 2: if code_execution_config is provided, but no code block is found, the code execution should return false, none + assert agent.generate_code_execution_reply(dummy_messages, config={}) == (False, None) + + # scenario 3: if code_execution_config is provided, and code block is found, but it's not within the range of last_n_messages, the code execution should return false, none + assert agent.generate_code_execution_reply([code_message] + dummy_messages, config={"last_n_messages": 1}) == ( + False, + None, + ) + + # scenario 4: if code_execution_config is provided, and code block is found, and it's within the range of last_n_messages, the code execution should return true, code block + agent._code_execution_config = {"last_n_messages": 3, "use_docker": False} + assert agent.generate_code_execution_reply([code_message] + dummy_messages) == ( + True, + "exitcode: 0 (execution succeeded)\nCode output: \nhello world\n", + ) + assert agent._code_execution_config["last_n_messages"] == 3 + + def test_max_consecutive_auto_reply(): agent = ConversableAgent("a0", max_consecutive_auto_reply=2, llm_config=False, human_input_mode="NEVER") - agent1 = ConversableAgent("a1", max_consecutive_auto_reply=0, human_input_mode="NEVER") + agent1 = ConversableAgent("a1", max_consecutive_auto_reply=0, llm_config=False, human_input_mode="NEVER") assert agent.max_consecutive_auto_reply() == agent.max_consecutive_auto_reply(agent1) == 2 agent.update_max_consecutive_auto_reply(1) assert agent.max_consecutive_auto_reply() == agent.max_consecutive_auto_reply(agent1) == 1 @@ -106,8 +159,8 @@ def test_max_consecutive_auto_reply(): def test_conversable_agent(): - dummy_agent_1 = ConversableAgent(name="dummy_agent_1", human_input_mode="ALWAYS") - dummy_agent_2 = ConversableAgent(name="dummy_agent_2", human_input_mode="TERMINATE") + dummy_agent_1 = ConversableAgent(name="dummy_agent_1", llm_config=False, human_input_mode="ALWAYS") + dummy_agent_2 = ConversableAgent(name="dummy_agent_2", llm_config=False, human_input_mode="TERMINATE") # monkeypatch.setattr(sys, "stdin", StringIO("exit")) dummy_agent_1.receive("hello", dummy_agent_2) # receive a str @@ -153,13 +206,19 @@ def test_conversable_agent(): dummy_agent_1.update_system_message("new system message") assert dummy_agent_1.system_message == "new system message" + dummy_agent_3 = ConversableAgent(name="dummy_agent_3", llm_config=False, human_input_mode="TERMINATE") + with pytest.raises(KeyError): + dummy_agent_1.last_message(dummy_agent_3) + def test_generate_reply(): def add_num(num_to_be_added): given_num = 10 return num_to_be_added + given_num - dummy_agent_2 = ConversableAgent(name="user_proxy", human_input_mode="TERMINATE", function_map={"add_num": add_num}) + dummy_agent_2 = ConversableAgent( + name="user_proxy", llm_config=False, human_input_mode="TERMINATE", function_map={"add_num": add_num} + ) messsages = [{"function_call": {"name": "add_num", "arguments": '{ "num_to_be_added": 5 }'}, "role": "assistant"}] # when sender is None, messages is provided @@ -168,15 +227,26 @@ def add_num(num_to_be_added): ), "generate_reply not working when sender is None" # when sender is provided, messages is None - dummy_agent_1 = ConversableAgent(name="dummy_agent_1", human_input_mode="ALWAYS") + dummy_agent_1 = ConversableAgent(name="dummy_agent_1", llm_config=False, human_input_mode="ALWAYS") dummy_agent_2._oai_messages[dummy_agent_1] = messsages assert ( dummy_agent_2.generate_reply(messages=None, sender=dummy_agent_1)["content"] == "15" ), "generate_reply not working when messages is None" +def test_generate_reply_raises_on_messages_and_sender_none(conversable_agent): + with pytest.raises(AssertionError): + conversable_agent.generate_reply(messages=None, sender=None) + + +@pytest.mark.asyncio +async def test_a_generate_reply_raises_on_messages_and_sender_none(conversable_agent): + with pytest.raises(AssertionError): + await conversable_agent.a_generate_reply(messages=None, sender=None) + + if __name__ == "__main__": - test_trigger() + # test_trigger() # test_context() # test_max_consecutive_auto_reply() - # test_conversable_agent(pytest.monkeypatch) + test_conversable_agent() diff --git a/test/test_function_call.py b/test/agentchat/test_function_call.py similarity index 60% rename from test/test_function_call.py rename to test/agentchat/test_function_call.py index 9b026ca3c1d..ef2ad5cc3ee 100644 --- a/test/test_function_call.py +++ b/test/agentchat/test_function_call.py @@ -1,15 +1,16 @@ try: - import openai + from openai import OpenAI except ImportError: - openai = None + OpenAI = None import pytest +import asyncio import json import autogen from autogen.math_utils import eval_math_responses -from test_code import KEY_LOC +from test_assistant_agent import KEY_LOC -@pytest.mark.skipif(openai is None, reason="openai not installed") +@pytest.mark.skipif(OpenAI is None, reason="openai>=1 not installed") def test_eval_math_responses(): config_list = autogen.config_list_from_models( KEY_LOC, exclude="aoai", model_list=["gpt-4-0613", "gpt-3.5-turbo-0613", "gpt-3.5-turbo-16k"] @@ -35,8 +36,8 @@ def test_eval_math_responses(): }, }, ] - response = autogen.ChatCompletion.create( - config_list=config_list, + client = autogen.OpenAIWrapper(config_list=config_list) + response = client.create( messages=[ { "role": "user", @@ -46,10 +47,10 @@ def test_eval_math_responses(): functions=functions, ) print(response) - responses = autogen.ChatCompletion.extract_text_or_function_call(response) + responses = client.extract_text_or_function_call(response) print(responses[0]) - function_call = responses[0]["function_call"] - name, arguments = function_call["name"], json.loads(function_call["arguments"]) + function_call = responses[0].function_call + name, arguments = function_call.name, json.loads(function_call.arguments) assert name == "eval_math_responses" print(arguments["responses"]) # if isinstance(arguments["responses"], str): @@ -127,7 +128,68 @@ def get_number(): assert user.execute_function(func_call)[1]["content"] == "42" +@pytest.mark.asyncio +async def test_a_execute_function(): + from autogen.agentchat import UserProxyAgent + import time + + # Create an async function + async def add_num(num_to_be_added): + given_num = 10 + time.sleep(1) + return num_to_be_added + given_num + + user = UserProxyAgent(name="test", function_map={"add_num": add_num}) + correct_args = {"name": "add_num", "arguments": '{ "num_to_be_added": 5 }'} + + # Asset coroutine doesn't match. + assert user.execute_function(func_call=correct_args)[1]["content"] != "15" + # Asset awaited coroutine does match. + assert (await user.a_execute_function(func_call=correct_args))[1]["content"] == "15" + + # function name called is wrong or doesn't exist + wrong_func_name = {"name": "subtract_num", "arguments": '{ "num_to_be_added": 5 }'} + assert "Error: Function" in (await user.a_execute_function(func_call=wrong_func_name))[1]["content"] + + # arguments passed is not in correct json format + wrong_json_format = { + "name": "add_num", + "arguments": '{ "num_to_be_added": 5, given_num: 10 }', + } # should be "given_num" with quotes + assert ( + "You argument should follow json format." + in (await user.a_execute_function(func_call=wrong_json_format))[1]["content"] + ) + + # function execution error with wrong arguments passed + wrong_args = {"name": "add_num", "arguments": '{ "num_to_be_added": 5, "given_num": 10 }'} + assert "Error: " in (await user.a_execute_function(func_call=wrong_args))[1]["content"] + + # 2. test calling a class method + class AddNum: + def __init__(self, given_num): + self.given_num = given_num + + def add(self, num_to_be_added): + self.given_num = num_to_be_added + self.given_num + return self.given_num + + user = UserProxyAgent(name="test", function_map={"add_num": AddNum(given_num=10).add}) + func_call = {"name": "add_num", "arguments": '{ "num_to_be_added": 5 }'} + assert (await user.a_execute_function(func_call=func_call))[1]["content"] == "15" + assert (await user.a_execute_function(func_call=func_call))[1]["content"] == "20" + + # 3. test calling a function with no arguments + def get_number(): + return 42 + + user = UserProxyAgent("user", function_map={"get_number": get_number}) + func_call = {"name": "get_number", "arguments": "{}"} + assert (await user.a_execute_function(func_call))[1]["content"] == "42" + + if __name__ == "__main__": - test_json_extraction() - test_execute_function() + # test_json_extraction() + # test_execute_function() + asyncio.run(test_a_execute_function()) test_eval_math_responses() diff --git a/test/agentchat/test_function_call_groupchat.py b/test/agentchat/test_function_call_groupchat.py new file mode 100644 index 00000000000..48414903562 --- /dev/null +++ b/test/agentchat/test_function_call_groupchat.py @@ -0,0 +1,63 @@ +import autogen +import pytest +import sys +from test_assistant_agent import KEY_LOC, OAI_CONFIG_LIST + +try: + from openai import OpenAI +except ImportError: + skip = True +else: + skip = False + + +@pytest.mark.skipif( + skip or not sys.version.startswith("3.10"), + reason="do not run if openai is not installed or py!=3.10", +) +def test_function_call_groupchat(): + import random + + def get_random_number(): + return random.randint(0, 100) + + config_list_gpt4 = autogen.config_list_from_json( + OAI_CONFIG_LIST, + filter_dict={ + "model": ["gpt-4", "gpt-4-0314", "gpt4", "gpt-4-32k", "gpt-4-32k-0314", "gpt-4-32k-v0314"], + }, + file_location=KEY_LOC, + ) + llm_config = { + "config_list": config_list_gpt4, + "cache_seed": 42, + "functions": [ + { + "name": "get_random_number", + "description": "Get a random number between 0 and 100", + "parameters": { + "type": "object", + "properties": {}, + }, + }, + ], + } + user_proxy = autogen.UserProxyAgent( + name="User_proxy", + system_message="A human admin that will execute function_calls.", + function_map={"get_random_number": get_random_number}, + human_input_mode="NEVER", + ) + coder = autogen.AssistantAgent( + name="Player", + system_message="You will can function `get_random_number` to get a random number. Stop only when you get at least 1 even number and 1 odd number. Reply TERMINATE to stop.", + llm_config=llm_config, + ) + groupchat = autogen.GroupChat(agents=[user_proxy, coder], messages=[], max_round=7) + manager = autogen.GroupChatManager(groupchat=groupchat, llm_config=llm_config) + + user_proxy.initiate_chat(manager, message="Let's start the game!") + + +if __name__ == "__main__": + test_function_call_groupchat() diff --git a/test/agentchat/test_groupchat.py b/test/agentchat/test_groupchat.py index 5c5d3fb8257..c50ef45cdcc 100644 --- a/test/agentchat/test_groupchat.py +++ b/test/agentchat/test_groupchat.py @@ -1,6 +1,54 @@ +import pytest import autogen +def test_func_call_groupchat(): + agent1 = autogen.ConversableAgent( + "alice", + human_input_mode="NEVER", + llm_config=False, + default_auto_reply="This is alice sepaking.", + ) + agent2 = autogen.ConversableAgent( + "bob", + human_input_mode="NEVER", + llm_config=False, + default_auto_reply="This is bob speaking.", + function_map={"test_func": lambda x: x}, + ) + groupchat = autogen.GroupChat(agents=[agent1, agent2], messages=[], max_round=3) + group_chat_manager = autogen.GroupChatManager(groupchat=groupchat, llm_config=False) + agent2.initiate_chat(group_chat_manager, message={"function_call": {"name": "test_func", "arguments": '{"x": 1}'}}) + + assert len(groupchat.messages) == 3 + assert ( + groupchat.messages[-2]["role"] == "function" + and groupchat.messages[-2]["name"] == "test_func" + and groupchat.messages[-2]["content"] == "1" + ) + assert groupchat.messages[-1]["name"] == "alice" + + agent3 = autogen.ConversableAgent( + "carol", + human_input_mode="NEVER", + llm_config=False, + default_auto_reply="This is carol speaking.", + function_map={"test_func": lambda x: x + 1}, + ) + groupchat = autogen.GroupChat(agents=[agent1, agent2, agent3], messages=[], max_round=3) + group_chat_manager = autogen.GroupChatManager(groupchat=groupchat, llm_config=False) + agent3.initiate_chat(group_chat_manager, message={"function_call": {"name": "test_func", "arguments": '{"x": 1}'}}) + + assert ( + groupchat.messages[-2]["role"] == "function" + and groupchat.messages[-2]["name"] == "test_func" + and groupchat.messages[-2]["content"] == "1" + ) + assert groupchat.messages[-1]["name"] == "carol" + + agent2.initiate_chat(group_chat_manager, message={"function_call": {"name": "func", "arguments": '{"x": 1}'}}) + + def test_chat_manager(): agent1 = autogen.ConversableAgent( "alice", @@ -30,6 +78,9 @@ def test_chat_manager(): agent2.initiate_chat(group_chat_manager, message="hello") assert len(groupchat.messages) == 2 + with pytest.raises(ValueError): + agent2.initiate_chat(group_chat_manager, message={"function_call": {"name": "func", "arguments": '{"x": 1}'}}) + def test_plugin(): # Give another Agent class ability to manage group chat @@ -62,6 +113,7 @@ def test_plugin(): if __name__ == "__main__": + test_func_call_groupchat() # test_broadcast() - # test_chat_manager() - test_plugin() + test_chat_manager() + # test_plugin() diff --git a/test/agentchat/test_math_user_proxy_agent.py b/test/agentchat/test_math_user_proxy_agent.py index 7874c2168e4..565aa80eb36 100644 --- a/test/agentchat/test_math_user_proxy_agent.py +++ b/test/agentchat/test_math_user_proxy_agent.py @@ -8,21 +8,23 @@ ) from test_assistant_agent import KEY_LOC, OAI_CONFIG_LIST +try: + from openai import OpenAI +except ImportError: + skip = True +else: + skip = False + @pytest.mark.skipif( - sys.platform in ["darwin", "win32"], + skip or sys.platform in ["darwin", "win32"], reason="do not run on MacOS or windows", ) def test_math_user_proxy_agent(): - try: - import openai - except ImportError: - return - from autogen.agentchat.assistant_agent import AssistantAgent conversations = {} - autogen.ChatCompletion.start_logging(conversations) + # autogen.ChatCompletion.start_logging(conversations) config_list = autogen.config_list_from_json( OAI_CONFIG_LIST, @@ -35,8 +37,8 @@ def test_math_user_proxy_agent(): "assistant", system_message="You are a helpful assistant.", llm_config={ - "request_timeout": 600, - "seed": 42, + "timeout": 600, + "cache_seed": 42, "config_list": config_list, }, ) diff --git a/test/agentchat/test_teachable_agent.py b/test/agentchat/test_teachable_agent.py new file mode 100644 index 00000000000..712ed553f37 --- /dev/null +++ b/test/agentchat/test_teachable_agent.py @@ -0,0 +1,174 @@ +try: + from openai import OpenAI + from autogen.agentchat.contrib.teachable_agent import TeachableAgent +except ImportError: + skip = True +else: + skip = False + +import pytest +import sys +from autogen import ConversableAgent, config_list_from_json +from test_assistant_agent import OAI_CONFIG_LIST, KEY_LOC + +try: + from termcolor import colored +except ImportError: + + def colored(x, *args, **kwargs): + return x + + +# Set verbosity levels to maximize code coverage. +qa_verbosity = 0 # 0 for basic info, 1 to add memory operations, 2 for analyzer messages, 3 for memo lists. +skill_verbosity = 3 # 0 for basic info, 1 to add memory operations, 2 for analyzer messages, 3 for memo lists. + +assert_on_error = False # GPT-4 nearly always succeeds on these unit tests, but GPT-3.5 is a bit less reliable. +recall_threshold = 1.5 # Higher numbers allow more (but less relevant) memos to be recalled. +cache_seed = None +# If int, cached LLM calls will be skipped and responses pulled from cache. None exposes LLM non-determinism. + +# Specify the model to use by uncommenting one of the following lines. +# filter_dict={"model": ["gpt-4-0613"]} +# filter_dict={"model": ["gpt-3.5-turbo-0613"]} +# filter_dict={"model": ["gpt-4"]} +filter_dict = {"model": ["gpt-35-turbo-16k", "gpt-3.5-turbo-16k"]} + + +def create_teachable_agent(reset_db=False, verbosity=0): + """Instantiates a TeachableAgent using the settings from the top of this file.""" + # Load LLM inference endpoints from an env variable or a file + # See https://microsoft.github.io/autogen/docs/FAQ#set-your-api-endpoints + # and OAI_CONFIG_LIST_sample + config_list = config_list_from_json(env_or_file=OAI_CONFIG_LIST, filter_dict=filter_dict, file_location=KEY_LOC) + teachable_agent = TeachableAgent( + name="teachableagent", + llm_config={"config_list": config_list, "timeout": 120, "cache_seed": cache_seed}, + teach_config={ + "verbosity": verbosity, + "reset_db": reset_db, + "path_to_db_dir": "./tmp/teachable_agent_db", + "recall_threshold": recall_threshold, + }, + ) + return teachable_agent + + +def check_agent_response(teachable_agent, user, correct_answer): + """Checks whether the agent's response contains the correct answer, and returns the number of errors (1 or 0).""" + agent_response = user.last_message(teachable_agent)["content"] + if correct_answer not in agent_response: + print(colored(f"\nTEST FAILED: EXPECTED ANSWER {correct_answer} NOT FOUND IN AGENT RESPONSE", "light_red")) + if assert_on_error: + assert correct_answer in agent_response + return 1 + else: + print(colored(f"\nTEST PASSED: EXPECTED ANSWER {correct_answer} FOUND IN AGENT RESPONSE", "light_cyan")) + return 0 + + +def use_question_answer_phrasing(): + """Tests whether the teachable agent can answer a question after being taught the answer in a previous chat.""" + print(colored("\nTEST QUESTION-ANSWER PHRASING", "light_cyan")) + num_errors, num_tests = 0, 0 + teachable_agent = create_teachable_agent( + reset_db=True, verbosity=qa_verbosity + ) # For a clean test, clear the agent's memory. + user = ConversableAgent("user", max_consecutive_auto_reply=0, llm_config=False, human_input_mode="NEVER") + + # Prepopulate memory with a few arbitrary memos, just to make retrieval less trivial. + teachable_agent.prepopulate_db() + + # Ask the teachable agent to do something using terminology it doesn't understand. + user.initiate_chat(recipient=teachable_agent, message="What is the twist of 5 and 7?") + + # Explain the terminology to the teachable agent. + user.send( + recipient=teachable_agent, + message="Actually, the twist of two or more numbers is their product minus their sum. Try again.", + ) + num_errors += check_agent_response(teachable_agent, user, "23") + num_tests += 1 + + # Let the teachable agent remember things that should be learned from this chat. + teachable_agent.learn_from_user_feedback() + + # Now start a new chat to clear the context, and require the teachable agent to use its new knowledge. + print(colored("\nSTARTING A NEW CHAT WITH EMPTY CONTEXT", "light_cyan")) + user.initiate_chat(recipient=teachable_agent, message="What's the twist of 8 and 3 and 2?") + num_errors += check_agent_response(teachable_agent, user, "35") + num_tests += 1 + + # Wrap up. + teachable_agent.close_db() + return num_errors, num_tests + + +def use_task_advice_pair_phrasing(): + """Tests whether the teachable agent can demonstrate a new skill after being taught a task-advice pair in a previous chat.""" + print(colored("\nTEST TASK-ADVICE PHRASING", "light_cyan")) + num_errors, num_tests = 0, 0 + teachable_agent = create_teachable_agent( + reset_db=True, verbosity=skill_verbosity # For a clean test, clear the teachable agent's memory. + ) + user = ConversableAgent("user", max_consecutive_auto_reply=0, llm_config=False, human_input_mode="NEVER") + + # Prepopulate memory with a few arbitrary memos, just to make retrieval less trivial. + teachable_agent.prepopulate_db() + + # Ask the teachable agent to do something, and provide some helpful advice. + user.initiate_chat( + recipient=teachable_agent, + message="Compute the twist of 5 and 7. Here's a hint: The twist of two or more numbers is their product minus their sum.", + ) + num_errors += check_agent_response(teachable_agent, user, "23") + num_tests += 1 + + # Let the teachable agent remember things that should be learned from this chat. + teachable_agent.learn_from_user_feedback() + + # Now start a new chat to clear the context, and require the teachable agent to use its new knowledge. + print(colored("\nSTARTING A NEW CHAT WITH EMPTY CONTEXT", "light_cyan")) + user.initiate_chat(recipient=teachable_agent, message="Please calculate the twist of 8 and 3 and 2.") + num_errors += check_agent_response(teachable_agent, user, "35") + num_tests += 1 + + # Wrap up. + teachable_agent.close_db() + return num_errors, num_tests + + +@pytest.mark.skipif( + skip or not sys.version.startswith("3.11"), + reason="do not run if dependency is not installed or py!=3.11", +) +def test_all(): + """Runs this file's unit tests.""" + total_num_errors, total_num_tests = 0, 0 + + num_trials = 1 # Set to a higher number to get a more accurate error rate. + for trial in range(num_trials): + num_errors, num_tests = use_question_answer_phrasing() + total_num_errors += num_errors + total_num_tests += num_tests + + num_errors, num_tests = use_task_advice_pair_phrasing() + total_num_errors += num_errors + total_num_tests += num_tests + + print(colored(f"\nTRIAL {trial + 1} OF {num_trials} FINISHED", "light_cyan")) + + if total_num_errors == 0: + print(colored("\nTEACHABLE AGENT TESTS FINISHED WITH ZERO ERRORS", "light_cyan")) + else: + print( + colored( + f"\nTEACHABLE AGENT TESTS FINISHED WITH {total_num_errors} / {total_num_tests} TOTAL ERRORS ({100.0 * total_num_errors / total_num_tests}%)", + "light_red", + ) + ) + + +if __name__ == "__main__": + """Runs this file's unit tests from the command line.""" + test_all() diff --git a/test/oai/test_completion.py b/test/oai/_test_completion.py similarity index 97% rename from test/oai/test_completion.py rename to test/oai/_test_completion.py index 9ae952a0249..b13cae51578 100644 --- a/test/oai/test_completion.py +++ b/test/oai/_test_completion.py @@ -13,9 +13,8 @@ generate_code, ) from autogen.math_utils import eval_math_responses, solve_problem +from test.oai.test_utils import KEY_LOC, OAI_CONFIG_LIST -KEY_LOC = "notebook" -OAI_CONFIG_LIST = "OAI_CONFIG_LIST" here = os.path.abspath(os.path.dirname(__file__)) @@ -227,11 +226,11 @@ def test_humaneval(num_samples=1): config_list=autogen.config_list_from_models(KEY_LOC, model_list=["gpt-3.5-turbo"]), prompt="", max_tokens=1, - retry_timeout=0, + max_retry_period=0, raise_on_ratelimit_or_timeout=False, ) # assert response == -1 - config_list = autogen.config_list_openai_aoai(KEY_LOC, exclude="aoai") + config_list = autogen.config_list_openai_aoai(KEY_LOC) # a minimal tuning example config, _ = autogen.Completion.tune( data=tune_data, @@ -272,7 +271,7 @@ def test_humaneval(num_samples=1): ) response = autogen.ChatCompletion.create(context=test_data[0], config_list=config_list, **config) print(response) - from openai.error import RateLimitError + from openai import RateLimitError try: code, cost, selected = implement(tune_data[1], [{**config_list[-1], **config}]) @@ -376,11 +375,11 @@ def test_math(num_samples=-1): ] autogen.Completion.set_cache(seed) - config_list = autogen.config_list_openai_aoai(KEY_LOC, exclude="aoai") + config_list = autogen.config_list_openai_aoai(KEY_LOC) vanilla_config = { - "model": "text-davinci-003", + "model": "text-ada-001", "temperature": 1, - "max_tokens": 2048, + "max_tokens": 1024, "n": 1, "prompt": prompts[0], "stop": "###", @@ -451,5 +450,5 @@ def my_average(results): # test_chatcompletion() # test_multi_model() # test_nocontext() - test_humaneval(1) - # test_math(1) + # test_humaneval(1) + test_math(1) diff --git a/test/oai/test_client.py b/test/oai/test_client.py new file mode 100644 index 00000000000..83e01bceddf --- /dev/null +++ b/test/oai/test_client.py @@ -0,0 +1,54 @@ +import pytest +from autogen import OpenAIWrapper, config_list_from_json, config_list_openai_aoai +from test_utils import OAI_CONFIG_LIST, KEY_LOC + +try: + from openai import OpenAI +except ImportError: + skip = True +else: + skip = False + + +@pytest.mark.skipif(skip, reason="openai>=1 not installed") +def test_aoai_chat_completion(): + config_list = config_list_from_json( + env_or_file=OAI_CONFIG_LIST, + file_location=KEY_LOC, + filter_dict={"api_type": ["azure"], "model": ["gpt-3.5-turbo"]}, + ) + client = OpenAIWrapper(config_list=config_list) + # for config in config_list: + # print(config) + # client = OpenAIWrapper(**config) + # response = client.create(messages=[{"role": "user", "content": "2+2="}], cache_seed=None) + response = client.create(messages=[{"role": "user", "content": "2+2="}], cache_seed=None) + print(response) + print(client.extract_text_or_function_call(response)) + + +@pytest.mark.skipif(skip, reason="openai>=1 not installed") +def test_chat_completion(): + config_list = config_list_from_json( + env_or_file=OAI_CONFIG_LIST, + file_location=KEY_LOC, + ) + client = OpenAIWrapper(config_list=config_list) + response = client.create(messages=[{"role": "user", "content": "1+1="}]) + print(response) + print(client.extract_text_or_function_call(response)) + + +@pytest.mark.skipif(skip, reason="openai>=1 not installed") +def test_completion(): + config_list = config_list_openai_aoai(KEY_LOC) + client = OpenAIWrapper(config_list=config_list) + response = client.create(prompt="1+1=", model="gpt-3.5-turbo-instruct") + print(response) + print(client.extract_text_or_function_call(response)) + + +if __name__ == "__main__": + test_aoai_chat_completion() + test_chat_completion() + test_completion() diff --git a/test/oai/test_client_stream.py b/test/oai/test_client_stream.py new file mode 100644 index 00000000000..5bc3ee3bc58 --- /dev/null +++ b/test/oai/test_client_stream.py @@ -0,0 +1,85 @@ +import pytest +from autogen import OpenAIWrapper, config_list_from_json, config_list_openai_aoai +from test_utils import OAI_CONFIG_LIST, KEY_LOC + +try: + from openai import OpenAI +except ImportError: + skip = True +else: + skip = False + + +@pytest.mark.skipif(skip, reason="openai>=1 not installed") +def test_aoai_chat_completion_stream(): + config_list = config_list_from_json( + env_or_file=OAI_CONFIG_LIST, + file_location=KEY_LOC, + filter_dict={"api_type": ["azure"], "model": ["gpt-3.5-turbo"]}, + ) + client = OpenAIWrapper(config_list=config_list) + response = client.create(messages=[{"role": "user", "content": "2+2="}], stream=True) + print(response) + print(client.extract_text_or_function_call(response)) + + +@pytest.mark.skipif(skip, reason="openai>=1 not installed") +def test_chat_completion_stream(): + config_list = config_list_from_json( + env_or_file=OAI_CONFIG_LIST, + file_location=KEY_LOC, + filter_dict={"model": ["gpt-3.5-turbo"]}, + ) + client = OpenAIWrapper(config_list=config_list) + response = client.create(messages=[{"role": "user", "content": "1+1="}], stream=True) + print(response) + print(client.extract_text_or_function_call(response)) + + +@pytest.mark.skipif(skip, reason="openai>=1 not installed") +def test_chat_functions_stream(): + config_list = config_list_from_json( + env_or_file=OAI_CONFIG_LIST, + file_location=KEY_LOC, + filter_dict={"model": ["gpt-3.5-turbo"]}, + ) + functions = [ + { + "name": "get_current_weather", + "description": "Get the current weather", + "parameters": { + "type": "object", + "properties": { + "location": { + "type": "string", + "description": "The city and state, e.g. San Francisco, CA", + }, + }, + "required": ["location"], + }, + }, + ] + client = OpenAIWrapper(config_list=config_list) + response = client.create( + messages=[{"role": "user", "content": "What's the weather like today in San Francisco?"}], + functions=functions, + stream=True, + ) + print(response) + print(client.extract_text_or_function_call(response)) + + +@pytest.mark.skipif(skip, reason="openai>=1 not installed") +def test_completion_stream(): + config_list = config_list_openai_aoai(KEY_LOC) + client = OpenAIWrapper(config_list=config_list) + response = client.create(prompt="1+1=", model="gpt-3.5-turbo-instruct", stream=True) + print(response) + print(client.extract_text_or_function_call(response)) + + +if __name__ == "__main__": + test_aoai_chat_completion_stream() + test_chat_completion_stream() + test_chat_functions_stream() + test_completion_stream() diff --git a/test/oai/test_utils.py b/test/oai/test_utils.py index 685bcf904de..579fc6f9d8a 100644 --- a/test/oai/test_utils.py +++ b/test/oai/test_utils.py @@ -1,31 +1,164 @@ -import json import os -import autogen -from test_completion import KEY_LOC, OAI_CONFIG_LIST +import sys +import json +import pytest +import logging +import tempfile +from unittest import mock +import autogen # noqa: E402 + +KEY_LOC = "notebook" +OAI_CONFIG_LIST = "OAI_CONFIG_LIST" + +sys.path.append("../../autogen") + +# Example environment variables +ENV_VARS = { + "OPENAI_API_KEY": "sk-********************", + "HUGGING_FACE_API_KEY": "**************************", + "ANOTHER_API_KEY": "1234567890234567890", +} + +# Example model to API key mappings +MODEL_API_KEY_MAP = { + "gpt-4": "OPENAI_API_KEY", + "gpt-3.5-turbo": { + "api_key_env_var": "ANOTHER_API_KEY", + "api_type": "aoai", + "api_version": "v2", + "base_url": "https://api.someotherapi.com", + }, +} + +# Example filter dictionary +FILTER_DICT = { + "model": { + "gpt-4", + "gpt-3.5-turbo", + } +} + + +@pytest.fixture +def mock_os_environ(): + with mock.patch.dict(os.environ, ENV_VARS): + yield def test_config_list_from_json(): + # Test the functionality for loading configurations from JSON file + # and ensuring that the loaded configurations are as expected. config_list = autogen.config_list_gpt4_gpt35(key_file_path=KEY_LOC) json_file = os.path.join(KEY_LOC, "config_list_test.json") + with open(json_file, "w") as f: json.dump(config_list, f, indent=4) + config_list_1 = autogen.config_list_from_json(json_file) assert config_list == config_list_1 + os.environ["config_list_test"] = json.dumps(config_list) config_list_2 = autogen.config_list_from_json("config_list_test") assert config_list == config_list_2 + config_list_3 = autogen.config_list_from_json( OAI_CONFIG_LIST, file_location=KEY_LOC, filter_dict={"model": ["gpt4", "gpt-4-32k"]} ) assert all(config.get("model") in ["gpt4", "gpt-4-32k"] for config in config_list_3) + del os.environ["config_list_test"] os.remove(json_file) def test_config_list_openai_aoai(): + # Testing the functionality for loading configurations for different API types + # and ensuring the API types in the loaded configurations are as expected. config_list = autogen.config_list_openai_aoai(key_file_path=KEY_LOC) assert all(config.get("api_type") in [None, "open_ai", "azure"] for config in config_list) +def test_config_list_from_dotenv(mock_os_environ, caplog): + # Test with valid .env file + fd, temp_name = tempfile.mkstemp() + try: + with os.fdopen(fd, "w+") as temp: + temp.write("\n".join([f"{k}={v}" for k, v in ENV_VARS.items()])) + temp.flush() + # Use the updated config_list_from_dotenv function + config_list = autogen.config_list_from_dotenv(dotenv_file_path=temp_name) + + # Ensure configurations are loaded and API keys match expected values + assert config_list, "Config list is empty with default API keys" + + # Check that configurations only include models specified in the filter + for config in config_list: + assert config["model"] in FILTER_DICT["model"], f"Model {config['model']} not in filter" + + # Check the default API key for gpt-4 and gpt-3.5-turbo when model_api_key_map is None + config_list = autogen.config_list_from_dotenv(dotenv_file_path=temp_name, model_api_key_map=None) + + expected_api_key = os.getenv("OPENAI_API_KEY") + assert any( + config["model"] == "gpt-4" and config["api_key"] == expected_api_key for config in config_list + ), "Default gpt-4 configuration not found or incorrect" + assert any( + config["model"] == "gpt-3.5-turbo" and config["api_key"] == expected_api_key for config in config_list + ), "Default gpt-3.5-turbo configuration not found or incorrect" + finally: + os.remove(temp_name) # The file is deleted after using its name (to prevent windows build from breaking) + + # Test with missing dotenv file + with caplog.at_level(logging.WARNING): + config_list = autogen.config_list_from_dotenv(dotenv_file_path="non_existent_path") + assert "The specified .env file non_existent_path does not exist." in caplog.text + + # Test with invalid API key + ENV_VARS["ANOTHER_API_KEY"] = "" # Removing ANOTHER_API_KEY value + + with caplog.at_level(logging.WARNING): + config_list = autogen.config_list_from_dotenv() + assert "No .env file found. Loading configurations from environment variables." in caplog.text + # The function does not return an empty list if at least one configuration is loaded successfully + assert config_list != [], "Config list is empty" + + # Test with no configurations loaded + invalid_model_api_key_map = { + "gpt-4": "INVALID_API_KEY", # Simulate an environment var name that doesn't exist + } + with caplog.at_level(logging.ERROR): + # Mocking `config_list_from_json` to return an empty list and raise an exception when called + with mock.patch("autogen.config_list_from_json", return_value=[], side_effect=Exception("Mock called")): + # Call the function with the invalid map + config_list = autogen.config_list_from_dotenv( + model_api_key_map=invalid_model_api_key_map, + filter_dict={ + "model": { + "gpt-4", + } + }, + ) + + # Assert that the configuration list is empty + assert not config_list, "Expected no configurations to be loaded" + + # test for mixed validity in the keymap + invalid_model_api_key_map = { + "gpt-4": "INVALID_API_KEY", + "gpt-3.5-turbo": "ANOTHER_API_KEY", # valid according to the example configs + } + + with caplog.at_level(logging.WARNING): + # Call the function with the mixed validity map + config_list = autogen.config_list_from_dotenv(model_api_key_map=invalid_model_api_key_map) + assert config_list, "Expected configurations to be loaded" + assert any( + config["model"] == "gpt-3.5-turbo" for config in config_list + ), "gpt-3.5-turbo configuration not found" + assert all( + config["model"] != "gpt-4" for config in config_list + ), "gpt-4 configuration found, but was not expected" + assert "API key not found or empty for model gpt-4" in caplog.text + + if __name__ == "__main__": - test_config_list_from_json() + pytest.main() diff --git a/test/test_code.py b/test/test_code.py index 3c967f65c5b..18d4b640ec3 100644 --- a/test/test_code.py +++ b/test/test_code.py @@ -1,16 +1,20 @@ -import sys import os +import sys +import unittest + import pytest + import autogen from autogen.code_utils import ( + PATH_SEPARATOR, UNKNOWN, - extract_code, + WIN32, + content_str, execute_code, - infer_lang, + extract_code, improve_code, improve_function, - PATH_SEPARATOR, - WIN32, + infer_lang, ) KEY_LOC = "notebook" @@ -153,6 +157,10 @@ def test_infer_lang(): assert infer_lang("print('hello world')") == "python" assert infer_lang("pip install autogen") == "sh" + # test infer lang for unknown code/invalid code + assert infer_lang("dummy text") == UNKNOWN + assert infer_lang("print('hello world'))") == UNKNOWN + def test_extract_code(): print(extract_code("```bash\npython temp.py\n```")) @@ -260,6 +268,11 @@ def test_execute_code(use_docker=None): assert isinstance(image, str) or docker is None or os.path.exists("/.dockerenv") or use_docker is False +def test_execute_code_raises_when_code_and_filename_are_both_none(): + with pytest.raises(AssertionError): + execute_code(code=None, filename=None) + + @pytest.mark.skipif( sys.platform in ["darwin"], reason="do not run on MacOS", @@ -275,7 +288,7 @@ def test_execute_code_no_docker(): assert image is None -def test_improve(): +def _test_improve(): try: import openai except ImportError: @@ -306,8 +319,36 @@ def test_improve(): f.write(improvement) +class TestContentStr(unittest.TestCase): + def test_string_content(self): + self.assertEqual(content_str("simple string"), "simple string") + + def test_list_of_text_content(self): + content = [{"type": "text", "text": "hello"}, {"type": "text", "text": " world"}] + self.assertEqual(content_str(content), "hello world") + + def test_mixed_content(self): + content = [{"type": "text", "text": "hello"}, {"type": "image_url", "url": "http://example.com/image.png"}] + self.assertEqual(content_str(content), "hello<image>") + + def test_invalid_content(self): + content = [{"type": "text", "text": "hello"}, {"type": "wrong_type", "url": "http://example.com/image.png"}] + with self.assertRaises(AssertionError) as context: + content_str(content) + self.assertIn("Wrong content format", str(context.exception)) + + def test_empty_list(self): + self.assertEqual(content_str([]), "") + + def test_non_dict_in_list(self): + content = ["string", {"type": "text", "text": "text"}] + with self.assertRaises(TypeError): + content_str(content) + + if __name__ == "__main__": # test_infer_lang() # test_extract_code() test_execute_code() # test_find_code() + unittest.main() diff --git a/test/test_files/example.docx b/test/test_files/example.docx new file mode 100644 index 00000000000..f377c63c129 Binary files /dev/null and b/test/test_files/example.docx differ diff --git a/test/test_files/example.pdf b/test/test_files/example.pdf new file mode 100644 index 00000000000..1327f9ef6d1 Binary files /dev/null and b/test/test_files/example.pdf differ diff --git a/test/test_files/example.txt b/test/test_files/example.txt new file mode 100644 index 00000000000..954e72c5eb1 --- /dev/null +++ b/test/test_files/example.txt @@ -0,0 +1,4 @@ +AutoGen is an advanced tool designed to assist developers in harnessing the capabilities +of Large Language Models (LLMs) for various applications. The primary purpose of AutoGen is to automate and +simplify the process of building applications that leverage the power of LLMs, allowing for seamless +integration, testing, and deployment. diff --git a/test/test_files/radius.txt b/test/test_files/radius.txt new file mode 100644 index 00000000000..e69a5131fd4 --- /dev/null +++ b/test/test_files/radius.txt @@ -0,0 +1 @@ +7.81mm diff --git a/test/test_img_utils.py b/test/test_img_utils.py new file mode 100644 index 00000000000..fc0053a6561 --- /dev/null +++ b/test/test_img_utils.py @@ -0,0 +1,193 @@ +import base64 +import os +import pdb +import unittest +from unittest.mock import patch + +import pytest +import requests + +try: + from PIL import Image + + from autogen.img_utils import extract_img_paths, get_image_data, gpt4v_formatter, llava_formater +except ImportError: + skip = True +else: + skip = False + + +base64_encoded_image = ( + "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4" + "//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==" +) + +raw_encoded_image = ( + "iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4" + "//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==" +) + + +@pytest.mark.skipif(skip, reason="dependency is not installed") +class TestGetImageData(unittest.TestCase): + def test_http_image(self): + with patch("requests.get") as mock_get: + mock_response = requests.Response() + mock_response.status_code = 200 + mock_response._content = b"fake image content" + mock_get.return_value = mock_response + + result = get_image_data("http://example.com/image.png") + self.assertEqual(result, base64.b64encode(b"fake image content").decode("utf-8")) + + def test_base64_encoded_image(self): + result = get_image_data(base64_encoded_image) + self.assertEqual(result, base64_encoded_image.split(",", 1)[1]) + + def test_local_image(self): + # Create a temporary file to simulate a local image file. + temp_file = "_temp.png" + + image = Image.new("RGB", (60, 30), color=(73, 109, 137)) + image.save(temp_file) + + result = get_image_data(temp_file) + with open(temp_file, "rb") as temp_image_file: + temp_image_file.seek(0) + expected_content = base64.b64encode(temp_image_file.read()).decode("utf-8") + + self.assertEqual(result, expected_content) + os.remove(temp_file) + + +@pytest.mark.skipif(skip, reason="dependency is not installed") +class TestLlavaFormater(unittest.TestCase): + def test_no_images(self): + """ + Test the llava_formater function with a prompt containing no images. + """ + prompt = "This is a test." + expected_output = (prompt, []) + result = llava_formater(prompt) + self.assertEqual(result, expected_output) + + @patch("autogen.img_utils.get_image_data") + def test_with_images(self, mock_get_image_data): + """ + Test the llava_formater function with a prompt containing images. + """ + # Mock the get_image_data function to return a fixed string. + mock_get_image_data.return_value = raw_encoded_image + + prompt = "This is a test with an image <img http://example.com/image.png>." + expected_output = ("This is a test with an image <image>.", [raw_encoded_image]) + result = llava_formater(prompt) + self.assertEqual(result, expected_output) + + @patch("autogen.img_utils.get_image_data") + def test_with_ordered_images(self, mock_get_image_data): + """ + Test the llava_formater function with ordered image tokens. + """ + # Mock the get_image_data function to return a fixed string. + mock_get_image_data.return_value = raw_encoded_image + + prompt = "This is a test with an image <img http://example.com/image.png>." + expected_output = ("This is a test with an image <image 0>.", [raw_encoded_image]) + result = llava_formater(prompt, order_image_tokens=True) + self.assertEqual(result, expected_output) + + +@pytest.mark.skipif(skip, reason="dependency is not installed") +class TestGpt4vFormatter(unittest.TestCase): + def test_no_images(self): + """ + Test the gpt4v_formatter function with a prompt containing no images. + """ + prompt = "This is a test." + expected_output = [{"type": "text", "text": prompt}] + result = gpt4v_formatter(prompt) + self.assertEqual(result, expected_output) + + @patch("autogen.img_utils.get_image_data") + def test_with_images(self, mock_get_image_data): + """ + Test the gpt4v_formatter function with a prompt containing images. + """ + # Mock the get_image_data function to return a fixed string. + mock_get_image_data.return_value = raw_encoded_image + + prompt = "This is a test with an image <img http://example.com/image.png>." + expected_output = [ + {"type": "text", "text": "This is a test with an image "}, + {"type": "image_url", "image_url": {"url": base64_encoded_image}}, + {"type": "text", "text": "."}, + ] + result = gpt4v_formatter(prompt) + self.assertEqual(result, expected_output) + + @patch("autogen.img_utils.get_image_data") + def test_multiple_images(self, mock_get_image_data): + """ + Test the gpt4v_formatter function with a prompt containing multiple images. + """ + # Mock the get_image_data function to return a fixed string. + mock_get_image_data.return_value = raw_encoded_image + + prompt = ( + "This is a test with images <img http://example.com/image1.png> and <img http://example.com/image2.png>." + ) + expected_output = [ + {"type": "text", "text": "This is a test with images "}, + {"type": "image_url", "image_url": {"url": base64_encoded_image}}, + {"type": "text", "text": " and "}, + {"type": "image_url", "image_url": {"url": base64_encoded_image}}, + {"type": "text", "text": "."}, + ] + result = gpt4v_formatter(prompt) + self.assertEqual(result, expected_output) + + +@pytest.mark.skipif(skip, reason="dependency is not installed") +class TestExtractImgPaths(unittest.TestCase): + def test_no_images(self): + """ + Test the extract_img_paths function with a paragraph containing no images. + """ + paragraph = "This is a test paragraph with no images." + expected_output = [] + result = extract_img_paths(paragraph) + self.assertEqual(result, expected_output) + + def test_with_images(self): + """ + Test the extract_img_paths function with a paragraph containing images. + """ + paragraph = ( + "This is a test paragraph with images http://example.com/image1.jpg and http://example.com/image2.png." + ) + expected_output = ["http://example.com/image1.jpg", "http://example.com/image2.png"] + result = extract_img_paths(paragraph) + self.assertEqual(result, expected_output) + + def test_mixed_case(self): + """ + Test the extract_img_paths function with mixed case image extensions. + """ + paragraph = "Mixed case extensions http://example.com/image.JPG and http://example.com/image.Png." + expected_output = ["http://example.com/image.JPG", "http://example.com/image.Png"] + result = extract_img_paths(paragraph) + self.assertEqual(result, expected_output) + + def test_local_paths(self): + """ + Test the extract_img_paths function with local file paths. + """ + paragraph = "Local paths image1.jpeg and image2.GIF." + expected_output = ["image1.jpeg", "image2.GIF"] + result = extract_img_paths(paragraph) + self.assertEqual(result, expected_output) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_notebook.py b/test/test_notebook.py index 68d3052750f..014724c1db0 100644 --- a/test/test_notebook.py +++ b/test/test_notebook.py @@ -1,92 +1,100 @@ -import sys -import os -import pytest - -try: - import openai - - skip = False -except ImportError: - skip = True - - -here = os.path.abspath(os.path.dirname(__file__)) - - -def run_notebook(input_nb, output_nb="executed_openai_notebook.ipynb", save=False): - import nbformat - from nbconvert.preprocessors import ExecutePreprocessor - from nbconvert.preprocessors import CellExecutionError - - try: - nb_loc = os.path.join(here, os.pardir, "notebook") - file_path = os.path.join(nb_loc, input_nb) - with open(file_path) as nb_file: - nb = nbformat.read(nb_file, as_version=4) - preprocessor = ExecutePreprocessor(timeout=4800, kernel_name="python3") - preprocessor.preprocess(nb, {"metadata": {"path": nb_loc}}) - - output_file_name = "executed_openai_notebook_output.txt" - output_file = os.path.join(here, output_file_name) - with open(output_file, "a") as nb_output_file: - for cell in nb.cells: - if cell.cell_type == "code" and "outputs" in cell: - for output in cell.outputs: - if "text" in output: - nb_output_file.write(output["text"].strip() + "\n") - elif "data" in output and "text/plain" in output["data"]: - nb_output_file.write(output["data"]["text/plain"].strip() + "\n") - except CellExecutionError: - raise - finally: - if save: - with open(os.path.join(here, output_nb), "w", encoding="utf-8") as nb_executed_file: - nbformat.write(nb, nb_executed_file) - - -@pytest.mark.skipif( - skip or not sys.version.startswith("3.10"), - reason="do not run if openai is not installed or py!=3.10", -) -def test_agentchat_auto_feedback_from_code(save=False): - run_notebook("agentchat_auto_feedback_from_code_execution.ipynb", save=save) - - -@pytest.mark.skipif( - skip or not sys.version.startswith("3.10"), - reason="do not run if openai is not installed or py!=3.10", -) -def test_oai_completion(save=False): - run_notebook("oai_completion.ipynb", save=save) - - -@pytest.mark.skipif( - skip or not sys.version.startswith("3.10"), - reason="do not run if openai is not installed or py!=3.10", -) -def test_agentchat_function_call(save=False): - run_notebook("agentchat_function_call.ipynb", save=save) - - -@pytest.mark.skipif( - skip or not sys.version.startswith("3.10"), - reason="do not run if openai is not installed or py!=3.10", -) -def test_agentchat_MathChat(save=False): - run_notebook("agentchat_MathChat.ipynb", save=save) - - -@pytest.mark.skipif( - skip or not sys.version.startswith("3.11"), - reason="do not run if openai is not installed or py!=3.11", -) -def test_oai_chatgpt_gpt4(save=False): - run_notebook("oai_chatgpt_gpt4.ipynb", save=save) - - -if __name__ == "__main__": - test_agentchat_auto_feedback_from_code(save=True) - # test_oai_chatgpt_gpt4(save=True) - # test_oai_completion(save=True) - # test_agentchat_MathChat(save=True) - # test_agentchat_function_call(save=True) +import sys +import os +import pytest + +try: + import openai + + skip = False +except ImportError: + skip = True + + +here = os.path.abspath(os.path.dirname(__file__)) + + +def run_notebook(input_nb, output_nb="executed_openai_notebook.ipynb", save=False): + import nbformat + from nbconvert.preprocessors import ExecutePreprocessor + from nbconvert.preprocessors import CellExecutionError + + try: + nb_loc = os.path.join(here, os.pardir, "notebook") + file_path = os.path.join(nb_loc, input_nb) + with open(file_path) as nb_file: + nb = nbformat.read(nb_file, as_version=4) + preprocessor = ExecutePreprocessor(timeout=4800, kernel_name="python3") + preprocessor.preprocess(nb, {"metadata": {"path": nb_loc}}) + + output_file_name = "executed_openai_notebook_output.txt" + output_file = os.path.join(here, output_file_name) + with open(output_file, "a") as nb_output_file: + for cell in nb.cells: + if cell.cell_type == "code" and "outputs" in cell: + for output in cell.outputs: + if "text" in output: + nb_output_file.write(output["text"].strip() + "\n") + elif "data" in output and "text/plain" in output["data"]: + nb_output_file.write(output["data"]["text/plain"].strip() + "\n") + except CellExecutionError: + raise + finally: + if save: + with open(os.path.join(here, output_nb), "w", encoding="utf-8") as nb_executed_file: + nbformat.write(nb, nb_executed_file) + + +@pytest.mark.skipif( + skip or not sys.version.startswith("3.11"), + reason="do not run if openai is not installed or py!=3.11", +) +def test_agentchat_auto_feedback_from_code(save=False): + run_notebook("agentchat_auto_feedback_from_code_execution.ipynb", save=save) + + +@pytest.mark.skipif( + skip or not sys.version.startswith("3.10"), + reason="do not run if openai is not installed or py!=3.10", +) +def _test_oai_completion(save=False): + run_notebook("oai_completion.ipynb", save=save) + + +@pytest.mark.skipif( + skip or not sys.version.startswith("3.10"), + reason="do not run if openai is not installed or py!=3.10", +) +def test_agentchat_function_call(save=False): + run_notebook("agentchat_function_call.ipynb", save=save) + + +@pytest.mark.skipif( + skip or not sys.version.startswith("3.10"), + reason="do not run if openai is not installed or py!=3.10", +) +def _test_agentchat_MathChat(save=False): + run_notebook("agentchat_MathChat.ipynb", save=save) + + +@pytest.mark.skipif( + skip or not sys.version.startswith("3.11"), + reason="do not run if openai is not installed or py!=3.11", +) +def _test_oai_chatgpt_gpt4(save=False): + run_notebook("oai_chatgpt_gpt4.ipynb", save=save) + + +@pytest.mark.skipif( + skip or not sys.version.startswith("3.10"), + reason="do not run if openai is not installed or py!=3.10", +) +def test_hierarchy_flow_using_select_speaker(save=False): + run_notebook("agentchat_hierarchy_flow_using_select_speaker.ipynb", save=save) + + +if __name__ == "__main__": + test_agentchat_auto_feedback_from_code(save=True) + # test_oai_chatgpt_gpt4(save=True) + # test_oai_completion(save=True) + # test_agentchat_MathChat(save=True) + # test_agentchat_function_call(save=True) diff --git a/test/test_retrieve_utils.py b/test/test_retrieve_utils.py new file mode 100644 index 00000000000..b85356ef491 --- /dev/null +++ b/test/test_retrieve_utils.py @@ -0,0 +1,218 @@ +""" +Unit test for retrieve_utils.py +""" +try: + import chromadb + from autogen.retrieve_utils import ( + split_text_to_chunks, + extract_text_from_pdf, + split_files_to_chunks, + get_files_from_dir, + is_url, + create_vector_db_from_dir, + query_vector_db, + ) + from autogen.token_count_utils import count_token +except ImportError: + skip = True +else: + skip = False +import os +import sys +import pytest + +try: + from unstructured.partition.auto import partition + + HAS_UNSTRUCTURED = True +except ImportError: + HAS_UNSTRUCTURED = False + +test_dir = os.path.join(os.path.dirname(__file__), "test_files") +expected_text = """AutoGen is an advanced tool designed to assist developers in harnessing the capabilities +of Large Language Models (LLMs) for various applications. The primary purpose of AutoGen is to automate and +simplify the process of building applications that leverage the power of LLMs, allowing for seamless +integration, testing, and deployment.""" + + +@pytest.mark.skipif(skip, reason="dependency is not installed") +class TestRetrieveUtils: + def test_split_text_to_chunks(self): + long_text = "A" * 10000 + chunks = split_text_to_chunks(long_text, max_tokens=1000) + assert all(count_token(chunk) <= 1000 for chunk in chunks) + + def test_split_text_to_chunks_raises_on_invalid_chunk_mode(self): + with pytest.raises(AssertionError): + split_text_to_chunks("A" * 10000, chunk_mode="bogus_chunk_mode") + + def test_extract_text_from_pdf(self): + pdf_file_path = os.path.join(test_dir, "example.pdf") + assert "".join(expected_text.split()) == "".join(extract_text_from_pdf(pdf_file_path).strip().split()) + + def test_split_files_to_chunks(self): + pdf_file_path = os.path.join(test_dir, "example.pdf") + txt_file_path = os.path.join(test_dir, "example.txt") + chunks = split_files_to_chunks([pdf_file_path, txt_file_path]) + assert all( + isinstance(chunk, str) and "AutoGen is an advanced tool designed to assist developers" in chunk.strip() + for chunk in chunks + ) + + def test_get_files_from_dir(self): + files = get_files_from_dir(test_dir) + assert all(os.path.isfile(file) for file in files) + pdf_file_path = os.path.join(test_dir, "example.pdf") + txt_file_path = os.path.join(test_dir, "example.txt") + files = get_files_from_dir([pdf_file_path, txt_file_path]) + assert all(os.path.isfile(file) for file in files) + + def test_is_url(self): + assert is_url("https://www.example.com") + assert not is_url("not_a_url") + + def test_create_vector_db_from_dir(self): + db_path = "/tmp/test_retrieve_utils_chromadb.db" + if os.path.exists(db_path): + client = chromadb.PersistentClient(path=db_path) + else: + client = chromadb.PersistentClient(path=db_path) + create_vector_db_from_dir(test_dir, client=client) + + assert client.get_collection("all-my-documents") + + def test_query_vector_db(self): + db_path = "/tmp/test_retrieve_utils_chromadb.db" + if os.path.exists(db_path): + client = chromadb.PersistentClient(path=db_path) + else: # If the database does not exist, create it first + client = chromadb.PersistentClient(path=db_path) + create_vector_db_from_dir(test_dir, client=client) + + results = query_vector_db(["autogen"], client=client) + assert isinstance(results, dict) and any("autogen" in res[0].lower() for res in results.get("documents", [])) + + def test_custom_vector_db(self): + try: + import lancedb + except ImportError: + return + from autogen.agentchat.contrib.retrieve_user_proxy_agent import RetrieveUserProxyAgent + + db_path = "/tmp/lancedb" + + def create_lancedb(): + db = lancedb.connect(db_path) + data = [ + {"vector": [1.1, 1.2], "id": 1, "documents": "This is a test document spark"}, + {"vector": [0.2, 1.8], "id": 2, "documents": "This is another test document"}, + {"vector": [0.1, 0.3], "id": 3, "documents": "This is a third test document spark"}, + {"vector": [0.5, 0.7], "id": 4, "documents": "This is a fourth test document"}, + {"vector": [2.1, 1.3], "id": 5, "documents": "This is a fifth test document spark"}, + {"vector": [5.1, 8.3], "id": 6, "documents": "This is a sixth test document"}, + ] + try: + db.create_table("my_table", data) + except OSError: + pass + + class MyRetrieveUserProxyAgent(RetrieveUserProxyAgent): + def query_vector_db( + self, + query_texts, + n_results=10, + search_string="", + ): + if query_texts: + vector = [0.1, 0.3] + db = lancedb.connect(db_path) + table = db.open_table("my_table") + query = table.search(vector).where(f"documents LIKE '%{search_string}%'").limit(n_results).to_df() + return {"ids": [query["id"].tolist()], "documents": [query["documents"].tolist()]} + + def retrieve_docs(self, problem: str, n_results: int = 20, search_string: str = ""): + results = self.query_vector_db( + query_texts=[problem], + n_results=n_results, + search_string=search_string, + ) + + self._results = results + print("doc_ids: ", results["ids"]) + + ragragproxyagent = MyRetrieveUserProxyAgent( + name="ragproxyagent", + human_input_mode="NEVER", + max_consecutive_auto_reply=2, + retrieve_config={ + "task": "qa", + "chunk_token_size": 2000, + "client": "__", + "embedding_model": "all-mpnet-base-v2", + }, + ) + + create_lancedb() + ragragproxyagent.retrieve_docs("This is a test document spark", n_results=10, search_string="spark") + assert ragragproxyagent._results["ids"] == [[3, 1, 5]] + + def test_custom_text_split_function(self): + def custom_text_split_function(text): + return [text[: len(text) // 2], text[len(text) // 2 :]] + + db_path = "/tmp/test_retrieve_utils_chromadb.db" + client = chromadb.PersistentClient(path=db_path) + create_vector_db_from_dir( + os.path.join(test_dir, "example.txt"), + client=client, + collection_name="mytestcollection", + custom_text_split_function=custom_text_split_function, + get_or_create=True, + ) + results = query_vector_db(["autogen"], client=client, collection_name="mytestcollection", n_results=1) + assert ( + "AutoGen is an advanced tool designed to assist developers in harnessing the capabilities" + in results.get("documents")[0][0] + ) + + def test_retrieve_utils(self): + client = chromadb.PersistentClient(path="/tmp/chromadb") + create_vector_db_from_dir( + dir_path="./website/docs", + client=client, + collection_name="autogen-docs", + get_or_create=True, + ) + results = query_vector_db( + query_texts=[ + "How can I use AutoGen UserProxyAgent and AssistantAgent to do code generation?", + ], + n_results=4, + client=client, + collection_name="autogen-docs", + search_string="AutoGen", + ) + print(results["ids"][0]) + assert len(results["ids"][0]) == 4 + + @pytest.mark.skipif( + not HAS_UNSTRUCTURED, + reason="do not run if unstructured is not installed", + ) + def test_unstructured(self): + pdf_file_path = os.path.join(test_dir, "example.pdf") + txt_file_path = os.path.join(test_dir, "example.txt") + word_file_path = os.path.join(test_dir, "example.docx") + chunks = split_files_to_chunks([pdf_file_path, txt_file_path, word_file_path]) + assert all( + isinstance(chunk, str) and "AutoGen is an advanced tool designed to assist developers" in chunk.strip() + for chunk in chunks + ) + + +if __name__ == "__main__": + pytest.main() + + db_path = "/tmp/test_retrieve_utils_chromadb.db" + if os.path.exists(db_path): + os.remove(db_path) # Delete the database file after tests are finished diff --git a/test/test_token_count.py b/test/test_token_count.py new file mode 100644 index 00000000000..1da4ccabeab --- /dev/null +++ b/test/test_token_count.py @@ -0,0 +1,72 @@ +from autogen.token_count_utils import count_token, num_tokens_from_functions, token_left, percentile_used +import pytest + +func1 = { + "name": "sh", + "description": "run a shell script and return the execution result.", + "parameters": { + "type": "object", + "properties": { + "script": { + "type": "string", + "description": "Valid shell script to execute.", + } + }, + "required": ["script"], + }, +} +func2 = { + "name": "query_wolfram", + "description": "Return the API query result from the Wolfram Alpha. the ruturn is a tuple of (result, is_success).", + "parameters": { + "type": "object", + "properties": {}, + }, +} +func3 = { + "name": "python", + "description": "run cell in ipython and return the execution result.", + "parameters": { + "type": "object", + "properties": { + "cell": { + "type": "string", + "description": "Valid Python cell to execute.", + } + }, + "required": ["cell"], + }, +} + + +@pytest.mark.parametrize( + "input_functions, expected_count", [([func1], 44), ([func2], 47), ([func3], 45), ([func1, func2], 79)] +) +def test_num_tokens_from_functions(input_functions, expected_count): + assert num_tokens_from_functions(input_functions) == expected_count + + +def test_count_token(): + messages = [ + { + "role": "system", + "content": "you are a helpful assistant. af3758 *3 33(3)", + }, + { + "role": "user", + "content": "hello asdfjj qeweee", + }, + ] + assert count_token(messages) == 34 + assert percentile_used(messages) == 34 / 4096 + assert token_left(messages) == 4096 - 34 + + text = "I'm sorry, but I'm not able to" + assert count_token(text) == 10 + assert token_left(text) == 4096 - 10 + assert percentile_used(text) == 10 / 4096 + + +if __name__ == "__main__": + test_num_tokens_from_functions() + test_count_token() diff --git a/test/twoagent.py b/test/twoagent.py index cc5c435d485..e2e1818e8ad 100644 --- a/test/twoagent.py +++ b/test/twoagent.py @@ -2,7 +2,7 @@ # Load LLM inference endpoints from an env variable or a file # See https://microsoft.github.io/autogen/docs/FAQ#set-your-api-endpoints -# and OAI_CONFIG_LIST_sample.json +# and OAI_CONFIG_LIST_sample config_list = config_list_from_json(env_or_file="OAI_CONFIG_LIST") assistant = AssistantAgent("assistant", llm_config={"config_list": config_list}) user_proxy = UserProxyAgent("user_proxy", code_execution_config={"work_dir": "coding"}) diff --git a/website/blog/2023-05-18-GPT-adaptive-humaneval/index.mdx b/website/blog/2023-05-18-GPT-adaptive-humaneval/index.mdx index 7e77db8f591..924ca4eb352 100644 --- a/website/blog/2023-05-18-GPT-adaptive-humaneval/index.mdx +++ b/website/blog/2023-05-18-GPT-adaptive-humaneval/index.mdx @@ -16,7 +16,7 @@ In this blog post, we will explore a creative, adaptive way of using GPT models ## Observations -* GPT-3.5-Turbo can alrady solve 40%-50% tasks. For these tasks if we never use GPT-4, we can save nearly 40-50% cost. +* GPT-3.5-Turbo can already solve 40%-50% tasks. For these tasks if we never use GPT-4, we can save nearly 40-50% cost. * If we use the saved cost to generate more responses with GPT-4 for the remaining unsolved tasks, it is possible to solve some more of them while keeping the amortized cost down. The obstacle of leveraging these observations is that we do not know *a priori* which tasks can be solved by the cheaper model, which tasks can be solved by the expensive model, and which tasks can be solved by paying even more to the expensive model. diff --git a/website/blog/2023-07-14-Local-LLMs/index.mdx b/website/blog/2023-07-14-Local-LLMs/index.mdx index 136e05e453f..8c06ae1e199 100644 --- a/website/blog/2023-07-14-Local-LLMs/index.mdx +++ b/website/blog/2023-07-14-Local-LLMs/index.mdx @@ -64,7 +64,7 @@ class CompletionResponseStreamChoice(BaseModel): ``` -## Interact with model using `oai.Completion` +## Interact with model using `oai.Completion` (requires openai<1) Now the models can be directly accessed through openai-python library as well as `autogen.oai.Completion` and `autogen.oai.ChatCompletion`. @@ -77,7 +77,7 @@ response = oai.Completion.create( config_list=[ { "model": "chatglm2-6b", - "api_base": "http://localhost:8000/v1", + "base_url": "http://localhost:8000/v1", "api_type": "open_ai", "api_key": "NULL", # just a placeholder } @@ -91,7 +91,7 @@ response = oai.ChatCompletion.create( config_list=[ { "model": "chatglm2-6b", - "api_base": "http://localhost:8000/v1", + "base_url": "http://localhost:8000/v1", "api_type": "open_ai", "api_key": "NULL", } @@ -125,13 +125,13 @@ response = oai.ChatCompletion.create( config_list=[ { "model": "chatglm2-6b", - "api_base": "http://localhost:8000/v1", + "base_url": "http://localhost:8000/v1", "api_type": "open_ai", "api_key": "NULL", }, { "model": "vicuna-7b-v1.3", - "api_base": "http://localhost:8000/v1", + "base_url": "http://localhost:8000/v1", "api_type": "open_ai", "api_key": "NULL", } diff --git a/website/blog/2023-10-18-RetrieveChat/img/autogen-rag.gif b/website/blog/2023-10-18-RetrieveChat/img/autogen-rag.gif new file mode 100644 index 00000000000..a04c7308d6a Binary files /dev/null and b/website/blog/2023-10-18-RetrieveChat/img/autogen-rag.gif differ diff --git a/website/blog/2023-10-18-RetrieveChat/img/retrievechat-arch.png b/website/blog/2023-10-18-RetrieveChat/img/retrievechat-arch.png new file mode 100644 index 00000000000..a05186a066a Binary files /dev/null and b/website/blog/2023-10-18-RetrieveChat/img/retrievechat-arch.png differ diff --git a/website/blog/2023-10-18-RetrieveChat/index.mdx b/website/blog/2023-10-18-RetrieveChat/index.mdx new file mode 100644 index 00000000000..ec01db211b4 --- /dev/null +++ b/website/blog/2023-10-18-RetrieveChat/index.mdx @@ -0,0 +1,486 @@ +--- +title: Retrieval-Augmented Generation (RAG) Applications with AutoGen +authors: thinkall +tags: [LLM, RAG] +--- + +![RAG Architecture](img/retrievechat-arch.png) + +**TL;DR:** +* We introduce **RetrieveUserProxyAgent** and **RetrieveAssistantAgent**, RAG agents of AutoGen that +allows retrieval-augmented generation, and its basic usage. +* We showcase customizations of RAG agents, such as customizing the embedding function, the text +split function and vector database. +* We also showcase two advanced usage of RAG agents, integrating with group chat and building a Chat +application with Gradio. + + +## Introduction +Retrieval augmentation has emerged as a practical and effective approach for mitigating the intrinsic +limitations of LLMs by incorporating external documents. In this blog post, we introduce RAG agents of +AutoGen that allows retrieval-augmented generation. The system consists of two agents: a +Retrieval-augmented User Proxy agent, called `RetrieveUserProxyAgent`, and a Retrieval-augmented Assistant +agent, called `RetrieveAssistantAgent`, both of which are extended from built-in agents from AutoGen. +The overall architecture of the RAG agents is shown in the figure above. + +To use Retrieval-augmented Chat, one needs to initialize two agents including Retrieval-augmented +User Proxy and Retrieval-augmented Assistant. Initializing the Retrieval-Augmented User Proxy +necessitates specifying a path to the document collection. Subsequently, the Retrieval-Augmented +User Proxy can download the documents, segment them into chunks of a specific size, compute +embeddings, and store them in a vector database. Once a chat is initiated, the agents collaboratively +engage in code generation or question-answering adhering to the procedures outlined below: +1. The Retrieval-Augmented User Proxy retrieves document chunks based on the embedding similarity, +and sends them along with the question to the Retrieval-Augmented Assistant. +2. The Retrieval-Augmented Assistant employs an LLM to generate code or text as answers based +on the question and context provided. If the LLM is unable to produce a satisfactory response, it +is instructed to reply with “Update Context” to the Retrieval-Augmented User Proxy. +3. If a response includes code blocks, the Retrieval-Augmented User Proxy executes the code and +sends the output as feedback. If there are no code blocks or instructions to update the context, it +terminates the conversation. Otherwise, it updates the context and forwards the question along +with the new context to the Retrieval-Augmented Assistant. Note that if human input solicitation +is enabled, individuals can proactively send any feedback, including Update Context”, to the +Retrieval-Augmented Assistant. +4. If the Retrieval-Augmented Assistant receives “Update Context”, it requests the next most similar +chunks of documents as new context from the Retrieval-Augmented User Proxy. Otherwise, it +generates new code or text based on the feedback and chat history. If the LLM fails to generate +an answer, it replies with “Update Context” again. This process can be repeated several times. +The conversation terminates if no more documents are available for the context. + +## Basic Usage of RAG Agents +0. Install dependencies + +Please install pyautogen with the [retrievechat] option before using RAG agents. +```bash +pip install "pyautogen[retrievechat]" +``` + +RetrieveChat can handle various types of documents. By default, it can process +plain text and PDF files, including formats such as 'txt', 'json', 'csv', 'tsv', +'md', 'html', 'htm', 'rtf', 'rst', 'jsonl', 'log', 'xml', 'yaml', 'yml' and 'pdf'. +If you install [unstructured](https://unstructured-io.github.io/unstructured/installation/full_installation.html) +(`pip install "unstructured[all-docs]"`), additional document types such as 'docx', +'doc', 'odt', 'pptx', 'ppt', 'xlsx', 'eml', 'msg', 'epub' will also be supported. + +You can find a list of all supported document types by using `autogen.retrieve_utils.TEXT_FORMATS`. + +1. Import Agents +```python +import autogen +from autogen.agentchat.contrib.retrieve_assistant_agent import RetrieveAssistantAgent +from autogen.agentchat.contrib.retrieve_user_proxy_agent import RetrieveUserProxyAgent +``` + +2. Create an 'RetrieveAssistantAgent' instance named "assistant" and an 'RetrieveUserProxyAgent' instance named "ragproxyagent" +```python +assistant = RetrieveAssistantAgent( + name="assistant", + system_message="You are a helpful assistant.", + llm_config=llm_config, +) + +ragproxyagent = RetrieveUserProxyAgent( + name="ragproxyagent", + retrieve_config={ + "task": "qa", + "docs_path": "https://raw.githubusercontent.com/microsoft/autogen/main/README.md", + }, +) +``` + +3. Initialize Chat and ask a question +```python +assistant.reset() +ragproxyagent.initiate_chat(assistant, problem="What is autogen?") +``` + +Output is like: +``` +-------------------------------------------------------------------------------- +assistant (to ragproxyagent): + +AutoGen is a framework that enables the development of large language model (LLM) applications using multiple agents that can converse with each other to solve tasks. The agents are customizable, conversable, and allow human participation. They can operate in various modes that employ combinations of LLMs, human inputs, and tools. + +-------------------------------------------------------------------------------- +``` + +4. Create a UserProxyAgent and ask the same question +```python +assistant.reset() +userproxyagent = autogen.UserProxyAgent(name="userproxyagent") +userproxyagent.initiate_chat(assistant, message="What is autogen?") +``` + +Output is like: +``` +-------------------------------------------------------------------------------- +assistant (to userproxyagent): + +In computer software, autogen is a tool that generates program code automatically, without the need for manual coding. It is commonly used in fields such as software engineering, game development, and web development to speed up the development process and reduce errors. Autogen tools typically use pre-programmed rules, templates, and data to create code for repetitive tasks, such as generating user interfaces, database schemas, and data models. Some popular autogen tools include Visual Studio's Code Generator and Unity's Asset Store. + +-------------------------------------------------------------------------------- +``` + +You can see that the output of `UserProxyAgent` is not related to our `autogen` since the latest info of +`autogen` is not in ChatGPT's training data. The output of `RetrieveUserProxyAgent` is correct as it can +perform retrieval-augmented generation based on the given documentation file. + +## Customizing RAG Agents +`RetrieveUserProxyAgent` is customizable with `retrieve_config`. There are several parameters to configure +based on different use cases. In this section, we'll show how to customize embedding function, text split +function and vector database. + +### Customizing Embedding Function +By default, [Sentence Transformers](https://www.sbert.net) and its pretrained models will be used to +compute embeddings. It's possible that you want to use OpenAI, Cohere, HuggingFace or other embedding functions. + +* OpenAI +```python +from chromadb.utils import embedding_functions + +openai_ef = embedding_functions.OpenAIEmbeddingFunction( + api_key="YOUR_API_KEY", + model_name="text-embedding-ada-002" + ) + +ragproxyagent = RetrieveUserProxyAgent( + name="ragproxyagent", + retrieve_config={ + "task": "qa", + "docs_path": "https://raw.githubusercontent.com/microsoft/autogen/main/README.md", + "embedding_function": openai_ef, + }, +) +``` + +* HuggingFace +```python +huggingface_ef = embedding_functions.HuggingFaceEmbeddingFunction( + api_key="YOUR_API_KEY", + model_name="sentence-transformers/all-MiniLM-L6-v2" +) +``` + +More examples can be found [here](https://docs.trychroma.com/embeddings). + +### Customizing Text Split Function +Before we can store the documents into a vector database, we need to split the texts into chunks. Although +we have implemented a flexible text splitter in autogen, you may still want to use different text splitters. +There are also some existing text split tools which are good to reuse. + +For example, you can use all the text splitters in langchain. + +```python +from langchain.text_splitter import RecursiveCharacterTextSplitter + +recur_spliter = RecursiveCharacterTextSplitter(separators=["\n", "\r", "\t"]) + +ragproxyagent = RetrieveUserProxyAgent( + name="ragproxyagent", + retrieve_config={ + "task": "qa", + "docs_path": "https://raw.githubusercontent.com/microsoft/autogen/main/README.md", + "custom_text_split_function": recur_spliter.split_text, + }, +) +``` + + +### Customizing Vector Database +We are using chromadb as the default vector database, you can also replace it with any other vector database +by simply overriding the function `retrieve_docs` of `RetrieveUserProxyAgent`. + +For example, you can use Qdrant as below: + +```python +# Creating qdrant client +from qdrant_client import QdrantClient + +client = QdrantClient(url="***", api_key="***") + +# Wrapping RetrieveUserProxyAgent +from litellm import embedding as test_embedding +from autogen.agentchat.contrib.retrieve_user_proxy_agent import RetrieveUserProxyAgent +from qdrant_client.models import SearchRequest, Filter, FieldCondition, MatchText + +class QdrantRetrieveUserProxyAgent(RetrieveUserProxyAgent): + def query_vector_db( + self, + query_texts: List[str], + n_results: int = 10, + search_string: str = "", + **kwargs, + ) -> Dict[str, Union[List[str], List[List[str]]]]: + # define your own query function here + embed_response = test_embedding('text-embedding-ada-002', input=query_texts) + + all_embeddings: List[List[float]] = [] + + for item in embed_response['data']: + all_embeddings.append(item['embedding']) + + search_queries: List[SearchRequest] = [] + + for embedding in all_embeddings: + search_queries.append( + SearchRequest( + vector=embedding, + filter=Filter( + must=[ + FieldCondition( + key="page_content", + match=MatchText( + text=search_string, + ) + ) + ] + ), + limit=n_results, + with_payload=True, + ) + ) + + search_response = client.search_batch( + collection_name="{your collection name}", + requests=search_queries, + ) + + return { + "ids": [[scored_point.id for scored_point in batch] for batch in search_response], + "documents": [[scored_point.payload.get('page_content', '') for scored_point in batch] for batch in search_response], + "metadatas": [[scored_point.payload.get('metadata', {}) for scored_point in batch] for batch in search_response] + } + + def retrieve_docs(self, problem: str, n_results: int = 20, search_string: str = "", **kwargs): + results = self.query_vector_db( + query_texts=[problem], + n_results=n_results, + search_string=search_string, + **kwargs, + ) + + self._results = results + + +# Use QdrantRetrieveUserProxyAgent +qdrantragagent = QdrantRetrieveUserProxyAgent( + name="ragproxyagent", + human_input_mode="NEVER", + max_consecutive_auto_reply=2, + retrieve_config={ + "task": "qa", + }, +) + +qdrantragagent.retrieve_docs("What is Autogen?", n_results=10, search_string="autogen") +``` + +## Advanced Usage of RAG Agents +### Integrate with other agents in a group chat +To use `RetrieveUserProxyAgent` in a group chat is almost the same as you use it in a two agents chat. The only thing is that +you need to **initialize the chat with `RetrieveUserProxyAgent`**. The `RetrieveAssistantAgent` is not necessary in a group chat. + +However, you may want to initialize the chat with another agent in some cases. To leverage the best of `RetrieveUserProxyAgent`, +you'll need to call it from a function. + +```python +llm_config = { + "functions": [ + { + "name": "retrieve_content", + "description": "retrieve content for code generation and question answering.", + "parameters": { + "type": "object", + "properties": { + "message": { + "type": "string", + "description": "Refined message which keeps the original meaning and can be used to retrieve content for code generation and question answering.", + } + }, + "required": ["message"], + }, + }, + ], + "config_list": config_list, + "timeout": 60, + "seed": 42, +} + +boss = autogen.UserProxyAgent( + name="Boss", + is_termination_msg=termination_msg, + human_input_mode="TERMINATE", + system_message="The boss who ask questions and give tasks.", +) + +boss_aid = RetrieveUserProxyAgent( + name="Boss_Assistant", + is_termination_msg=termination_msg, + system_message="Assistant who has extra content retrieval power for solving difficult problems.", + human_input_mode="NEVER", + max_consecutive_auto_reply=3, + retrieve_config={ + "task": "qa", + }, + code_execution_config=False, # we don't want to execute code in this case. +) + +coder = AssistantAgent( + name="Senior_Python_Engineer", + is_termination_msg=termination_msg, + system_message="You are a senior python engineer. Reply `TERMINATE` in the end when everything is done.", + llm_config=llm_config, +) + +pm = autogen.AssistantAgent( + name="Product_Manager", + is_termination_msg=termination_msg, + system_message="You are a product manager. Reply `TERMINATE` in the end when everything is done.", + llm_config=llm_config, +) + +reviewer = autogen.AssistantAgent( + name="Code_Reviewer", + is_termination_msg=termination_msg, + system_message="You are a code reviewer. Reply `TERMINATE` in the end when everything is done.", + llm_config=llm_config, +) + +def retrieve_content(message, n_results=3): + boss_aid.n_results = n_results # Set the number of results to be retrieved. + # Check if we need to update the context. + update_context_case1, update_context_case2 = boss_aid._check_update_context(message) + if (update_context_case1 or update_context_case2) and boss_aid.update_context: + boss_aid.problem = message if not hasattr(boss_aid, "problem") else boss_aid.problem + _, ret_msg = boss_aid._generate_retrieve_user_reply(message) + else: + ret_msg = boss_aid.generate_init_message(message, n_results=n_results) + return ret_msg if ret_msg else message + +for agent in [boss, coder, pm, reviewer]: + # register functions for all agents. + agent.register_function( + function_map={ + "retrieve_content": retrieve_content, + } + ) + +groupchat = autogen.GroupChat( + agents=[boss, coder, pm, reviewer], messages=[], max_round=12 +) +manager = autogen.GroupChatManager(groupchat=groupchat, llm_config=llm_config) + +# Start chatting with boss as this is the user proxy agent. +boss.initiate_chat( + manager, + message="How to use spark for parallel training in FLAML? Give me sample code.", +) +``` + +### Build a Chat application with Gradio +Now, let's wrap it up and make a Chat application with AutoGen and Gradio. + +![RAG ChatBot with AutoGen](img/autogen-rag.gif) + +```python +# Initialize Agents +def initialize_agents(config_list, docs_path=None): + ... + return assistant, ragproxyagent + +# Initialize Chat +def initiate_chat(config_list, problem, queue, n_results=3): + ... + assistant.reset() + try: + ragproxyagent.a_initiate_chat( + assistant, problem=problem, silent=False, n_results=n_results + ) + messages = ragproxyagent.chat_messages + messages = [messages[k] for k in messages.keys()][0] + messages = [m["content"] for m in messages if m["role"] == "user"] + print("messages: ", messages) + except Exception as e: + messages = [str(e)] + queue.put(messages) + +# Wrap AutoGen part into a function +def chatbot_reply(input_text): + """Chat with the agent through terminal.""" + queue = mp.Queue() + process = mp.Process( + target=initiate_chat, + args=(config_list, input_text, queue), + ) + process.start() + try: + messages = queue.get(timeout=TIMEOUT) + except Exception as e: + messages = [str(e) if len(str(e)) > 0 else "Invalid Request to OpenAI, please check your API keys."] + finally: + try: + process.terminate() + except: + pass + return messages + +... + +# Set up UI with Gradio +with gr.Blocks() as demo: + ... + assistant, ragproxyagent = initialize_agents(config_list) + + chatbot = gr.Chatbot( + [], + elem_id="chatbot", + bubble_full_width=False, + avatar_images=(None, (os.path.join(os.path.dirname(__file__), "autogen.png"))), + # height=600, + ) + + txt_input = gr.Textbox( + scale=4, + show_label=False, + placeholder="Enter text and press enter", + container=False, + ) + + with gr.Row(): + txt_model = gr.Dropdown( + label="Model", + choices=[ + "gpt-4", + "gpt-35-turbo", + "gpt-3.5-turbo", + ], + allow_custom_value=True, + value="gpt-35-turbo", + container=True, + ) + txt_oai_key = gr.Textbox( + label="OpenAI API Key", + placeholder="Enter key and press enter", + max_lines=1, + show_label=True, + value=os.environ.get("OPENAI_API_KEY", ""), + container=True, + type="password", + ) + ... + + clear = gr.ClearButton([txt_input, chatbot]) + +... + +if __name__ == "__main__": + demo.launch(share=True) +``` + +The online app and the source code are hosted in [HuggingFace](https://huggingface.co/spaces/thinkall/autogen-demos). Feel free to give it a try! + + +## Read More +You can check out more example notebooks for RAG use cases: +- [Automated Code Generation and Question Answering with Retrieval Augmented Agents](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_RetrieveChat.ipynb) +- [Group Chat with Retrieval Augmented Generation (with 5 group member agents and 1 manager agent)](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_groupchat_RAG.ipynb) +- [Automated Code Generation and Question Answering with Qdrant based Retrieval Augmented Agents](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_qdrant_RetrieveChat.ipynb) diff --git a/website/blog/2023-10-26-TeachableAgent/img/teachable-arch.png b/website/blog/2023-10-26-TeachableAgent/img/teachable-arch.png new file mode 100644 index 00000000000..9c43745c716 Binary files /dev/null and b/website/blog/2023-10-26-TeachableAgent/img/teachable-arch.png differ diff --git a/website/blog/2023-10-26-TeachableAgent/index.mdx b/website/blog/2023-10-26-TeachableAgent/index.mdx new file mode 100644 index 00000000000..51c2e56a38b --- /dev/null +++ b/website/blog/2023-10-26-TeachableAgent/index.mdx @@ -0,0 +1,391 @@ +--- +title: AutoGen's TeachableAgent +authors: rickyloynd-microsoft +tags: [LLM, teach] +--- + +![Teachable Agent Architecture](img/teachable-arch.png) + +**TL;DR:** +* We introduce **TeachableAgent** (which uses **TextAnalyzerAgent**) so that users can teach their LLM-based assistants new facts, preferences, and skills. +* We showcase examples of `TeachableAgent` learning and later recalling facts, preferences, and skills in subsequent chats. + + +## Introduction +Conversational assistants based on LLMs can remember the current chat with the user, and can also demonstrate in-context learning of user teachings during the conversation. But the assistant's memories and learnings are lost once the chat is over, or when a single chat grows too long for the LLM to handle effectively. Then in subsequent chats the user is forced to repeat any necessary instructions over and over. + +`TeachableAgent` addresses these limitations by persisting user teachings across chat boundaries in long-term memory implemented as a vector database. Memory is automatically saved to disk at the end of each chat, then loaded from disk at the start of the next. Instead of copying all of memory into the context window, which would eat up valuable space, individual memories (called memos) are retrieved into context as needed. This allows the user to teach frequently used facts and skills to the teachable agent just once, and have it recall them in later chats. + +In order to make effective decisions about memo storage and retrieval, `TeachableAgent` calls an instance of `TextAnalyzerAgent` (another AutoGen agent) to identify and reformulate text as needed for remembering facts, preferences, and skills. Note that this adds extra LLM calls involving a relatively small number of tokens, which can add a few seconds to the time a user waits for each response. + + +## Run It Yourself + +AutoGen contains three code examples that use `TeachableAgent`. + +1. Run [chat_with_teachable_agent.py](https://github.com/microsoft/autogen/blob/main/test/agentchat/chat_with_teachable_agent.py) to converse with `TeachableAgent`. + +2. Use the Jupyter notebook [agentchat_teachability.ipynb](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_teachability.ipynb) to step through examples discussed below. + +3. Run [test_teachable_agent.py](https://github.com/microsoft/autogen/blob/main/test/agentchat/test_teachable_agent.py) for quick unit testing of `TeachableAgent`. + + +## Basic Usage of TeachableAgent +1. Install dependencies + +Please install pyautogen with the [teachable] option before using TeachableAgent. +```bash +pip install "pyautogen[teachable]" +``` + +2. Import agents +```python +from autogen import UserProxyAgent, config_list_from_json +from autogen.agentchat.contrib.teachable_agent import TeachableAgent +``` + +3. Create llm_config +```python +# Load LLM inference endpoints from an env variable or a file +# See https://microsoft.github.io/autogen/docs/FAQ#set-your-api-endpoints +# and OAI_CONFIG_LIST_sample +filter_dict = {"model": ["gpt-4"]} # GPT-3.5 is less reliable than GPT-4 at learning from user feedback. +config_list = config_list_from_json(env_or_file="OAI_CONFIG_LIST", filter_dict=filter_dict) +llm_config={"config_list": config_list, "timeout": 120} +``` + +4. Create the agents +```python +teachable_agent = TeachableAgent( + name="teachableagent", + llm_config=llm_config, + teach_config={ + "reset_db": False, # Use True to force-reset the memo DB, and False to use an existing DB. + "path_to_db_dir": "./tmp/interactive/teachable_agent_db" # Can be any path. + } +) + +user = UserProxyAgent("user", human_input_mode="ALWAYS") +``` + +5. Chat with `TeachableAgent` +```python +# This function will return once the user types 'exit'. +teachable_agent.initiate_chat(user, message="Hi, I'm a teachable user assistant! What's on your mind?") +``` + +6. Update the database on disk +```python +# Before closing the app, let the teachable agent store things that should be learned from this chat. +teachable_agent.learn_from_user_feedback() +teachable_agent.close_db() +``` + + +## Example 1 - Learning user info + +A user can teach the agent facts about themselves. +(Note that due to their finetuning, LLMs can be reluctant to admit that they know personal information.) +``` +CLEARING MEMORY +teachableagent (to user): + +Hi, I'm a teachable user assistant! What's on your mind? + +-------------------------------------------------------------------------------- +Provide feedback to teachableagent. Press enter to skip and use auto-reply, or type 'exit' to end the conversation: My name is Ricky +user (to teachableagent): + +My name is Ricky + +-------------------------------------------------------------------------------- +teachableagent (to user): + +Hello, Ricky! It's nice to meet you. What can I help you with today? + +-------------------------------------------------------------------------------- +Provide feedback to teachableagent. Press enter to skip and use auto-reply, or type 'exit' to end the conversation: exit + +REVIEWING CHAT FOR USER TEACHINGS TO REMEMBER + +SAVING MEMORY TO DISK + Location = ./tmp/interactive/teachable_agent_db\uid_text_dict.pkl +``` + +In a later conversation, the user can check whether the teachable agent remembers their name. (For readability, the user prompts and some logged notices are not repeated below.) +``` +-------------------------------------------------------------------------------- +user (to teachableagent): + +what's my name? + +-------------------------------------------------------------------------------- +teachableagent (to user): + +Hi Ricky! How can I help you today? + +-------------------------------------------------------------------------------- +``` + + +## Example 2 - Learning new facts + +A user can teach the agent more complex, related facts. +``` +-------------------------------------------------------------------------------- +user (to teachableagent): + +What is the Vicuna model? + +-------------------------------------------------------------------------------- +teachableagent (to user): + +I'm sorry, but I don't have information about the "Vicuna model" in my current database. Could you please provide some context, description, or details about this model so I can better assist you? + +-------------------------------------------------------------------------------- +user (to teachableagent): + +Vicuna is a 13B-parameter language model released by Meta. + +-------------------------------------------------------------------------------- +teachableagent (to user): + +Thank you for providing the information. The Vicuna model is a large-scale language model developed by Meta. It consists of 13 billion parameters, which is what makes it able to understand and generate human-like text across various topics. Parameters in a neural network are the weights and biases assigned to each connection between the neurons, and having more parameters enables the model to learn and capture more complex patterns and relationships in data. As an AI language model, Vicuna can be utilized in various language-related tasks, such as text completion, translation, summarization, and more. + +-------------------------------------------------------------------------------- +user (to teachableagent): + +What is the Orca model? + +-------------------------------------------------------------------------------- +teachableagent (to user): + +The Orca model is a yet-to-be-released language model by Meta, referring to the Research Preview API release of Meta's advanced language model. While I don't have specific details about the Orca model at this time, it is expected that the model would have an even larger number of parameters to further enhance its capabilities compared to its predecessor, Vicuna. + +As AI language models evolve, they generally become more efficient at understanding and generating human-like text. This makes them more effective in completing a wide range of tasks, including text completion, translation, summarization, and Q&A, as well as providing more accurate and coherent results in various applications. + +-------------------------------------------------------------------------------- +user (to teachableagent): + +Orca is a 13B-parameter language model released by Microsoft. It outperforms Vicuna on most tasks. + +-------------------------------------------------------------------------------- +teachableagent (to user): + +Thank you for the clarification. Orca is a 13-billion-parameter language model developed by Microsoft. It is designed to outperform Vicuna, the language model released by Meta. With a large number of parameters, Orca is capable of understanding and generating human-like text across diverse subjects, making it highly useful in various applications. + +Orca's advanced capabilities allow it to excel in tasks such as text completion, translation, summarization, Q&A, and more. Its performance improvement over Vicuna highlights the rapid advancements in natural language processing (NLP) research and the development of increasingly capable AI language models. +``` + +Then in a later chat the teachable agent can answer questions about the facts it has been taught. +(Remember to first close the previous chat by typing 'exit'.) +``` +-------------------------------------------------------------------------------- +user (to teachableagent): + +How does the Vicuna model compare to the Orca model? + +-------------------------------------------------------------------------------- +teachableagent (to user): + +The Vicuna and Orca models are both 13B-parameter language models released by Meta and Microsoft, respectively. In terms of performance, Orca has been reported to outperform Vicuna on most tasks. However, without detailed information about specific tasks and benchmarks, it is difficult to provide a more comprehensive comparison. Generally speaking, both models are advanced language models that aim to provide high-quality natural language understanding and generation, but Orca appears to have an edge in terms of overall performance. + +-------------------------------------------------------------------------------- +``` + + +## Example 3 - Learning user preferences + +A user can teach the agent how they prefer to have things done. + +Be aware that a message like the next one cannot be entered as a single message through a command line because it contains a newline character. +Such messages can be entered in a Jupyter notebook, or through some UI layer like that of ChatGPT. +``` +-------------------------------------------------------------------------------- +user (to teachableagent): + +Please summarize this abstract. + +AutoGen: Enabling Next-Gen LLM Applications via Multi-Agent Conversation +Qingyun Wu, Gagan Bansal, Jieyu Zhang, Yiran Wu, Beibin Li, Erkang Zhu, Li Jiang, Xiaoyun Zhang, Shaokun Zhang, Jiale Liu, Ahmed Hassan Awadallah, Ryen W White, Doug Burger, Chi Wang +AutoGen is an open-source framework that allows developers to build LLM applications via multiple agents that can converse with each other to accomplish tasks. AutoGen agents are customizable, conversable, and can operate in various modes that employ combinations of LLMs, human inputs, and tools. Using AutoGen, developers can also flexibly define agent interaction behaviors. Both natural language and computer code can be used to program flexible conversation patterns for different applications. AutoGen serves as a generic infrastructure to build diverse applications of various complexities and LLM capacities. Empirical studies demonstrate the effectiveness of the framework in many example applications, with domains ranging from mathematics, coding, question answering, operations research, online decision-making, entertainment, etc. + +-------------------------------------------------------------------------------- +teachableagent (to user): + +AutoGen is an open-source framework designed to enable developers to create LLM applications with multiple customizable agents that can converse with each other to complete tasks. These agents can operate using different combinations of LLMs, human inputs, and tools, allowing developers to define agent interaction behaviors flexibly. AutoGen supports programming flexible conversation patterns using both natural language and code, making it suitable for building diverse applications with varying complexities and LLM capacities. Its effectiveness has been demonstrated through empirical studies across various domains including mathematics, coding, operations research, decision-making, and entertainment. + +-------------------------------------------------------------------------------- +Please summarize this abstract. When I'm summarizing an abstract, I try to make the summary contain just three short bullet points: the title, the innovation, and the key empirical results. + +AutoGen: Enabling Next-Gen LLM Applications via Multi-Agent Conversation +Qingyun Wu, Gagan Bansal, Jieyu Zhang, Yiran Wu, Beibin Li, Erkang Zhu, Li Jiang, Xiaoyun Zhang, Shaokun Zhang, Jiale Liu, Ahmed Hassan Awadallah, Ryen W White, Doug Burger, Chi Wang +AutoGen is an open-source framework that allows developers to build LLM applications via multiple agents that can converse with each other to accomplish tasks. AutoGen agents are customizable, conversable, and can operate in various modes that employ combinations of LLMs, human inputs, and tools. Using AutoGen, developers can also flexibly define agent interaction behaviors. Both natural language and computer code can be used to program flexible conversation patterns for different applications. AutoGen serves as a generic infrastructure to build diverse applications of various complexities and LLM capacities. Empirical studies demonstrate the effectiveness of the framework in many example applications, with domains ranging from mathematics, coding, question answering, operations research, online decision-making, entertainment, etc. + +-------------------------------------------------------------------------------- +teachableagent (to user): + +- Title: AutoGen: Enabling Next-Gen LLM Applications via Multi-Agent Conversation +- Innovation: Open-source framework for creating customizable LLM applications through agent conversations, supporting various modes and interaction behaviors. +- Key Empirical Results: Demonstrated effectiveness across diverse application domains, including mathematics, coding, question answering, and more. + +-------------------------------------------------------------------------------- +``` + +Then in later chats the teacher doesn't need to reiterate their detailed preferences. +``` +-------------------------------------------------------------------------------- +user (to teachableagent): + +Please summarize this abstract. + +Sparks of Artificial General Intelligence: Early experiments with GPT-4 +Sébastien Bubeck, Varun Chandrasekaran, Ronen Eldan, Johannes Gehrke, Eric Horvitz, Ece Kamar, Peter Lee, Yin Tat Lee, Yuanzhi Li, Scott Lundberg, Harsha Nori, Hamid Palangi, Marco Tulio Ribeiro, Yi Zhang +Artificial intelligence (AI) researchers have been developing and refining large language models (LLMs) that exhibit remarkable capabilities across a variety of domains and tasks, challenging our understanding of learning and cognition. The latest model developed by OpenAI, GPT-4, was trained using an unprecedented scale of compute and data. In this paper, we report on our investigation of an early version of GPT-4, when it was still in active development by OpenAI. We contend that (this early version of) GPT-4 is part of a new cohort of LLMs (along with ChatGPT and Google's PaLM for example) that exhibit more general intelligence than previous AI models. We discuss the rising capabilities and implications of these models. We demonstrate that, beyond its mastery of language, GPT-4 can solve novel and difficult tasks that span mathematics, coding, vision, medicine, law, psychology and more, without needing any special prompting. Moreover, in all of these tasks, GPT-4's performance is strikingly close to human-level performance, and often vastly surpasses prior models such as ChatGPT. Given the breadth and depth of GPT-4's capabilities, we believe that it could reasonably be viewed as an early (yet still incomplete) version of an artificial general intelligence (AGI) system. In our exploration of GPT-4, we put special emphasis on discovering its limitations, and we discuss the challenges ahead for advancing towards deeper and more comprehensive versions of AGI, including the possible need for pursuing a new paradigm that moves beyond next-word prediction. We conclude with reflections on societal influences of the recent technological leap and future research directions. + +-------------------------------------------------------------------------------- +teachableagent (to user): + +- Title: Sparks of Artificial General Intelligence: Early experiments with GPT-4 +- Innovation: GPT-4, an LLM with remarkable capabilities, demonstrates human-level performance across various domains, like math, coding, vision, medicine, law, and psychology. +- Key results: GPT-4 significantly surpasses prior models, suggesting it may be an early version of AGI; limitations and challenges toward deeper AGI are also discussed. + +-------------------------------------------------------------------------------- +``` + + +## Example 4 - Learning new skills + +Users can extend the teachable agent's capabilities by teaching it new skills for accomplishing challenging tasks. It usually works best to first describe the task, then (in the same turn) provide a hint or advice for approaching the task. + +The [Sparks of AGI](https://arxiv.org/abs/2303.12712) paper evaluated GPT-4 on math problems like the following, which it could only solve 32% of the time. We first show a failure case, then teach the agent a strategy which lifts GPT-4's success rate above 95%. +``` +-------------------------------------------------------------------------------- +user (to teachableagent): + +Consider the identity: +9 * 4 + 6 * 6 = 72 +Can you modify exactly one integer (and not more than that!) on the left hand side of the equation so the right hand side becomes 99? +-Let's think step-by-step, write down a plan, and then write down your solution as: "The solution is: A * B + C * D". + +-------------------------------------------------------------------------------- +Step 1: Identify the current equation and the target value on the right-hand side. +Current equation: 9 * 4 + 6 * 6 = 72 +Target value: 99 + +Step 2: Determine what numbers can be changed on the left-hand side. +Possible changes: 9, 4, 6 (first occurrence), and 6 (second occurrence) + +Step 3: Evaluate whether each change in the numbers on the left-hand side can result in the target value. +9 -> If changed, it would create a larger product. +4 -> If changed, the product would increase or decrease by more than the amount needed to reach 99. +6 (first occurrence) -> If increased to 7, then the equation would be 9 * 4 + 7 * 6 = 94, which is still not 99. +6 (second occurrence) -> If increased to 7, then the equation would be 9 * 4 + 6 * 7 = 99. + +Step 4: Write down the solution. +The solution is: 9 * 4 + 6 * 7 + +-------------------------------------------------------------------------------- +user (to teachableagent): + +Consider the identity: +9 * 4 + 6 * 6 = 72 +Can you modify exactly one integer (and not more than that!) on the left hand side of the equation so the right hand side becomes 99? +-Let's think step-by-step, write down a plan, and then write down your solution as: "The solution is: A * B + C * D". + +Here's some advice that may help: +1. Let E denote the original number on the right. +2. Let F denote the final number on the right. +3. Calculate the difference between the two, G = F - E. +4. Examine the numbers on the left one by one until finding one that divides evenly into G, where negative integers are allowed. +5. Calculate J = G / H. This is the number of times that H divides into G. +6. Verify that J is an integer, and that H * J = G. +7. Find the number on the left which is multiplied by H, and call it K. +8. Change K to K + J. +9. Recompute the value on the left, and verify that it equals F. +Finally, write down your solution as: "The solution is: A * B + C * D". + +-------------------------------------------------------------------------------- +teachableagent (to user): + +Step 1: Identify the original number (E) and the final number (F) on the right-hand side. +E = 72 +F = 99 + +Step 2: Calculate the difference between the two, G = F - E. +G = 99 - 72 = 27 + +Step 3: Examine the numbers on the left one by one until finding one that divides evenly into G, where negative integers are allowed. +9 (divides evenly into 27) +4 (does not) +6 (first occurrence, does not) +6 (second occurrence, does not) + +Step 4: Calculate J = G / H. This is the number of times that H divides into G. +H = 9 (since 9 divides evenly into 27) +J = 27 / 9 = 3 + +Step 5: Verify that J is an integer, and that H * J = G. +H * J = 9 * 3 = 27 +J = 3 (which is an integer) + +Step 6: Find the number on the left which is multiplied by H, and call it K. +Number on the leftside of the equation that is multiplied by 9: 4 +Therefore, K = 4 + +Step 7: Change K to K + J. +K + J = 4 + 3 = 7 + +Step 8: Recompute the value on the left, and verify that it equals F. +9 * 7 + 6 * 6 = 63 + 36 = 99 (which is equal to F) + +Step 9: Write down the solution. +The solution is: 9 * 7 + 6 * 6 + +-------------------------------------------------------------------------------- +``` + +In a later chat the user doesn't need to repeat the detailed advice. +``` +-------------------------------------------------------------------------------- +user (to teachableagent): + +Consider the identity: +8 * 3 + 7 * 9 = 87 +Can you modify exactly one integer (and not more than that!) on the left hand side of the equation so the right hand side becomes 59? +-Let's think step-by-step, write down a plan, and then write down your solution as: "The solution is: A * B + C * D". + +-------------------------------------------------------------------------------- +teachableagent (to user): + +Let's follow the advice to modify one integer on the left hand side of the equation to make the right hand side become 59: + +1. Let E denote the original number on the right: E = 87. +2. Let F denote the final number on the right: F = 59. +3. Calculate the difference between the two, G = F - E: G = 59 - 87 = -28. +4. Examine the numbers on the left one by one to find one that divides evenly into G: 8, 3, 7, 9. Since 7 divides -28 evenly, we will work with 7 (H = 7). +5. Calculate J = G / H: J = -28 / 7 = -4. +6. Verify that J is an integer, and that H * J = G: J is an integer, and 7 * (-4) = -28. +7. Find the number on the left which is multiplied by H (7), and call it K: K = 9. +8. Change K to K + J: K_new = 9 + (-4) = 5. +9. Recompute the value on the left, and verify that it equals F: (8 * 3) + (7 * 5) = 24 + 35 = 59. + +The solution is: 8 * 3 + 7 * 5 + +-------------------------------------------------------------------------------- +``` + + +## Planned improvements +- Instructions for making any AutoGen agent user-teachable. +- Examples of how to include `TeachableAgent` in group chats. +- Expansions of AutoGen's current coding-testing strengths. +- Teachability enhancements: + - Understanding user instructions distributed over multiple turns. + - Learning from the agent's own experience, to reduce dependence on explicit user instructions. + - Learning skills built on top of previously learned skills. + + +## Conclusion + +`TeachableAgent` is still under active research and development. For any problems you find or improvements you have in mind, please join our discussions in this repo and on our [Discord channel](https://discord.gg/pAbnFJrkgZ). We look forward to seeing how you and the rest of the community can use and improve `TeachableAgent` and the other agents in AutoGen! diff --git a/website/blog/2023-11-06-LMM-Agent/img/teaser.png b/website/blog/2023-11-06-LMM-Agent/img/teaser.png new file mode 100644 index 00000000000..60f7fa6d1f8 Binary files /dev/null and b/website/blog/2023-11-06-LMM-Agent/img/teaser.png differ diff --git a/website/blog/2023-11-06-LMM-Agent/index.mdx b/website/blog/2023-11-06-LMM-Agent/index.mdx new file mode 100644 index 00000000000..452079f1c45 --- /dev/null +++ b/website/blog/2023-11-06-LMM-Agent/index.mdx @@ -0,0 +1,77 @@ +--- +title: Multimodal with GPT-4V and LLaVA +authors: beibinli +tags: [LMM, multimodal] +--- + +![LMM Teaser](img/teaser.png) + +**In Brief:** +* Introducing the **Multimodal Conversable Agent** and the **LLaVA Agent** to enhance LMM functionalities. +* Users can input text and images simultaneously using the `<img img_path>` tag to specify image loading. +* Demonstrated through the [GPT-4V notebook](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_lmm_gpt-4v.ipynb). +* Demonstrated through the [LLaVA notebook](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_lmm_llava.ipynb). + +## Introduction +Large multimodal models (LMMs) augment large language models (LLMs) with the ability to process multi-sensory data. + +This blog post and the latest AutoGen update concentrate on visual comprehension. Users can input images, pose questions about them, and receive text-based responses from these LMMs. +We support the `gpt-4-vision-preview` model from OpenAI and `LLaVA` model from Microsoft now. + +Here, we emphasize the **Multimodal Conversable Agent** and the **LLaVA Agent** due to their growing popularity. +GPT-4V represents the forefront in image comprehension, while LLaVA is an efficient model, fine-tuned from LLama-2. + +## Installation +Incorporate the `lmm` feature during AutoGen installation: + +```bash +pip install "pyautogen[lmm]" +``` + +Subsequently, import the **Multimodal Conversable Agent** or **LLaVA Agent** from AutoGen: + +```python +from autogen.agentchat.contrib.multimodal_conversable_agent import MultimodalConversableAgent # for GPT-4V +from autogen.agentchat.contrib.llava_agent import LLaVAAgent # for LLaVA +``` + +## Usage + +A simple syntax has been defined to incorporate both messages and images within a single string. + +Example of an in-context learning prompt: + +```python +prompt = """You are now an image classifier for facial expressions. Here are +some examples. + +<img happy.jpg> depicts a happy expression. +<img http://some_location.com/sad.jpg> represents a sad expression. +<img obama.jpg> portrays a neutral expression. + +Now, identify the facial expression of this individual: <img unknown.png> +""" + +agent = MultimodalConversableAgent() +user = UserProxyAgent() +user.initiate_chat(agent, message=prompt) +``` + +The `MultimodalConversableAgent` interprets the input prompt, extracting images from local or internet sources. + +## Advanced Usage +Similar to other AutoGen agents, multimodal agents support multi-round dialogues with other agents, code generation, factual queries, and management via a GroupChat interface. + +For example, the `FigureCreator` in our [GPT-4V notebook](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_lmm_gpt-4v.ipynb) and [LLaVA notebook](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_lmm_llava.ipynb) integrates two agents: a coder (an AssistantAgent) and critics (a multimodal agent). +The coder drafts Python code for visualizations, while the critics provide insights for enhancement. Collaboratively, these agents aim to refine visual outputs. +With `human_input_mode=ALWAYS`, you can also contribute suggestions for better visualizations. + +## Reference +- [GPT-4V System Card](https://openai.com/research/gpt-4v-system-card) +- [LLaVA GitHub](https://github.com/haotian-liu/LLaVA) + +## Future Enhancements + +For further inquiries or suggestions, please open an issue in the [AutoGen repository](https://github.com/microsoft/autogen/) or contact me directly at beibin.li@microsoft.com. + +AutoGen will continue to evolve, incorporating more multimodal functionalities such as DALLE model integration, audio interaction, and video comprehension. Stay tuned for these exciting developments. diff --git a/website/blog/authors.yml b/website/blog/authors.yml index 2aee7a5035d..d2fefc887cc 100644 --- a/website/blog/authors.yml +++ b/website/blog/authors.yml @@ -21,3 +21,21 @@ jialeliu: title: Undergraduate student at Xidian University url: https://leoljl.github.io image_url: https://github.com/LeoLjl/leoljl.github.io/blob/main/profile.jpg?raw=true + +thinkall: + name: Li Jiang + title: Senior Software Engineer at Microsoft + url: https://github.com/thinkall + image_url: https://github.com/thinkall.png + +rickyloynd-microsoft: + name: Ricky Loynd + title: Senior Research Engineer at Microsoft + url: https://github.com/rickyloynd-microsoft + image_url: https://github.com/rickyloynd-microsoft.png + +beibinli: + name: Beibin Li + title: Senior Research Engineer at Microsoft + url: https://github.com/beibinli + image_url: https://github.com/beibinli.png diff --git a/website/docs/Contribute.md b/website/docs/Contribute.md index 55f20694ce9..7d41b8c906e 100644 --- a/website/docs/Contribute.md +++ b/website/docs/Contribute.md @@ -6,7 +6,7 @@ This project welcomes and encourages all forms of contributions, including but n - Code review of pull requests. - Documentation, examples and test cases. - Readability improvement, e.g., improvement on docstr and comments. -- Community participation in [issues](https://github.com/microsoft/autogen/issues), [discussions](https://github.com/microsoft/autogen/discussions), and [discord](https://discord.gg/pAbnFJrkgZ). +- Community participation in [issues](https://github.com/microsoft/autogen/issues), [discussions](https://github.com/microsoft/autogen/discussions), [discord](https://discord.gg/pAbnFJrkgZ), and [twitter](https://twitter.com/pyautogen). - Tutorials, blog posts, talks that promote the project. - Sharing application scenarios and/or related research. @@ -54,6 +54,38 @@ print(autogen.__version__) There is currently no formal reviewer solicitation process. Current reviewers identify reviewers from active contributors. If you are willing to become a reviewer, you are welcome to let us know on discord. +## Guidance for Maintainers + +### General + +* Be a member of the community and treat everyone as a member. Be inclusive. +* Help each other and encourage mutual help. +* Actively post and respond. +* Keep open communication. + +### Pull Requests +* For new PR, decide whether to close without review. If not, find the right reviewers. The default reviewer is microsoft/autogen. Ask users who can benefit from the PR to review it. +* For old PR, check the blocker: reviewer or PR creator. Try to unblock. Get additional help when needed. +* When requesting changes, make sure you can check back in time because it blocks merging. +* Make sure all the checks are passed. +* For changes that require running OpenAI tests, make sure the OpenAI tests pass too. Running these tests requires approval. +* In general, suggest small PRs instead of a giant PR. +* For documentation change, request snapshot of the compiled website, or compile by yourself to verify the format. +* For new contributors who have not signed the contributing agreement, remind them to sign before reviewing. +* For multiple PRs which may have conflict, coordinate them to figure out the right order. +* Pay special attention to: + - Breaking changes. Don’t make breaking changes unless necessary. Don’t merge to main until enough headsup is provided and a new release is ready. + - Test coverage decrease. + - Changes that may cause performance degradation. Do regression test when test suites are available. + - Discourage **change to the core library** when there is an alternative. + +### Issues and Discussions +* For new issues, write a reply, apply a label if relevant. Ask on discord when necessary. For roadmap issues, add to the roadmap project and encourage community discussion. Mention relevant experts when necessary. +* For old issues, provide an update or close. Ask on discord when necessary. Encourage PR creation when relevant. +* Use “good first issue” for easy fix suitable for first-time contributors. +* Use “task list” for issues that require multiple PRs. +* For discussions, create an issue when relevant. Discuss on discord when appropriate. + ## Developing ### Setup @@ -75,13 +107,21 @@ docker run -it autogen-dev ### Develop in Remote Container If you use vscode, you can open the autogen folder in a [Container](https://code.visualstudio.com/docs/remote/containers). -We have provided the configuration in [devcontainer](https://github.com/microsoft/autogen/blob/main/.devcontainer). +We have provided the configuration in [devcontainer](https://github.com/microsoft/autogen/blob/main/.devcontainer). They can be used in GitHub codespace too. Developing AutoGen in dev containers is recommended. ### Pre-commit Run `pre-commit install` to install pre-commit into your git hooks. Before you commit, run `pre-commit run` to check if you meet the pre-commit requirements. If you use Windows (without WSL) and can't commit after installing pre-commit, you can run `pre-commit uninstall` to uninstall the hook. In WSL or Linux this is supposed to work. +### Write tests + +Tests are automatically run via GitHub actions. There are two workflows: +1. [build.yml](https://github.com/microsoft/autogen/blob/main/.github/workflows/build.yml) +1. [openai.yml](https://github.com/microsoft/autogen/blob/main/.github/workflows/openai.yml) + +The first workflow is required to pass for all PRs. The second workflow is required for changes that affect the openai tests. The second workflow requires approval to run. When writing tests that require openai, please use [`pytest.mark.skipif`](https://github.com/microsoft/autogen/blob/main/test/test_client.py#L13) to make them run in one python version only when openai is installed. If additional dependency for this test is required, install the dependency in the corresponding python version in [openai.yml](https://github.com/microsoft/autogen/blob/main/.github/workflows/openai.yml). + ### Coverage Any code you commit should not decrease coverage. To run all unit tests, install the [test] option: diff --git a/website/docs/Examples/AgentChat.md b/website/docs/Examples/AgentChat.md new file mode 100644 index 00000000000..44d40676d53 --- /dev/null +++ b/website/docs/Examples/AgentChat.md @@ -0,0 +1,41 @@ +# Automated Multi Agent Chat + +AutoGen offers conversable agents powered by LLM, tool or human, which can be used to perform tasks collectively via automated chat. This framework allows tool use and human participation via multi-agent conversation. +Please find documentation about this feature [here](/docs/Use-Cases/agent_chat). + +Links to notebook examples: + + +1. **Code Generation, Execution, and Debugging** + + - Automated Task Solving with Code Generation, Execution & Debugging - [View Notebook](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_auto_feedback_from_code_execution.ipynb) + - Auto Code Generation, Execution, Debugging and Human Feedback - [View Notebook](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_human_feedback.ipynb) + - Automated Code Generation and Question Answering with Retrieval Augmented Agents - [View Notebook](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_RetrieveChat.ipynb) + - Automated Code Generation and Question Answering with [Qdrant](https://qdrant.tech/) based Retrieval Augmented Agents - [View Notebook](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_qdrant_RetrieveChat.ipynb) + +2. **Multi-Agent Collaboration (>3 Agents)** + + - Automated Task Solving with GPT-4 + Multiple Human Users - [View Notebook](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_two_users.ipynb) + - Automated Task Solving by Group Chat (with 3 group member agents and 1 manager agent) - [View Notebook](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_groupchat.ipynb) + - Automated Data Visualization by Group Chat (with 3 group member agents and 1 manager agent) - [View Notebook](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_groupchat_vis.ipynb) + - Automated Complex Task Solving by Group Chat (with 6 group member agents and 1 manager agent) - [View Notebook](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_groupchat_research.ipynb) + - Automated Task Solving with Coding & Planning Agents - [View Notebook](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_planning.ipynb) + - Automated Task Solving with agents divided into 2 groups - [View Notebook](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_hierarchy_flow_using_select_speaker.ipynb) + +3. **Applications** + + - Automated Chess Game Playing & Chitchatting by GPT-4 Agents - [View Notebook](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_chess.ipynb) + - Automated Continual Learning from New Data - [View Notebook](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_stream.ipynb) + - [OptiGuide](https://github.com/microsoft/optiguide) - Coding, Tool Using, Safeguarding & Question Anwering for Supply Chain Optimization + +4. **Tool Use** + + - **Web Search**: Solve Tasks Requiring Web Info - [View Notebook](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_web_info.ipynb) + - Use Provided Tools as Functions - [View Notebook](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_function_call.ipynb) + - Task Solving with Langchain Provided Tools as Functions - [View Notebook](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_function_call.ipynb) + - **RAG**: Group Chat with Retrieval Augmented Generation (with 5 group member agents and 1 manager agent) - [View Notebook](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_groupchat_RAG.ipynb) + - In-depth Guide to OpenAI Utility Functions - [View Notebook](https://github.com/microsoft/autogen/blob/main/notebook/oai_openai_utils.ipynb) + +5. **Agent Teaching and Learning** + - Teach Agents New Skills & Reuse via Automated Chat - [View Notebook](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_teaching.ipynb) + - Teach Agents New Facts, User Preferences and Skills Beyond Coding - [View Notebook](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_teachability.ipynb) diff --git a/website/docs/Examples/AutoGen-AgentChat.md b/website/docs/Examples/AutoGen-AgentChat.md deleted file mode 100644 index 55988818ef0..00000000000 --- a/website/docs/Examples/AutoGen-AgentChat.md +++ /dev/null @@ -1,19 +0,0 @@ -# AutoGen - Automated Multi Agent Chat - -AutoGen offers conversable agents powered by LLM, tool or human, which can be used to perform tasks collectively via automated chat. This framwork allows tool use and human participance via multi-agent conversation. -Please find documentation about this feature [here](/docs/Use-Cases/agent_chat). - -Links to notebook examples: -* [Automated Task Solving with Code Generation, Execution & Debugging](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_auto_feedback_from_code_execution.ipynb) -* [Auto Code Generation, Execution, Debugging and Human Feedback](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_human_feedback.ipynb) -* [Solve Tasks Requiring Web Info](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_web_info.ipynb) -* [Use Provided Tools as Functions](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_function_call.ipynb) -* [Automated Task Solving with Coding & Planning Agents](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_planning.ipynb) -* [Automated Task Solving with GPT-4 + Multiple Human Users](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_two_users.ipynb) -* [Automated Chess Game Playing & Chitchatting by GPT-4 Agents](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_chess.ipynb) -* [Automated Task Solving by Group Chat (with 3 group member agents and 1 manager agent)](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_groupchat.ipynb) -* [Automated Data Visualization by Group Chat (with 3 group member agents and 1 manager agent)](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_groupchat_vis.ipynb) -* [Automated Complex Task Solving by Group Chat (with 6 group member agents and 1 manager agent)](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_groupchat_research.ipynb) -* [Automated Continual Learning from New Data](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_stream.ipynb) -* [Teach Agents New Skills & Reuse via Automated Chat](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_teaching.ipynb) -* [Automated Code Generation and Question Answering with Retrieval Augemented Agents](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_RetrieveChat.ipynb) diff --git a/website/docs/Examples/AutoGen-Inference.md b/website/docs/Examples/Inference.md similarity index 96% rename from website/docs/Examples/AutoGen-Inference.md rename to website/docs/Examples/Inference.md index d68504a1c7c..ad608985ec4 100644 --- a/website/docs/Examples/AutoGen-Inference.md +++ b/website/docs/Examples/Inference.md @@ -1,4 +1,4 @@ -# AutoGen - Tune GPT Models +# Tune GPT Models AutoGen also offers a cost-effective hyperparameter optimization technique [EcoOptiGen](https://arxiv.org/abs/2303.04673) for tuning Large Language Models. The research study finds that tuning hyperparameters can significantly improve the utility of them. Please find documentation about this feature [here](/docs/Use-Cases/enhanced_inference). diff --git a/website/docs/FAQ.md b/website/docs/FAQ.md index 0e77ad275f3..40babd05c1b 100644 --- a/website/docs/FAQ.md +++ b/website/docs/FAQ.md @@ -2,100 +2,128 @@ ## Set your API endpoints -There are multiple ways to construct a list of configurations for LLM inference. +There are multiple ways to construct configurations for LLM inference in the `oai` utilities: -### Option 1: Load a list of endpoints from json +- `get_config_list`: Generates configurations for API calls, primarily from provided API keys. +- `config_list_openai_aoai`: Constructs a list of configurations using both Azure OpenAI and OpenAI endpoints, sourcing API keys from environment variables or local files. +- `config_list_from_json`: Loads configurations from a JSON structure, either from an environment variable or a local JSON file, with the flexibility of filtering configurations based on given criteria. +- `config_list_from_models`: Creates configurations based on a provided list of models, useful when targeting specific models without manually specifying each configuration. +- `config_list_from_dotenv`: Constructs a configuration list from a `.env` file, offering a consolidated way to manage multiple API configurations and keys from a single file. -The [`config_list_from_json`](/docs/reference/oai/openai_utils#config_list_from_json) function loads a list of configurations from an environment variable or a json file. +We suggest that you take a look at this [notebook](https://github.com/microsoft/autogen/blob/main/notebook/oai_openai_utils.ipynb) for full code examples of the different methods to configure your model endpoints. -For example, +### Use the constructed configuration list in agents +Make sure the "config_list" is included in the `llm_config` in the constructor of the LLM-based agent. For example, ```python -import autogen -config_list = autogen.config_list_from_json( - "OAI_CONFIG_LIST", - file_location=".", - filter_dict={ - "model": { - "gpt-4", - "gpt-3.5-turbo", - } - } +assistant = autogen.AssistantAgent( + name="assistant", + llm_config={"config_list": config_list} ) ``` -It first looks for environment variable "OAI_CONFIG_LIST" which needs to be a valid json string. If that variable is not found, it then looks for a json file named "OAI_CONFIG_LIST" under the specified `file_location`. It then filters the configs by models (you can filter by other keys as well). - -The `OAI_CONFIG_LIST` var or file content looks like the following: -```json -[ - { - "model": "gpt-4", - "api_key": "<your OpenAI API key here>" - }, - { - "model": "gpt-4", - "api_key": "<your Azure OpenAI API key here>", - "api_base": "<your Azure OpenAI API base here>", - "api_type": "azure", - "api_version": "2023-07-01-preview" - }, - { - "model": "gpt-3.5-turbo", - "api_key": "<your Azure OpenAI API key here>", - "api_base": "<your Azure OpenAI API base here>", - "api_type": "azure", - "api_version": "2023-07-01-preview" - } -] +The `llm_config` is used in the [`create`](/docs/reference/oai/client#create) function for LLM inference. +When `llm_config` is not provided, the agent will rely on other openai settings such as `openai.api_key` or the environment variable `OPENAI_API_KEY`, which can also work when you'd like to use a single endpoint. +You can also explicitly specify that by: +```python +assistant = autogen.AssistantAgent(name="assistant", llm_config={"api_key": ...}) ``` -### Option 2: Construct a list of endpoints for OpenAI or Azure OpenAI +### Can I use non-OpenAI models? -The [`config_list_from_models`](/docs/reference/oai/openai_utils#config_list_from_models) function tries to create a list of configurations using Azure OpenAI endpoints and OpenAI endpoints for the provided list of models. It assumes the api keys and api bases are stored in the corresponding environment variables or local txt files: +Yes. Please check https://microsoft.github.io/autogen/blog/2023/07/14/Local-LLMs for an example. -- OpenAI API key: os.environ["OPENAI_API_KEY"] or `openai_api_key_file="key_openai.txt"`. -- Azure OpenAI API key: os.environ["AZURE_OPENAI_API_KEY"] or `aoai_api_key_file="key_aoai.txt"`. Multiple keys can be stored, one per line. -- Azure OpenAI API base: os.environ["AZURE_OPENAI_API_BASE"] or `aoai_api_base_file="base_aoai.txt"`. Multiple bases can be stored, one per line. +## Handle Rate Limit Error and Timeout Error -It's OK to have only the OpenAI API key, or only the Azure OpenAI API key + base. +You can set `max_retries` to handle rate limit error. And you can set `timeout` to handle timeout error. They can all be specified in `llm_config` for an agent, which will be used in the OpenAI client for LLM inference. They can be set differently for different clients if they are set in the `config_list`. -```python -import autogen -config_list = autogen.config_list_from_models(model_list=["gpt-4", "gpt-3.5-turbo", "gpt-3.5-turbo-16k"]) -``` +- `max_retries` (int): the total number of times allowed for retrying failed requests for a single client. +- `timeout` (int): the timeout (in seconds) for a single client. + +Please refer to the [documentation](/docs/Use-Cases/enhanced_inference#runtime-error) for more info. + +## How to continue a finished conversation + +When you call `initiate_chat` the conversation restarts by default. You can use `send` or `initiate_chat(clear_history=False)` to continue the conversation. + +## How do we decide what LLM is used for each agent? How many agents can be used? How do we decide how many agents in the group? + +Each agent can be customized. You can use LLMs, tools or human behind each agent. If you use an LLM for an agent, use the one best suited for its role. There is no limit of the number of agents, but start from a small number like 2, 3. The more capable is the LLM and the fewer roles you need, the fewer agents you need. + +The default user proxy agent doesn't use LLM. If you'd like to use an LLM in UserProxyAgent, the use case could be to simulate user's behavior. + +The default assistant agent is instructed to use both coding and language skills. It doesn't have to do coding, depending on the tasks. And you can customize the system message. So if you want to use it for coding, use a model that's good at coding. + +## Why is code not saved as file? + +If you are using a custom system message for the coding agent, please include something like: +`If you want the user to save the code in a file before executing it, put # filename: <filename> inside the code block as the first line.` +in the system message. This line is in the default system message of the `AssistantAgent`. + +If the `# filename` doesn't appear in the suggested code still, consider adding explicit instructions such as "save the code to disk" in the initial user message in `initiate_chat`. +The `AssistantAgent` doesn't save all the code by default, because there are cases in which one would just like to finish a task without saving the code. + +## Code execution + +We strongly recommend using docker to execute code. There are two ways to use docker: -The config list looks like the following, if only OpenAI API key is available: +1. Run autogen in a docker container. For example, when developing in GitHub codespace, the autogen runs in a docker container. +2. Run autogen outside of a docker, while perform code execution with a docker container. For this option, make sure the python package `docker` is installed. When it is not installed and `use_docker` is omitted in `code_execution_config`, the code will be executed locally (this behavior is subject to change in future). + +### Enable Python 3 docker image + +You might want to override the default docker image used for code execution. To do that set `use_docker` key of `code_execution_config` property to the name of the image. E.g.: ```python -config_list = [ - { - 'model': 'gpt-4', - 'api_key': '<your OpenAI API key here>', - }, # OpenAI API endpoint for gpt-4 - { - 'model': 'gpt-3.5-turbo', - 'api_key': '<your OpenAI API key here>', - }, # OpenAI API endpoint for gpt-3.5-turbo - { - 'model': 'gpt-3.5-turbo-16k', - 'api_key': '<your OpenAI API key here>', - }, # OpenAI API endpoint for gpt-3.5-turbo-16k -] +user_proxy = autogen.UserProxyAgent( + name="agent", + human_input_mode="TERMINATE", + max_consecutive_auto_reply=10, + code_execution_config={"work_dir":"_output", "use_docker":"python:3"}, + llm_config=llm_config, + system_message=""""Reply TERMINATE if the task has been solved at full satisfaction. +Otherwise, reply CONTINUE, or the reason why the task is not solved yet.""" +) ``` -### Use the constructed configuration list in agents +If you have problems with agents running `pip install` or get errors similar to `Error while fetching server API version: ('Connection aborted.', FileNotFoundError(2, 'No such file or directory')`, you can choose **'python:3'** as image as shown in the code example above and that should solve the problem. + +### Agents keep thanking each other when using `gpt-3.5-turbo` + +When using `gpt-3.5-turbo` you may often encounter agents going into a "gratitude loop", meaning when they complete a task they will begin congratulating and thanking eachother in a continuous loop. This is a limitation in the performance of `gpt-3.5-turbo`, in contrast to `gpt-4` which has no problem remembering instructions. This can hinder the experimentation experience when trying to test out your own use case with cheaper models. + +A workaround is to add an additional termination notice to the prompt. This acts a "little nudge" for the LLM to remember that they need to terminate the conversation when their task is complete. You can do this by appending a string such as the following to your user input string: -Make sure the "config_list" is included in the `llm_config` in the constructor of the LLM-based agent. For example, ```python -assistant = autogen.AssistantAgent( - name="assistant", - llm_config={"config_list": config_list} +prompt = "Some user query" + +termination_notice = ( + '\n\nDo not show appreciation in your responses, say only what is necessary. ' + 'if "Thank you" or "You\'re welcome" are said in the conversation, then say TERMINATE ' + 'to indicate the conversation is finished and this is your last message.' ) + +prompt += termination_notice ``` -The `llm_config` is used in the [`create`](/docs/reference/oai/completion#create) function for LLM inference. -When `llm_config` is not provided, the agent will rely on other openai settings such as `openai.api_key` or the environment variable `OPENAI_API_KEY`, which can also work when you'd like to use a single endpoint. -You can also explicitly specify that by: -```python -assistant = autogen.AssistantAgent(name="assistant", llm_config={"api_key": ...}) +**Note**: This workaround gets the job done around 90% of the time, but there are occurences where the LLM still forgets to terminate the conversation. + +## ChromaDB fails in codespaces because of old version of sqlite3 + +(from [issue #251](https://github.com/microsoft/autogen/issues/251)) + +Code examples that use chromadb (like retrieval) fail in codespaces due to a sqlite3 requirement. +``` +>>> import chromadb +Traceback (most recent call last): + File "<stdin>", line 1, in <module> + File "/home/vscode/.local/lib/python3.10/site-packages/chromadb/__init__.py", line 69, in <module> + raise RuntimeError( +RuntimeError: Your system has an unsupported version of sqlite3. Chroma requires sqlite3 >= 3.35.0. +Please visit https://docs.trychroma.com/troubleshooting#sqlite to learn how to upgrade. ``` + +Workaround: +1. `pip install pysqlite3-binary` +2. `mkdir /home/vscode/.local/lib/python3.10/site-packages/google/colab` + +Explanation: Per [this gist](https://gist.github.com/defulmere/8b9695e415a44271061cc8e272f3c300?permalink_comment_id=4711478#gistcomment-4711478), linked from the official [chromadb docs](https://docs.trychroma.com/troubleshooting#sqlite), adding this folder triggers chromadb to use pysqlite3 instead of the default. diff --git a/website/docs/Getting-Started.md b/website/docs/Getting-Started.md index e39f3f57231..63fc52f9455 100644 --- a/website/docs/Getting-Started.md +++ b/website/docs/Getting-Started.md @@ -1,27 +1,25 @@ - - # Getting Started <!-- ### Welcome to AutoGen, a library for enabling Next-Gen LLM Applications via Multi-Agent Conversation Framework! --> -AutoGen is a framework that enables development of LLM applications using multiple agents that can converse with each other to solve task. AutoGen agents are customizable, conversable, and seamlessly allow human participation. They can operate in various modes that employ combinations of LLMs, human inputs, and tools. +AutoGen is a framework that enables development of LLM applications using multiple agents that can converse with each other to solve tasks. AutoGen agents are customizable, conversable, and seamlessly allow human participation. They can operate in various modes that employ combinations of LLMs, human inputs, and tools. ![AutoGen Overview](/img/autogen_agentchat.png) ### Main Features -* AutoGen enables building next-gen LLM applications based on **multi-agent conversations** with minimal effort. It simplifies the orchestration, automation and optimization of a complex LLM workflow. It maximizes the performance of LLM models and overcome their weaknesses. -* It supports **diverse conversation patterns** for complex workflows. With customizable and conversable agents, developers can use AutoGen to build a wide range of conversation patterns concerning conversation autonomy, +- AutoGen enables building next-gen LLM applications based on [multi-agent conversations](https://microsoft.github.io/autogen/docs/Use-Cases/agent_chat) with minimal effort. It simplifies the orchestration, automation, and optimization of a complex LLM workflow. It maximizes the performance of LLM models and overcomes their weaknesses. +- It supports [diverse conversation patterns](https://microsoft.github.io/autogen/docs/Use-Cases/agent_chat#supporting-diverse-conversation-patterns) for complex workflows. With customizable and conversable agents, developers can use AutoGen to build a wide range of conversation patterns concerning conversation autonomy, the number of agents, and agent conversation topology. -* It provides a collection of working systems with different complexities. These systems span a **wide range of applications** from various domains and complexities. They demonstrate how AutoGen can easily support different conversation patterns. -* AutoGen provides a drop-in replacement of `openai.Completion` or `openai.ChatCompletion` as an **enhanced inference API**. It allows easy performance tuning, utilities like API unification & caching, and advanced usage patterns, such as error handling, multi-config inference, context programming etc. +- It provides a collection of working systems with different complexities. These systems span a [wide range of applications](https://microsoft.github.io/autogen/docs/Use-Cases/agent_chat#diverse-applications-implemented-with-autogen) from various domains and complexities. This demonstrates how AutoGen can easily support diverse conversation patterns. +- AutoGen provides [enhanced LLM inference](https://microsoft.github.io/autogen/docs/Use-Cases/enhanced_inference#api-unification). It offers utilities like API unification and caching, and advanced usage patterns, such as error handling, multi-config inference, context programming, etc. AutoGen is powered by collaborative [research studies](/docs/Research) from Microsoft, Penn State University, and University of Washington. ### Quickstart Install from pip: `pip install pyautogen`. Find more options in [Installation](/docs/Installation). - +For [code execution](/docs/FAQ#code-execution), we strongly recommend installing the python docker package, and using docker. #### Multi-Agent Conversation Framework Autogen enables the next-gen LLM applications with a generic multi-agent conversation framework. It offers customizable and conversable agents which integrate LLMs, tools and human. @@ -42,13 +40,13 @@ user_proxy.initiate_chat(assistant, message="Plot a chart of NVDA and TESLA stoc The figure below shows an example conversation flow with AutoGen. ![Agent Chat Example](/img/chat_example.png) -* [Code examples](/docs/Examples/AutoGen-AgentChat). +* [Code examples](/docs/Examples/AgentChat). * [Documentation](/docs/Use-Cases/agent_chat). #### Enhanced LLM Inferences -Autogen also helps maximize the utility out of the expensive LLMs such as ChatGPT and GPT-4. It offers a drop-in replacement of `openai.Completion` or `openai.ChatCompletion` with powerful functionalites like tuning, caching, error handling, templating. For example, you can optimize generations by LLM with your own tuning data, success metrics and budgets. +Autogen also helps maximize the utility out of the expensive LLMs such as ChatGPT and GPT-4. It offers enhanced LLM inference with powerful functionalites like tuning, caching, error handling, templating. For example, you can optimize generations by LLM with your own tuning data, success metrics and budgets. ```python -# perform tuning +# perform tuning for openai<1 config, analysis = autogen.Completion.tune( data=tune_data, metric="success", @@ -62,17 +60,19 @@ config, analysis = autogen.Completion.tune( response = autogen.Completion.create(context=test_instance, **config) ``` -* [Code examples](/docs/Examples/AutoGen-Inference). +* [Code examples](/docs/Examples/Inference). * [Documentation](/docs/Use-Cases/enhanced_inference). -### Where to Go Next? +### Where to Go Next ? * Understand the use cases for [multi-agent conversation](/docs/Use-Cases/agent_chat) and [enhanced LLM inference](/docs/Use-Cases/enhanced_inference). -* Find [code examples](/docs/Examples/AutoGen-AgentChat). +* Find [code examples](/docs/Examples/AgentChat). * Read [SDK](/docs/reference/agentchat/conversable_agent/). * Learn about [research](/docs/Research) around AutoGen. +* [Roadmap](https://github.com/orgs/microsoft/projects/989/views/3) * Chat on [Discord](https://discord.gg/pAbnFJrkgZ). +* Follow on [Twitter](https://twitter.com/pyautogen). If you like our project, please give it a [star](https://github.com/microsoft/autogen/stargazers) on GitHub. If you are interested in contributing, please read [Contributor's Guide](/docs/Contribute). -<!-- <iframe src="https://ghbtns.com/github-btn.html?user=microsoft&repo=autogen&type=star&count=true&size=large" frameborder="0" scrolling="0" width="170" height="30" title="GitHub"></iframe> --> +<iframe src="https://ghbtns.com/github-btn.html?user=microsoft&repo=autogen&type=star&count=true&size=large" frameborder="0" scrolling="0" width="170" height="30" title="GitHub"></iframe> diff --git a/website/docs/Installation.md b/website/docs/Installation.md index 1a97f8bf60f..4100f1ffc23 100644 --- a/website/docs/Installation.md +++ b/website/docs/Installation.md @@ -1,21 +1,142 @@ # Installation +## Setup Virtual Environment + +When not using a docker container, we recommend using a virtual environment to install AutoGen. This will ensure that the dependencies for AutoGen are isolated from the rest of your system. + +### Option 1: venv + +You can create a virtual environment with `venv` as below: +```bash +python3 -m venv pyautogen +source pyautogen/bin/activate +``` + +The following command will deactivate the current `venv` environment: +```bash +deactivate +``` + +### Option 2: conda + +Another option is with `Conda`, Conda works better at solving dependency conflicts than pip. You can install it by following [this doc](https://docs.conda.io/projects/conda/en/stable/user-guide/install/index.html), +and then create a virtual environment as below: +```bash +conda create -n pyautogen python=3.10 # python 3.10 is recommended as it's stable and not too old +conda activate pyautogen +``` + +The following command will deactivate the current `conda` environment: +```bash +conda deactivate +``` + +Now, you're ready to install AutoGen in the virtual environment you've just created. + ## Python -AutoGen requires **Python version >= 3.8**. It can be installed from pip: +AutoGen requires **Python version >= 3.8, < 3.12**. It can be installed from pip: ```bash pip install pyautogen ``` + +`pyautogen<0.2` requires `openai<1`. Starting from pyautogen v0.2, `openai>=1` is required. + <!-- or conda: ``` conda install pyautogen -c conda-forge ``` --> +### Migration guide to v0.2 + +openai v1 is a total rewrite of the library with many breaking changes. For example, the inference requires instantiating a client, instead of using a global class method. +Therefore, some changes are required for users of `pyautogen<0.2`. + +- `api_base` -> `base_url`, `request_timeout` -> `timeout` in `llm_config` and `config_list`. `max_retry_period` and `retry_wait_time` are deprecated. `max_retries` can be set for each client. +- MathChat, TeachableAgent are unsupported until they are tested in future release. +- `autogen.Completion` and `autogen.ChatCompletion` are deprecated. The essential functionalities are moved to `autogen.OpenAIWrapper`: +```python +from autogen import OpenAIWrapper +client = OpenAIWrapper(config_list=config_list) +response = client.create(messages=[{"role": "user", "content": "2+2="}]) +print(client.extract_text_or_function_call(response)) +``` +- Inference parameter tuning and inference logging features are currently unavailable in `OpenAIWrapper`. Logging will be added in a future release. +Inference parameter tuning can be done via [`flaml.tune`](https://microsoft.github.io/FLAML/docs/Use-Cases/Tune-User-Defined-Function). +- `seed` in autogen is renamed into `cache_seed` to accommodate the newly added `seed` param in openai chat completion api. `use_cache` is removed as a kwarg in `OpenAIWrapper.create()` for being automatically decided by `cache_seed`: int | None. The difference between autogen's `cache_seed` and openai's `seed` is that: + * autogen uses local disk cache to guarantee the exactly same output is produced for the same input and when cache is hit, no openai api call will be made. + * openai's `seed` is a best-effort deterministic sampling with no guarantee of determinism. When using openai's `seed` with `cache_seed` set to None, even for the same input, an openai api call will be made and there is no guarantee for getting exactly the same output. + + ### Optional Dependencies +- #### docker + +For the best user experience and seamless code execution, we highly recommend using Docker with AutoGen. Docker is a containerization platform that simplifies the setup and execution of your code. Developing in a docker container, such as GitHub Codespace, also makes the development convenient. + +When running AutoGen out of a docker container, to use docker for code execution, you also need to install the python package `docker`: +```bash +pip install docker +``` -* blendsearch +- #### blendsearch + +`pyautogen<0.2` offers a cost-effective hyperparameter optimization technique [EcoOptiGen](https://arxiv.org/abs/2303.04673) for tuning Large Language Models. Please install with the [blendsearch] option to use it. +```bash +pip install "pyautogen[blendsearch]<0.2" +``` + +Example notebooks: + +[Optimize for Code Generation](https://github.com/microsoft/autogen/blob/main/notebook/oai_completion.ipynb) + +[Optimize for Math](https://github.com/microsoft/autogen/blob/main/notebook/oai_chatgpt_gpt4.ipynb) + +- #### retrievechat + +`pyautogen<0.2` supports retrieval-augmented generation tasks such as question answering and code generation with RAG agents. Please install with the [retrievechat] option to use it. +```bash +pip install "pyautogen[retrievechat]<0.2" +``` + +RetrieveChat can handle various types of documents. By default, it can process +plain text and PDF files, including formats such as 'txt', 'json', 'csv', 'tsv', +'md', 'html', 'htm', 'rtf', 'rst', 'jsonl', 'log', 'xml', 'yaml', 'yml' and 'pdf'. +If you install [unstructured](https://unstructured-io.github.io/unstructured/installation/full_installation.html) +(`pip install "unstructured[all-docs]"`), additional document types such as 'docx', +'doc', 'odt', 'pptx', 'ppt', 'xlsx', 'eml', 'msg', 'epub' will also be supported. + +You can find a list of all supported document types by using `autogen.retrieve_utils.TEXT_FORMATS`. + +Example notebooks: + +[Automated Code Generation and Question Answering with Retrieval Augmented Agents](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_RetrieveChat.ipynb) + +[Group Chat with Retrieval Augmented Generation (with 5 group member agents and 1 manager agent)](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_groupchat_RAG.ipynb) + +[Automated Code Generation and Question Answering with Qdrant based Retrieval Augmented Agents](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_qdrant_RetrieveChat.ipynb) + + +- #### Large Multimodal Model (LMM) Agents + +We offered Multimodal Conversable Agent and LLaVA Agent. Please install with the [lmm] option to use it. +```bash +pip install "pyautogen[lmm]" +``` + +Example notebooks: + +[LLaVA Agent](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_lmm_llava.ipynb) + + +- #### mathchat + +`pyautogen<0.2` offers an experimental agent for math problem solving. Please install with the [mathchat] option to use it. ```bash -pip install "pyautogen[blendsearch]" +pip install "pyautogen[mathchat]<0.2" ``` + +Example notebooks: + +[Using MathChat to Solve Math Problems](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_MathChat.ipynb) diff --git a/website/docs/Research.md b/website/docs/Research.md index 3f1ac4ee0dc..73eb6d86120 100644 --- a/website/docs/Research.md +++ b/website/docs/Research.md @@ -36,3 +36,14 @@ For technical details, please check our technical report and research publicatio booktitle={ArXiv preprint arXiv:2306.01337}, } ``` + +* [EcoAssistant: Using LLM Assistant More Affordably and Accurately](https://arxiv.org/abs/2310.03046). Jieyu Zhang, Ranjay Krishna, Ahmed H. Awadallah, Chi Wang. ArXiv preprint arXiv:2310.03046 (2023). + +```bibtex +@inproceedings{zhang2023ecoassistant, + title={EcoAssistant: Using LLM Assistant More Affordably and Accurately}, + author={Zhang, Jieyu and Krishna, Ranjay and Awadallah, Ahmed H and Wang, Chi}, + year={2023}, + booktitle={ArXiv preprint arXiv:2310.03046}, +} +``` diff --git a/website/docs/Use-Cases/agent_chat.md b/website/docs/Use-Cases/agent_chat.md index 55bfb7ef02d..aa8a8a1732b 100644 --- a/website/docs/Use-Cases/agent_chat.md +++ b/website/docs/Use-Cases/agent_chat.md @@ -10,8 +10,8 @@ This framework simplifies the orchestration, automation and optimization of a co AutoGen abstracts and implements conversable agents designed to solve tasks through inter-agent conversations. Specifically, the agents in AutoGen have the following notable features: -- Conversable: Agent in AutoGen are conversable, which means that any agent can send -and receive messages to and from the other agents to start or continue a conversation +- Conversable: Agents in AutoGen are conversable, which means that any agent can send + and receive messages from other agents to initiate or continue a conversation - Customizable: Agents in AutoGen can be customized to integrate LLMs, humans, tools, or a combination of them. @@ -20,10 +20,9 @@ The figure below shows the built-in agents in AutoGen. We have designed a generic `ConversableAgent` class for Agents that are capable of conversing with each other through the exchange of messages to jointly finish a task. An agent can communicate with other agents and perform actions. Different agents can differ in what actions they perform after receiving messages. Two representative subclasses are `AssistantAgent` and `UserProxyAgent`. +- The `AssistantAgent` is designed to act as an AI assistant, using LLMs by default but not requiring human input or code execution. It could write Python code (in a Python coding block) for a user to execute when a message (typically a description of a task that needs to be solved) is received. Under the hood, the Python code is written by LLM (e.g., GPT-4). It can also receive the execution results and suggest corrections or bug fixes. Its behavior can be altered by passing a new system message. The LLM [inference](#enhanced-inference) configuration can be configured via `llm_config`. -- The `AssistantAgent` is designed to act as an AI assistant, using LLMs by default but not requiring human input or code execution. It could write Python code (in a Python coding block) for a user to execute when a message (typically a description of a task that needs to be solved) is received. Under the hood, the Python code is written by LLM (e.g., GPT-4). It can also receive the execution results and suggest code with bug fix. Its behavior can be altered by passing a new system message. The LLM [inference](#enhanced-inference) configuration can be configured via `llm_config`. - -- The `UserProxyAgent` is conceptually a proxy agent for humans, soliciting human input as the agent's reply at each interaction turn by default and also having the capability to execute code and call functions. The `UserProxyAgent` triggers code execution automatically when it detects an executable code block in the received message and no human user input is provided. Code execution can be disabled by setting `code_execution_config` to False. LLM-based response is disabled by default. It can be enabled by setting `llm_config` to a dict corresponding to the [inference](/docs/Use-Cases/enhanced_inference) configuration. When `llm_config` is set to a dict, `UserProxyAgent` can generate replies using an LLM when code execution is not performed. +- The `UserProxyAgent` is conceptually a proxy agent for humans, soliciting human input as the agent's reply at each interaction turn by default and also having the capability to execute code and call functions. The `UserProxyAgent` triggers code execution automatically when it detects an executable code block in the received message and no human user input is provided. Code execution can be disabled by setting the `code_execution_config` parameter to False. LLM-based response is disabled by default. It can be enabled by setting `llm_config` to a dict corresponding to the [inference](/docs/Use-Cases/enhanced_inference) configuration. When `llm_config` is set as a dictionary, `UserProxyAgent` can generate replies using an LLM when code execution is not performed. The auto-reply capability of `ConversableAgent` allows for more autonomous multi-agent communication while retaining the possibility of human intervention. One can also easily extend it by registering reply functions with the `register_reply()` method. @@ -44,7 +43,8 @@ user_proxy = UserProxyAgent(name="user_proxy") ### A Basic Two-Agent Conversation Example -Once the participating agents are constructed properly, one can start a multi-agent conversation session by an initialization step as shown in following code: +Once the participating agents are constructed properly, one can start a multi-agent conversation session by an initialization step as shown in the following code: + ```python # the assistant receives a message from the user, which contains the task description user_proxy.initiate_chat( @@ -52,6 +52,7 @@ user_proxy.initiate_chat( message="""What date is today? Which big tech stock has the largest year-to-date gain this year? How much is the gain?""", ) ``` + After the initialization step, the conversation could proceed automatically. Find a visual illustration of how the user_proxy and assistant collaboratively solve the above task autonmously below: ![Agent Chat Example](images/agent_example.png) @@ -62,44 +63,61 @@ After the initialization step, the conversation could proceed automatically. Fin ### Supporting Diverse Conversation Patterns -#### Conversations with different autonomisity, and human involvement patterns +#### Conversations with different levels of autonomy, and human-involvement patterns + On the one hand, one can achieve fully autonomous conversations after an initialization step. On the other hand, AutoGen can be used to implement human-in-the-loop problem-solving by configuring human involvement levels and patterns (e.g., setting the `human_input_mode` to `ALWAYS`), as human involvement is expected and/or desired in many applications. #### Static and dynamic conversations By adopting the conversation-driven control with both programming language and natural language, AutoGen inherently allows dynamic conversation. Dynamic conversation allows the agent topology to change depending on the actual flow of conversation under different input problem instances, while the flow of a static conversation always follows a pre-defined topology. The dynamic conversation pattern is useful in complex applications where the patterns of interaction cannot be predetermined in advance. AutoGen provides two general approaches to achieving dynamic conversation: -- Registered auto-reply. With the pluggable auto-reply function, one can choose to invoke conversations with other agents depending on the content of the current message and context. A working system demonstrating this type of dynamic conversation can be found in this code example, demonstrating a [dynamic group chat](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_groupchat.ipynb). In the system, we register an auto-reply function in the group chat manager, which lets LLM decide who will the next speaker be in a group chat setting. +- Registered auto-reply. With the pluggable auto-reply function, one can choose to invoke conversations with other agents depending on the content of the current message and context. A working system demonstrating this type of dynamic conversation can be found in this code example, demonstrating a [dynamic group chat](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_groupchat.ipynb). In the system, we register an auto-reply function in the group chat manager, which lets LLM decide who the next speaker will be in a group chat setting. - LLM-based function call. In this approach, LLM decides whether or not to call a particular function depending on the conversation status in each inference call. -By messaging additional agents in the called functions, the LLM can drive dynamic multi-agent conversation. A working system showcasing this type of dynamic conversation can be found in the [multi-user math problem solving scenario](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_two_users.ipynb), where a student assistant would automatically resort to an expert using function calls. + By messaging additional agents in the called functions, the LLM can drive dynamic multi-agent conversation. A working system showcasing this type of dynamic conversation can be found in the [multi-user math problem solving scenario](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_two_users.ipynb), where a student assistant would automatically resort to an expert using function calls. ### Diverse Applications Implemented with AutoGen - The figure below shows six examples of applications built using AutoGen. ![Applications](images/app.png) -* [Automated Task Solving with Code Generation, Execution & Debugging](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_auto_feedback_from_code_execution.ipynb) -* [Auto Code Generation, Execution, Debugging and Human Feedback](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_human_feedback.ipynb) -* [Solve Tasks Requiring Web Info](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_web_info.ipynb) -* [Use Provided Tools as Functions](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_function_call.ipynb) -* [Automated Task Solving with Coding & Planning Agents](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_planning.ipynb) -* [Automated Task Solving with GPT-4 + Multiple Human Users](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_two_users.ipynb) -* [Automated Chess Game Playing & Chitchatting by GPT-4 Agents](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_chess.ipynb) -* [Automated Task Solving by Group Chat (with 3 group member agents and 1 manager agent)](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_groupchat.ipynb) -* [Automated Data Visualization by Group Chat (with 3 group member agents and 1 manager agent)](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_groupchat_vis.ipynb) -* [Automated Complex Task Solving by Group Chat (with 6 group member agents and 1 manager agent)](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_groupchat_research.ipynb) -* [Automated Continual Learning from New Data](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_stream.ipynb) -* [Teach Agents New Skills & Reuse via Automated Chat](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_teaching.ipynb) -* [Automated Code Generation and Question Answering with Retrieval Augemented Agents](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_RetrieveChat.ipynb) +1. **Code Generation, Execution, and Debugging** + + - Automated Task Solving with Code Generation, Execution & Debugging - [View Notebook](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_auto_feedback_from_code_execution.ipynb) + - Auto Code Generation, Execution, Debugging and Human Feedback - [View Notebook](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_human_feedback.ipynb) + - Automated Code Generation and Question Answering with Retrieval Augmented Agents - [View Notebook](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_RetrieveChat.ipynb) + +2. **Multi-Agent Collaboration (>3 Agents)** + + - Automated Task Solving with GPT-4 + Multiple Human Users - [View Notebook](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_two_users.ipynb) + - Automated Task Solving by Group Chat (with 3 group member agents and 1 manager agent) - [View Notebook](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_groupchat.ipynb) + - Automated Data Visualization by Group Chat (with 3 group member agents and 1 manager agent) - [View Notebook](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_groupchat_vis.ipynb) + - Automated Complex Task Solving by Group Chat (with 6 group member agents and 1 manager agent) - [View Notebook](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_groupchat_research.ipynb) + - Automated Task Solving with Coding & Planning Agents - [View Notebook](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_planning.ipynb) + - Automated Task Solving with agents divided into 2 groups - [View Notebook](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_hierarchy_flow_using_select_speaker.ipynb) + +3. **Applications** + + - Automated Chess Game Playing & Chitchatting by GPT-4 Agents - [View Notebook](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_chess.ipynb) + - Automated Continual Learning from New Data - [View Notebook](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_stream.ipynb) + - [OptiGuide](https://github.com/microsoft/optiguide) - Coding, Tool Using, Safeguarding & Question Anwering for Supply Chain Optimization + +4. **Tool Use** + - **Web Search**: Solve Tasks Requiring Web Info - [View Notebook](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_web_info.ipynb) + - Use Provided Tools as Functions - [View Notebook](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_function_call.ipynb) + - Task Solving with Langchain Provided Tools as Functions - [View Notebook](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_langchain.ipynb) + - **RAG**: Group Chat with Retrieval Augmented Generation (with 5 group member agents and 1 manager agent) - [View Notebook](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_groupchat_RAG.ipynb) + - In-depth Guide to OpenAI Utility Functions - [View Notebook](https://github.com/microsoft/autogen/blob/main/notebook/oai_openai_utils.ipynb) +5. **Agent Teaching and Learning** + - Teach Agents New Skills & Reuse via Automated Chat - [View Notebook](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_teaching.ipynb) + - Teach Agents New Facts, User Preferences and Skills Beyond Coding - [View Notebook](https://github.com/microsoft/autogen/blob/main/notebook/agentchat_teachability.ipynb) ## For Further Reading -*Interested in the research that leads to this package? Please check the following papers.* +_Interested in the research that leads to this package? Please check the following papers._ -* [AutoGen: Enabling Next-Gen LLM Applications via Multi-Agent Conversation Framework](https://arxiv.org/abs/2308.08155). Qingyun Wu, Gagan Bansal, Jieyu Zhang, Yiran Wu, Shaokun Zhang, Erkang Zhu, Beibin Li, Li Jiang, Xiaoyun Zhang and Chi Wang. ArXiv 2023. +- [AutoGen: Enabling Next-Gen LLM Applications via Multi-Agent Conversation Framework](https://arxiv.org/abs/2308.08155). Qingyun Wu, Gagan Bansal, Jieyu Zhang, Yiran Wu, Shaokun Zhang, Erkang Zhu, Beibin Li, Li Jiang, Xiaoyun Zhang and Chi Wang. ArXiv 2023. -* [An Empirical Study on Challenging Math Problem Solving with GPT-4](https://arxiv.org/abs/2306.01337). Yiran Wu, Feiran Jia, Shaokun Zhang, Hangyu Li, Erkang Zhu, Yue Wang, Yin Tat Lee, Richard Peng, Qingyun Wu, Chi Wang. ArXiv preprint arXiv:2306.01337 (2023). +- [An Empirical Study on Challenging Math Problem Solving with GPT-4](https://arxiv.org/abs/2306.01337). Yiran Wu, Feiran Jia, Shaokun Zhang, Hangyu Li, Erkang Zhu, Yue Wang, Yin Tat Lee, Richard Peng, Qingyun Wu, Chi Wang. ArXiv preprint arXiv:2306.01337 (2023). diff --git a/website/docs/Use-Cases/enhanced_inference.md b/website/docs/Use-Cases/enhanced_inference.md index d50d67b81c5..ffd4fd60f78 100644 --- a/website/docs/Use-Cases/enhanced_inference.md +++ b/website/docs/Use-Cases/enhanced_inference.md @@ -1,9 +1,10 @@ # Enhanced Inference -`autogen.Completion` is a drop-in replacement of `openai.Completion` and `openai.ChatCompletion` as an enhanced inference API. +`autogen.OpenAIWrapper` provides enhanced LLM inference for `openai>=1`. +`autogen.Completion` is a drop-in replacement of `openai.Completion` and `openai.ChatCompletion` for enhanced LLM inference using `openai<1`. There are a number of benefits of using `autogen` to perform inference: performance tuning, API unification, caching, error handling, multi-config inference, result filtering, templating and so on. -## Tune Inference Parameters +## Tune Inference Parameters (for openai<1) *Links to notebook examples:* * [Optimize for Code Generation](https://github.com/microsoft/autogen/blob/main/notebook/oai_completion.ipynb) @@ -108,65 +109,107 @@ The tuend config can be used to perform inference. ## API unification -`autogen.Completion.create` is compatible with both `openai.Completion.create` and `openai.ChatCompletion.create`, and both OpenAI API and Azure OpenAI API. So models such as "text-davinci-003", "gpt-3.5-turbo" and "gpt-4" can share a common API. -When chat models are used and `prompt` is given as the input to `autogen.Completion.create`, the prompt will be automatically converted into `messages` to fit the chat completion API requirement. One advantage is that one can experiment with both chat and non-chat models for the same prompt in a unified API. +<!-- `autogen.Completion.create` is compatible with both `openai.Completion.create` and `openai.ChatCompletion.create`, and both OpenAI API and Azure OpenAI API. So models such as "text-davinci-003", "gpt-3.5-turbo" and "gpt-4" can share a common API. +When chat models are used and `prompt` is given as the input to `autogen.Completion.create`, the prompt will be automatically converted into `messages` to fit the chat completion API requirement. One advantage is that one can experiment with both chat and non-chat models for the same prompt in a unified API. --> + +`autogen.OpenAIWrapper.create()` can be used to create completions for both chat and non-chat models, and both OpenAI API and Azure OpenAI API. + +```python +from autogen import OpenAIWrapper +# OpenAI endpoint +client = OpenAIWrapper() +# ChatCompletion +response = client.create(messages=[{"role": "user", "content": "2+2="}], model="gpt-3.5-turbo") +# extract the response text +print(client.extract_text_or_function_call(response)) +# Azure OpenAI endpoint +client = OpenAIWrapper(api_key=..., base_url=..., api_version=..., api_type="azure") +# Completion +response = client.create(prompt="2+2=", model="gpt-3.5-turbo-instruct") +# extract the response text +print(client.extract_text_or_function_call(response)) + +``` For local LLMs, one can spin up an endpoint using a package like [FastChat](https://github.com/lm-sys/FastChat), and then use the same API to send a request. See [here](/blog/2023/07/14/Local-LLMs) for examples on how to make inference with local LLMs. -When only working with the chat-based models, `autogen.ChatCompletion` can be used. It also does automatic conversion from prompt to messages, if prompt is provided instead of messages. +<!-- When only working with the chat-based models, `autogen.ChatCompletion` can be used. It also does automatic conversion from prompt to messages, if prompt is provided instead of messages. --> ## Caching -API call results are cached locally and reused when the same request is issued. This is useful when repeating or continuing experiments for reproducibility and cost saving. It still allows controlled randomness by setting the "seed", using `set_cache` or specifying in `create()`. +API call results are cached locally and reused when the same request is issued. This is useful when repeating or continuing experiments for reproducibility and cost saving. It still allows controlled randomness by setting the "cache_seed" specified in `OpenAIWrapper.create()` or the constructor of `OpenAIWrapper`. + +```python +client = OpenAIWrapper(cache_seed=...) +client.create(...) +``` + +```python +client = OpenAIWrapper() +client.create(cache_seed=..., ...) +``` + +Caching is enabled by default with cache_seed 41. To disable it please set `cache_seed` to None. + +_NOTE_. openai v1.1 introduces a new param `seed`. The difference between autogen's `cache_seed` and openai's `seed` is that: +* autogen uses local disk cache to guarantee the exactly same output is produced for the same input and when cache is hit, no openai api call will be made. +* openai's `seed` is a best-effort deterministic sampling with no guarantee of determinism. When using openai's `seed` with `cache_seed` set to None, even for the same input, an openai api call will be made and there is no guarantee for getting exactly the same output. ## Error handling ### Runtime error -It is easy to hit error when calling OpenAI APIs, due to connection, rate limit, or timeout. Some of the errors are transient. `autogen.Completion.create` deals with the transient errors and retries automatically. Initial request timeout, retry timeout and retry time interval can be configured via `request_timeout`, `retry_timeout` and `autogen.Completion.retry_time`. +<!-- It is easy to hit error when calling OpenAI APIs, due to connection, rate limit, or timeout. Some of the errors are transient. `autogen.Completion.create` deals with the transient errors and retries automatically. Request timeout, max retry period and retry wait time can be configured via `request_timeout`, `max_retry_period` and `retry_wait_time`. + +- `request_timeout` (int): the timeout (in seconds) sent with a single request. +- `max_retry_period` (int): the total time (in seconds) allowed for retrying failed requests. +- `retry_wait_time` (int): the time interval to wait (in seconds) before retrying a failed request. -Moreover, one can pass a list of configurations of different models/endpoints to mitigate the rate limits. For example, +Moreover, --> +One can pass a list of configurations of different models/endpoints to mitigate the rate limits and other runtime error. For example, ```python -response = autogen.Completion.create( +client = OpenAIWrapper( config_list=[ { "model": "gpt-4", "api_key": os.environ.get("AZURE_OPENAI_API_KEY"), "api_type": "azure", - "api_base": os.environ.get("AZURE_OPENAI_API_BASE"), - "api_version": "2023-07-01-preview", + "base_url": os.environ.get("AZURE_OPENAI_API_BASE"), + "api_version": "2023-08-01-preview", }, { "model": "gpt-3.5-turbo", "api_key": os.environ.get("OPENAI_API_KEY"), - "api_type": "open_ai", - "api_base": "https://api.openai.com/v1", - "api_version": None, + "base_url": "https://api.openai.com/v1", }, { - "model": "llama-7B", - "api_base": "http://127.0.0.1:8080", - "api_type": "open_ai", - "api_version": None, + "model": "llama2-chat-7B", + "base_url": "http://127.0.0.1:8080", } ], - prompt="Hi", ) ``` -It will try querying Azure OpenAI gpt-4, OpenAI gpt-3.5-turbo, and a locally hosted llama-7B one by one, ignoring AuthenticationError, RateLimitError and Timeout, +`client.create()` will try querying Azure OpenAI gpt-4, OpenAI gpt-3.5-turbo, and a locally hosted llama2-chat-7B one by one, until a valid result is returned. This can speed up the development process where the rate limit is a bottleneck. An error will be raised if the last choice fails. So make sure the last choice in the list has the best availability. -For convenience, we provide a number of utility functions to load config lists, such as [`config_list_from_json`](/docs/reference/oai/openai_utils#config_list_from_json): The config list like the list of dicts above can be saved in an environment variable or a file in json format and loaded with this function. +For convenience, we provide a number of utility functions to load config lists. +- `get_config_list`: Generates configurations for API calls, primarily from provided API keys. +- `config_list_openai_aoai`: Constructs a list of configurations using both Azure OpenAI and OpenAI endpoints, sourcing API keys from environment variables or local files. +- `config_list_from_json`: Loads configurations from a JSON structure, either from an environment variable or a local JSON file, with the flexibility of filtering configurations based on given criteria. +- `config_list_from_models`: Creates configurations based on a provided list of models, useful when targeting specific models without manually specifying each configuration. +- `config_list_from_dotenv`: Constructs a configuration list from a `.env` file, offering a consolidated way to manage multiple API configurations and keys from a single file. + +We suggest that you take a look at this [notebook](https://github.com/microsoft/autogen/blob/main/notebook/oai_openai_utils.ipynb) for full code examples of the different methods to configure your model endpoints. ### Logic error Another type of error is that the returned response does not satisfy a requirement. For example, if the response is required to be a valid json string, one would like to filter the responses that are not. This can be achieved by providing a list of configurations and a filter function. For example, ```python -def valid_json_filter(context, config, response): - for text in autogen.Completion.extract_text(response): +def valid_json_filter(response, **_): + for text in OpenAIWrapper.extract_text_or_function_call(response): try: json.loads(text) return True @@ -174,14 +217,16 @@ def valid_json_filter(context, config, response): pass return False -response = autogen.Completion.create( - config_list=[{"model": "text-ada-001"}, {"model": "gpt-3.5-turbo"}, {"model": "text-davinci-003"}], +client = OpenAIWrapper( + config_list=[{"model": "text-ada-001"}, {"model": "gpt-3.5-turbo-instruct"}, {"model": "text-davinci-003"}], +) +response = client.create( prompt="How to construct a json request to Bing API to search for 'latest AI news'? Return the JSON request.", filter_func=valid_json_filter, ) ``` -The example above will try to use text-ada-001, gpt-3.5-turbo, and text-davinci-003 iteratively, until a valid json string is returned or the last config is used. One can also repeat the same model in the list for multiple times to try one model multiple times for increasing the robustness of the final response. +The example above will try to use text-ada-001, gpt-3.5-turbo-instruct, and text-davinci-003 iteratively, until a valid json string is returned or the last config is used. One can also repeat the same model in the list for multiple times (with different seeds) to try one model multiple times for increasing the robustness of the final response. *Advanced use case: Check this [blogpost](/blog/2023/05/18/GPT-adaptive-humaneval) to find how to improve GPT-4's coding performance from 68% to 90% while reducing the inference cost.* @@ -190,7 +235,7 @@ The example above will try to use text-ada-001, gpt-3.5-turbo, and text-davinci- If the provided prompt or message is a template, it will be automatically materialized with a given context. For example, ```python -response = autogen.Completion.create( +response = client.create( context={"problem": "How many positive integers, not exceeding 100, are multiples of 2 or 3 but not 4?"}, prompt="{problem} Solve the problem carefully.", allow_format_str_template=True, @@ -224,11 +269,11 @@ context = { "external_info_0": "Problem 1: ...", } -response = autogen.ChatCompletion.create(context, messages=messages, **config) +response = client.create(context=context, messages=messages, **config) messages.append( { "role": "assistant", - "content": autogen.ChatCompletion.extract_text(response)[0] + "content": client.extract_text(response)[0] } ) messages.append( @@ -243,10 +288,10 @@ context.append( "external_info_1": "Theorem 1: ...", } ) -response = autogen.ChatCompletion.create(context, messages=messages, **config) +response = client.create(context=context, messages=messages, **config) ``` -## Logging (Experimental) +## Logging (for openai<1) When debugging or diagnosing an LLM-based system, it is often convenient to log the API calls and analyze them. `autogen.Completion` and `autogen.ChatCompletion` offer an easy way to collect the API call histories. For example, to log the chat histories, simply run: ```python @@ -256,6 +301,10 @@ The API calls made after this will be automatically logged. They can be retrieve ```python autogen.ChatCompletion.logged_history ``` +There is a function that can be used to print usage summary (total cost, and token count usage from each model): +```python +autogen.ChatCompletion.print_usage_summary() +``` To stop logging, use ```python autogen.ChatCompletion.stop_logging() @@ -362,5 +411,13 @@ Set `compact=False` in `start_logging()` to switch. }, } ``` + +* Example of printing for usage summary +``` +Total cost: <cost> +Token count summary for model <model>: prompt_tokens: <count 1>, completion_tokens: <count 2>, total_tokens: <count 3> +``` + + It can be seen that the individual API call history contains redundant information of the conversation. For a long conversation the degree of redundancy is high. The compact history is more efficient and the individual API call history contains more details. diff --git a/website/docusaurus.config.js b/website/docusaurus.config.js index c5f58e5e10b..cebbac257f2 100644 --- a/website/docusaurus.config.js +++ b/website/docusaurus.config.js @@ -9,7 +9,7 @@ module.exports = { baseUrl: '/autogen/', onBrokenLinks: 'throw', onBrokenMarkdownLinks: 'warn', - favicon: 'img/flaml_logo.ico', + favicon: 'img/ag.ico', organizationName: 'Microsoft', // Usually your GitHub org/user name. projectName: 'AutoGen', // Usually your repo name. themeConfig: { @@ -17,7 +17,7 @@ module.exports = { title: 'AutoGen', logo: { alt: 'AutoGen', - src: 'img/flaml_logo_fill.svg', + src: 'img/ag.svg', }, items: [ { @@ -69,6 +69,10 @@ module.exports = { label: 'Discord', href: 'https://discord.gg/pAbnFJrkgZ', }, + { + label: 'Twitter', + href: 'https://twitter.com/pyautogen', + }, ], }, ], diff --git a/website/static/img/ag.ico b/website/static/img/ag.ico new file mode 100644 index 00000000000..f1789673b09 Binary files /dev/null and b/website/static/img/ag.ico differ diff --git a/website/static/img/ag.svg b/website/static/img/ag.svg new file mode 100644 index 00000000000..9402bbdcab7 --- /dev/null +++ b/website/static/img/ag.svg @@ -0,0 +1 @@ +<svg width="720" height="720" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" overflow="hidden"><defs><clipPath id="clip0"><rect x="280" y="0" width="720" height="720"/></clipPath><clipPath id="clip1"><rect x="0" y="0" width="6858000" height="6858000"/></clipPath><image width="1080" height="1080" xlink:href="data:image/jpeg;base64,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" preserveAspectRatio="none" id="img2"></image><clipPath id="clip3"><path d="M-0.25 0 6858000 0 6858000 6858000 0 6858000Z" fill-rule="evenodd" clip-rule="evenodd"/></clipPath></defs><g clip-path="url(#clip0)" transform="translate(-280 0)"><g clip-path="url(#clip1)" transform="matrix(0.000104987 0 0 0.000104987 280 0)"><g clip-path="url(#clip3)"><use width="100%" height="100%" xlink:href="#img2" transform="matrix(6350 0 0 6350 -0.25 0)"></use></g></g></g></svg> diff --git a/website/static/img/autogen_agentchat.png b/website/static/img/autogen_agentchat.png index 893d3eecbfc..989a850a21c 100644 Binary files a/website/static/img/autogen_agentchat.png and b/website/static/img/autogen_agentchat.png differ diff --git a/website/yarn.lock b/website/yarn.lock index c75752f172b..53ef22fb2c8 100644 --- a/website/yarn.lock +++ b/website/yarn.lock @@ -145,6 +145,14 @@ dependencies: "@babel/highlight" "^7.18.6" +"@babel/code-frame@^7.22.13": + version "7.22.13" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.13.tgz#e3c1c099402598483b7a8c46a721d1038803755e" + integrity sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w== + dependencies: + "@babel/highlight" "^7.22.13" + chalk "^2.4.2" + "@babel/compat-data@^7.17.7", "@babel/compat-data@^7.20.0", "@babel/compat-data@^7.20.1": version "7.20.1" resolved "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.20.1.tgz#f2e6ef7790d8c8dbf03d379502dcc246dcce0b30" @@ -193,7 +201,7 @@ json5 "^2.2.1" semver "^6.3.0" -"@babel/generator@^7.12.15", "@babel/generator@^7.12.5", "@babel/generator@^7.20.1", "@babel/generator@^7.20.2": +"@babel/generator@^7.12.15", "@babel/generator@^7.12.5", "@babel/generator@^7.20.2": version "7.20.2" resolved "https://registry.npmmirror.com/@babel/generator/-/generator-7.20.2.tgz#c2e89e22613a039285c1e7b749e2cd0b30b9a481" integrity sha512-SD75PMIK6i9H8G/tfGvB4KKl4Nw6Ssos9nGgYwxbgyTP0iX/Z55DveoH86rmUB/YHTQQ+ZC0F7xxaY8l2OF44Q== @@ -202,6 +210,16 @@ "@jridgewell/gen-mapping" "^0.3.2" jsesc "^2.5.1" +"@babel/generator@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.0.tgz#df5c386e2218be505b34837acbcb874d7a983420" + integrity sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g== + dependencies: + "@babel/types" "^7.23.0" + "@jridgewell/gen-mapping" "^0.3.2" + "@jridgewell/trace-mapping" "^0.3.17" + jsesc "^2.5.1" + "@babel/helper-annotate-as-pure@^7.18.6": version "7.18.6" resolved "https://registry.npmmirror.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb" @@ -265,6 +283,11 @@ resolved "https://registry.npmmirror.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be" integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== +"@babel/helper-environment-visitor@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" + integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== + "@babel/helper-explode-assignable-expression@^7.18.6": version "7.18.6" resolved "https://registry.npmmirror.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz#41f8228ef0a6f1a036b8dfdfec7ce94f9a6bc096" @@ -280,6 +303,14 @@ "@babel/template" "^7.18.10" "@babel/types" "^7.19.0" +"@babel/helper-function-name@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" + integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== + dependencies: + "@babel/template" "^7.22.15" + "@babel/types" "^7.23.0" + "@babel/helper-hoist-variables@^7.18.6": version "7.18.6" resolved "https://registry.npmmirror.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" @@ -287,6 +318,13 @@ dependencies: "@babel/types" "^7.18.6" +"@babel/helper-hoist-variables@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" + integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== + dependencies: + "@babel/types" "^7.22.5" + "@babel/helper-member-expression-to-functions@^7.18.9": version "7.18.9" resolved "https://registry.npmmirror.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz#1531661e8375af843ad37ac692c132841e2fd815" @@ -374,16 +412,33 @@ dependencies: "@babel/types" "^7.18.6" +"@babel/helper-split-export-declaration@^7.22.6": + version "7.22.6" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" + integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== + dependencies: + "@babel/types" "^7.22.5" + "@babel/helper-string-parser@^7.19.4": version "7.19.4" resolved "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz#38d3acb654b4701a9b77fb0615a96f775c3a9e63" integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw== +"@babel/helper-string-parser@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f" + integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw== + "@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": version "7.19.1" resolved "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== +"@babel/helper-validator-identifier@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" + integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== + "@babel/helper-validator-option@^7.18.6": version "7.18.6" resolved "https://registry.npmmirror.com/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8" @@ -417,11 +472,25 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.12.16", "@babel/parser@^7.12.7", "@babel/parser@^7.18.10", "@babel/parser@^7.20.1", "@babel/parser@^7.20.2": +"@babel/highlight@^7.22.13": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.20.tgz#4ca92b71d80554b01427815e06f2df965b9c1f54" + integrity sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg== + dependencies: + "@babel/helper-validator-identifier" "^7.22.20" + chalk "^2.4.2" + js-tokens "^4.0.0" + +"@babel/parser@^7.12.16", "@babel/parser@^7.12.7", "@babel/parser@^7.18.10", "@babel/parser@^7.20.2": version "7.20.2" resolved "https://registry.npmmirror.com/@babel/parser/-/parser-7.20.2.tgz#9aeb9b92f64412b5f81064d46f6a1ac0881337f4" integrity sha512-afk318kh2uKbo7BEj2QtEi8HVCGrwHUffrYDy7dgVcSa2j9lY3LDjPzcyGdpX7xgm35aWqvciZJ4WKmdF/SxYg== +"@babel/parser@^7.22.15", "@babel/parser@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.0.tgz#da950e622420bf96ca0d0f2909cdddac3acd8719" + integrity sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw== + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": version "7.18.6" resolved "https://registry.npmmirror.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz#da5b8f9a580acdfbe53494dba45ea389fb09a4d2" @@ -1150,19 +1219,28 @@ "@babel/parser" "^7.18.10" "@babel/types" "^7.18.10" -"@babel/traverse@^7.12.13", "@babel/traverse@^7.12.9", "@babel/traverse@^7.19.0", "@babel/traverse@^7.19.1", "@babel/traverse@^7.20.1": - version "7.20.1" - resolved "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.20.1.tgz#9b15ccbf882f6d107eeeecf263fbcdd208777ec8" - integrity sha512-d3tN8fkVJwFLkHkBN479SOsw4DMZnz8cdbL/gvuDuzy3TS6Nfw80HuQqhw1pITbIruHyh7d1fMA47kWzmcUEGA== +"@babel/template@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.15.tgz#09576efc3830f0430f4548ef971dde1350ef2f38" + integrity sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w== dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.20.1" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.19.0" - "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.20.1" - "@babel/types" "^7.20.0" + "@babel/code-frame" "^7.22.13" + "@babel/parser" "^7.22.15" + "@babel/types" "^7.22.15" + +"@babel/traverse@^7.12.13", "@babel/traverse@^7.12.9", "@babel/traverse@^7.19.0", "@babel/traverse@^7.19.1", "@babel/traverse@^7.20.1": + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.2.tgz#329c7a06735e144a506bdb2cad0268b7f46f4ad8" + integrity sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw== + dependencies: + "@babel/code-frame" "^7.22.13" + "@babel/generator" "^7.23.0" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/parser" "^7.23.0" + "@babel/types" "^7.23.0" debug "^4.1.0" globals "^11.1.0" @@ -1175,6 +1253,15 @@ "@babel/helper-validator-identifier" "^7.19.1" to-fast-properties "^2.0.0" +"@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.0.tgz#8c1f020c9df0e737e4e247c0619f58c68458aaeb" + integrity sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg== + dependencies: + "@babel/helper-string-parser" "^7.22.5" + "@babel/helper-validator-identifier" "^7.22.20" + to-fast-properties "^2.0.0" + "@docsearch/css@3.3.0": version "3.3.0" resolved "https://registry.npmmirror.com/@docsearch/css/-/css-3.3.0.tgz#d698e48302d12240d7c2f7452ccb2d2239a8cd80" @@ -1648,6 +1735,11 @@ resolved "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" + integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== + "@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.0.1": version "1.1.2" resolved "https://registry.npmmirror.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" @@ -1666,6 +1758,11 @@ resolved "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== +"@jridgewell/sourcemap-codec@^1.4.14": + version "1.4.15" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + "@jridgewell/trace-mapping@^0.3.14", "@jridgewell/trace-mapping@^0.3.9": version "0.3.17" resolved "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985" @@ -1674,6 +1771,14 @@ "@jridgewell/resolve-uri" "3.1.0" "@jridgewell/sourcemap-codec" "1.4.14" +"@jridgewell/trace-mapping@^0.3.17": + version "0.3.20" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz#72e45707cf240fa6b081d0366f8265b0cd10197f" + integrity sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + "@leichtgewicht/ip-codec@^2.0.1": version "2.0.4" resolved "https://registry.npmmirror.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz#b2ac626d6cb9c8718ab459166d4bb405b8ffa78b" @@ -5475,10 +5580,10 @@ multicast-dns@^7.2.5: dns-packet "^5.2.2" thunky "^1.0.2" -nanoid@^3.3.4: - version "3.3.4" - resolved "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" - integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== +nanoid@^3.3.6: + version "3.3.6" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" + integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== negotiator@0.6.3: version "0.6.3" @@ -6166,11 +6271,11 @@ postcss-zindex@^5.1.0: integrity sha512-fgFMf0OtVSBR1va1JNHYgMxYk73yhn/qb4uQDq1DLGYolz8gHCyr/sesEuGUaYs58E3ZJRcpoGuPVoB7Meiq9A== postcss@^8.2.15, postcss@^8.3.11, postcss@^8.3.5, postcss@^8.3.7: - version "8.4.18" - resolved "https://registry.npmmirror.com/postcss/-/postcss-8.4.18.tgz#6d50046ea7d3d66a85e0e782074e7203bc7fbca2" - integrity sha512-Wi8mWhncLJm11GATDaQKobXSNEYGUHeQLiQqDFG1qQ5UTDPTEvKw0Xt5NsTpktGTwLps3ByrWsBrG0rB8YQ9oA== + version "8.4.31" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d" + integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== dependencies: - nanoid "^3.3.4" + nanoid "^3.3.6" picocolors "^1.0.0" source-map-js "^1.0.2"